/*
- * 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.
*/
{
__NETWORK_FUNC_ENTER__;
+ NETWORK_LOG(NETWORK_LOW, "__net_wifi_power_reply() called\n");
+
DBusMessage *reply = dbus_pending_call_steal_reply(call);
net_err_t Error = _net_get_error_from_netconfig_message(reply);
-
- if (Error == NET_ERR_NONE)
- goto done;
-
net_event_info_t event_data = {0,};
- net_wifi_state_t wifi_state = WIFI_UNKNOWN;
- NETWORK_LOG(NETWORK_ERROR,
- "Error!!! Wifi Power on/off failed. Error code : [%d]\n", Error);
+ if (Error != NET_ERR_NONE)
+ NETWORK_LOG(NETWORK_ERROR, "Error!!! Wifi Power on/off failed. Error code : [%d]\n", Error);
if (request_table[NETWORK_REQUEST_TYPE_WIFI_POWER].flag == TRUE) {
memset(&request_table[NETWORK_REQUEST_TYPE_WIFI_POWER],
0, sizeof(network_request_table_t));
event_data.Event = NET_EVENT_WIFI_POWER_RSP;
- event_data.Error = Error;
- event_data.Datalength = sizeof(net_wifi_state_t);
- event_data.Data = &wifi_state;
NETWORK_LOG(NETWORK_LOW,
- "Sending NET_EVENT_WIFI_POWER_RSP Error = %d\n", event_data.Error);
+ "Sending NET_EVENT_WIFI_POWER_RSP wifi state : %d Error = %d\n",
+ NetworkInfo.wifi_state, Error);
+
+ event_data.Datalength = sizeof(net_wifi_state_t);
+ event_data.Data = &(NetworkInfo.wifi_state);
+ event_data.Error = Error;
_net_client_callback(&event_data);
}
-done:
dbus_message_unref(reply);
dbus_pending_call_unref(call);
__NETWORK_FUNC_EXIT__;
}
-static int __net_append_argument(DBusMessageIter *iter, int ArgType, const char *Value)
+static void __net_specific_scan_wifi_reply(DBusPendingCall *call, void *user_data)
{
__NETWORK_FUNC_ENTER__;
- double Double = 0;
- unsigned char ByteValue = 0;
- dbus_bool_t booleanvalue = 0;
-
- dbus_uint16_t Uint16 = 0;
- dbus_int16_t Int16 = 0;
- dbus_uint32_t Uint32 = 0;
- dbus_int32_t Int32 = 0;
+ DBusMessage *reply = dbus_pending_call_steal_reply(call);
+ net_err_t Error = _net_get_error_from_netconfig_message(reply);
- switch(ArgType) {
- case DBUS_TYPE_BYTE:
- ByteValue = strtoul(Value, NULL, 0);
- dbus_message_iter_append_basic(iter, DBUS_TYPE_BYTE, &ByteValue);
- break;
+ if (Error != NET_ERR_NONE)
+ NETWORK_LOG(NETWORK_ERROR, "Error!!! Find hidden AP failed. Error code : [%d]\n", Error);
+ else
+ NETWORK_LOG(NETWORK_LOW, "Hidden AP response received for AP.\n");
+
+ if (request_table[NETWORK_REQUEST_TYPE_SPECIFIC_SCAN].flag == TRUE) {
+ net_event_info_t event_data = {0,};
+ if (NET_ERR_NONE != Error) {
+ /* An error occured. So lets reset specific scan request entry in the request table */
+ memset(&request_table[NETWORK_REQUEST_TYPE_SPECIFIC_SCAN],
+ 0, sizeof(network_request_table_t));
+ }
+ event_data.Event = NET_EVENT_SPECIFIC_SCAN_RSP;
+ NETWORK_LOG(NETWORK_LOW,
+ "Sending NET_EVENT_SPECIFIC_SCAN_RSP wifi state : %d Error = %d\n",
+ NetworkInfo.wifi_state, Error);
- case DBUS_TYPE_DOUBLE:
- Double = strtod(Value, NULL);
- dbus_message_iter_append_basic(iter, DBUS_TYPE_DOUBLE, &Double);
- break;
+ event_data.Datalength = sizeof(net_wifi_state_t);
+ event_data.Data = &(NetworkInfo.wifi_state);
+ event_data.Error = Error;
+ _net_client_callback(&event_data);
+ }
- case DBUS_TYPE_INT16:
- Int16 = strtol(Value, NULL, 0);
- dbus_message_iter_append_basic(iter, DBUS_TYPE_INT16, &Int16);
- break;
+ dbus_message_unref(reply);
+ dbus_pending_call_unref(call);
- case DBUS_TYPE_UINT16:
- Uint16 = strtoul(Value, NULL, 0);
- dbus_message_iter_append_basic(iter, DBUS_TYPE_UINT16, &Uint16);
- break;
+ network_dbus_pending_call_data.is_used = FALSE;
+ network_dbus_pending_call_data.pcall = NULL;
- case DBUS_TYPE_INT32:
- Int32 = strtol(Value, NULL, 0);
- dbus_message_iter_append_basic(iter, DBUS_TYPE_INT32, &Int32);
- break;
+ __NETWORK_FUNC_EXIT__;
+}
- case DBUS_TYPE_UINT32:
- Uint32 = strtoul(Value, NULL, 0);
- dbus_message_iter_append_basic(iter, DBUS_TYPE_UINT32, &Uint32);
- break;
+static char *__net_make_group_name(const char *ssid, const char *net_mode, const char *sec)
+{
+ char *buf;
+ const char *g_sec;
+ char buf_tmp[32] = {0,};
+ int i;
+ int ssid_len;
- case DBUS_TYPE_STRING:
- dbus_message_iter_append_basic(iter, DBUS_TYPE_STRING, &Value);
- break;
+ if (ssid == NULL || net_mode == NULL || sec == NULL)
+ return NULL;
- case DBUS_TYPE_OBJECT_PATH:
- dbus_message_iter_append_basic(iter, DBUS_TYPE_OBJECT_PATH, &Value);
- break;
+ ssid_len = strlen(ssid);
+ if (ssid_len < 1)
+ return NULL;
- case DBUS_TYPE_BOOLEAN:
- if( strcmp (Value, "true") == 0 ) {
- booleanvalue = TRUE;
- dbus_message_iter_append_basic(iter, DBUS_TYPE_BOOLEAN, &booleanvalue);
- } else if( strcmp (Value, "false") == 0 ) {
- booleanvalue = FALSE;
- dbus_message_iter_append_basic(iter, DBUS_TYPE_BOOLEAN, &booleanvalue);
- } else {
- NETWORK_LOG(NETWORK_ERROR, "Error!!! Expected \"true\" or \"false\" instead of \"%s\"\n", Value);
- __NETWORK_FUNC_EXIT__;
- return NET_ERR_UNKNOWN;
- }
- break;
+ if (g_strcmp0(net_mode, "managed") != 0)
+ return NULL;
- default:
- NETWORK_LOG( NETWORK_ERROR, "Error!!! Unsupported data ArgType %c\n", (char) ArgType);
- __NETWORK_FUNC_EXIT__;
- return NET_ERR_UNKNOWN;
- }
+ if (!g_strcmp0(sec, "wpa") || !g_strcmp0(sec, "rsn"))
+ g_sec = "psk";
+ else
+ g_sec = sec;
- __NETWORK_FUNC_EXIT__;
- return NET_ERR_NONE;
-}
+ buf = g_try_malloc0((ssid_len * 2) + strlen(net_mode) + strlen(sec) + 3);
+ if (buf == NULL)
+ return NULL;
-static int __net_append_array(DBusMessageIter *iter, int ArgType, const char *Value)
-{
- __NETWORK_FUNC_ENTER__;
+ for (i = 0; i < ssid_len; i++) {
+ snprintf(buf_tmp, 3, "%02x", ssid[i]);
+ strcat(buf, buf_tmp);
+ }
- const char *Val = NULL;
- char *saveptr = NULL;
- char *DupValue = strdup(Value);
+ snprintf(buf_tmp, 32, "_%s_%s", net_mode, g_sec);
+ strcat(buf, buf_tmp);
- Val = strtok_r(DupValue, ",", &saveptr);
- while(Val != NULL) {
- if( __net_append_argument(iter, ArgType, Val) != NET_ERR_NONE ) {
- NET_MEMFREE(DupValue);
- __NETWORK_FUNC_EXIT__;
- return NET_ERR_UNKNOWN;
- }
- Val = strtok_r(NULL, ",", &saveptr);
- }
- NET_MEMFREE(DupValue);
+ NETWORK_LOG(NETWORK_HIGH, "Group name : %s\n", buf);
- __NETWORK_FUNC_EXIT__;
- return NET_ERR_NONE;
+ return buf;
}
-static int __net_append_dict(DBusMessageIter *iter, int KeyType, int ValueType, const char *Value)
+static int __net_append_param(DBusMessage *message, char *param_array[])
{
- __NETWORK_FUNC_ENTER__;
+ int count = 0;
+ dbus_uint32_t uint32 = 0;
+ DBusMessageIter iter;
+ DBusMessageIter container_iter;
+ char *args = NULL;
+ char *ch = NULL;
- const char *Val = NULL;
- char *saveptr = NULL;
- char *DupValue = strdup(Value);
+ if (param_array == NULL)
+ return NET_ERR_NONE;
- Val = strtok_r(DupValue, ",", &saveptr);
- while(Val != NULL) {
- DBusMessageIter SubIter;
+ dbus_message_iter_init_append(message, &iter);
- dbus_message_iter_open_container(iter,
- DBUS_TYPE_DICT_ENTRY,
- NULL,
- &SubIter);
+ while (param_array[count] != NULL) {
+ args = param_array[count];
+ NETWORK_LOG(NETWORK_HIGH, "parameter %d - [%s]", count, param_array[count]);
- if( __net_append_argument (&SubIter, KeyType, Val) != NET_ERR_NONE ) {
- NETWORK_LOG(NETWORK_ERROR, "Error!!! __net_append_argument() failed\n");
- NET_MEMFREE(DupValue);
- __NETWORK_FUNC_EXIT__;
- return NET_ERR_UNKNOWN;
- }
-
- Val = strtok_r(NULL, ",", &saveptr);
- if(Val == NULL) {
- NETWORK_LOG(NETWORK_ERROR, "Error!!! Crashed dictionary data\n");
- NET_MEMFREE(DupValue);
- __NETWORK_FUNC_EXIT__;
- return NET_ERR_UNKNOWN;
+ ch = strchr(args, ':');
+ if (ch == NULL) {
+ NETWORK_LOG(NETWORK_ERROR, "Error!!! Invalid parameter[\"%s\"]\n", args);
+ return NET_ERR_INVALID_PARAM;
}
+ *ch = 0; ch++;
+
+ if (strcmp(args, CONNMAN_CLIENT_DBUS_TYPE_STRING) == 0) {
+ dbus_message_iter_append_basic(&iter, DBUS_TYPE_STRING, &ch);
+ } else if (strcmp(args, CONNMAN_CLIENT_DBUS_TYPE_UINT32) == 0) {
+ uint32 = strtoul(ch, NULL, 0);
+ dbus_message_iter_append_basic(&iter, DBUS_TYPE_UINT32, &uint32);
+ } else if (strcmp(args, CONNMAN_CLIENT_DBUS_TYPE_VARIANT) == 0) {
+ args = ch;
+ ch = strchr(args, ':');
+ if (ch == NULL) {
+ NETWORK_LOG(NETWORK_ERROR, "Error!!! Invalid data format[\"%s\"]\n", args);
+ return NET_ERR_INVALID_PARAM;
+ }
+ *ch = 0; ch++;
- if( __net_append_argument (&SubIter, ValueType, Val) != NET_ERR_NONE ) {
- NETWORK_LOG(NETWORK_ERROR, "Error!!! __net_append_argument() failed\n");
- NET_MEMFREE(DupValue);
- __NETWORK_FUNC_EXIT__;
- return NET_ERR_UNKNOWN;
+ if (strcmp(args, CONNMAN_CLIENT_DBUS_TYPE_STRING) == 0) {
+ dbus_message_iter_open_container(&iter, DBUS_TYPE_VARIANT,
+ DBUS_TYPE_STRING_AS_STRING, &container_iter);
+ dbus_message_iter_append_basic(&container_iter, DBUS_TYPE_STRING, &ch);
+ dbus_message_iter_close_container(&iter, &container_iter);
+ } else {
+ NETWORK_LOG(NETWORK_ERROR, "Error!!! Not supported data format[\"%s\"]\n", args);
+ return NET_ERR_INVALID_PARAM;
+ }
+ } else {
+ NETWORK_LOG(NETWORK_ERROR, "Error!!! Not supported data format[\"%s\"]\n", args);
+ return NET_ERR_INVALID_PARAM;
}
- dbus_message_iter_close_container (iter, &SubIter);
- Val = strtok_r(NULL, ",", &saveptr);
+ count++;
}
- NET_MEMFREE(DupValue);
- __NETWORK_FUNC_EXIT__;
- return NET_ERR_NONE;
-}
-static int __net_datatype_from_stringname(const char *Args)
-{
- __NETWORK_FUNC_ENTER__;
-
- int ArgType = 0;
-
- if( !strcmp(Args, CONNMAN_CLIENT_DBUS_TYPE_STRING) )
- ArgType = DBUS_TYPE_STRING;
- else if( !strcmp(Args, CONNMAN_CLIENT_DBUS_TYPE_INT16) )
- ArgType = DBUS_TYPE_INT16;
- else if( !strcmp(Args, CONNMAN_CLIENT_DBUS_TYPE_UINT16) )
- ArgType = DBUS_TYPE_UINT16;
- else if( !strcmp(Args, CONNMAN_CLIENT_DBUS_TYPE_INT32) )
- ArgType = DBUS_TYPE_INT32;
- else if( !strcmp(Args, CONNMAN_CLIENT_DBUS_TYPE_UINT32) )
- ArgType = DBUS_TYPE_UINT32;
- else if( !strcmp(Args, CONNMAN_CLIENT_DBUS_TYPE_INT64) )
- ArgType = DBUS_TYPE_INT64;
- else if( !strcmp(Args, CONNMAN_CLIENT_DBUS_TYPE_UINT64) )
- ArgType = DBUS_TYPE_UINT64;
- else if( !strcmp(Args, CONNMAN_CLIENT_DBUS_TYPE_DOUBLE) )
- ArgType = DBUS_TYPE_DOUBLE;
- else if( !strcmp(Args, CONNMAN_CLIENT_DBUS_TYPE_BYTE) )
- ArgType = DBUS_TYPE_BYTE;
- else if( !strcmp(Args, CONNMAN_CLIENT_DBUS_TYPE_BOOLEAN) )
- ArgType = DBUS_TYPE_BOOLEAN;
- else if( !strcmp(Args, CONNMAN_CLIENT_DBUS_TYPE_OBJECT_PATH) )
- ArgType = DBUS_TYPE_OBJECT_PATH;
- else {
- NETWORK_LOG( NETWORK_ERROR, "Error!!! Unknown Argument Type \"%s\"\n", Args);
- __NETWORK_FUNC_EXIT__;
- return NET_ERR_UNKNOWN;
- }
-
- __NETWORK_FUNC_EXIT__;
- return ArgType;
+ return NET_ERR_NONE;
}
-
-
/*****************************************************************************
* Global Functions Definition
*****************************************************************************/
-DBusMessage *_net_invoke_dbus_method(const char* dest, DBusConnection *connection,
- const char* path, char* interface_name, char* method, int *dbus_error)
+DBusMessage *_net_invoke_dbus_method(const char* dest, const char* path,
+ char* interface_name, char* method, char *param_array[], int *dbus_error)
{
__NETWORK_FUNC_ENTER__;
DBusError error;
+ DBusConnection* conn = NULL;
DBusMessage *reply = NULL;
DBusMessage *message = NULL;
*dbus_error = NET_ERR_NONE;
+ NETWORK_LOG(NETWORK_HIGH, "[DBUS Sync] %s.%s, %s\n", interface_name, method, path);
+
+ conn = dbus_bus_get(DBUS_BUS_SYSTEM, NULL);
+ if (conn == NULL) {
+ NETWORK_LOG(NETWORK_EXCEPTION, "Error!!! Can't get on system bus\n");
+ *dbus_error = NET_ERR_UNKNOWN;
+ __NETWORK_FUNC_EXIT__;
+ return NULL;
+ }
+
message = dbus_message_new_method_call(dest, path, interface_name, method);
if (message == NULL) {
NETWORK_LOG(NETWORK_ERROR, "Error!!! dbus_message_new_method_call() failed\n");
+ dbus_connection_unref(conn);
+ *dbus_error = NET_ERR_UNKNOWN;
+ __NETWORK_FUNC_EXIT__;
+ return NULL;
+ }
+
+ if (__net_append_param(message, param_array) != NET_ERR_NONE) {
+ NETWORK_LOG(NETWORK_ERROR, "Error!!! __net_append_param() failed\n");
+ dbus_message_unref(message);
+ dbus_connection_unref(conn);
+ *dbus_error = NET_ERR_INVALID_PARAM;
__NETWORK_FUNC_EXIT__;
return NULL;
}
dbus_error_init(&error);
- reply = dbus_connection_send_with_reply_and_block(connection,
- message, DBUS_REPLY_TIMEOUT, &error);
+ reply = dbus_connection_send_with_reply_and_block(conn, message, DBUS_REPLY_TIMEOUT, &error);
if (reply == NULL) {
if (dbus_error_is_set(&error) == TRUE) {
NETWORK_LOG(NETWORK_ERROR,
}
dbus_message_unref(message);
+ dbus_connection_unref(conn);
__NETWORK_FUNC_EXIT__;
return NULL;
}
dbus_message_unref(message);
+ dbus_connection_unref(conn);
__NETWORK_FUNC_EXIT__;
return reply;
}
-int _net_invoke_dbus_method_nonblock(const char* dest, DBusConnection *connection,
- const char* path, char* interface_name, char* method,
- DBusPendingCallNotifyFunction notify_func)
+int _net_invoke_dbus_method_nonblock(const char* dest, const char* path,
+ char* interface_name, char* method, DBusPendingCallNotifyFunction notify_func)
{
__NETWORK_FUNC_ENTER__;
+ DBusConnection* conn = NULL;
DBusMessage *message = NULL;
DBusPendingCall *call;
dbus_bool_t result;
+ NETWORK_LOG(NETWORK_HIGH, "[DBUS Async] %s.%s, %s\n", interface_name, method, path);
+
+ conn = dbus_bus_get(DBUS_BUS_SYSTEM, NULL);
+ if (conn == NULL) {
+ NETWORK_LOG(NETWORK_EXCEPTION, "Error!!! Can't get on system bus\n");
+ __NETWORK_FUNC_EXIT__;
+ return NET_ERR_UNKNOWN;
+ }
+
message = dbus_message_new_method_call(dest, path, interface_name, method);
if (message == NULL) {
NETWORK_LOG(NETWORK_ERROR, "Error!!! dbus_message_new_method_call() Failed\n");
+ dbus_connection_unref(conn);
__NETWORK_FUNC_EXIT__;
return NET_ERR_UNKNOWN;
}
- result = dbus_connection_send_with_reply(connection,
- message, &call, DBUS_REPLY_TIMEOUT);
+ result = dbus_connection_send_with_reply(conn, message, &call, DBUS_REPLY_TIMEOUT);
if (result == FALSE || call == NULL) {
NETWORK_LOG(NETWORK_ERROR, "Error!!! dbus_connection_send_with_reply() Failed\n");
dbus_message_unref(message);
+ dbus_connection_unref(conn);
return NET_ERR_UNKNOWN;
}
network_dbus_pending_call_data.is_used = TRUE;
dbus_message_unref(message);
+ dbus_connection_unref(conn);
__NETWORK_FUNC_EXIT__;
return NET_ERR_NONE;
}
-
-int _net_send_dbus_request(const char* destination, char *param_array[], DBusMessage** result)
-{
- __NETWORK_FUNC_ENTER__;
-
- DBusConnection *connection = NULL;
- DBusError error;
- DBusMessage *message = NULL;
- net_err_t Error = NET_ERR_NONE;
- char *RequestMethod = NULL;
- int i = 0;
- const char *path = NULL;
- const char *name = NULL;
- int param_count = 0;
- // const char *destination = CONNMAN_SERVICE;
- DBusMessageIter iter;
-
- for (param_count = 0; param_array[param_count] != NULL; param_count++) {
- NETWORK_LOG(NETWORK_HIGH, "[%s]\n", param_array[param_count]);
- }
- NETWORK_LOG(NETWORK_HIGH, "Total Arguments [%d]\n", param_count);
-
- path = param_array[i++]; /** 0th is path */
- name = param_array[i++]; /** 1st is request name */
-
- if ((strlen(path) == 0) || (strlen(name) == 0) ) {
- NETWORK_LOG(NETWORK_ASSERT, "Error!!! Invalid parameters passed path [%s], requested name [%s]\n",
- path, name);
- __NETWORK_FUNC_EXIT__;
- return NET_ERR_INVALID_PARAM;
- }
-
- dbus_error_init(&error);
-
- connection = dbus_bus_get(DBUS_BUS_SYSTEM, &error);
- if (connection == NULL) {
- NETWORK_LOG(NETWORK_EXCEPTION, "Error!!! Failed to get system dbus, error [%s]\n",
- error.message);
- dbus_error_free(&error);
- __NETWORK_FUNC_EXIT__;
- return NET_ERR_UNKNOWN;
- }
-
- RequestMethod = strrchr(name, '.');
- if (RequestMethod == NULL) {
- NETWORK_LOG(NETWORK_ERROR, "Error!!! Invalid method in \"%s\"\n", name);
- dbus_connection_unref(connection);
- __NETWORK_FUNC_EXIT__;
- return NET_ERR_UNKNOWN;
- }
-
- *RequestMethod = '\0';
- message = dbus_message_new_method_call(NULL, path, name, RequestMethod + 1);
-
- if (message == NULL) {
- NETWORK_LOG(NETWORK_ERROR, "Error!!! dbus_message_new_method_call() failed\n");
- __NETWORK_FUNC_EXIT__;
- Error = NET_ERR_UNKNOWN;
- goto end_error;
- }
-
- if (destination && !dbus_message_set_destination(message, destination)) {
- NETWORK_LOG(NETWORK_EXCEPTION, "Error!!! dbus_message_set_destination() failed\n");
- __NETWORK_FUNC_EXIT__;
- Error = NET_ERR_UNKNOWN;
- goto end_error;
- }
-
- dbus_message_iter_init_append(message, &iter);
-
- /** Two arguments name and path already extracted, so i == 2 */
- while (i < param_count) {
- char *Args = NULL;
- char *Ch = NULL;
- int ArgType = 0;
- int SecondaryType = 0;
- int ContainerType = 0;
- DBusMessageIter *TargetIter = NULL;
- DBusMessageIter ContainerIter;
-
- ArgType = DBUS_TYPE_INVALID;
- Args = param_array[i++];
- Ch = strchr (Args, ':');
-
- if (Ch == NULL) {
- NETWORK_LOG(NETWORK_ERROR, "Error!!! Invalid data format[\"%s\"]\n", Args);
- Error = NET_ERR_UNKNOWN;
- goto end_error;
- }
-
- *(Ch++) = 0;
-
- if (strcmp(Args, CONNMAN_CLIENT_DBUS_TYPE_VARIANT) == 0) {
- ContainerType = DBUS_TYPE_VARIANT;
- } else if (strcmp(Args, CONNMAN_CLIENT_DBUS_TYPE_ARRAY) == 0) {
- ContainerType = DBUS_TYPE_ARRAY;
- } else if (strcmp(Args, CONNMAN_CLIENT_DBUS_TYPE_DICT_ENTRY) == 0) {
- ContainerType = DBUS_TYPE_DICT_ENTRY;
- } else {
- ContainerType = DBUS_TYPE_INVALID;
- }
-
- if (ContainerType != DBUS_TYPE_INVALID) {
- Args = Ch;
- Ch = strchr(Args, ':');
- if (Ch == NULL) {
- NETWORK_LOG(NETWORK_ERROR, "Error!!! Invalid data format[\"%s\"]\n", Args);
- Error = NET_ERR_UNKNOWN;
- goto end_error;
- }
- *(Ch++) = 0;
- }
-
- if (Args[0] == 0) {
- ArgType = DBUS_TYPE_STRING;
- } else {
- ArgType = __net_datatype_from_stringname(Args);
- if (ArgType == NET_ERR_UNKNOWN) {
- NETWORK_LOG(NETWORK_ERROR, "Error!!! Unknown data type\n");
- Error = NET_ERR_UNKNOWN;
- goto end_error;
- }
- }
-
- if (ContainerType == DBUS_TYPE_DICT_ENTRY) {
- char Signature[5] = "";
- Args = Ch;
- Ch = strchr (Ch, ':');
-
- if (Ch == NULL) {
- NETWORK_LOG(NETWORK_ERROR, "Error!!! Invalid data format[\"%s\"]\n", Args);
- Error = NET_ERR_UNKNOWN;
- goto end_error;
- }
-
- *(Ch++) = 0;
- SecondaryType = __net_datatype_from_stringname(Args);
-
- if (SecondaryType == NET_ERR_UNKNOWN) {
- NETWORK_LOG(NETWORK_ERROR, "Error!!! Unknown datatype\n");
- Error = NET_ERR_UNKNOWN;
- goto end_error;
- }
-
- Signature[0] = DBUS_DICT_ENTRY_BEGIN_CHAR;
- Signature[1] = ArgType;
- Signature[2] = SecondaryType;
- Signature[3] = DBUS_DICT_ENTRY_END_CHAR;
- Signature[4] = '\0';
-
- dbus_message_iter_open_container(&iter,
- DBUS_TYPE_ARRAY,
- Signature,
- &ContainerIter);
- TargetIter = &ContainerIter;
- } else if (ContainerType != DBUS_TYPE_INVALID) {
- char Signature[2] = "";
- Signature[0] = ArgType;
- Signature[1] = '\0';
-
- dbus_message_iter_open_container(&iter,
- ContainerType,
- Signature,
- &ContainerIter);
- TargetIter = &ContainerIter;
- } else {
- TargetIter = &iter;
- }
-
- if (ContainerType == DBUS_TYPE_ARRAY) {
- if (__net_append_array(TargetIter, ArgType, Ch) != NET_ERR_NONE) {
- NETWORK_LOG(NETWORK_ERROR, "Error!!! __net_append_array() failed\n");
- Error = NET_ERR_UNKNOWN;
- goto end_error;
- }
- } else if (ContainerType == DBUS_TYPE_DICT_ENTRY) {
- if (__net_append_dict(TargetIter, ArgType, SecondaryType, Ch) != NET_ERR_NONE) {
- NETWORK_LOG(NETWORK_ERROR, "Error!!! __net_append_dict() failed\n");
- Error = NET_ERR_UNKNOWN;
- goto end_error;
- }
- } else {
- if (__net_append_argument(TargetIter, ArgType, Ch) != NET_ERR_NONE) {
- NETWORK_LOG(NETWORK_ERROR, "Error!!! __net_append_argument() failed\n");
- Error = NET_ERR_UNKNOWN;
- goto end_error;
- }
- }
-
- if (ContainerType != DBUS_TYPE_INVALID) {
- dbus_message_iter_close_container(&iter, &ContainerIter);
- }
- }
-
- DBusMessage *reply = NULL;
-
- dbus_error_init (&error);
-
- reply = dbus_connection_send_with_reply_and_block(connection,
- message,
- DBUS_REPLY_TIMEOUT,
- &error);
- if (reply == NULL) {
- if (dbus_error_is_set(&error) == TRUE) {
- NETWORK_LOG(NETWORK_ERROR,
- "Error!!! dbus_connection_send_with_reply_and_block() failed, Error[%s: %s]\n",
- error.name,
- error.message);
- Error = __net_error_string_to_enum(error.name);
- dbus_error_free(&error);
- } else
- Error = NET_ERR_UNKNOWN;
-
- goto end_error;
- } else {
- if (result != NULL) {
- *result = reply;
- } else {
- dbus_message_unref(reply);
- }
- }
-
-end_error:
- dbus_message_unref(message);
- dbus_connection_unref(connection);
-
- if (Error == NET_ERR_NONE)
- NETWORK_LOG(NETWORK_HIGH, "Successfully requested\n");
-
- __NETWORK_FUNC_EXIT__;
- return Error;
-}
-
-
int _net_dbus_open_connection(const char* profile_name)
{
__NETWORK_FUNC_ENTER__;
net_err_t Error = NET_ERR_NONE;
- DBusConnection* conn = NULL;
-
- conn = dbus_bus_get(DBUS_BUS_SYSTEM, NULL);
- if (conn == NULL) {
- NETWORK_LOG(NETWORK_EXCEPTION, "Error!!! Can't get on system bus\n");
- __NETWORK_FUNC_EXIT__;
- return NET_ERR_UNKNOWN;
- }
-
- NETWORK_LOG(NETWORK_HIGH, "Requesting [%s %s]\n",
- profile_name, CONNMAN_SERVICE_INTERFACE ".Connect");
-
- Error = _net_invoke_dbus_method_nonblock(CONNMAN_SERVICE, conn, profile_name,
+ Error = _net_invoke_dbus_method_nonblock(CONNMAN_SERVICE, profile_name,
CONNMAN_SERVICE_INTERFACE, "Connect", __net_open_connection_reply);
- dbus_connection_unref(conn);
-
__NETWORK_FUNC_EXIT__;
return Error;
}
-
int _net_dbus_close_connection(const char* profile_name)
{
__NETWORK_FUNC_ENTER__;
net_err_t Error = NET_ERR_NONE;
- DBusConnection* conn = NULL;
-
- conn = dbus_bus_get(DBUS_BUS_SYSTEM, NULL);
- if (conn == NULL) {
- NETWORK_LOG(NETWORK_EXCEPTION, "Error!!! Can't get on system bus\n");
- __NETWORK_FUNC_EXIT__;
- return NET_ERR_UNKNOWN;
- }
-
- NETWORK_LOG(NETWORK_HIGH, "Requesting [%s %s]\n",
- profile_name, CONNMAN_SERVICE_INTERFACE ".Disconnect");
-
- Error = _net_invoke_dbus_method_nonblock(CONNMAN_SERVICE, conn, profile_name,
+ Error = _net_invoke_dbus_method_nonblock(CONNMAN_SERVICE, profile_name,
CONNMAN_SERVICE_INTERFACE, "Disconnect", __net_close_connection_reply);
- dbus_connection_unref(conn);
-
__NETWORK_FUNC_EXIT__;
return Error;
}
-
-int _net_dbus_scan_request(void)
-{
- __NETWORK_FUNC_ENTER__;
-
- net_err_t Error = NET_ERR_NONE;
-
- /** dbus-send --system --print-reply --dest=net.connman / net.connman.Manager.RequestScan string:wifi */
- char request[] = CONNMAN_MANAGER_INTERFACE ".RequestScan";
- char param1[] = "string:wifi";
- char path[CONNMAN_MAX_BUFLEN] = "/";
- char* param_array[] = {NULL, NULL, NULL, NULL};
- param_array[0] = path;
- param_array[1] = request;
- param_array[2] = param1;
-
- NETWORK_LOG(NETWORK_HIGH, "path [%s]\n", path);
- NETWORK_LOG(NETWORK_HIGH, "Requesting [%s %s %s]\n", param_array[0], param_array[1], param_array[2]);
-
- if( (Error = _net_send_dbus_request(CONNMAN_SERVICE, param_array, NULL)) != NET_ERR_NONE ) {
- NETWORK_LOG(NETWORK_ERROR, "Error!!! _net_send_dbus_request failed\n");
- __NETWORK_FUNC_EXIT__;
- return Error;
- }
-
- __NETWORK_FUNC_EXIT__;
- return NET_ERR_NONE;
-}
-
-int _net_dbus_provision_service(gchar * config_str, int len)
+int _net_dbus_scan_request(void)
{
__NETWORK_FUNC_ENTER__;
net_err_t Error = NET_ERR_NONE;
+ DBusMessage *message = NULL;
- /** dbus-send --system --print-reply --dest=net.connman / net.connman.Manager.ProvisionService string:xxx..*/
- char request[] = CONNMAN_MANAGER_INTERFACE ".ProvisionService";
- char *param1 = NULL;
- int param1_len = len + strlen("string:");
+ char param1[] = "string:wifi";
char path[CONNMAN_MAX_BUFLEN] = "/";
- char* param_array[] = {NULL, NULL, NULL, NULL};
+ char* param_array[] = {NULL, NULL};
- param1 = (char*)calloc(param1_len, sizeof(char));
- if(param1 == NULL)
- return NET_ERR_UNKNOWN;
+ param_array[0] = param1;
- snprintf(param1, param1_len, "string:%s", config_str);
+ message = _net_invoke_dbus_method(CONNMAN_SERVICE, path,
+ CONNMAN_MANAGER_INTERFACE, "RequestScan", param_array, &Error);
- param_array[0] = path;
- param_array[1] = request;
- param_array[2] = param1;
+ if (Error == NET_ERR_IN_PROGRESS)
+ Error = NET_ERR_NONE;
- if( (Error = _net_send_dbus_request(CONNMAN_SERVICE, param_array, NULL)) != NET_ERR_NONE ) {
- NETWORK_LOG(NETWORK_ERROR, "Error!!! _net_send_dbus_request failed\n");
- NET_MEMFREE(param1);
- __NETWORK_FUNC_EXIT__;
- return Error;
- }
+ if (Error != NET_ERR_NONE)
+ NETWORK_LOG(NETWORK_ERROR, "Error!!! _net_invoke_dbus_method failed\n");
+
+ if (message)
+ dbus_message_unref(message);
- NET_MEMFREE(param1);
__NETWORK_FUNC_EXIT__;
- return NET_ERR_NONE;
+ return Error;
}
-
int _net_dbus_set_bgscan_mode(net_wifi_background_scan_mode_t mode)
{
__NETWORK_FUNC_ENTER__;
- /** TODO device interface missing */
-
net_err_t Error = NET_ERR_NONE;
- /** dbus-send --system --print-reply --dest=net.connman / net.connman.Manager.SetProperty string:ScanMode variant:uint16:0/1/2 */
- char request[] = NETCONFIG_WIFI_INTERFACE ".SetBgscan";
+ DBusMessage *message = NULL;
+
char param1[64] = "";
char path[CONNMAN_MAX_BUFLEN] = NETCONFIG_WIFI_PATH;
- char* param_array[] = {NULL, NULL, NULL, NULL};
-
- NETWORK_LOG(NETWORK_HIGH, "path [%s]\n", path);
+ char* param_array[] = {NULL, NULL};
snprintf(param1, 64, "uint32:%d", mode);
-
- param_array[0] = path;
- param_array[1] = request;
- param_array[2] = param1;
+ param_array[0] = param1;
- NETWORK_LOG(NETWORK_HIGH, "Requesting [%s %s %s]\n",
- param_array[0],
- param_array[1],
- param_array[2]
- );
+ message = _net_invoke_dbus_method(NETCONFIG_SERVICE, path,
+ NETCONFIG_WIFI_INTERFACE, "SetBgscan", param_array, &Error);
- Error = _net_send_dbus_request(NETCONFIG_SERVICE, param_array, NULL);
- if (Error != NET_ERR_NONE) {
- NETWORK_LOG(NETWORK_ERROR, "Error!!! Request failed\n");
- __NETWORK_FUNC_EXIT__;
- return Error;
- }
+ if (Error != NET_ERR_NONE)
+ NETWORK_LOG(NETWORK_ERROR, "Error!!! _net_invoke_dbus_method failed\n");
+
+ if (message)
+ dbus_message_unref(message);
__NETWORK_FUNC_EXIT__;
- return NET_ERR_NONE;
+ return Error;
}
int _net_dbus_get_technology_state(network_get_tech_state_info_t* tech_state)
__NETWORK_FUNC_ENTER__;
net_err_t Error = NET_ERR_NONE;
- DBusConnection* conn = NULL;
DBusMessage *message = NULL;
if ((tech_state == NULL) || (strlen(tech_state->technology) == 0)) {
return NET_ERR_INVALID_PARAM;
}
- conn = dbus_bus_get(DBUS_BUS_SYSTEM, NULL);
- if (conn == NULL) {
- NETWORK_LOG(NETWORK_EXCEPTION,
- "Error!!! Can't get on system bus\n");
- __NETWORK_FUNC_EXIT__;
- return NET_ERR_UNKNOWN;
- }
-
if (strcmp(tech_state->technology, "wifi") == 0) {
int hotspot_state = 0;
vconf_get_int(VCONFKEY_MOBILE_HOTSPOT_MODE, &hotspot_state);
goto done;
}
- message = _net_invoke_dbus_method(CONNMAN_SERVICE, conn, CONNMAN_MANAGER_PATH,
- CONNMAN_MANAGER_INTERFACE, "GetProperties", &Error);
+ message = _net_invoke_dbus_method(CONNMAN_SERVICE, CONNMAN_MANAGER_PATH,
+ CONNMAN_MANAGER_INTERFACE, "GetProperties", NULL, &Error);
if (message == NULL) {
- NETWORK_LOG(NETWORK_ERROR,
- "Error!!! Failed to get technology info\n");
+ NETWORK_LOG(NETWORK_ERROR, "Error!!! Failed to get technology info\n");
goto done;
}
dbus_message_unref(message);
done:
- dbus_connection_unref(conn);
__NETWORK_FUNC_EXIT__;
return Error;
}
-
int _net_dbus_get_network_status(net_device_t device_type, net_cm_network_status_t* network_status)
{
__NETWORK_FUNC_ENTER__;
return Error;
}
+int _net_dbus_get_statistics(net_device_t device_type, net_statistics_type_e statistics_type, unsigned long long *size)
+{
+ net_err_t Error = NET_ERR_NONE;
+ DBusMessage *message = NULL;
+ char *method = NULL;
+
+ if (device_type == NET_DEVICE_WIFI) {
+ switch (statistics_type) {
+ case NET_STATISTICS_TYPE_LAST_RECEIVED_DATA:
+ method = "GetWifiLastRxBytes";
+ break;
+ case NET_STATISTICS_TYPE_LAST_SENT_DATA:
+ method = "GetWifiLastTxBytes";
+ break;
+ case NET_STATISTICS_TYPE_TOTAL_RECEIVED_DATA:
+ method = "GetWifiTotalRxBytes";
+ break;
+ case NET_STATISTICS_TYPE_TOTAL_SENT_DATA:
+ method = "GetWifiTotalTxBytes";
+ break;
+ default:
+ NETWORK_LOG(NETWORK_ERROR, "Error!!! Invalid ProfileName passed\n");
+ return NET_ERR_INVALID_PARAM;
+ }
+ } else {
+ NETWORK_LOG(NETWORK_ERROR, "Error!!! Invalid ProfileName passed\n");
+ return NET_ERR_INVALID_PARAM;
+ }
+
+ message = _net_invoke_dbus_method(
+ NETCONFIG_SERVICE, NETCONFIG_STATISTICS_PATH,
+ NETCONFIG_STATISTICS_INTERFACE, method, NULL, &Error);
+ if (message == NULL) {
+ NETWORK_LOG(NETWORK_ERROR, "Error!!! Failed to get service properties\n");
+ return Error;
+ }
+
+ *size = _net_get_uint64(message);
+
+ NETWORK_LOG(NETWORK_HIGH, "success [%s] statistics size : [%llu]\n", method, *size);
+ dbus_message_unref(message);
+
+ return Error;
+}
+
+int _net_dbus_set_statistics(net_device_t device_type, net_statistics_type_e statistics_type)
+{
+ net_err_t Error = NET_ERR_NONE;
+ DBusMessage *message = NULL;
+ char *method = NULL;
+
+ if (device_type == NET_DEVICE_CELLULAR) {
+ switch (statistics_type) {
+ case NET_STATISTICS_TYPE_LAST_RECEIVED_DATA:
+ method = "ResetCellularLastRxBytes";
+ break;
+ case NET_STATISTICS_TYPE_LAST_SENT_DATA:
+ method = "ResetCellularLastTxBytes";
+ break;
+ case NET_STATISTICS_TYPE_TOTAL_RECEIVED_DATA:
+ method = "ResetCellularTotalRxBytes";
+ break;
+ case NET_STATISTICS_TYPE_TOTAL_SENT_DATA:
+ method = "ResetCellularTotalTxBytes";
+ break;
+ default:
+ NETWORK_LOG(NETWORK_ERROR, "Error!!! Invalid ProfileName passed\n");
+ return NET_ERR_INVALID_PARAM;
+ }
+ } else if (device_type == NET_DEVICE_WIFI) {
+ switch (statistics_type) {
+ case NET_STATISTICS_TYPE_LAST_RECEIVED_DATA:
+ method = "ResetWifiLastRxBytes";
+ break;
+ case NET_STATISTICS_TYPE_LAST_SENT_DATA:
+ method = "ResetWifiLastTxBytes";
+ break;
+ case NET_STATISTICS_TYPE_TOTAL_RECEIVED_DATA:
+ method = "ResetWifiTotalRxBytes";
+ break;
+ case NET_STATISTICS_TYPE_TOTAL_SENT_DATA:
+ method = "ResetWifiTotalTxBytes";
+ break;
+ default:
+ NETWORK_LOG(NETWORK_ERROR, "Error!!! Invalid ProfileName passed\n");
+ return NET_ERR_INVALID_PARAM;
+ }
+ } else {
+ NETWORK_LOG(NETWORK_ERROR, "Error!!! Invalid ProfileName passed\n");
+ return NET_ERR_INVALID_PARAM;
+ }
+
+ message = _net_invoke_dbus_method(
+ NETCONFIG_SERVICE, NETCONFIG_STATISTICS_PATH,
+ NETCONFIG_STATISTICS_INTERFACE, method, NULL, &Error);
+ if (message == NULL) {
+ NETWORK_LOG(NETWORK_ERROR, "Error!!! Failed to get service properties\n");
+ return Error;
+ }
+
+ NETWORK_LOG(NETWORK_HIGH, "reset [%s] statistics success\n", method);
+ dbus_message_unref(message);
+
+ return Error;
+}
int _net_dbus_get_state(char* state)
{
__NETWORK_FUNC_ENTER__;
net_err_t Error = NET_ERR_NONE;
- DBusConnection* conn = NULL;
DBusMessage *message = NULL;
char *net_state = NULL;
- conn = dbus_bus_get(DBUS_BUS_SYSTEM, NULL);
- if (conn == NULL) {
- NETWORK_LOG(NETWORK_EXCEPTION,
- "Error!!! Can't get on system bus\n");
- __NETWORK_FUNC_EXIT__;
- return NET_ERR_UNKNOWN;
- }
-
message = _net_invoke_dbus_method(
- CONNMAN_SERVICE, conn, CONNMAN_MANAGER_PATH,
- CONNMAN_MANAGER_INTERFACE, "GetState", &Error);
+ CONNMAN_SERVICE, CONNMAN_MANAGER_PATH,
+ CONNMAN_MANAGER_INTERFACE, "GetState", NULL, &Error);
if (message == NULL) {
- NETWORK_LOG(NETWORK_ERROR,
- "Error!!! Failed to get service properties\n");
- dbus_connection_unref(conn);
+ NETWORK_LOG(NETWORK_ERROR, "Error!!! Failed to get service properties\n");
__NETWORK_FUNC_EXIT__;
return Error;
}
NETWORK_LOG( NETWORK_HIGH, "State : [%s]\n", state);
dbus_message_unref(message);
- dbus_connection_unref(conn);
__NETWORK_FUNC_EXIT__;
return Error;
}
-
-int _net_dbus_connect_service(const net_wifi_connect_service_info_t* wifi_connection_info)
+int _net_dbus_connect_service(const net_wifi_connect_service_info_t *wifi_connection_info)
{
__NETWORK_FUNC_ENTER__;
net_err_t Error = NET_ERR_NONE;
- DBusError error;
const char *prop_type = "Type";
const char *prop_mode = "Mode";
const char *prop_ssid = "SSID";
const char *prop_security = "Security";
const char *prop_passphrase = "Passphrase";
-
- DBusMessage* msg = NULL;
- DBusMessage* reply = NULL;
- DBusMessageIter dict, entry, array,value;
+ const char *prop_eap_type = "EAPType";
+ const char *prop_eap_auth = "EAPAuth";
+ const char *prop_identity = "Identity";
+ const char *prop_password = "Password";
+ const char *prop_ca_cert_file = "CACert";
+ const char *prop_client_cert_file = "ClientCert";
+ const char *prop_private_key_file = "PrivateKeyFile";
+ const char *prop_private_key_password = "PrivateKeyPassword";
+
+ DBusMessage* message = NULL;
+ DBusMessageIter dict, entry, array, value;
DBusConnection* conn = NULL;
+ DBusPendingCall *call;
+ dbus_bool_t result;
+ char *group_name = NULL;
conn = dbus_bus_get(DBUS_BUS_SYSTEM, NULL);
- if(conn == NULL) {
+ if (conn == NULL) {
NETWORK_LOG(NETWORK_EXCEPTION, "Error!!! Can't get on system bus\n");
__NETWORK_FUNC_EXIT__;
return NET_ERR_UNKNOWN;
}
- msg = dbus_message_new_method_call(CONNMAN_SERVICE, CONNMAN_MANAGER_PATH, CONNMAN_MANAGER_INTERFACE, "ConnectService");
- if(msg == NULL) {
+ message = dbus_message_new_method_call(CONNMAN_SERVICE, CONNMAN_MANAGER_PATH, CONNMAN_MANAGER_INTERFACE, "ConnectService");
+
+ if (message == NULL) {
NETWORK_LOG(NETWORK_EXCEPTION, "Error!!! dbus_message_new_method_call() failed\n");
__NETWORK_FUNC_EXIT__;
return NET_ERR_UNKNOWN;
}
- dbus_message_iter_init_append(msg, &array);
+ dbus_message_iter_init_append(message, &array);
dbus_message_iter_open_container(&array, DBUS_TYPE_ARRAY, "{sv}", &dict);
- dbus_message_iter_open_container(&dict, DBUS_TYPE_DICT_ENTRY, 0, &entry);
- dbus_message_iter_append_basic(&entry, DBUS_TYPE_STRING, &prop_type);
- dbus_message_iter_open_container(&entry, DBUS_TYPE_VARIANT, DBUS_TYPE_STRING_AS_STRING, &value);
- dbus_message_iter_append_basic(&value, DBUS_TYPE_STRING, &wifi_connection_info->type);
- dbus_message_iter_close_container(&entry, &value);
- dbus_message_iter_close_container(&dict, &entry);
-
- dbus_message_iter_open_container(&dict, DBUS_TYPE_DICT_ENTRY, 0, &entry);
- dbus_message_iter_append_basic(&entry, DBUS_TYPE_STRING, &prop_mode);
- dbus_message_iter_open_container(&entry, DBUS_TYPE_VARIANT, DBUS_TYPE_STRING_AS_STRING, &value);
- dbus_message_iter_append_basic(&value, DBUS_TYPE_STRING, &wifi_connection_info->mode);
- dbus_message_iter_close_container(&entry, &value);
- dbus_message_iter_close_container(&dict, &entry);
-
- dbus_message_iter_open_container(&dict, DBUS_TYPE_DICT_ENTRY, 0, &entry);
- dbus_message_iter_append_basic(&entry, DBUS_TYPE_STRING, &prop_ssid);
- dbus_message_iter_open_container(&entry, DBUS_TYPE_VARIANT, DBUS_TYPE_STRING_AS_STRING, &value);
- dbus_message_iter_append_basic(&value, DBUS_TYPE_STRING, &wifi_connection_info->ssid);
- dbus_message_iter_close_container(&entry, &value);
- dbus_message_iter_close_container(&dict, &entry);
-
- dbus_message_iter_open_container(&dict, DBUS_TYPE_DICT_ENTRY, 0, &entry);
- dbus_message_iter_append_basic(&entry, DBUS_TYPE_STRING, &prop_security);
- dbus_message_iter_open_container(&entry, DBUS_TYPE_VARIANT, DBUS_TYPE_STRING_AS_STRING, &value);
- dbus_message_iter_append_basic(&value, DBUS_TYPE_STRING, &wifi_connection_info->security);
- dbus_message_iter_close_container(&entry, &value);
- dbus_message_iter_close_container(&dict, &entry);
-
- if( strcmp(wifi_connection_info->security, "ieee8021x") == 0 ) {
- /** TODO Handle EAP */
- } else {
- /** none, wep, psk, rsn */
+ if (wifi_connection_info->type != NULL) {
dbus_message_iter_open_container(&dict, DBUS_TYPE_DICT_ENTRY, 0, &entry);
- dbus_message_iter_append_basic(&entry, DBUS_TYPE_STRING, &prop_passphrase);
+ dbus_message_iter_append_basic(&entry, DBUS_TYPE_STRING, &prop_type);
dbus_message_iter_open_container(&entry, DBUS_TYPE_VARIANT, DBUS_TYPE_STRING_AS_STRING, &value);
- dbus_message_iter_append_basic(&value, DBUS_TYPE_STRING, &wifi_connection_info->passphrase);
+ dbus_message_iter_append_basic(&value, DBUS_TYPE_STRING, &wifi_connection_info->type);
dbus_message_iter_close_container(&entry, &value);
dbus_message_iter_close_container(&dict, &entry);
}
- dbus_message_iter_close_container(&array, &dict);
+ if (wifi_connection_info->mode != NULL) {
+ dbus_message_iter_open_container(&dict, DBUS_TYPE_DICT_ENTRY, 0, &entry);
+ dbus_message_iter_append_basic(&entry, DBUS_TYPE_STRING, &prop_mode);
+ dbus_message_iter_open_container(&entry, DBUS_TYPE_VARIANT, DBUS_TYPE_STRING_AS_STRING, &value);
+ dbus_message_iter_append_basic(&value, DBUS_TYPE_STRING, &wifi_connection_info->mode);
+ dbus_message_iter_close_container(&entry, &value);
+ dbus_message_iter_close_container(&dict, &entry);
+ }
- dbus_error_init(&error);
- reply = dbus_connection_send_with_reply_and_block(conn,
- msg,
- 6 * DBUS_REPLY_TIMEOUT, /** Special case - here profile is created and returned so this need more time */
- &error);
+ if (wifi_connection_info->ssid != NULL) {
+ dbus_message_iter_open_container(&dict, DBUS_TYPE_DICT_ENTRY, 0, &entry);
+ dbus_message_iter_append_basic(&entry, DBUS_TYPE_STRING, &prop_ssid);
+ dbus_message_iter_open_container(&entry, DBUS_TYPE_VARIANT, DBUS_TYPE_STRING_AS_STRING, &value);
+ dbus_message_iter_append_basic(&value, DBUS_TYPE_STRING, &wifi_connection_info->ssid);
+ dbus_message_iter_close_container(&entry, &value);
+ dbus_message_iter_close_container(&dict, &entry);
+ }
- if(reply == NULL) {
- if( dbus_error_is_set(&error) == TRUE ) {
- NETWORK_LOG(NETWORK_ERROR,
- "Error!!! dbus_connection_send_with_reply_and_block() failed, Error[%s: %s]\n",
- error.name,
- error.message);
- Error = __net_error_string_to_enum(error.name);
- dbus_error_free(&error);
- dbus_message_unref(msg);
- __NETWORK_FUNC_EXIT__;
- return Error;
+ if (wifi_connection_info->security != NULL) {
+ dbus_message_iter_open_container(&dict, DBUS_TYPE_DICT_ENTRY, 0, &entry);
+ dbus_message_iter_append_basic(&entry, DBUS_TYPE_STRING, &prop_security);
+ dbus_message_iter_open_container(&entry, DBUS_TYPE_VARIANT, DBUS_TYPE_STRING_AS_STRING, &value);
+ dbus_message_iter_append_basic(&value, DBUS_TYPE_STRING, &wifi_connection_info->security);
+ dbus_message_iter_close_container(&entry, &value);
+ dbus_message_iter_close_container(&dict, &entry);
+ }
+
+ if (g_str_equal(wifi_connection_info->security, "ieee8021x") == TRUE) {
+ /** EAP */
+ if (wifi_connection_info->eap_type != NULL) {
+ dbus_message_iter_open_container(&dict, DBUS_TYPE_DICT_ENTRY, 0, &entry);
+ dbus_message_iter_append_basic(&entry, DBUS_TYPE_STRING, &prop_eap_type);
+ dbus_message_iter_open_container(&entry, DBUS_TYPE_VARIANT, DBUS_TYPE_STRING_AS_STRING, &value);
+ dbus_message_iter_append_basic(&value, DBUS_TYPE_STRING, &wifi_connection_info->eap_type);
+ dbus_message_iter_close_container(&entry, &value);
+ dbus_message_iter_close_container(&dict, &entry);
+ }
+
+ if (wifi_connection_info->eap_auth != NULL) {
+ dbus_message_iter_open_container(&dict, DBUS_TYPE_DICT_ENTRY, 0, &entry);
+ dbus_message_iter_append_basic(&entry, DBUS_TYPE_STRING, &prop_eap_auth);
+ dbus_message_iter_open_container(&entry, DBUS_TYPE_VARIANT, DBUS_TYPE_STRING_AS_STRING, &value);
+ dbus_message_iter_append_basic(&value, DBUS_TYPE_STRING, &wifi_connection_info->eap_auth);
+ dbus_message_iter_close_container(&entry, &value);
+ dbus_message_iter_close_container(&dict, &entry);
+ }
+
+ if (wifi_connection_info->identity != NULL) {
+ dbus_message_iter_open_container(&dict, DBUS_TYPE_DICT_ENTRY, 0, &entry);
+ dbus_message_iter_append_basic(&entry, DBUS_TYPE_STRING, &prop_identity);
+ dbus_message_iter_open_container(&entry, DBUS_TYPE_VARIANT, DBUS_TYPE_STRING_AS_STRING, &value);
+ dbus_message_iter_append_basic(&value, DBUS_TYPE_STRING, &wifi_connection_info->identity);
+ dbus_message_iter_close_container(&entry, &value);
+ dbus_message_iter_close_container(&dict, &entry);
}
- dbus_message_unref(msg);
+
+ if (wifi_connection_info->password != NULL) {
+ dbus_message_iter_open_container(&dict, DBUS_TYPE_DICT_ENTRY, 0, &entry);
+ dbus_message_iter_append_basic(&entry, DBUS_TYPE_STRING, &prop_password);
+ dbus_message_iter_open_container(&entry, DBUS_TYPE_VARIANT, DBUS_TYPE_STRING_AS_STRING, &value);
+ dbus_message_iter_append_basic(&value, DBUS_TYPE_STRING, &wifi_connection_info->password);
+ dbus_message_iter_close_container(&entry, &value);
+ dbus_message_iter_close_container(&dict, &entry);
+ }
+
+ if (wifi_connection_info->ca_cert_file != NULL) {
+ dbus_message_iter_open_container(&dict, DBUS_TYPE_DICT_ENTRY, 0, &entry);
+ dbus_message_iter_append_basic(&entry, DBUS_TYPE_STRING, &prop_ca_cert_file);
+ dbus_message_iter_open_container(&entry, DBUS_TYPE_VARIANT, DBUS_TYPE_STRING_AS_STRING, &value);
+ dbus_message_iter_append_basic(&value, DBUS_TYPE_STRING, &wifi_connection_info->ca_cert_file);
+ dbus_message_iter_close_container(&entry, &value);
+ dbus_message_iter_close_container(&dict, &entry);
+ }
+
+ if (wifi_connection_info->client_cert_file != NULL) {
+ dbus_message_iter_open_container(&dict, DBUS_TYPE_DICT_ENTRY, 0, &entry);
+ dbus_message_iter_append_basic(&entry, DBUS_TYPE_STRING, &prop_client_cert_file);
+ dbus_message_iter_open_container(&entry, DBUS_TYPE_VARIANT, DBUS_TYPE_STRING_AS_STRING, &value);
+ dbus_message_iter_append_basic(&value, DBUS_TYPE_STRING, &wifi_connection_info->client_cert_file);
+ dbus_message_iter_close_container(&entry, &value);
+ dbus_message_iter_close_container(&dict, &entry);
+ }
+
+ if (wifi_connection_info->private_key_file != NULL) {
+ dbus_message_iter_open_container(&dict, DBUS_TYPE_DICT_ENTRY, 0, &entry);
+ dbus_message_iter_append_basic(&entry, DBUS_TYPE_STRING, &prop_private_key_file);
+ dbus_message_iter_open_container(&entry, DBUS_TYPE_VARIANT, DBUS_TYPE_STRING_AS_STRING, &value);
+ dbus_message_iter_append_basic(&value, DBUS_TYPE_STRING, &wifi_connection_info->private_key_file);
+ dbus_message_iter_close_container(&entry, &value);
+ dbus_message_iter_close_container(&dict, &entry);
+ }
+
+ if (wifi_connection_info->private_key_password != NULL) {
+ dbus_message_iter_open_container(&dict, DBUS_TYPE_DICT_ENTRY, 0, &entry);
+ dbus_message_iter_append_basic(&entry, DBUS_TYPE_STRING, &prop_private_key_password);
+ dbus_message_iter_open_container(&entry, DBUS_TYPE_VARIANT, DBUS_TYPE_STRING_AS_STRING, &value);
+ dbus_message_iter_append_basic(&value, DBUS_TYPE_STRING, &wifi_connection_info->private_key_password);
+ dbus_message_iter_close_container(&entry, &value);
+ dbus_message_iter_close_container(&dict, &entry);
+ }
+ } else {
+ /** none, wep, psk, rsn */
+ if (wifi_connection_info->passphrase != NULL) {
+ dbus_message_iter_open_container(&dict, DBUS_TYPE_DICT_ENTRY, 0, &entry);
+ dbus_message_iter_append_basic(&entry, DBUS_TYPE_STRING, &prop_passphrase);
+ dbus_message_iter_open_container(&entry, DBUS_TYPE_VARIANT, DBUS_TYPE_STRING_AS_STRING, &value);
+ dbus_message_iter_append_basic(&value, DBUS_TYPE_STRING, &wifi_connection_info->passphrase);
+ dbus_message_iter_close_container(&entry, &value);
+ dbus_message_iter_close_container(&dict, &entry);
+ }
+ }
+
+ dbus_message_iter_close_container(&array, &dict);
+
+ group_name = __net_make_group_name(wifi_connection_info->ssid,
+ wifi_connection_info->mode, wifi_connection_info->security);
+ if (group_name == NULL) {
+ NETWORK_LOG(NETWORK_ERROR, "Error!!! can't make a group name\n");
+ dbus_message_unref(message);
__NETWORK_FUNC_EXIT__;
return NET_ERR_UNKNOWN;
- } else {
- char *ProfileName = NULL;
- ProfileName = _net_get_object(reply);
- NETWORK_LOG(NETWORK_HIGH, "ObjectPath/ProfileName [%s]\n", ProfileName);
}
- dbus_message_unref(reply);
- dbus_message_unref(msg);
+ snprintf(request_table[NETWORK_REQUEST_TYPE_OPEN_CONNECTION].ProfileName,
+ NET_PROFILE_NAME_LEN_MAX+1, "%s", group_name);
+
+ result = dbus_connection_send_with_reply(conn, message, &call, 6 * DBUS_REPLY_TIMEOUT);
+
+ if (result == FALSE || call == NULL) {
+ NETWORK_LOG(NETWORK_ERROR, "Error!!! dbus_connection_send_with_reply() Failed\n");
+ dbus_message_unref(message);
+ __NETWORK_FUNC_EXIT__;
+ return NET_ERR_UNKNOWN;
+ }
+
+ dbus_pending_call_set_notify(call, __net_open_connection_reply, NULL, NULL);
+ network_dbus_pending_call_data.pcall = call;
+ network_dbus_pending_call_data.is_used = TRUE;
+
+ dbus_message_unref(message);
NETWORK_LOG(NETWORK_HIGH, "Successfully configured\n");
return Error;
}
-
int _net_dbus_set_profile_ipv4(net_profile_info_t* prof_info, char* profile_name)
{
__NETWORK_FUNC_ENTER__;
char *netmask = netmask_buffer;
char *gateway = gateway_buffer;
- DBusMessage *msg = NULL;
+ DBusMessage *message = NULL;
DBusMessage *reply = NULL;
DBusMessageIter itr, variant, dict, entry;
DBusConnection* conn = NULL;
}
/** Send ipaddress, netmask, gateway configuration */
- msg = dbus_message_new_method_call(CONNMAN_SERVICE,
+ message = dbus_message_new_method_call(CONNMAN_SERVICE,
profile_name, CONNMAN_SERVICE_INTERFACE, "SetProperty");
- if (msg == NULL) {
+ if (message == NULL) {
NETWORK_LOG( NETWORK_ERROR, "Error!!! dbus_message_new_method_call() failed\n");
dbus_connection_unref(conn);
__NETWORK_FUNC_EXIT__;
NETWORK_LOG(NETWORK_ASSERT, "DBus Message 1/2 : %s %s %s %s\n", CONNMAN_SERVICE,
profile_name, CONNMAN_SERVICE_INTERFACE, "SetProperty");
- dbus_message_iter_init_append(msg, &itr);
+ dbus_message_iter_init_append(message, &itr);
dbus_message_iter_append_basic(&itr, DBUS_TYPE_STRING, &prop_ipv4_configuration);
dbus_message_iter_open_container
dbus_error_init(&error);
reply = dbus_connection_send_with_reply_and_block(conn,
- msg, DBUS_REPLY_TIMEOUT,
+ message, DBUS_REPLY_TIMEOUT,
&error);
if (reply == NULL) {
error.message);
Error = __net_error_string_to_enum(error.name);
dbus_error_free(&error);
- dbus_message_unref(msg);
+ dbus_message_unref(message);
__NETWORK_FUNC_EXIT__;
return Error;
}
- dbus_message_unref(msg);
+ dbus_message_unref(message);
__NETWORK_FUNC_EXIT__;
return NET_ERR_UNKNOWN;
}
dbus_message_unref(reply);
- dbus_message_unref(msg);
+ dbus_message_unref(message);
NETWORK_LOG(NETWORK_HIGH, "Successfully configured IPv4.Configuration\n");
char dns_buffer[NET_DNS_ADDR_MAX][NETPM_IPV4_STR_LEN_MAX+1];
char *dns_address[NET_DNS_ADDR_MAX];
- DBusMessage *msg = NULL;
+ DBusMessage *message = NULL;
DBusMessage *reply = NULL;
DBusMessageIter itr;
DBusConnection* conn = NULL;
}
if (prof_info->ProfileInfo.Wlan.net_info.IpConfigType == NET_IP_CONFIG_TYPE_STATIC) {
- msg = dbus_message_new_method_call(CONNMAN_SERVICE,
+ message = dbus_message_new_method_call(CONNMAN_SERVICE,
profile_name, CONNMAN_SERVICE_INTERFACE, "SetProperty");
- if (msg == NULL) {
+ if (message == NULL) {
NETWORK_LOG(NETWORK_ERROR,
"Error!!! dbus_message_new_method_call() failed\n");
__NETWORK_FUNC_EXIT__;
return NET_ERR_UNKNOWN;
}
- dbus_message_iter_init_append(msg, &itr);
+ dbus_message_iter_init_append(message, &itr);
dbus_message_iter_append_basic(&itr, DBUS_TYPE_STRING, &prop_nameserver_configuration);
DBusMessageIter value, array;
dbus_error_init(&error);
reply = dbus_connection_send_with_reply_and_block(conn,
- msg, DBUS_REPLY_TIMEOUT,
+ message, DBUS_REPLY_TIMEOUT,
&error);
if (reply == NULL) {
error.message);
Error = __net_error_string_to_enum(error.name);
dbus_error_free(&error);
- dbus_message_unref(msg);
+ dbus_message_unref(message);
__NETWORK_FUNC_EXIT__;
return Error;
}
- dbus_message_unref(msg);
+ dbus_message_unref(message);
__NETWORK_FUNC_EXIT__;
return NET_ERR_UNKNOWN;
}
dbus_message_unref(reply);
- dbus_message_unref(msg);
+ dbus_message_unref(message);
NETWORK_LOG(NETWORK_HIGH, "Successfully configured Nameservers.Configuration\n");
}
char proxy_buffer[NET_PROXY_LEN_MAX+1] = "";
char *proxy_address = proxy_buffer;
- DBusMessage *msg = NULL;
+ DBusMessage *message = NULL;
DBusMessage *reply = NULL;
DBusMessageIter itr, variant, dict, entry, sub_variant, str_array;
DBusConnection* conn = NULL;
}
/** Send proxy method, url, servers configuration */
- msg = dbus_message_new_method_call(CONNMAN_SERVICE, profile_name,
+ message = dbus_message_new_method_call(CONNMAN_SERVICE, profile_name,
CONNMAN_SERVICE_INTERFACE, "SetProperty");
- if (msg == NULL) {
+ if (message == NULL) {
NETWORK_LOG(NETWORK_ERROR, "Error!!! dbus_message_new_method_call() failed\n");
__NETWORK_FUNC_EXIT__;
return NET_ERR_UNKNOWN;
}
- dbus_message_iter_init_append(msg, &itr);
+ dbus_message_iter_init_append(message, &itr);
dbus_message_iter_append_basic(&itr, DBUS_TYPE_STRING, &prop_proxy_configuration);
dbus_message_iter_open_container
dbus_error_init(&error);
reply = dbus_connection_send_with_reply_and_block(conn,
- msg, DBUS_REPLY_TIMEOUT,
+ message, DBUS_REPLY_TIMEOUT,
&error);
if (reply == NULL) {
error.message);
Error = __net_error_string_to_enum(error.name);
dbus_error_free(&error);
- dbus_message_unref(msg);
+ dbus_message_unref(message);
__NETWORK_FUNC_EXIT__;
return Error;
}
- dbus_message_unref(msg);
+ dbus_message_unref(message);
__NETWORK_FUNC_EXIT__;
return NET_ERR_UNKNOWN;
}
dbus_message_unref(reply);
- dbus_message_unref(msg);
+ dbus_message_unref(message);
NETWORK_LOG( NETWORK_HIGH, "Successfully configured Proxy.Configuration\n");
char buff_auth_type[10] = "";
char *temp_ptr = NULL;
- DBusMessage *msg = NULL;
+ DBusMessage *message = NULL;
DBusMessage *reply = NULL;
DBusMessageIter iter, dict, entry;
DBusConnection* conn = NULL;
}
/** Create message */
- msg = dbus_message_new_method_call(TELEPHONY_SERVCE,
+ message = dbus_message_new_method_call(TELEPHONY_SERVCE,
TELEPHONY_MASTER_PATH, TELEPHONY_MASTER_INTERFACE, "AddProfile");
- if (msg == NULL) {
+ if (message == NULL) {
NETWORK_LOG(NETWORK_ERROR, "Error!!! dbus_message_new_method_call() failed\n");
dbus_connection_unref(conn);
__NETWORK_FUNC_EXIT__;
NETWORK_LOG(NETWORK_ASSERT, "DBus Message 1/2 : %s %s %s %s\n", TELEPHONY_SERVCE,
TELEPHONY_MASTER_PATH, TELEPHONY_MASTER_INTERFACE, ".AddProfile");
- dbus_message_iter_init_append(msg, &iter);
+ dbus_message_iter_init_append(message, &iter);
dbus_message_iter_open_container
(&iter, DBUS_TYPE_ARRAY,
/** Send message */
reply = dbus_connection_send_with_reply_and_block(conn,
- msg, DBUS_REPLY_TIMEOUT,
+ message, DBUS_REPLY_TIMEOUT,
&error);
/** Check Error */
error.message);
Error = __net_error_string_to_enum(error.name);
dbus_error_free(&error);
- dbus_message_unref(msg);
+ dbus_message_unref(message);
__NETWORK_FUNC_EXIT__;
return Error;
}
- dbus_message_unref(msg);
+ dbus_message_unref(message);
dbus_connection_unref(conn);
__NETWORK_FUNC_EXIT__;
return NET_ERR_UNKNOWN;
Error = NET_ERR_UNKNOWN;
dbus_message_unref(reply);
- dbus_message_unref(msg);
+ dbus_message_unref(message);
dbus_connection_unref(conn);
__NETWORK_FUNC_EXIT__;
char buff_auth_type[10] = "";
char *temp_ptr = NULL;
- DBusMessage *msg = NULL;
+ DBusMessage *message = NULL;
DBusMessage *reply = NULL;
DBusMessageIter iter, dict, entry;
DBusConnection* conn = NULL;
}
/** Create message */
- msg = dbus_message_new_method_call(TELEPHONY_SERVCE,
+ message = dbus_message_new_method_call(TELEPHONY_SERVCE,
profile_name, TELEPHONY_PROFILE_INTERFACE, "ModifyProfile");
- if (msg == NULL) {
+ if (message == NULL) {
NETWORK_LOG(NETWORK_ERROR, "Error!!! dbus_message_new_method_call() failed\n");
dbus_connection_unref(conn);
__NETWORK_FUNC_EXIT__;
NETWORK_LOG(NETWORK_ASSERT, "DBus Message 1/2 : %s %s %s %s\n", TELEPHONY_SERVCE,
profile_name, TELEPHONY_PROFILE_INTERFACE, ".ModifyProfile");
- dbus_message_iter_init_append(msg, &iter);
+ dbus_message_iter_init_append(message, &iter);
dbus_message_iter_open_container
(&iter, DBUS_TYPE_ARRAY,
/** Send message */
reply = dbus_connection_send_with_reply_and_block(conn,
- msg, DBUS_REPLY_TIMEOUT,
+ message, DBUS_REPLY_TIMEOUT,
&error);
/** Check Error */
error.message);
Error = __net_error_string_to_enum(error.name);
dbus_error_free(&error);
- dbus_message_unref(msg);
+ dbus_message_unref(message);
__NETWORK_FUNC_EXIT__;
return Error;
}
- dbus_message_unref(msg);
+ dbus_message_unref(message);
dbus_connection_unref(conn);
__NETWORK_FUNC_EXIT__;
return NET_ERR_UNKNOWN;
Error = NET_ERR_UNKNOWN;
dbus_message_unref(reply);
- dbus_message_unref(msg);
+ dbus_message_unref(message);
dbus_connection_unref(conn);
__NETWORK_FUNC_EXIT__;
__NETWORK_FUNC_ENTER__;
net_err_t Error = NET_ERR_NONE;
- DBusConnection* conn = NULL;
-
- conn = dbus_bus_get(DBUS_BUS_SYSTEM, NULL);
-
- if (conn == NULL) {
- NETWORK_LOG(NETWORK_EXCEPTION, "Error!!! Can't get on system bus\n");
- __NETWORK_FUNC_EXIT__;
- return NET_ERR_UNKNOWN;
- }
-
- NETWORK_LOG(NETWORK_HIGH, "Requesting [%s %s]\n",
- NETCONFIG_WIFI_PATH, NETCONFIG_WIFI_INTERFACE ".LoadDriver");
- Error = _net_invoke_dbus_method_nonblock(NETCONFIG_SERVICE, conn, NETCONFIG_WIFI_PATH,
+ Error = _net_invoke_dbus_method_nonblock(NETCONFIG_SERVICE, NETCONFIG_WIFI_PATH,
NETCONFIG_WIFI_INTERFACE, "LoadDriver", __net_wifi_power_reply);
- dbus_connection_unref(conn);
-
__NETWORK_FUNC_EXIT__;
return Error;
}
__NETWORK_FUNC_ENTER__;
net_err_t Error = NET_ERR_NONE;
- DBusConnection* conn = NULL;
-
- conn = dbus_bus_get(DBUS_BUS_SYSTEM, NULL);
-
- if (conn == NULL) {
- NETWORK_LOG(NETWORK_EXCEPTION, "Error!!! Can't get on system bus\n");
- __NETWORK_FUNC_EXIT__;
- return NET_ERR_UNKNOWN;
- }
-
- NETWORK_LOG(NETWORK_HIGH, "Requesting [%s %s]\n",
- NETCONFIG_WIFI_PATH, NETCONFIG_WIFI_INTERFACE ".RemoveDriver");
- Error = _net_invoke_dbus_method_nonblock(NETCONFIG_SERVICE, conn, NETCONFIG_WIFI_PATH,
+ Error = _net_invoke_dbus_method_nonblock(NETCONFIG_SERVICE, NETCONFIG_WIFI_PATH,
NETCONFIG_WIFI_INTERFACE, "RemoveDriver", __net_wifi_power_reply);
- dbus_connection_unref(conn);
-
__NETWORK_FUNC_EXIT__;
return Error;
}
network_dbus_pending_call_data.pcall = call;
}
+void _net_dbus_clear_pending_call(void)
+{
+ if (_net_dbus_is_pending_call_used()) {
+ dbus_pending_call_cancel(_net_dbus_get_pending_call());
+ _net_dbus_set_pending_call(NULL);
+ _net_dbus_set_pending_call_used(FALSE);
+ }
+}
+
+int _net_dbus_specific_scan_request(const char *ssid)
+{
+ __NETWORK_FUNC_ENTER__;
+
+ DBusMessage* message = NULL;
+ DBusConnection* conn = NULL;
+ DBusPendingCall *call = NULL;
+ dbus_bool_t result = FALSE;
+
+ conn = dbus_bus_get(DBUS_BUS_SYSTEM, NULL);
+ if (conn == NULL) {
+ NETWORK_LOG(NETWORK_EXCEPTION, "Error!!! Can't get on system bus\n");
+ __NETWORK_FUNC_EXIT__;
+ return NET_ERR_UNKNOWN;
+ }
+
+ message = dbus_message_new_method_call(NETCONFIG_SERVICE, NETCONFIG_WIFI_PATH, NETCONFIG_WIFI_INTERFACE, "RequestSpecificScan");
+ if (message == NULL) {
+ NETWORK_LOG(NETWORK_EXCEPTION, "Error!!! dbus_message_new_method_call() failed\n");
+ dbus_connection_unref(conn);
+ __NETWORK_FUNC_EXIT__;
+ return NET_ERR_UNKNOWN;
+ }
+
+ dbus_message_append_args(message, DBUS_TYPE_STRING, &ssid, NULL);
+
+ result = dbus_connection_send_with_reply(conn, message, &call, 6 * DBUS_REPLY_TIMEOUT);
+ if (result == FALSE || call == NULL) {
+ NETWORK_LOG(NETWORK_ERROR, "Error!!! dbus_connection_send_with_reply() Failed\n");
+ dbus_message_unref(message);
+ dbus_connection_unref(conn);
+ __NETWORK_FUNC_EXIT__;
+ return NET_ERR_UNKNOWN;
+ }
+
+ NETWORK_LOG(NETWORK_HIGH, "Successfully configured\n");
+
+ dbus_pending_call_set_notify(call, __net_specific_scan_wifi_reply, NULL, NULL);
+ network_dbus_pending_call_data.pcall = call;
+ network_dbus_pending_call_data.is_used = TRUE;
+
+ dbus_message_unref(message);
+ dbus_connection_unref(conn);
+
+ __NETWORK_FUNC_EXIT__;
+ return NET_ERR_NONE;
+}
+
#ifdef __cplusplus
}
#endif /* __cplusplus */