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