summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJaehyun Kim <jeik01.kim@samsung.com>2024-01-03 18:25:09 +0900
committerJaehyun Kim <jeik01.kim@samsung.com>2024-01-03 18:25:09 +0900
commit6383d151bdd97d5d89cd38ded516e760f5837be9 (patch)
tree45d12e4dc468f70db6df9d43e32b8e52ea07e966
parent73bfc33ae93d18cb7ad0cfbb7ab9d222697adb29 (diff)
downloadconnman-6383d151bdd97d5d89cd38ded516e760f5837be9.tar.gz
connman-6383d151bdd97d5d89cd38ded516e760f5837be9.tar.bz2
connman-6383d151bdd97d5d89cd38ded516e760f5837be9.zip
Send power off before DeviceDetected signal
When the wifi module is removed, the removed device detected signal is sent before the power off signal, so there are cases where the power off signal is ignored on the receiving side. To solve this issue, it has been modified to send the power off signal first. Change-Id: I574bf39ac55b3c8f4555eefeb598c8d28d1a8885 Signed-off-by: Jaehyun Kim <jeik01.kim@samsung.com>
-rwxr-xr-xinclude/technology.h2
-rwxr-xr-xsrc/device.c4
-rw-r--r--src/technology.c20
3 files changed, 22 insertions, 4 deletions
diff --git a/include/technology.h b/include/technology.h
index 127dea95..c7898396 100755
--- a/include/technology.h
+++ b/include/technology.h
@@ -95,6 +95,8 @@ const char *connman_techonology_get_path(enum connman_service_type type);
void __connman_technology_notify_scan_done(const char *ifname, int val);
void __connman_technology_append_interfaces(DBusMessageIter *array,
enum connman_service_type type, const char *ifname);
+void __connman_technology_notify_device_detected_by_device(
+ struct connman_device *device, const char *ifname, bool val);
void __connman_technology_notify_roaming_state(const char *ifname,
const char *state, const char *cur_bssid, const char *dst_bssid);
#endif
diff --git a/src/device.c b/src/device.c
index 1e3924b9..9189f688 100755
--- a/src/device.c
+++ b/src/device.c
@@ -388,6 +388,10 @@ static void remove_device(struct connman_device *device)
if (device->driver->remove)
device->driver->remove(device);
+#if defined TIZEN_EXT
+ __connman_technology_notify_device_detected_by_device(device, "", false);
+#endif
+
device->driver = NULL;
}
diff --git a/src/technology.c b/src/technology.c
index 4cc540bb..d21d790f 100644
--- a/src/technology.c
+++ b/src/technology.c
@@ -1715,6 +1715,19 @@ static void __connman_technology_notify_device_detected(
DBG("Successfuly sent DeviceDetected signal");
}
+void __connman_technology_notify_device_detected_by_device(
+ struct connman_device *device, const char *ifname, bool val)
+{
+ struct connman_technology *technology;
+ enum connman_service_type type;
+
+ type = __connman_device_get_service_type(device);
+
+ technology = technology_find(type);
+ if (technology)
+ __connman_technology_notify_device_detected(technology, ifname, val);
+}
+
void __connman_technology_notify_roaming_state(const char *ifname,
const char *state, const char *cur_bssid, const char *dst_bssid)
{
@@ -3002,7 +3015,9 @@ static void technology_put(struct connman_technology *technology)
g_slist_delete_link(technology->driver_list,
technology->driver_list);
}
-
+#ifdef TIZEN_EXT
+ __connman_technology_notify_device_detected(technology, "", false);
+#endif
technology_list = g_slist_remove(technology_list, technology);
technology_dbus_unregister(technology);
@@ -3422,9 +3437,6 @@ int __connman_technology_remove_device(struct connman_device *device)
#if defined TIZEN_EXT
technology_save_device(device);
-
- const char *ifname = connman_device_get_string(device, "Interface");
- __connman_technology_notify_device_detected(technology, ifname, false);
#endif
if (technology->tethering)