X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=src%2Fservice.c;h=f77c8a5841cf4e9ceeabd4e63338846092193bb6;hb=5269bd59e8100c6883b3f6e5609f57f8034e3140;hp=fb780fbe1fd41dbacce927ec055a0aa752df8f94;hpb=bae50775b1df50113c0dcb722f023fbf0bf979f3;p=platform%2Fupstream%2Fconnman.git diff --git a/src/service.c b/src/service.c index fb780fb..f77c8a5 100755 --- a/src/service.c +++ b/src/service.c @@ -860,6 +860,9 @@ static int service_ext_load(struct connman_service *service) int i; int err = 0; +#if defined TIZEN_EXT + if (!simplified_log) +#endif DBG("service %p", service); if (!service->network) @@ -1036,7 +1039,9 @@ static int service_load(struct connman_service *service) #if defined TIZEN_EXT && defined TIZEN_EXT_EAP_ON_ETHERNET bool use_eapol; #endif - +#if defined TIZEN_EXT + if (!simplified_log) +#endif DBG("service %p", service); keyfile = connman_storage_load_service(service->identifier); @@ -2964,6 +2969,31 @@ static void default_changed(void) __connman_notifier_default_changed(service); } +#if defined TIZEN_EXT +static void append_struct(gpointer value, gpointer user_data); + +static void emit_state_changed_with_properties(struct connman_service *service) +{ + DBusMessage *signal; + DBusMessageIter iter; + + if (!service) + return; + + signal = dbus_message_new_signal(service->path, CONNMAN_SERVICE_INTERFACE, + "StateChangedProperties"); + if (!signal) + return; + + dbus_message_iter_init_append(signal, &iter); + append_struct(service, &iter); + + g_dbus_send_message(connection, signal); + + return; +} +#endif + static void state_changed(struct connman_service *service) { const char *str; @@ -2977,14 +3007,17 @@ static void state_changed(struct connman_service *service) #if !defined TIZEN_EXT if (!allow_property_changed(service)) return; - -#endif -#if defined TIZEN_EXT +#else DBG(" %s, %s", str, service->path); #endif + connman_dbus_property_changed_basic(service->path, CONNMAN_SERVICE_INTERFACE, "State", DBUS_TYPE_STRING, &str); + +#if defined TIZEN_EXT + emit_state_changed_with_properties(service); +#endif } #if defined TIZEN_EXT @@ -4381,8 +4414,9 @@ static void append_properties(DBusMessageIter *dict, dbus_bool_t limited, connman_dbus_dict_append_basic(dict, "AssocStatusCode", DBUS_TYPE_INT32, &service->assoc_status_code); + val = service->hidden_service; connman_dbus_dict_append_basic(dict, "Hidden", - DBUS_TYPE_BOOLEAN, &service->hidden_service); + DBUS_TYPE_BOOLEAN, &val); break; #endif @@ -4390,7 +4424,7 @@ static void append_properties(DBusMessageIter *dict, dbus_bool_t limited, #if defined TIZEN_EXT && defined TIZEN_EXT_EAP_ON_ETHERNET connman_dbus_dict_append_dict(dict, "EapOverEthernet", append_eap_over_ethernet, service); - + /* fall through */ #endif /* defined TIZEN_EXT && defined TIZEN_EXT_EAP_ON_ETHERNET */ case CONNMAN_SERVICE_TYPE_BLUETOOTH: case CONNMAN_SERVICE_TYPE_GADGET: @@ -4888,6 +4922,30 @@ bool connman_service_get_internet_connection(struct connman_service *service) return service->is_internet_connection; } + +DBusMessage *connman_service_get_defaut_info(DBusMessage *msg, + struct connman_service *service) +{ + DBusMessage *reply; + DBusMessageIter array, dict; + + reply = dbus_message_new_method_return(msg); + if (!reply) + return NULL; + + dbus_message_iter_init_append(reply, &array); + + if (service) + dbus_message_iter_append_basic(&array, DBUS_TYPE_OBJECT_PATH, + &service->path); + + connman_dbus_dict_open(&array, &dict); + if (service) + append_properties(&dict, FALSE, service); + connman_dbus_dict_close(&array, &dict); + + return reply; +} #endif void __connman_service_set_proxy_autoconfig(struct connman_service *service, @@ -6234,6 +6292,9 @@ static void preferred_tech_add_by_type(gpointer data, gpointer user_data) tech_data->preferred_list = g_list_append(tech_data->preferred_list, service); +#if defined TIZEN_EXT + if (!simplified_log) +#endif DBG("type %d service %p %s", tech_data->type, service, service->name); } @@ -6331,6 +6392,9 @@ static bool auto_connect_service(GList *services, bool ignore[MAX_CONNMAN_SERVICE_TYPES] = { }; bool autoconnecting = false; GList *list; +#if defined TIZEN_EXT + GSList *wifi_ignore = NULL; +#endif DBG("preferred %d sessions %d reason %s", preferred, active_count, reason2string(reason)); @@ -6346,6 +6410,13 @@ static bool auto_connect_service(GList *services, for (list = services; list; list = list->next) { service = list->data; +#if defined TIZEN_EXT + if (service->type == CONNMAN_SERVICE_TYPE_WIFI) { + int index = connman_network_get_index(service->network); + if (g_slist_find(wifi_ignore, GINT_TO_POINTER(index)) != NULL) + continue; + } else +#endif if (ignore[service->type]) { DBG("service %p type %s ignore", service, __connman_service_type2string(service->type)); @@ -6369,9 +6440,18 @@ static bool auto_connect_service(GList *services, if (service->pending || is_connecting(service->state) || is_connected(service->state)) { +#if defined TIZEN_EXT + if (service->type == CONNMAN_SERVICE_TYPE_WIFI) { + int index = connman_network_get_index(service->network); + wifi_ignore = g_slist_prepend(wifi_ignore, GINT_TO_POINTER(index)); + + autoconnecting = true; + continue; + } +#else if (autoconnect_no_session_active(service)) return true; - +#endif ignore[service->type] = true; autoconnecting = true; @@ -6388,6 +6468,7 @@ static bool auto_connect_service(GList *services, #if defined TIZEN_EXT DBG("Service is not favorite, autoconnecting %d", autoconnecting); + g_slist_free(wifi_ignore); #endif return autoconnecting; } @@ -6403,7 +6484,9 @@ static bool auto_connect_service(GList *services, if (is_ignore(service) || service->state != CONNMAN_SERVICE_STATE_IDLE) continue; - +#if defined TIZEN_EXT + if (service->type != CONNMAN_SERVICE_TYPE_WIFI) +#endif if (autoconnect_already_connecting(service, autoconnecting)) { DBG("service %p type %s has no users", service, __connman_service_type2string(service->type)); @@ -6414,13 +6497,22 @@ static bool auto_connect_service(GList *services, (preferred) ? "preferred" : reason2string(reason)); __connman_service_connect(service, reason); - +#if !defined TIZEN_EXT if (autoconnect_no_session_active(service)) return true; - +#endif +#if defined TIZEN_EXT + if (service->type == CONNMAN_SERVICE_TYPE_WIFI) { + int index = connman_network_get_index(service->network); + wifi_ignore = g_slist_prepend(wifi_ignore, GINT_TO_POINTER(index)); + autoconnecting = true; + } +#endif ignore[service->type] = true; } - +#if defined TIZEN_EXT + g_slist_free(wifi_ignore); +#endif return autoconnecting; } @@ -7004,6 +7096,9 @@ static void service_append_added_foreach(gpointer data, gpointer user_data) append_struct(service, iter); g_hash_table_remove(services_notify->add, service->path); } else { +#if defined TIZEN_EXT + if (!simplified_log) +#endif DBG("changed %s", service->path); append_struct_service(iter, NULL, service); @@ -7212,6 +7307,9 @@ static DBusMessage *downgrade_service(DBusConnection *conn, static void service_schedule_added(struct connman_service *service) { +#if defined TIZEN_EXT + if (!simplified_log) +#endif DBG("service %p", service); g_hash_table_remove(services_notify->remove, service->path); @@ -7280,6 +7378,10 @@ static const GDBusMethodTable service_methods[] = { static const GDBusSignalTable service_signals[] = { { GDBUS_SIGNAL("PropertyChanged", GDBUS_ARGS({ "name", "s" }, { "value", "v" })) }, +#if defined TIZEN_EXT + { GDBUS_SIGNAL("StateChangedProperties", + GDBUS_ARGS({ "properties", "a{sv}" })) }, +#endif { }, }; @@ -7405,6 +7507,9 @@ static void stats_init(struct connman_service *service) static void service_initialize(struct connman_service *service) { +#if defined TIZEN_EXT + if (!simplified_log) +#endif DBG("service %p", service); service->refcount = 1; @@ -7731,6 +7836,25 @@ static gint service_compare(gconstpointer a, gconstpointer b) a_connected = is_connected(state_a); b_connected = is_connected(state_b); +#if defined TIZEN_EXT + if ((a_connected && b_connected) && + state_a == state_b && + service_a->type == CONNMAN_SERVICE_TYPE_WIFI && + service_b->type == CONNMAN_SERVICE_TYPE_WIFI) { + const char *default_interface = + connman_option_get_string("DefaultWifiInterface"); + const char *ifname_a = connman_device_get_string( + connman_network_get_device(service_a->network), "Interface"); + const char *ifname_b = connman_device_get_string( + connman_network_get_device(service_b->network), "Interface"); + + if (g_strcmp0(default_interface, ifname_a) == 0) + return -1; + else if (g_strcmp0(default_interface, ifname_b) == 0) + return 1; + } +#endif + if (a_connected && b_connected) { if (service_a->order > service_b->order) return -1; @@ -8660,6 +8784,14 @@ static int service_indicate_state(struct connman_service *service) searchdomain_remove_all(service); service->state = new_state; +#if defined TIZEN_EXT + if (!is_connected(old_state) && is_connected(new_state)) + connman_device_send_connected_signal( + connman_network_get_device(service->network), true); + else if (is_connected(old_state) && !is_connected(new_state)) + connman_device_send_connected_signal( + connman_network_get_device(service->network), false); +#endif state_changed(service); if (!is_connected(old_state) && is_connected(new_state)) @@ -9884,7 +10016,9 @@ static struct connman_service *service_get(const char *identifier) service = connman_service_create(); if (!service) return NULL; - +#if defined TIZEN_EXT + if (!simplified_log) +#endif DBG("service %p", service); service->identifier = g_strdup(identifier); @@ -9899,6 +10033,9 @@ static struct connman_service *service_get(const char *identifier) static int service_register(struct connman_service *service) { +#if defined TIZEN_EXT + if (!simplified_log) +#endif DBG("service %p", service); if (service->path) @@ -9916,7 +10053,7 @@ static int service_register(struct connman_service *service) if (ret == -ERANGE) service_ext_save(service); ret = __connman_config_provision_service(service); - if (ret < 0) + if (ret < 0 && !simplified_log) DBG("Failed to provision service"); #else if (__connman_config_provision_service(service) < 0) @@ -10532,7 +10669,8 @@ void __connman_service_notify_strength_changed(struct connman_network *network) return; service->strength = strength; - DBG("Strength %d", strength); + if (!simplified_log) + DBG("Strength %d", strength); strength_changed(service); service_list_sort(); }