From: Chengyi Zhao <chengyi1.z...@archermind.com>

---
 src/service.c | 31 ++++++++++++++++++++++++++++++-
 1 file changed, 30 insertions(+), 1 deletion(-)

diff --git a/src/service.c b/src/service.c
index 9bba227..6c8b2a2 100644
--- a/src/service.c
+++ b/src/service.c
@@ -183,7 +183,7 @@ const char *__connman_service_type2string(enum 
connman_service_type type)
 {
        switch (type) {
        case CONNMAN_SERVICE_TYPE_UNKNOWN:
-               break;
+               return "unknown";
        case CONNMAN_SERVICE_TYPE_SYSTEM:
                return "system";
        case CONNMAN_SERVICE_TYPE_ETHERNET:
@@ -1423,9 +1423,30 @@ bool __connman_service_index_is_default(int index)
        return __connman_service_get_index(service) == index;
 }
 
+static void type_changed(struct connman_service *service)
+{
+       const char *str;
+
+       if (!service)
+               return;
+
+       if (!allow_property_changed(service))
+               return;
+
+       str = __connman_service_type2string(service->type);
+       if (!str)
+               return;
+
+       connman_dbus_property_changed_basic(service->path,
+                               CONNMAN_SERVICE_INTERFACE, "Type",
+                                               DBUS_TYPE_STRING, &str);
+}
+
 static void default_changed(void)
 {
        struct connman_service *service = __connman_service_get_default();
+       enum connman_service_type old_type = CONNMAN_SERVICE_TYPE_UNKNOWN;
+       enum connman_service_type new_type = CONNMAN_SERVICE_TYPE_UNKNOWN;
 
        if (service == current_default)
                return;
@@ -1436,6 +1457,11 @@ static void default_changed(void)
 
        __connman_service_timeserver_changed(current_default, NULL);
 
+       if (current_default)
+               old_type = current_default->type;
+       if (service)
+               new_type = service->type;
+
        current_default = service;
 
        if (service) {
@@ -1448,6 +1474,9 @@ static void default_changed(void)
        }
 
        __connman_notifier_default_changed(service);
+
+       if (old_type != new_type)
+               type_changed(service);
 }
 
 static void state_changed(struct connman_service *service)
-- 
1.9.1

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

Reply via email to