/*
- * Copyright 2012 Samsung Electronics Co., Ltd
+ * Network Client Library
*
- * Licensed under the Flora License, Version 1.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.tizenopensource.org/license
+* Copyright 2012 Samsung Electronics Co., Ltd
+
+* Licensed under the Flora License, Version 1.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+
+* http://www.tizenopensource.org/license
+
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
*
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
*/
static int __net_svc_error_string_to_enum(const char *error);
static void __net_handle_svc_failure_ind(const char *profile_name, const char *svc_error);
static void __net_handle_state_ind(const char* profile_name, net_state_type_t profile_state);
+static void __net_init_dbus_thread();
/*****************************************************************************
* Global Functions
event_data.Error = NET_ERR_NONE;
if(request_table[NETWORK_REQUEST_TYPE_SCAN].flag == TRUE)
- memset(&request_table[NETWORK_REQUEST_TYPE_SCAN],
- 0, sizeof(network_request_table_t));
+ memset(&request_table[NETWORK_REQUEST_TYPE_SCAN], 0, sizeof(network_request_table_t));
} else if (strcmp(state, "enabled") == 0 && NetworkInfo.wifi_state != WIFI_ON) {
NetworkInfo.wifi_state = WIFI_ON;
wifi_state_flag = 1;
event_data.Error = NET_ERR_NONE;
- usleep(300000); /* This will be removed after connman upgrade */
}
if (wifi_state_flag != 0) {
NETWORK_LOG(NETWORK_LOW,
"Sending NET_EVENT_WIFI_POWER_RSP wifi state : %d\n",
NetworkInfo.wifi_state);
+ _net_dbus_clear_pending_call();
} else {
event_data.Event = NET_EVENT_WIFI_POWER_IND;
NETWORK_LOG(NETWORK_LOW,
return NET_ERR_NONE;
}
+static int __net_handle_specific_scan_resp(GSList *bss_info_list)
+{
+ __NETWORK_FUNC_ENTER__;
+
+ net_event_info_t event_data = {0,};
+
+ if (request_table[NETWORK_REQUEST_TYPE_SPECIFIC_SCAN].flag == TRUE) {
+ memset(&request_table[NETWORK_REQUEST_TYPE_SPECIFIC_SCAN],
+ 0, sizeof(network_request_table_t));
+
+ _net_dbus_clear_pending_call();
+
+ event_data.Event = NET_EVENT_SPECIFIC_SCAN_IND;
+ NETWORK_LOG(NETWORK_LOW,
+ "Sending NET_EVENT_SPECIFIC_SCAN_IND wifi state : %d\n",
+ NetworkInfo.wifi_state);
+
+ NETWORK_LOG(NETWORK_LOW, "bss_info_list : 0x%x\n", bss_info_list);
+ event_data.Data = bss_info_list;
+ _net_client_callback(&event_data);
+ }
+
+ __NETWORK_FUNC_EXIT__;
+ return NET_ERR_NONE;
+}
+
static int __net_svc_error_string_to_enum(const char *error)
{
if (strcmp(error, "out-of-range") == 0)
return NET_ERR_CONNECTION_OUT_OF_RANGE;
- else if(strcmp(error, "pin-missing") == 0)
+ else if (strcmp(error, "pin-missing") == 0)
return NET_ERR_CONNECTION_PIN_MISSING;
- else if(strcmp(error, "dhcp-failed") == 0)
+ else if (strcmp(error, "dhcp-failed") == 0)
return NET_ERR_CONNECTION_DHCP_FAILED;
- else if(strcmp(error, "connect-failed") == 0)
+ else if (strcmp(error, "connect-failed") == 0)
return NET_ERR_CONNECTION_CONNECT_FAILED;
- else if(strcmp(error, "login-failed") == 0)
+ else if (strcmp(error, "login-failed") == 0)
return NET_ERR_CONNECTION_LOGIN_FAILED;
- else if(strcmp(error, "auth-failed") == 0)
+ else if (strcmp(error, "auth-failed") == 0)
return NET_ERR_CONNECTION_AUTH_FAILED;
- else if(strcmp(error, "invalid-key") == 0)
+ else if (strcmp(error, "invalid-key") == 0)
return NET_ERR_CONNECTION_INVALID_KEY;
return NET_ERR_UNKNOWN;
char *svc_name2 = request_table[NETWORK_REQUEST_TYPE_ENROLL_WPS].ProfileName;
if (request_table[NETWORK_REQUEST_TYPE_OPEN_CONNECTION].flag == TRUE &&
- strcmp(profile_name, svc_name1) == 0) {
+ strstr(profile_name, svc_name1) != NULL) {
memset(&request_table[NETWORK_REQUEST_TYPE_OPEN_CONNECTION], 0,
sizeof(network_request_table_t));
event_data.Event = NET_EVENT_OPEN_RSP;
g_strlcpy(event_string, "Sending NET_EVENT_OPEN_RSP", 64);
+ _net_dbus_clear_pending_call();
} else if (request_table[NETWORK_REQUEST_TYPE_ENROLL_WPS].flag == TRUE &&
strcmp(profile_name, svc_name2) == 0) {
event_data.Event = NET_EVENT_WIFI_WPS_RSP;
g_strlcpy(event_string, "Sending NET_EVENT_WIFI_WPS_RSP", 64);
+ _net_dbus_clear_pending_call();
} else {
__net_handle_state_ind(profile_name, NET_STATE_TYPE_FAILURE);
__NETWORK_FUNC_EXIT__;
__NETWORK_FUNC_EXIT__;
}
+static wlan_security_mode_type_t __net_get_wlan_sec_mode(int security)
+{
+ switch (security) {
+ default:
+ return WLAN_SEC_MODE_NONE;
+ case 2:
+ return WLAN_SEC_MODE_WEP;
+ case 3:
+ return WLAN_SEC_MODE_WPA_PSK;
+ case 4:
+ return WLAN_SEC_MODE_IEEE8021X;
+ }
+}
+
static DBusHandlerResult
__net_signal_filter (DBusConnection* conn, DBusMessage* msg, void* user_data)
{
net_err_t Error = NET_ERR_NONE;
net_device_t device_type = NET_DEVICE_UNKNOWN;
- if(msg == NULL)
- {
- NETWORK_LOG( NETWORK_LOW, "Invalid Message. Ignore\n");
+ if (msg == NULL) {
+ NETWORK_LOG(NETWORK_LOW, "Invalid Message. Ignore\n");
/* We have handled this message, don't pass it on */
__NETWORK_FUNC_EXIT__;
return DBUS_HANDLER_RESULT_HANDLED;
}
-
- if (dbus_message_is_signal(msg, CONNMAN_MANAGER_INTERFACE, CONNMAN_SIGNAL_PROPERTY_CHANGED))
- {
+
+ if (dbus_message_is_signal(msg, CONNMAN_MANAGER_INTERFACE, CONNMAN_SIGNAL_PROPERTY_CHANGED)) {
sigvalue = _net_get_string(msg);
- if(sigvalue == NULL)
- {
+ if (sigvalue == NULL) {
/* We have handled this message, don't pass it on */
__NETWORK_FUNC_EXIT__;
return DBUS_HANDLER_RESULT_HANDLED;
}
- NETWORK_LOG( NETWORK_LOW, "[Manager : PropertyChanged] Got Signal with value [%s]\n", sigvalue);
- if(strcmp(sigvalue, "Services") == 0)
- {
+ NETWORK_LOG(NETWORK_LOW, "[Manager : PropertyChanged] Got Signal with value [%s]\n", sigvalue);
+
+ if (strcmp(sigvalue, "Services") == 0) {
/** Ignore - compared for future use */
- }
- else if(strcmp(sigvalue, "ConnectedTechnologies") == 0)
- {
+ } else if (strcmp(sigvalue, "ConnectedTechnologies") == 0) {
/** Ignore - compared for future use */
- }
- else if(strcmp(sigvalue, "State") == 0)
- {
+ } else if (strcmp(sigvalue, "State") == 0) {
/** Ignore - compared for future use */
- }
- else if(strcmp(sigvalue, "DefaultTechnology") == 0)
- {
+ } else if (strcmp(sigvalue, "DefaultTechnology") == 0) {
/** Ignore - compared for future use */
- }
- else
- {
- NETWORK_LOG( NETWORK_LOW, "-------[Manager : PropertyChanged]--------\n");
+ } else {
+ NETWORK_LOG(NETWORK_LOW, "-------[Manager : PropertyChanged]--------\n");
}
/* We have handled this message, don't pass it on */
__NETWORK_FUNC_EXIT__;
return DBUS_HANDLER_RESULT_HANDLED;
- }
- else if (dbus_message_is_signal(msg, CONNMAN_MANAGER_INTERFACE, CONNMAN_SIGNAL_STATE_CHANGED))
- {
+ } else if (dbus_message_is_signal(msg, CONNMAN_MANAGER_INTERFACE, CONNMAN_SIGNAL_STATE_CHANGED)) {
sigvalue = _net_get_string(msg);
- if(sigvalue == NULL)
- {
+ if (sigvalue == NULL) {
/* We have handled this message, don't pass it on */
__NETWORK_FUNC_EXIT__;
return DBUS_HANDLER_RESULT_HANDLED;
}
- NETWORK_LOG( NETWORK_LOW, "[Manager : StateChanged] Got Signal with value [%s]\n", sigvalue);
- if(strcmp(sigvalue, "online") == 0)
- {
+ NETWORK_LOG(NETWORK_LOW, "[Manager : StateChanged] Got Signal with value [%s]\n", sigvalue);
+
+ if (strcmp(sigvalue, "online") == 0) {
/** Ignore - compared for future use */
}
/* We have handled this message, don't pass it on */
__NETWORK_FUNC_EXIT__;
return DBUS_HANDLER_RESULT_HANDLED;
- }
- else if (dbus_message_is_signal(msg, CONNMAN_MANAGER_INTERFACE, CONNMAN_SIGNAL_SCAN_COMPLETED))
- {
+ } else if (dbus_message_is_signal(msg, CONNMAN_MANAGER_INTERFACE, CONNMAN_SIGNAL_SCAN_COMPLETED)) {
__net_handle_scan_rsp(msg);
/* We have handled this message, don't pass it on */
__NETWORK_FUNC_EXIT__;
return DBUS_HANDLER_RESULT_HANDLED;
- }
- else if (dbus_message_is_signal(msg, CONNMAN_TECHNOLOGY_INTERFACE, CONNMAN_SIGNAL_PROPERTY_CHANGED))
- {
+ } else if (dbus_message_is_signal(msg, NETCONFIG_WIFI_INTERFACE, NETCONFIG_SIGNAL_POWERON_COMPLETED)) {
+ __net_handle_wifi_power_rsp("enabled");
+
+ /* We have handled this message, don't pass it on */
+ __NETWORK_FUNC_EXIT__;
+ return DBUS_HANDLER_RESULT_HANDLED;
+ } else if (dbus_message_is_signal(msg, NETCONFIG_WIFI_INTERFACE, NETCONFIG_SIGNAL_POWEROFF_COMPLETED)) {
+ __net_handle_wifi_power_rsp("offline");
+
+ /* We have handled this message, don't pass it on */
+ __NETWORK_FUNC_EXIT__;
+ return DBUS_HANDLER_RESULT_HANDLED;
+ } else if (dbus_message_is_signal(msg, NETCONFIG_WIFI_INTERFACE, NETCONFIG_SIGNAL_SPECIFIC_SCAN_DONE)) {
+ DBusMessageIter iter, array;
+ dbus_message_iter_init(msg, &iter);
+ dbus_message_iter_recurse(&iter, &array);
+
+ GSList *bss_info_list = NULL;
+
+ /* The dbus message will be packed in this format: {{"ssid", <ssid name>}{"security", <security mode>}....}*/
+ while (dbus_message_iter_get_arg_type(&array) == DBUS_TYPE_DICT_ENTRY) {
+ DBusMessageIter entry, dict;
+ const char *key = NULL;
+ const char *ssid = NULL;
+ const int security = 0;
+
+ dbus_message_iter_recurse(&array, &entry);
+ dbus_message_iter_get_basic(&entry, &key);
+
+ if (g_strcmp0(key, "ssid")) {
+ Error = NET_ERR_UNKNOWN;
+ break;
+ }
+ dbus_message_iter_next(&entry);
+ dbus_message_iter_recurse(&entry, &dict);
+ dbus_message_iter_get_basic(&dict, &ssid);
+ NETWORK_LOG(NETWORK_LOW, "Got an ssid: %s", ssid);
+
+ dbus_message_iter_next(&array);
+ if (dbus_message_iter_get_arg_type(&array) != DBUS_TYPE_DICT_ENTRY) {
+ Error = NET_ERR_UNKNOWN;
+ break;
+ }
+ dbus_message_iter_recurse(&array, &entry);
+ dbus_message_iter_get_basic(&entry, &key);
+ if (g_strcmp0(key, "security")) {
+ Error = NET_ERR_UNKNOWN;
+ break;
+ }
+ dbus_message_iter_next(&entry);
+ dbus_message_iter_recurse(&entry, &dict);
+ dbus_message_iter_get_basic(&dict, (void *)&security);
+ NETWORK_LOG(NETWORK_LOW, "with security: %d", security);
+
+ net_wifi_connection_info_t *resp_data = g_try_new0(net_wifi_connection_info_t, 1);
+ g_strlcpy(resp_data->essid, ssid, NET_WLAN_ESSID_LEN);
+ resp_data->security_info.sec_mode = __net_get_wlan_sec_mode(security);
+ bss_info_list = g_slist_append(bss_info_list, resp_data);
+
+ dbus_message_iter_next(&array);
+ }
+
+ NETWORK_LOG(NETWORK_LOW, "Received the signal: %s with total bss count = %d(Error = %d)", NETCONFIG_SIGNAL_SPECIFIC_SCAN_DONE, g_slist_length(bss_info_list), Error);
+
+ __net_handle_specific_scan_resp(bss_info_list);
+
+ /* Specific Scan response handled. Release/Destroy the list */
+ g_slist_free_full(bss_info_list, g_free);
+
+ /* We have handled this message, don't pass it on */
+ __NETWORK_FUNC_EXIT__;
+ return DBUS_HANDLER_RESULT_HANDLED;
+ } else if (dbus_message_is_signal(msg, CONNMAN_TECHNOLOGY_INTERFACE, CONNMAN_SIGNAL_PROPERTY_CHANGED)) {
char* property = NULL;
sigvalue = __net_get_property(msg, &property);
- if(sigvalue == NULL)
- {
+ if (sigvalue == NULL) {
/* We have handled this message, don't pass it on */
__NETWORK_FUNC_EXIT__;
return DBUS_HANDLER_RESULT_HANDLED;
}
-
+
memset(ProfileName, 0, sizeof(ProfileName));
_net_get_path(msg, ProfileName);
- NETWORK_LOG( NETWORK_LOW,
+ NETWORK_LOG(NETWORK_LOW,
"[Technology : PropertyChanged] Got Signal with value [%s] path [%s] state [%s]\n",
sigvalue, ProfileName, property);
- if(strstr(ProfileName, "/wifi") == NULL)
- {
- __NETWORK_FUNC_EXIT__;
- return DBUS_HANDLER_RESULT_HANDLED;
- }
-
- if(strcmp(sigvalue, "State") == 0 && property != NULL)
- {
- __net_handle_wifi_power_rsp(property);
- }
/* We have handled this message, don't pass it on */
__NETWORK_FUNC_EXIT__;
return DBUS_HANDLER_RESULT_HANDLED;
- }
- else if (dbus_message_is_signal(msg, CONNMAN_SERVICE_INTERFACE, CONNMAN_SIGNAL_PROPERTY_CHANGED))
- {
+ } else if (dbus_message_is_signal(msg, CONNMAN_SERVICE_INTERFACE, CONNMAN_SIGNAL_PROPERTY_CHANGED)) {
sigvalue = _net_get_string(msg);
- if(sigvalue == NULL)
- {
+ if (sigvalue == NULL) {
/* We have handled this message, don't pass it on */
__NETWORK_FUNC_EXIT__;
return DBUS_HANDLER_RESULT_HANDLED;
}
- NETWORK_LOG( NETWORK_LOW, "[Service : PropertyChanged] Got Signal with value [%s]\n", sigvalue);
- if(strcmp(sigvalue, "Strength") == 0)
- {
- /** Ignore - compared for future use */
- }
- else if(strcmp(sigvalue, "PassphraseRequired") == 0)
- {
+ if(strcmp(sigvalue, "Strength") != 0) /** Ignore Strength signal */
+ NETWORK_LOG(NETWORK_LOW, "[Service : PropertyChanged] Got Signal with value [%s]\n", sigvalue);
+
+ if (strcmp(sigvalue, "PassphraseRequired") == 0) {
/** Ignore - compared for future use */
- }
- else if(strcmp(sigvalue, "State") == 0)
- {
+ } else if (strcmp(sigvalue, "State") == 0) {
memset(ProfileName, 0, sizeof(ProfileName));
_net_get_path(msg, ProfileName);
device_type = _net_get_tech_type_from_path(ProfileName);
- if(device_type == NET_DEVICE_UNKNOWN)
- {
+ if (device_type == NET_DEVICE_UNKNOWN) {
/* We have handled this message, don't pass it on */
__NETWORK_FUNC_EXIT__;
return DBUS_HANDLER_RESULT_HANDLED;
svc_state, svc_error, ProfileName);
if (device_type == NET_DEVICE_WIFI &&
- NetworkInfo.wifi_state == WIFI_OFF) {
+ NetworkInfo.wifi_state == WIFI_OFF) {
NETWORK_LOG(NETWORK_LOW, "Warning!! Wi-Fi is already off!!\n");
/* We have handled this message, don't pass it on */
__NETWORK_FUNC_EXIT__;
return DBUS_HANDLER_RESULT_HANDLED;;
}
-
- if(strcmp(svc_state, "idle") == 0)
- {
+
+ if (strcmp(svc_state, "idle") == 0) {
service_state_table[device_type] = NET_STATE_TYPE_IDLE;
__net_handle_state_ind(ProfileName, NET_STATE_TYPE_IDLE);
- }
- else if(strcmp(svc_state, "association") == 0)
- {
+ } else if (strcmp(svc_state, "association") == 0) {
service_state_table[device_type] = NET_STATE_TYPE_ASSOCIATION;
__net_handle_state_ind(ProfileName, NET_STATE_TYPE_ASSOCIATION);
- }
- else if(strcmp(svc_state, "configuration") == 0)
- {
+ } else if (strcmp(svc_state, "configuration") == 0) {
service_state_table[device_type] = NET_STATE_TYPE_CONFIGURATION;
__net_handle_state_ind(ProfileName, NET_STATE_TYPE_CONFIGURATION);
- }
- else if(strcmp(svc_state, "ready") == 0 ||
- strcmp(svc_state, "online") == 0)
- {
- if(service_state_table[device_type] != NET_STATE_TYPE_READY &&
- service_state_table[device_type] != NET_STATE_TYPE_ONLINE)
- {
+ } else if (strcmp(svc_state, "ready") == 0 ||
+ strcmp(svc_state, "online") == 0) {
+ if (service_state_table[device_type] != NET_STATE_TYPE_READY &&
+ service_state_table[device_type] != NET_STATE_TYPE_ONLINE) {
svc_name1 = request_table[NETWORK_REQUEST_TYPE_OPEN_CONNECTION].ProfileName;
svc_name2 = request_table[NETWORK_REQUEST_TYPE_ENROLL_WPS].ProfileName;
-
- if(request_table[NETWORK_REQUEST_TYPE_OPEN_CONNECTION].flag == TRUE &&
- strcmp(sig_path, svc_name1) == 0)
- {
+
+ if (request_table[NETWORK_REQUEST_TYPE_OPEN_CONNECTION].flag == TRUE &&
+ strstr(sig_path, svc_name1) != NULL) {
memset(&request_table[NETWORK_REQUEST_TYPE_OPEN_CONNECTION], 0,
sizeof(network_request_table_t));
event_data.Event = NET_EVENT_OPEN_RSP;
- NETWORK_LOG( NETWORK_LOW, "Sending NET_EVENT_OPEN_RSP\n");
- }
- else if(request_table[NETWORK_REQUEST_TYPE_ENROLL_WPS].flag == TRUE &&
- strcmp(sig_path, svc_name2) == 0)
- {
+ NETWORK_LOG(NETWORK_LOW, "Sending NET_EVENT_OPEN_RSP\n");
+ _net_dbus_clear_pending_call();
+ } else if (request_table[NETWORK_REQUEST_TYPE_ENROLL_WPS].flag == TRUE &&
+ strcmp(sig_path, svc_name2) == 0) {
memset(&request_table[NETWORK_REQUEST_TYPE_ENROLL_WPS], 0,
sizeof(network_request_table_t));
event_data.Event = NET_EVENT_WIFI_WPS_RSP;
- NETWORK_LOG( NETWORK_LOW, "Sending NET_EVENT_WIFI_WPS_RSP\n");
- }
- else
- {
+ NETWORK_LOG(NETWORK_LOW, "Sending NET_EVENT_WIFI_WPS_RSP\n");
+ _net_dbus_clear_pending_call();
+ } else {
event_data.Event = NET_EVENT_OPEN_IND;
- NETWORK_LOG( NETWORK_LOW, "Sending NET_EVENT_OPEN_IND\n");
+ NETWORK_LOG(NETWORK_LOW, "Sending NET_EVENT_OPEN_IND\n");
}
net_profile_info_t prof_info;
- if((Error = net_get_profile_info(ProfileName, &prof_info)) != NET_ERR_NONE)
- {
- NETWORK_LOG( NETWORK_ERROR, "Error!!! net_get_profile_info() failed [%s]\n",
+ if ((Error = net_get_profile_info(ProfileName, &prof_info)) != NET_ERR_NONE) {
+ NETWORK_LOG(NETWORK_ERROR, "Error!!! net_get_profile_info() failed [%s]\n",
_net_print_error(Error));
event_data.Datalength = 0;
event_data.Data = NULL;
- }
- else
- {
+ } else {
event_data.Datalength = sizeof(net_profile_info_t);
event_data.Data = &prof_info;
}
snprintf(event_data.ProfileName, NET_PROFILE_NAME_LEN_MAX + 1, "%s", ProfileName);
open_connection_rsp_sent = TRUE;
_net_client_callback(&event_data);
- }
- else
- {
+ } else {
if (strcmp(svc_state, "ready") == 0)
__net_handle_state_ind(ProfileName, NET_STATE_TYPE_READY);
else
service_state_table[device_type] = NET_STATE_TYPE_READY;
else
service_state_table[device_type] = NET_STATE_TYPE_ONLINE;
- }
- else if(strcmp(svc_state, "disconnect") == 0)
- {
+ } else if (strcmp(svc_state, "disconnect") == 0) {
svc_name1 = request_table[NETWORK_REQUEST_TYPE_CLOSE_CONNECTION].ProfileName;
svc_name2 = request_table[NETWORK_REQUEST_TYPE_OPEN_CONNECTION].ProfileName;
svc_name3 = request_table[NETWORK_REQUEST_TYPE_ENROLL_WPS].ProfileName;
- if(request_table[NETWORK_REQUEST_TYPE_OPEN_CONNECTION].flag == TRUE &&
- strcmp(sig_path, svc_name2) == 0)
- {
+ if (request_table[NETWORK_REQUEST_TYPE_OPEN_CONNECTION].flag == TRUE &&
+ strstr(sig_path, svc_name2) != NULL) {
memset(&request_table[NETWORK_REQUEST_TYPE_OPEN_CONNECTION], 0,
sizeof(network_request_table_t));
event_data.Datalength = 0;
event_data.Data = NULL;
- NETWORK_LOG( NETWORK_LOW, "Sending NET_EVENT_OPEN_RSP\n");
+ NETWORK_LOG(NETWORK_LOW, "Sending NET_EVENT_OPEN_RSP\n");
+ _net_dbus_clear_pending_call();
_net_client_callback(&event_data);
- }
- else if(request_table[NETWORK_REQUEST_TYPE_ENROLL_WPS].flag == TRUE &&
- strcmp(sig_path, svc_name3) == 0)
- {
+ } else if (request_table[NETWORK_REQUEST_TYPE_ENROLL_WPS].flag == TRUE &&
+ strcmp(sig_path, svc_name3) == 0) {
memset(&request_table[NETWORK_REQUEST_TYPE_ENROLL_WPS], 0,
sizeof(network_request_table_t));
event_data.Datalength = 0;
event_data.Data = NULL;
- NETWORK_LOG( NETWORK_LOW, "Sending NET_EVENT_WIFI_WPS_RSP\n");
+ NETWORK_LOG(NETWORK_LOW, "Sending NET_EVENT_WIFI_WPS_RSP\n");
+ _net_dbus_clear_pending_call();
_net_client_callback(&event_data);
- }
- else if(request_table[NETWORK_REQUEST_TYPE_CLOSE_CONNECTION].flag == TRUE &&
- strcmp(sig_path, svc_name1) == 0)
- {
- memset(&request_table[NETWORK_REQUEST_TYPE_CLOSE_CONNECTION], 0,
+ } else if (request_table[NETWORK_REQUEST_TYPE_CLOSE_CONNECTION].flag == TRUE &&
+ strcmp(sig_path, svc_name1) == 0) {
+ memset(&request_table[NETWORK_REQUEST_TYPE_CLOSE_CONNECTION], 0,
sizeof(network_request_table_t));
/** Send Close Resp */
event_data.Datalength = 0;
event_data.Data = NULL;
- NETWORK_LOG( NETWORK_LOW, "Sending NET_EVENT_CLOSE_RSP\n");
+ NETWORK_LOG(NETWORK_LOW, "Sending NET_EVENT_CLOSE_RSP\n");
+ _net_dbus_clear_pending_call();
_net_client_callback(&event_data);
-
- }
- else
- {
+ } else {
/** Send Close Ind */
event_data.Error = Error;
event_data.Event = NET_EVENT_CLOSE_IND;
event_data.Datalength = 0;
event_data.Data = NULL;
- NETWORK_LOG( NETWORK_LOW, "Sending NET_EVENT_CLOSE_IND\n");
+ NETWORK_LOG(NETWORK_LOW, "Sending NET_EVENT_CLOSE_IND\n");
_net_client_callback(&event_data);
}
service_state_table[device_type] = NET_STATE_TYPE_DISCONNECT;
- }
- else if(strcmp(svc_state, "failure") == 0)
- {
+ } else if (strcmp(svc_state, "failure") == 0) {
__net_handle_svc_failure_ind(sig_path, (char*)svc_error);
service_state_table[device_type] = NET_STATE_TYPE_FAILURE;
__NETWORK_FUNC_EXIT__;
return DBUS_HANDLER_RESULT_HANDLED;
}
- }
- else if(strcmp(sigvalue, "Nameservers") == 0)
- {
+ } else if (strcmp(sigvalue, "Nameservers") == 0) {
/* We have handled this message, don't pass it on */
__NETWORK_FUNC_EXIT__;
return DBUS_HANDLER_RESULT_HANDLED;
- }
- else if(strcmp(sigvalue, "IPv4") == 0)
- {
+ } else if (strcmp(sigvalue, "IPv4") == 0) {
/** Ignore - compared for future use */
- }
- else if(strcmp(sigvalue, "Ethernet") == 0)
- {
+ } else if (strcmp(sigvalue, "Ethernet") == 0) {
/** Ignore - compared for future use */
- }
- else if(strcmp(sigvalue, "Domains") == 0)
- {
+ } else if (strcmp(sigvalue, "Domains") == 0) {
/** Ignore - compared for future use */
- }
- else if(strcmp(sigvalue, "IPv4.Configuration") == 0)
- {
+ } else if (strcmp(sigvalue, "IPv4.Configuration") == 0) {
/** Ignore - compared for future use */
- }
- else
- {
+ } else {
/** Ignore - compared for future use */
}
return DBUS_HANDLER_RESULT_HANDLED;
}
- if (dbus_message_is_signal(msg, CONNMAN_COUNTER_INTERFACE, "Usage"))
- {
- NETWORK_LOG( NETWORK_LOW, "Received [COUNTER_USAGE_SIGNAL] signal from modman\n");
- }
- else if (dbus_message_is_signal(msg, CONNMAN_COUNTER_INTERFACE, "Release"))
- {
- NETWORK_LOG( NETWORK_LOW, "Received [COUNTER_RELEASE_SIGNAL] signal from modman\n");
+ if (dbus_message_is_signal(msg, CONNMAN_COUNTER_INTERFACE, "Usage")) {
+ NETWORK_LOG(NETWORK_LOW, "Received [COUNTER_USAGE_SIGNAL] signal\n");
+ } else if (dbus_message_is_signal(msg, CONNMAN_COUNTER_INTERFACE, "Release")) {
+ NETWORK_LOG(NETWORK_LOW, "Received [COUNTER_RELEASE_SIGNAL] signal\n");
}
- NETWORK_LOG( NETWORK_LOW, "Useless signal. Ignored !!!\n");
+ NETWORK_LOG(NETWORK_LOW, "Useless signal. Ignored !!!\n");
__NETWORK_FUNC_EXIT__;
return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
}
+static void __net_init_dbus_thread()
+{
+ static dbus_bool_t init_required = TRUE;
+ if (init_required) {
+ dbus_g_thread_init();
+ init_required = FALSE;
+ }
+}
+
/*****************************************************************************
* Global Functions
*****************************************************************************/
{
__NETWORK_FUNC_ENTER__;
+ DBusError err;
+ dbus_error_init(&err);
+
if (signal_conn == NULL) {
NETWORK_LOG(NETWORK_HIGH, "Already de-registered. Nothing to be done\n");
__NETWORK_FUNC_EXIT__;
return NET_ERR_NONE;
}
+ dbus_bus_remove_match(signal_conn, CONNMAN_MANAGER_SIGNAL_FILTER, &err);
+ dbus_connection_flush(signal_conn);
+ if (dbus_error_is_set(&err)) {
+ NETWORK_LOG(NETWORK_ERROR, "Error!!! Remove Match Error (%s)\n", err.message);
+ dbus_error_free(&err);
+ __NETWORK_FUNC_EXIT__;
+ return NET_ERR_UNKNOWN;
+ }
+
+ dbus_bus_remove_match(signal_conn, CONNMAN_TECHNOLOGY_SIGNAL_FILTER, &err);
+ dbus_connection_flush(signal_conn);
+ if (dbus_error_is_set(&err)) {
+ NETWORK_LOG(NETWORK_ERROR, "Error!!! Remove Match Error (%s)\n", err.message);
+ dbus_error_free(&err);
+ __NETWORK_FUNC_EXIT__;
+ return NET_ERR_UNKNOWN;
+ }
+
+ dbus_bus_remove_match(signal_conn, CONNMAN_SERVICE_SIGNAL_FILTER, &err);
+ dbus_connection_flush(signal_conn);
+ if (dbus_error_is_set(&err)) {
+ NETWORK_LOG(NETWORK_ERROR, "Error!!! Remove Match Error (%s)\n", err.message);
+ dbus_error_free(&err);
+ __NETWORK_FUNC_EXIT__;
+ return NET_ERR_UNKNOWN;
+ }
+
+ dbus_bus_remove_match(signal_conn, CONNMAN_NETWORK_COUNTER_FILTER, &err);
+ dbus_connection_flush(signal_conn);
+ if (dbus_error_is_set(&err)) {
+ NETWORK_LOG(NETWORK_ERROR, "Error!!! Remove Match Error (%s)\n", err.message);
+ dbus_error_free(&err);
+ __NETWORK_FUNC_EXIT__;
+ return NET_ERR_UNKNOWN;
+ }
+
+ dbus_bus_remove_match(signal_conn, NETCONFIG_WIFI_FILTER, &err);
+ dbus_connection_flush(signal_conn);
+ if (dbus_error_is_set(&err)) {
+ NETWORK_LOG(NETWORK_ERROR, "Error!!! Remove Match Error (%s)\n", err.message);
+ dbus_error_free(&err);
+ __NETWORK_FUNC_EXIT__;
+ return NET_ERR_UNKNOWN;
+ }
+
dbus_connection_remove_filter(signal_conn, __net_signal_filter, NULL);
NETWORK_LOG(NETWORK_HIGH, "dbus_connection_remove_filter() successful\n");
NETWORK_LOG(NETWORK_LOW, "Successfully removed signal filter rules\n");
/* If DBusPendingCall remains, it should be released */
- if (_net_dbus_is_pending_call_used() == TRUE)
- {
- dbus_pending_call_cancel(_net_dbus_get_pending_call());
- _net_dbus_set_pending_call(NULL);
- _net_dbus_set_pending_call_used(FALSE);
+ if (_net_dbus_is_pending_call_used() == TRUE) {
+ _net_dbus_clear_pending_call();
NETWORK_LOG(NETWORK_HIGH, "DBus pending call successfully removed\n");
}
dbus_connection_unref(signal_conn);
signal_conn = NULL;
+
__NETWORK_FUNC_EXIT__;
return NET_ERR_NONE;
}
int _net_register_signal(void)
{
+ __NETWORK_FUNC_ENTER__;
+
DBusConnection* conn = NULL;
DBusError err;
- __NETWORK_FUNC_ENTER__;
+ __net_init_dbus_thread();
dbus_error_init(&err);
conn = dbus_bus_get(DBUS_BUS_SYSTEM, NULL);
dbus_bus_add_match(conn, CONNMAN_MANAGER_SIGNAL_FILTER, &err);
dbus_connection_flush(conn);
if (dbus_error_is_set(&err)) {
- NETWORK_LOG(NETWORK_ERROR, "Error!!! Match Error (%s)\n", err.message);
+ NETWORK_LOG(NETWORK_ERROR, "Error!!! Add Match Error (%s)\n", err.message);
dbus_error_free(&err);
__NETWORK_FUNC_EXIT__;
return NET_ERR_UNKNOWN;
dbus_bus_add_match(conn, CONNMAN_TECHNOLOGY_SIGNAL_FILTER, &err);
dbus_connection_flush(conn);
if (dbus_error_is_set(&err)) {
- NETWORK_LOG(NETWORK_ERROR, "Error!!! Match Error (%s)\n", err.message);
+ NETWORK_LOG(NETWORK_ERROR, "Error!!! Add Match Error (%s)\n", err.message);
dbus_error_free(&err);
__NETWORK_FUNC_EXIT__;
return NET_ERR_UNKNOWN;
dbus_bus_add_match(conn, CONNMAN_SERVICE_SIGNAL_FILTER, &err);
dbus_connection_flush(conn);
if (dbus_error_is_set(&err)) {
- NETWORK_LOG(NETWORK_ERROR, "Error!!! Match Error (%s)\n", err.message);
+ NETWORK_LOG(NETWORK_ERROR, "Error!!! Add Match Error (%s)\n", err.message);
dbus_error_free(&err);
__NETWORK_FUNC_EXIT__;
return NET_ERR_UNKNOWN;
}
- dbus_bus_add_match(conn, CONNMAN_NETWORK_COUNTER_FILTER, &err);
+ dbus_bus_add_match(conn, CONNMAN_NETWORK_COUNTER_FILTER, &err);
dbus_connection_flush(conn);
if (dbus_error_is_set(&err)) {
- NETWORK_LOG(NETWORK_ERROR, "Error!!! Match Error (%s)\n", err.message);
+ NETWORK_LOG(NETWORK_ERROR, "Error!!! Add Match Error (%s)\n", err.message);
+ dbus_error_free(&err);
+ __NETWORK_FUNC_EXIT__;
+ return NET_ERR_UNKNOWN;
+ }
+
+ dbus_bus_add_match(conn, NETCONFIG_WIFI_FILTER, &err);
+ dbus_connection_flush(conn);
+ if (dbus_error_is_set(&err)) {
+ NETWORK_LOG(NETWORK_ERROR, "Error!!! Add Match Error (%s)\n", err.message);
dbus_error_free(&err);
__NETWORK_FUNC_EXIT__;
return NET_ERR_UNKNOWN;
}
NETWORK_LOG(NETWORK_LOW, "Successfully set signal filter rules\n");
+
__NETWORK_FUNC_EXIT__;
return NET_ERR_NONE;
}
net_err_t Error = NET_ERR_NONE;
net_cm_network_status_t network_status;
- Error = net_get_network_status(NET_DEVICE_WIFI, &network_status);
+ Error = _net_dbus_get_network_status(NET_DEVICE_WIFI, &network_status);
if (Error != NET_ERR_NONE) {
__NETWORK_FUNC_EXIT__;
return Error;
if (network_status == NET_STATUS_AVAILABLE)
service_state_table[NET_DEVICE_WIFI] = NET_STATE_TYPE_READY;
- Error = net_get_network_status(NET_DEVICE_CELLULAR, &network_status);
+ Error = _net_dbus_get_network_status(NET_DEVICE_CELLULAR, &network_status);
if (Error != NET_ERR_NONE) {
__NETWORK_FUNC_EXIT__;
return Error;