diff options
author | Nishant Chaprana <n.chaprana@samsung.com> | 2019-09-06 20:52:47 +0530 |
---|---|---|
committer | Nishant Chaprana <n.chaprana@samsung.com> | 2019-09-06 20:52:47 +0530 |
commit | 55c73c5d731572b1c92894ac57150555b7e61216 (patch) | |
tree | b0924f5541567d5a4d8adab7efd32bf641d050dd /src | |
parent | 99b2c81f38ae73c1f31b8f310f4445dcab534fe8 (diff) | |
download | connman-55c73c5d731572b1c92894ac57150555b7e61216.tar.gz connman-55c73c5d731572b1c92894ac57150555b7e61216.tar.bz2 connman-55c73c5d731572b1c92894ac57150555b7e61216.zip |
Emit Service PropertyChanged when ConnectReason and DisconnectionRequested changes
Description: The properties perform below tasks:-
1. ConnectReason: To identify whether connection was an autoconnection or user initiated.
2. DisconnectionRequested: To identify whether disconnection was user initiated or not.
Change-Id: I2ba4fc4637673571745517cdc33fc3a6d6367953
Signed-off-by: Nishant Chaprana <n.chaprana@samsung.com>
Diffstat (limited to 'src')
-rwxr-xr-x | src/network.c | 4 | ||||
-rw-r--r-- | src/service.c | 59 |
2 files changed, 61 insertions, 2 deletions
diff --git a/src/network.c b/src/network.c index 9e5d9619..fc57dcc8 100755 --- a/src/network.c +++ b/src/network.c @@ -1705,6 +1705,8 @@ int __connman_network_connect(struct connman_network *network) __connman_device_disconnect(network->device); #if defined TIZEN_EXT DBG("ConnMan, Connect Request [%s]", network->name); + struct connman_service *service = connman_service_lookup_from_network(network); + connman_service_set_disconnection_requested(service, false); #endif err = network->driver->connect(network); if (err < 0) { @@ -1746,6 +1748,8 @@ int __connman_network_disconnect(struct connman_network *network) network->connecting = false; #if defined TIZEN_EXT DBG("ConnMan, Disconnect request"); + struct connman_service *service = connman_service_lookup_from_network(network); + connman_service_set_disconnection_requested(service, true); #endif if (network->driver->disconnect) err = network->driver->disconnect(network); diff --git a/src/service.c b/src/service.c index 85bcc318..43e79832 100644 --- a/src/service.c +++ b/src/service.c @@ -171,8 +171,11 @@ struct connman_service { * Only for EAP-FAST */ char *phase1; -#endif -#ifdef TIZEN_EXT + /* + * Description: To indicate that disconnection triggered by user. + */ + bool disconnection_requested; + enum connman_dnsconfig_method dns_config_method_ipv4; enum connman_dnsconfig_method dns_config_method_ipv6; #endif @@ -2299,6 +2302,51 @@ static void state_changed(struct connman_service *service) DBUS_TYPE_STRING, &str); } +#if defined TIZEN_EXT +static void connect_reason_changed(struct connman_service *service) +{ + if (!service->path) + return; + + if (!allow_property_changed(service)) + return; + + connman_dbus_property_changed_basic(service->path, + CONNMAN_SERVICE_INTERFACE, + "ConnectReason", + DBUS_TYPE_INT32, + &service->connect_reason); +} + +static void disconnection_requested_changed(struct connman_service *service) +{ + dbus_bool_t disconnection_requested; + + if (!service->path) + return; + + if (!allow_property_changed(service)) + return; + + disconnection_requested = service->disconnection_requested; + connman_dbus_property_changed_basic(service->path, + CONNMAN_SERVICE_INTERFACE, + "DisconnectionRequested", + DBUS_TYPE_BOOLEAN, + &disconnection_requested); +} + +void connman_service_set_disconnection_requested(struct connman_service *service, + bool disconnection_requested) +{ + if (service == NULL) + return; + + service->disconnection_requested = disconnection_requested; + disconnection_requested_changed(service); +} +#endif + static void strength_changed(struct connman_service *service) { if (service->strength == 0) @@ -5585,6 +5633,9 @@ static DBusMessage *connect_service(DBusConnection *conn, /*Reset the association status code while issue connect request*/ service->assoc_status_code = 0; + + /* Reset the disconnection_requested while issue connect request*/ + connman_service_set_disconnection_requested(service, false); #endif if (service->pending) @@ -6413,6 +6464,7 @@ static void service_initialize(struct connman_service *service) service->wps = false; #if defined TIZEN_EXT + service->disconnection_requested = false; service->storage_reload = false; /* * Description: TIZEN implements system global connection management. @@ -8386,6 +8438,9 @@ int __connman_service_connect(struct connman_service *service, DBG("service %p err %d", service, err); service->connect_reason = reason; +#if defined TIZEN_EXT + connect_reason_changed(service); +#endif if (err >= 0) return 0; |