#include <ctype.h>
#include <stdint.h>
+#if defined TIZEN_EXT
+#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
+#endif
+
#include <connman/storage.h>
#include <connman/setting.h>
#include <connman/agent.h>
#endif
case CONNMAN_SERVICE_SECURITY_8021X:
return "ieee8021x";
+#if defined TIZEN_EXT
+ default:
+ break;
+#endif
}
return NULL;
GSList *list;
char *val_str;
+ if (!assoc_rd)
+ return;
+
if (g_slist_length(assoc_rd->reject_time_list) < 1)
return;
}
void connman_service_set_disconnection_requested(struct connman_service *service,
- bool disconnection_requested)
+ bool disconnection_requested)
{
if (service == NULL)
return;
service->disconnection_requested = disconnection_requested;
disconnection_requested_changed(service);
}
+
+static void connman_service_emit_state(struct connman_service *service,
+ enum connman_service_state state)
+{
+ const char *str;
+ enum connman_service_state cur_state = service->state;
+
+ if (service->state != state)
+ service->state = state;
+
+ str = state2string(service->state);
+ if (!str) {
+ service->state = cur_state;
+ return;
+ }
+
+ DBG(" %s, %s", str, service->path);
+
+ connman_dbus_property_changed_basic(service->path,
+ CONNMAN_SERVICE_INTERFACE, "State",
+ DBUS_TYPE_STRING, &str);
+
+ emit_state_changed_with_properties(service);
+ service->state = cur_state;
+}
+
+void connman_service_notify_reconnection(struct connman_service *service)
+{
+ if (!service)
+ return;
+
+ if (service->state != CONNMAN_SERVICE_STATE_READY &&
+ service->state != CONNMAN_SERVICE_STATE_ONLINE)
+ return;
+
+ connman_service_emit_state(service, CONNMAN_SERVICE_STATE_CONFIGURATION);
+ connman_service_emit_state(service, CONNMAN_SERVICE_STATE_READY);
+
+ if (service->state == CONNMAN_SERVICE_STATE_ONLINE)
+ connman_service_emit_state(service, CONNMAN_SERVICE_STATE_ONLINE);
+}
#endif
static void strength_changed(struct connman_service *service)
break;
#if defined TIZEN_EXT
case CONNMAN_SERVICE_SECURITY_OWE:
+ case CONNMAN_SERVICE_SECURITY_DPP:
#endif
case CONNMAN_SERVICE_SECURITY_UNKNOWN:
case CONNMAN_SERVICE_SECURITY_NONE:
case CONNMAN_SERVICE_SECURITY_WEP:
case CONNMAN_SERVICE_SECURITY_8021X:
break;
+#if defined TIZEN_EXT
+ default:
+ break;
+#endif
}
if (service->wps_advertizing) {
if (service->is_internet_connection != internet_connection) {
service->is_internet_connection = internet_connection;
- g_get_current_time(&service->modified);
+ g_get_current_time((GTimeVal *)&service->modified);
service_save(service);
}
}
#if defined TIZEN_EXT
case CONNMAN_SERVICE_SECURITY_OWE:
case CONNMAN_SERVICE_SECURITY_DPP:
+ default:
#endif
break;
}
{
const char *str;
+#if !defined TIZEN_EXT
if (service->error == error)
return;
+#endif
service->error = error;
frequency = connman_network_get_frequency(service->network);
if (ins_settings.last_connected) {
- if (g_strcmp0(last_connected_ident, service->identifier) == 0 &&
- (((frequency >= FREQ_RANGE_24GHZ_CHANNEL_1 &&
- frequency <= FREQ_RANGE_24GHZ_CHANNEL_14) &&
- service->strength >= ins_settings.signal_level3_24ghz) ||
- ((frequency >= FREQ_RANGE_5GHZ_CHANNEL_32 &&
- frequency <= FREQ_RANGE_5GHZ_CHANNEL_165) &&
- service->strength >= ins_settings.signal_level3_5ghz))) {
- score += ins_settings.last_connected_score;
+ if (ins_settings.last_connected) {
+ if (g_strcmp0(last_connected_ident, service->identifier) == 0 &&
+ (((frequency >= FREQ_RANGE_24GHZ_CHANNEL_1 &&
+ frequency <= FREQ_RANGE_24GHZ_CHANNEL_14) &&
+ service->strength >= ins_settings.signal_level3_24ghz) ||
+ ((frequency >= FREQ_RANGE_5GHZ_CHANNEL_32 &&
+ frequency <= FREQ_RANGE_5GHZ_CHANNEL_165) &&
+ service->strength >= ins_settings.signal_level3_5ghz))) {
+ score += ins_settings.last_connected_score;
+ }
}
}
#if defined TIZEN_EXT && defined TIZEN_EXT_INS
int score_a;
int score_b;
+ gint strength = 0;
#else /* defined TIZEN_EXT && defined TIZEN_EXT_INS */
gint strength;
#endif /* defined TIZEN_EXT && defined TIZEN_EXT_INS */
score_b = calculate_score(service_b);
if (score_b != score_a)
return score_b - score_a;
+ else if (score_b == score_a) {
+ strength = (gint) service_b->strength - (gint) service_a->strength;
+ if (strength)
+ return strength;
+ }
#else /* defined TIZEN_EXT && defined TIZEN_EXT_INS */
strength = (gint) service_b->strength - (gint) service_a->strength;
if (strength)
return g_strcmp0(service_a->name, service_b->name);
}
-#if defined TIZEN_EXT && defined TIZEN_EXT_INS
-static void print_service_sort(gpointer data, gpointer user_data)
-{
- struct connman_service *service = data;
-
- if (service->type != CONNMAN_SERVICE_TYPE_WIFI)
- return;
-
- DBG("name[%-20s] total[%2d] last_usr[%2d] last_conn[%2d] "
- "freq[%2d] sec[%2d] internet[%2d] strength[%2d]",
- service->name, service->ins_score, service->score_last_user_selection,
- service->score_last_connected, service->score_frequency,
- service->score_security_priority, service->score_internet_connection,
- service->score_strength);
-}
-#endif /* defined TIZEN_EXT && defined TIZEN_EXT_INS */
-
static void service_list_sort(void)
{
if (service_list && service_list->next) {
service_list = g_list_sort(service_list, service_compare);
-#if defined TIZEN_EXT && defined TIZEN_EXT_INS
- g_list_foreach(service_list, print_service_sort, NULL);
-#endif /* defined TIZEN_EXT && defined TIZEN_EXT_INS */
service_schedule_changed();
}
}
#endif
}
}
+
+static void emit_wifi_roaming_failure(struct connman_service *service,
+ enum connman_service_state new_state)
+{
+ if (connman_setting_get_bool("WifiRoaming") &&
+ connman_network_get_bool(service->network, "WiFi.Roaming")) {
+ const char *cur_bssid;
+ const char *dst_bssid;
+ const char *ifname;
+ struct connman_device *device;
+
+ device = connman_network_get_device(service->network);
+ if (device) {
+ ifname = connman_device_get_string(device, "Interface");
+ cur_bssid = connman_network_get_string(service->network,
+ "WiFi.RoamingCurBSSID");
+ dst_bssid = connman_network_get_string(service->network,
+ "WiFi.RoamingDstBSSID");
+ }
+
+ if (device && ifname && cur_bssid && dst_bssid) {
+ switch(new_state) {
+ case CONNMAN_SERVICE_STATE_UNKNOWN:
+ case CONNMAN_SERVICE_STATE_ASSOCIATION:
+ case CONNMAN_SERVICE_STATE_CONFIGURATION:
+ case CONNMAN_SERVICE_STATE_READY:
+ case CONNMAN_SERVICE_STATE_ONLINE:
+ break;
+ case CONNMAN_SERVICE_STATE_DISCONNECT:
+ case CONNMAN_SERVICE_STATE_FAILURE:
+ case CONNMAN_SERVICE_STATE_IDLE:
+ __connman_technology_notify_roaming_state(ifname,
+ "failure", cur_bssid, dst_bssid);
+ connman_network_set_bool(service->network,
+ "WiFi.Roaming", false);
+ connman_network_set_string(service->network,
+ "WiFi.RoamingCurBSSID", NULL);
+ connman_network_set_string(service->network,
+ "WiFi.RoamingDstBSSID", NULL);
+ break;
+ }
+ }
+ }
+}
#endif
static const char *get_dbus_sender(struct connman_service *service)
proxy_changed(service);
#if defined TIZEN_EXT
}
+
+ emit_wifi_roaming_failure(service, new_state);
#endif
/*
report_error_cb,
get_dbus_sender(service),
NULL);
+#if !defined TIZEN_EXT
goto notifier;
+#endif
}
service_complete(service);
break;
#else
__connman_service_connect_default(service);
#endif
- /* Update Wi-Fi Roaming result */
- if (connman_setting_get_bool("WifiRoaming") &&
- connman_network_get_bool(service->network, "WiFi.Roaming")) {
- const char *cur_bssid;
- const char *dst_bssid;
- const char *ifname;
- struct connman_device *device;
-
- device = connman_network_get_device(service->network);
- if (device) {
- ifname = connman_device_get_string(device, "Interface");
- cur_bssid = connman_network_get_string(service->network,
- "WiFi.RoamingCurBSSID");
- dst_bssid = connman_network_get_string(service->network,
- "WiFi.RoamingDstBSSID");
- }
-
- if (device && ifname && cur_bssid && dst_bssid) {
- switch(new_state) {
- case CONNMAN_SERVICE_STATE_UNKNOWN:
- case CONNMAN_SERVICE_STATE_ASSOCIATION:
- case CONNMAN_SERVICE_STATE_CONFIGURATION:
- break;
- case CONNMAN_SERVICE_STATE_READY:
- case CONNMAN_SERVICE_STATE_ONLINE:
- __connman_technology_notify_roaming_state(ifname,
- "success", cur_bssid, dst_bssid);
- connman_network_set_bool(service->network,
- "WiFi.Roaming", false);
- connman_network_set_string(service->network,
- "WiFi.RoamingCurBSSID", NULL);
- connman_network_set_string(service->network,
- "WiFi.RoamingDstBSSID", NULL);
- break;
- case CONNMAN_SERVICE_STATE_DISCONNECT:
- case CONNMAN_SERVICE_STATE_FAILURE:
- case CONNMAN_SERVICE_STATE_IDLE:
- __connman_technology_notify_roaming_state(ifname,
- "failure", cur_bssid, dst_bssid);
- connman_network_set_bool(service->network,
- "WiFi.Roaming", false);
- connman_network_set_string(service->network,
- "WiFi.RoamingCurBSSID", NULL);
- connman_network_set_string(service->network,
- "WiFi.RoamingDstBSSID", NULL);
- break;
- }
- }
- }
+ emit_wifi_roaming_failure(service, new_state);
#endif
__connman_connection_update_gateway();
+#if !defined TIZEN_EXT
notifier:
+#endif
if ((old_state == CONNMAN_SERVICE_STATE_ONLINE &&
new_state != CONNMAN_SERVICE_STATE_READY) ||
(old_state == CONNMAN_SERVICE_STATE_READY &&
if (service->state == CONNMAN_SERVICE_STATE_FAILURE)
return -EALREADY;
+#if defined TIZEN_EXT
+ /*
+ * change connman_service_error type
+ * from CONNMAN_SERVICE_ERROR_AUTH_FAILED to CONNMAN_SERVICE_ERROR_INVALID_KEY
+ * in case of SAE security type.
+ */
+ if (error == CONNMAN_SERVICE_ERROR_AUTH_FAILED &&
+ service->security == CONNMAN_SERVICE_SECURITY_SAE) {
+ DBG("SAE security auth failed, set error to invalid-key and ignore the service");
+ error = CONNMAN_SERVICE_ERROR_INVALID_KEY;
+ __connman_service_set_ignore(service, true);
+ }
+#endif
+
set_error(service, error);
/* default internet service: fix not cleared if pdp activation*/
return -ENOKEY;
break;
+#if defined TIZEN_EXT
+ default:
+ break;
+#endif
}
break;
}
case CONNMAN_SERVICE_SECURITY_8021X:
prepare_8021x(service);
break;
+#if defined TIZEN_EXT
+ default:
+ break;
+#endif
}
if (__connman_stats_service_register(service) == 0) {
need_save |= update_last_connected_bssid(service);
need_save |= update_assoc_reject(service);
if (need_save) {
- g_get_current_time(&service->modified);
+ g_get_current_time((GTimeVal *)&service->modified);
service_ext_save(service);
need_sort = true;
}