From: Daniel Wagner Date: Thu, 31 Mar 2011 08:02:33 +0000 (+0200) Subject: notify: Add service state notifiers X-Git-Tag: accepted/2.0alpha-wayland/20121110.002834~1617 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=a4682c5e09c0aebbc0ffd0689523228f9570ca95;p=profile%2Fivi%2Fconnman.git notify: Add service state notifiers --- diff --git a/include/notifier.h b/include/notifier.h index db2ea5c..4349f83 100644 --- a/include/notifier.h +++ b/include/notifier.h @@ -46,6 +46,8 @@ struct connman_notifier { connman_bool_t enabled); void (*offline_mode) (connman_bool_t enabled); void (*proxy_changed) (struct connman_service *service); + void (*service_state_changed) (struct connman_service *service, + enum connman_service_state state); }; int connman_notifier_register(struct connman_notifier *notifier); diff --git a/src/connman.h b/src/connman.h index c16059c..a030a42 100644 --- a/src/connman.h +++ b/src/connman.h @@ -602,6 +602,8 @@ void __connman_notifier_disconnect(enum connman_service_type type); void __connman_notifier_offlinemode(connman_bool_t enabled); void __connman_notifier_default_changed(struct connman_service *service); void __connman_notifier_proxy_changed(struct connman_service *service); +void __connman_notifier_service_state_changed(struct connman_service *service, + enum connman_service_state state); connman_bool_t __connman_notifier_is_registered(enum connman_service_type type); connman_bool_t __connman_notifier_is_enabled(enum connman_service_type type); diff --git a/src/notifier.c b/src/notifier.c index 23774ef..f02f2da 100644 --- a/src/notifier.c +++ b/src/notifier.c @@ -424,6 +424,19 @@ void __connman_notifier_offlinemode(connman_bool_t enabled) } } +void __connman_notifier_service_state_changed(struct connman_service *service, + enum connman_service_state state) +{ + GSList *list; + + for (list = notifier_list; list; list = list->next) { + struct connman_notifier *notifier = list->data; + + if (notifier->service_state_changed) + notifier->service_state_changed(service, state); + } +} + static connman_bool_t technology_supported(enum connman_service_type type) { switch (type) { diff --git a/src/service.c b/src/service.c index 91e0a61..4d5d78c 100644 --- a/src/service.c +++ b/src/service.c @@ -835,10 +835,14 @@ static void mode_changed(struct connman_service *service) static void state_changed(struct connman_service *service) { + enum connman_service_state state; const char *str; - str = state2string(combine_state(service->state_ipv4, - service->state_ipv6)); + state = combine_state(service->state_ipv4, service->state_ipv6); + + __connman_notifier_service_state_changed(service, state); + + str = state2string(state); if (str == NULL) return;