return Error;
}
-static int __net_extract_service_info(network_info_s *network_info,
+int _net_extract_service_info(network_info_s *network_info,
const char* ProfileName, GVariantIter *iter,
net_profile_info_s* ProfInfo)
{
}
g_variant_get(message, "(a{sv})", &service);
- Error = __net_extract_service_info(network_info, ProfileName,
+ Error = _net_extract_service_info(network_info, ProfileName,
service, ProfInfo);
g_variant_iter_free(service);
while (g_variant_iter_loop(iter, "(oa{sv})", &path, &service)) {
if (g_strcmp0(request_table[NETWORK_REQUEST_TYPE_FORGET_AP].ProfileName, path) == 0) {
- Error = __net_extract_service_info(network_info,
+ Error = _net_extract_service_info(network_info,
path, service, &prof_info);
g_variant_iter_free(service);
g_free(path);
static int __net_dbus_get_technology_states(network_info_s *network_info);
//LCOV_EXCL_START
-static int string2state(const char *state)
-{
- if (g_strcmp0(state, "idle") == 0)
- return NET_STATE_TYPE_IDLE;
- else if (g_strcmp0(state, "association") == 0)
- return NET_STATE_TYPE_ASSOCIATION;
- else if (g_strcmp0(state, "configuration") == 0)
- return NET_STATE_TYPE_CONFIGURATION;
- else if (g_strcmp0(state, "ready") == 0)
- return NET_STATE_TYPE_READY;
- else if (g_strcmp0(state, "online") == 0)
- return NET_STATE_TYPE_ONLINE;
- else if (g_strcmp0(state, "disconnect") == 0)
- return NET_STATE_TYPE_DISCONNECT;
- else if (g_strcmp0(state, "failure") == 0)
- return NET_STATE_TYPE_FAILURE;
-
- return NET_STATE_TYPE_UNKNOWN;
-}
-
static int string2error(const char *error)
{
if (g_strcmp0(error, "out-of-range") == 0)
}
static int __net_handle_service_state_changed(network_info_s *network_info,
- const gchar *sig_path, const char *key, const char *state)
+ const gchar *sig_path, net_state_type_e state, net_profile_info_s *prof_info)
{
net_err_e Error = NET_ERR_NONE;
net_state_type_e old_state, new_state;
}
old_state = network_info->service_state;
- new_state = string2state(state);
+ new_state = state;
WIFI_LOG(WIFI_INFO, "old state [%s], new state [%s]",
_convert_net_state_to_string(old_state), _convert_net_state_to_string(new_state));
WIFI_LOG(WIFI_INFO, "Sending NET_EVENT_OPEN_IND");
}
- net_profile_info_s prof_info;
- if ((Error = net_get_profile_info(network_info, sig_path, &prof_info)) != NET_ERR_NONE) {
- WIFI_LOG(WIFI_ERROR, "net_get_profile_info() failed [%s]",
- _net_print_error(Error));
-
+ if (prof_info == NULL) {
event_data->Datalength = 0;
event_data->Data = NULL;
} else {
event_data->Datalength = sizeof(net_profile_info_s);
- event_data->Data = &prof_info;
+ event_data->Data = prof_info;
}
event_data->Error = Error;
{
__NETWORK_FUNC_ENTER__;
- const char *key = NULL;
- const char *value = NULL;
- GVariant *var;
network_info_s *network_info = (network_info_s *)user_data;
if (g_strcmp0(sig, SIGNAL_PROPERTY_CHANGED) == 0) {
+ const char *key = NULL;
+ const char *value = NULL;
+ GVariant *var;
+
g_variant_get(param, "(sv)", &key, &var);
if (g_str_has_prefix(path,
CONNMAN_WIFI_SERVICE_PROFILE_PREFIX) == TRUE) {
- if (g_strcmp0(key, "State") == 0) {
- g_variant_get(var, "s", &value);
-
- __net_handle_service_state_changed(network_info, path, key, value);
- } else if (g_strcmp0(key, "Error") == 0) {
+ if (g_strcmp0(key, "Error") == 0) {
g_variant_get(var, "s", &value);
__net_handle_service_set_error(network_info, key, value);
g_free((gchar *)key);
if (NULL != var)
g_variant_unref(var);
+
+ } else if (g_strcmp0(sig, SIGNAL_STATE_CHANGED_PROPERTIES) == 0) {
+ net_profile_info_s prof_info;
+ GVariantIter *iter = NULL;
+ const gchar *object_path = NULL;
+
+ memset(&prof_info, 0, sizeof(net_profile_info_s));
+
+ g_variant_get(param, "((&oa{sv}))", &object_path, &iter);
+
+ _net_extract_service_info(network_info, object_path, iter, &prof_info);
+
+ __net_handle_service_state_changed(network_info, object_path,
+ prof_info.ProfileState, &prof_info);
+
+ /* Free internal GSList */
+ if (prof_info.vsie_list)
+ g_slist_free_full(prof_info.vsie_list, g_free);
+
+ if (prof_info.bssid_list)
+ g_slist_free_full(prof_info.bssid_list, g_free);
+
+ g_variant_iter_free(iter);
}
__NETWORK_FUNC_EXIT__;
network_info->connection,
CONNMAN_SERVICE,
CONNMAN_SERVICE_INTERFACE,
- SIGNAL_PROPERTY_CHANGED,
+ SIGNAL_STATE_CHANGED_PROPERTIES,
+ NULL,
NULL,
- "State",
G_DBUS_SIGNAL_FLAGS_NONE,
__net_connman_service_signal_filter,
network_info,