In case of P2P technology - since this one is not tight to any devices -
when enabling/disabling it from DBus, the signal about Powered being
changed will be raised automatically.
---
src/technology.c | 134 +++++++++++++++++++++++++++----------------------------
1 file changed, 67 insertions(+), 67 deletions(-)
diff --git a/src/technology.c b/src/technology.c
index 28a170b..bc8557c 100644
--- a/src/technology.c
+++ b/src/technology.c
@@ -642,6 +642,60 @@ static int technology_affect_devices(struct
connman_technology *technology,
return err;
}
+static void powered_changed(struct connman_technology *technology)
+{
+ dbus_bool_t enabled;
+
+ if (!technology->dbus_registered)
+ return;
+
+ if (technology->pending_reply) {
+ g_dbus_send_reply(connection,
+ technology->pending_reply, DBUS_TYPE_INVALID);
+ dbus_message_unref(technology->pending_reply);
+ technology->pending_reply = NULL;
+
+ g_source_remove(technology->pending_timeout);
+ technology->pending_timeout = 0;
+ }
+
+ __sync_synchronize();
+ enabled = technology->enabled;
+ connman_dbus_property_changed_basic(technology->path,
+ CONNMAN_TECHNOLOGY_INTERFACE, "Powered",
+ DBUS_TYPE_BOOLEAN, &enabled);
+}
+
+static void enable_tethering(struct connman_technology *technology)
+{
+ int ret;
+
+ if (!connman_setting_get_bool("PersistentTetheringMode"))
+ return;
+
+ ret = set_tethering(technology, true);
+ if (ret < 0 && ret != -EALREADY)
+ DBG("Cannot enable tethering yet for %s (%d/%s)",
+ get_name(technology->type),
+ -ret, strerror(-ret));
+}
+
+static int technology_enabled(struct connman_technology *technology)
+{
+ __sync_synchronize();
+ if (technology->enabled)
+ return -EALREADY;
+
+ technology->enabled = true;
+
+ if (technology->tethering_persistent)
+ enable_tethering(technology);
+
+ powered_changed(technology);
+
+ return 0;
+}
+
static int technology_enable(struct connman_technology *technology)
{
int err = 0;
@@ -671,6 +725,19 @@ static int technology_enable(struct connman_technology
*technology)
return err;
}
+static int technology_disabled(struct connman_technology *technology)
+{
+ __sync_synchronize();
+ if (!technology->enabled)
+ return -EALREADY;
+
+ technology->enabled = false;
+
+ powered_changed(technology);
+
+ return 0;
+}
+
static int technology_disable(struct connman_technology *technology)
{
int err;
@@ -1208,20 +1275,6 @@ void connman_technology_driver_unregister(struct
connman_technology_driver *driv
}
}
-static void enable_tethering(struct connman_technology *technology)
-{
- int ret;
-
- if (!connman_setting_get_bool("PersistentTetheringMode"))
- return;
-
- ret = set_tethering(technology, true);
- if (ret < 0 && ret != -EALREADY)
- DBG("Cannot enable tethering yet for %s (%d/%s)",
- get_name(technology->type),
- -ret, strerror(-ret));
-}
-
void __connman_technology_add_interface(enum connman_service_type type,
int index, const char *ident)
{
@@ -1396,46 +1449,6 @@ int __connman_technology_remove_device(struct
connman_device *device)
return 0;
}
-static void powered_changed(struct connman_technology *technology)
-{
- dbus_bool_t enabled;
-
- if (!technology->dbus_registered)
- return;
-
- if (technology->pending_reply) {
- g_dbus_send_reply(connection,
- technology->pending_reply, DBUS_TYPE_INVALID);
- dbus_message_unref(technology->pending_reply);
- technology->pending_reply = NULL;
-
- g_source_remove(technology->pending_timeout);
- technology->pending_timeout = 0;
- }
-
- __sync_synchronize();
- enabled = technology->enabled;
- connman_dbus_property_changed_basic(technology->path,
- CONNMAN_TECHNOLOGY_INTERFACE, "Powered",
- DBUS_TYPE_BOOLEAN, &enabled);
-}
-
-static int technology_enabled(struct connman_technology *technology)
-{
- __sync_synchronize();
- if (technology->enabled)
- return -EALREADY;
-
- technology->enabled = true;
-
- if (technology->tethering_persistent)
- enable_tethering(technology);
-
- powered_changed(technology);
-
- return 0;
-}
-
int __connman_technology_enabled(enum connman_service_type type)
{
struct connman_technology *technology;
@@ -1457,19 +1470,6 @@ int __connman_technology_enabled(enum
connman_service_type type)
return technology_enabled(technology);
}
-static int technology_disabled(struct connman_technology *technology)
-{
- __sync_synchronize();
- if (!technology->enabled)
- return -EALREADY;
-
- technology->enabled = false;
-
- powered_changed(technology);
-
- return 0;
-}
-
int __connman_technology_disabled(enum connman_service_type type)
{
struct connman_technology *technology;
--
1.8.3.2
_______________________________________________
connman mailing list
[email protected]
https://lists.connman.net/mailman/listinfo/connman