---
 include/device.h |  3 +++
 src/device.c     | 43 +++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 46 insertions(+)

diff --git a/include/device.h b/include/device.h
index b372821..3382575 100644
--- a/include/device.h
+++ b/include/device.h
@@ -113,6 +113,9 @@ int connman_device_set_regdom(struct connman_device *device,
 void connman_device_regdom_notify(struct connman_device *device,
                                        int result, const char *alpha2);
 struct connman_device *connman_device_create_from_index(int index);
+struct connman_device *connman_device_find_by_index(int index);
+int connman_device_disconnect_service(struct connman_device *device);
+int connman_device_reconnect_service(struct connman_device *device);
 
 struct connman_device_driver {
        const char *name;
diff --git a/src/device.c b/src/device.c
index 2e0dbdc..5feeee1 100644
--- a/src/device.c
+++ b/src/device.c
@@ -647,6 +647,36 @@ int __connman_device_disconnect(struct connman_device 
*device)
        return 0;
 }
 
+int connman_device_disconnect_service(struct connman_device *device)
+{
+       DBG("device %p", device);
+
+       device->reconnect = FALSE;
+
+       if (device->network) {
+               struct connman_service *service =
+                       connman_service_lookup_from_network(device->network);
+
+               if (service != NULL)
+                       __connman_service_disconnect(service);
+               else
+                       connman_network_set_connected(device->network, FALSE);
+       }
+
+       return 0;
+}
+
+int connman_device_reconnect_service(struct connman_device *device)
+{
+       DBG("device %p", device);
+
+       device->reconnect = TRUE;
+
+       __connman_service_auto_connect();
+
+       return 0;
+}
+
 static void mark_network_available(gpointer key, gpointer value,
                                                        gpointer user_data)
 {
@@ -1035,6 +1065,19 @@ struct connman_device *__connman_device_find_device(
        return NULL;
 }
 
+struct connman_device *connman_device_find_by_index(int index)
+{
+       GSList *list;
+
+       for (list = device_list; list != NULL; list = list->next) {
+               struct connman_device *device = list->data;
+               if (device->index == index)
+                       return device;
+       }
+
+       return NULL;
+}
+
 /**
  * connman_device_set_regdom
  * @device: device structure
-- 
1.7.11.7

_______________________________________________
connman mailing list
connman@connman.net
https://lists.connman.net/mailman/listinfo/connman

Reply via email to