/*
- * 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.
*/
* ConnMan Wi-Fi Client Interface Async API Definition
*****************************************************************************/
+EXPORT_API int net_specific_scan_wifi(const char *ssid)
+{
+ __NETWORK_FUNC_ENTER__;
+
+ net_err_t Error = NET_ERR_NONE;
+
+ if (ssid == NULL) {
+ NETWORK_LOG(NETWORK_ERROR, "Error!!! Invalid parameter\n");
+ __NETWORK_FUNC_EXIT__;
+ return NET_ERR_INVALID_PARAM;
+ }
+
+ if (g_atomic_int_get(&NetworkInfo.ref_count) == 0) {
+ NETWORK_LOG(NETWORK_ERROR, "Error!!! Application was not registered\n");
+ __NETWORK_FUNC_EXIT__;
+ return NET_ERR_APP_NOT_REGISTERED;
+ }
+
+ if (request_table[NETWORK_REQUEST_TYPE_SPECIFIC_SCAN].flag == TRUE) {
+ NETWORK_LOG(NETWORK_ASSERT, "Error!! Find hidden AP request already in progress\n");
+ __NETWORK_FUNC_EXIT__;
+ return NET_ERR_IN_PROGRESS;
+ }
+
+ if (_net_dbus_is_pending_call_used() == TRUE) {
+ NETWORK_LOG(NETWORK_ASSERT, "Error!! pending call already in progress\n");
+ __NETWORK_FUNC_EXIT__;
+ return NET_ERR_IN_PROGRESS;
+ }
+
+ if (_net_get_wifi_state() != WIFI_ON) {
+ NETWORK_LOG( NETWORK_ERROR, "Error!!! wifi is powered off!\n");
+ __NETWORK_FUNC_EXIT__;
+ return NET_ERR_INVALID_OPERATION;
+ }
+
+ request_table[NETWORK_REQUEST_TYPE_SPECIFIC_SCAN].flag = TRUE;
+ Error = _net_dbus_specific_scan_request(ssid);
+ if (Error != NET_ERR_NONE) {
+ NETWORK_LOG(NETWORK_ERROR, "Error!!! _net_dbus_specific_scan_request() failed. Error [%s]\n",
+ _net_print_error(Error));
+
+ memset(&request_table[NETWORK_REQUEST_TYPE_SPECIFIC_SCAN], 0, sizeof(network_request_table_t));
+ }
+
+ __NETWORK_FUNC_EXIT__;
+ return Error;
+}
+
+
EXPORT_API int net_open_connection_with_wifi_info(const net_wifi_connection_info_t *wifi_info)
{
__NETWORK_FUNC_ENTER__;
return NET_ERR_INVALID_PARAM;
}
- if (NetworkInfo.ClientEventCb == NULL) {
+ if (g_atomic_int_get(&NetworkInfo.ref_count) == 0) {
NETWORK_LOG(NETWORK_ERROR, "Error!!! Application was not registered\n");
__NETWORK_FUNC_EXIT__;
return NET_ERR_APP_NOT_REGISTERED;
}
+ if (request_table[NETWORK_REQUEST_TYPE_OPEN_CONNECTION].flag == TRUE) {
+ NETWORK_LOG(NETWORK_ASSERT, "Error!! Connection open request already in progress\n");
+ __NETWORK_FUNC_EXIT__;
+ return NET_ERR_IN_PROGRESS;
+ }
+
+ if (_net_dbus_is_pending_call_used() == TRUE) {
+ NETWORK_LOG(NETWORK_ASSERT, "Error!! pending call already in progress\n");
+ __NETWORK_FUNC_EXIT__;
+ return NET_ERR_IN_PROGRESS;
+ }
+
if (_net_get_wifi_state() != WIFI_ON) {
NETWORK_LOG( NETWORK_ERROR, "Error!!! wifi is powered off!\n");
__NETWORK_FUNC_EXIT__;
return NET_ERR_INVALID_OPERATION;
}
+ request_table[NETWORK_REQUEST_TYPE_OPEN_CONNECTION].flag = TRUE;
Error = _net_open_connection_with_wifi_info(wifi_info);
if (Error != NET_ERR_NONE) {
NETWORK_LOG(NETWORK_ERROR, "Error!!! net_open_connection_with_wifi_info() failed. Error [%s]\n",
_net_print_error(Error));
+
+ memset(&request_table[NETWORK_REQUEST_TYPE_OPEN_CONNECTION], 0, sizeof(network_request_table_t));
+
__NETWORK_FUNC_EXIT__;
return Error;
}
net_err_t Error = NET_ERR_NONE;
int hotspot_state = 0;
- if (NetworkInfo.ClientEventCb == NULL) {
+ if (g_atomic_int_get(&NetworkInfo.ref_count) == 0) {
NETWORK_LOG(NETWORK_ERROR, "Error!!! Application was not registered\n");
__NETWORK_FUNC_EXIT__;
return NET_ERR_APP_NOT_REGISTERED;
if (request_table[NETWORK_REQUEST_TYPE_WIFI_POWER].flag == TRUE) {
NETWORK_LOG(NETWORK_ASSERT, "Error!! Request already in progress\n");
__NETWORK_FUNC_EXIT__;
- return NET_ERR_INVALID_OPERATION;
+ return NET_ERR_IN_PROGRESS;
+ }
+
+ if (_net_dbus_is_pending_call_used() == TRUE) {
+ NETWORK_LOG(NETWORK_ASSERT, "Error!! pending call already in progress\n");
+ __NETWORK_FUNC_EXIT__;
+ return NET_ERR_IN_PROGRESS;
}
request_table[NETWORK_REQUEST_TYPE_WIFI_POWER].flag = TRUE;
Error = _net_dbus_load_wifi_driver();
- if (Error != NET_ERR_NONE ) {
+ if (Error != NET_ERR_NONE) {
NETWORK_LOG(NETWORK_EXCEPTION,
"Error!!! Failed to request wifi power on/off. Error [%s]\n",
_net_print_error(Error));
net_err_t Error = NET_ERR_NONE;
- if(NetworkInfo.ClientEventCb == NULL) {
+ if(g_atomic_int_get(&NetworkInfo.ref_count) == 0) {
NETWORK_LOG(NETWORK_ERROR, "Error!!! Application was not registered\n");
__NETWORK_FUNC_EXIT__;
return NET_ERR_APP_NOT_REGISTERED;
if (request_table[NETWORK_REQUEST_TYPE_WIFI_POWER].flag == TRUE) {
NETWORK_LOG(NETWORK_ASSERT, "Error!! Request already in progress\n");
__NETWORK_FUNC_EXIT__;
- return NET_ERR_INVALID_OPERATION;
+ return NET_ERR_IN_PROGRESS;
+ }
+
+ if (_net_dbus_is_pending_call_used() == TRUE) {
+ if (request_table[NETWORK_REQUEST_TYPE_OPEN_CONNECTION].flag == TRUE) {
+ _net_dbus_clear_pending_call();
+ memset(&request_table[NETWORK_REQUEST_TYPE_OPEN_CONNECTION],
+ 0, sizeof(network_request_table_t));
+ } else if (request_table[NETWORK_REQUEST_TYPE_ENROLL_WPS].flag == TRUE) {
+ _net_dbus_clear_pending_call();
+ memset(&request_table[NETWORK_REQUEST_TYPE_ENROLL_WPS],
+ 0, sizeof(network_request_table_t));
+ } else if (request_table[NETWORK_REQUEST_TYPE_CLOSE_CONNECTION].flag == TRUE) {
+ _net_dbus_clear_pending_call();
+ memset(&request_table[NETWORK_REQUEST_TYPE_CLOSE_CONNECTION],
+ 0, sizeof(network_request_table_t));
+ } else {
+ NETWORK_LOG(NETWORK_ASSERT, "Error!! pending call already in progress\n");
+ __NETWORK_FUNC_EXIT__;
+ return NET_ERR_IN_PROGRESS;
+ }
}
request_table[NETWORK_REQUEST_TYPE_WIFI_POWER].flag = TRUE;
net_err_t Error = NET_ERR_NONE;
- if(NetworkInfo.ClientEventCb == NULL) {
+ if(g_atomic_int_get(&NetworkInfo.ref_count) == 0) {
NETWORK_LOG(NETWORK_ERROR, "Error!!! Application was not registered\n");
__NETWORK_FUNC_EXIT__;
return NET_ERR_APP_NOT_REGISTERED;
if(request_table[NETWORK_REQUEST_TYPE_SCAN].flag == TRUE) {
NETWORK_LOG(NETWORK_ASSERT, "Error!! Request already in progress\n");
__NETWORK_FUNC_EXIT__;
- return NET_ERR_INVALID_OPERATION;
+ return NET_ERR_IN_PROGRESS;
}
if (_net_get_wifi_state() != WIFI_ON) {
return NET_ERR_INVALID_PARAM;
}
- if (NetworkInfo.ClientEventCb == NULL) {
+ if (g_atomic_int_get(&NetworkInfo.ref_count) == 0) {
NETWORK_LOG(NETWORK_ERROR, "Error!!! Application was not registered\n");
__NETWORK_FUNC_EXIT__;
return NET_ERR_APP_NOT_REGISTERED;
}
- if (_net_get_wifi_state() != WIFI_ON) {
- NETWORK_LOG( NETWORK_ERROR, "Error!!! wifi is powered off!\n");
+ if (request_table[NETWORK_REQUEST_TYPE_ENROLL_WPS].flag == TRUE) {
+ NETWORK_LOG(NETWORK_ASSERT, "Error!! Request already in progress\n");
__NETWORK_FUNC_EXIT__;
- return NET_ERR_INVALID_OPERATION;
+ return NET_ERR_IN_PROGRESS;
}
- if (request_table[NETWORK_REQUEST_TYPE_ENROLL_WPS].flag == TRUE) {
- NETWORK_LOG(NETWORK_ASSERT, "Error!! Request already in progress\n");
+ if (_net_dbus_is_pending_call_used() == TRUE) {
+ NETWORK_LOG(NETWORK_ASSERT, "Error!! pending call already in progress\n");
+ __NETWORK_FUNC_EXIT__;
+ return NET_ERR_IN_PROGRESS;
+ }
+
+ if (_net_get_wifi_state() != WIFI_ON) {
+ NETWORK_LOG( NETWORK_ERROR, "Error!!! wifi is powered off!\n");
__NETWORK_FUNC_EXIT__;
return NET_ERR_INVALID_OPERATION;
}
-
+
request_table[NETWORK_REQUEST_TYPE_ENROLL_WPS].flag = TRUE;
snprintf(request_table[NETWORK_REQUEST_TYPE_ENROLL_WPS].ProfileName,
NET_PROFILE_NAME_LEN_MAX+1, "%s", profile_name);
return NET_ERR_NONE;
}
+
/*****************************************************************************
* ConnMan Wi-Fi Client Interface Sync Function Definition
*****************************************************************************/
net_wifi_state_t wifi_state;
- if (NetworkInfo.ClientEventCb == NULL) {
+ if (g_atomic_int_get(&NetworkInfo.ref_count) == 0) {
NETWORK_LOG(NETWORK_ERROR, "Error!!! Application was not registered\n");
__NETWORK_FUNC_EXIT__;
return NET_ERR_APP_NOT_REGISTERED;
net_err_t Error = NET_ERR_NONE;
- if (NetworkInfo.ClientEventCb == NULL) {
+ if (g_atomic_int_get(&NetworkInfo.ref_count) == 0) {
NETWORK_LOG(NETWORK_ERROR, "Error!!! Application not registered\n");
__NETWORK_FUNC_EXIT__;
return NET_ERR_APP_NOT_REGISTERED;
return NET_ERR_NONE;
}
-
#ifdef __cplusplus
}
#endif /* __cplusplus */