+wfi-direct-manager (0.5.7) precise; urgency=low
+
+ * Fix bug(N_SE-21973)
+ * Add WPS PIN feature for GO
+ * Git : framework/connectivity/wifi-direct-manager
+ * Tag : wifi-direct-manager_0.5.7
+
+ -- Gibyoung Kim <lastkgb.kim@samsung.com> Mon, 21 Jan 2013 17:40:19 +0900
+
wfi-direct-manager (0.5.6) precise; urgency=low
* Add License files.
int wfd_oem_activate(void);
int wfd_oem_deactivate(void);
int wfd_oem_connect(unsigned char mac_addr[6], wifi_direct_wps_type_e wps_config);
-int wfd_ws_wps_pbc_start(void);
+int wfd_oem_wps_pbc_start(void);
+int wfd_oem_wps_pin_start(unsigned char mac_addr[6]);
int wfd_oem_disconnect(void);
int wfd_oem_disconnect_sta(unsigned char mac_addr[6]);
bool wfd_oem_is_discovery_enabled(void);
int (*wfd_oem_deactivate)(void);
int (*wfd_oem_connect)(unsigned char mac_addr[6], wifi_direct_wps_type_e wps_config);
int (*wfd_oem_wps_pbc_start)(void);
+ int (*wfd_oem_wps_pin_start)(unsigned char mac_addr[6]);
int (*wfd_oem_disconnect)(void);
int (*wfd_oem_disconnect_sta)(unsigned char mac_addr[6]);
bool (*wfd_oem_is_discovery_enabled)(void);
return (g_ops->wfd_oem_wps_pbc_start());
}
+int wfd_oem_wps_pin_start(unsigned char mac_addr[6])
+{
+ if (NULL == g_ops->wfd_oem_wps_pin_start)
+ {
+ WDS_LOGE( "g_ops->wfd_oem_wps_pin_start is NULL!!\n");
+ return false;
+ }
+
+ return (g_ops->wfd_oem_wps_pin_start(mac_addr));
+}
+
int wfd_oem_disconnect()
{
if (NULL == g_ops->wfd_oem_disconnect)
Name: wifi-direct-manager
Summary: Wi-Fi Direct manger
-Version: 0.5.6
+Version: 0.5.7
Release: 1
Group: TO_BE_FILLED
License: Samsung Proprietary License
#define CMD_DISPLAY_STRING "display"
#define CMD_KEYPAD_STRING "keypad"
#define CMD_WPS_PUSHBUTTON_START "WPS_PBC"
+#define CMD_WPS_WPS_PIN_START "WPS_PIN"
#define CMD_GET_PEER_INFO "P2P_PEER"
#define CMD_SET_PARAM "SET"
#define CMD_GET_PARAM "GET"
WS_EVENT_PROVISION_DISCOVERY_DISPLAY,
WS_EVENT_PROVISION_DISCOVERY_KEYPAD,
+ WS_EVENT_GROUP_FORMATION_SUCCESS,
+ WS_EVENT_GROUP_FORMATION_FAILURE,
+
WS_EVENT_GROUP_STARTED,
WS_EVENT_PERSISTENT_GROUP_STARTED,
WS_EVENT_GROUP_REMOVED,
{"P2P-PROV-DISC-SHOW-PIN", WS_EVENT_PROVISION_DISCOVERY_DISPLAY},
{"P2P-PROV-DISC-ENTER-PIN", WS_EVENT_PROVISION_DISCOVERY_KEYPAD},
+ {"P2P-GROUP-FORMATION-SUCCESS", WS_EVENT_GROUP_FORMATION_SUCCESS},
+ {"P2P-GROUP-FORMATION-FAILURE", WS_EVENT_GROUP_FORMATION_FAILURE},
+
// connection
{"P2P-GROUP-STARTED", WS_EVENT_GROUP_STARTED},
{"P2P-GROUP-REMOVED", WS_EVENT_GROUP_REMOVED},
int wfd_ws_connect(unsigned char mac_addr[6], wifi_direct_wps_type_e wps_config);
int wfd_ws_disconnect();
int wfd_ws_disconnect_sta(unsigned char mac_addr[6]);
+int wfd_ws_wps_pbc_start();
+int wfd_ws_wps_pin_start(unsigned char peer_addr[6]);
bool wfd_ws_is_discovery_enabled();
int wfd_ws_start_discovery(bool listen_only, int timeout);
int wfd_ws_cancel_discovery();
static unsigned char g_assoc_sta_mac[6];
static unsigned char g_disassoc_sta_mac[6];
char g_wps_pin[9];
-int g_current_conn_direction;
+static nt g_pin_event_block;
enum current_conn_direction
{
.wfd_oem_deactivate = wfd_ws_deactivate,
.wfd_oem_connect = wfd_ws_connect,
.wfd_oem_wps_pbc_start = wfd_ws_wps_pbc_start,
+ .wfd_oem_wps_pin_start = wfd_ws_wps_pin_start,
.wfd_oem_disconnect = wfd_ws_disconnect,
.wfd_oem_disconnect_sta = wfd_ws_disconnect_sta,
.wfd_oem_is_discovery_enabled = wfd_ws_is_discovery_enabled,
WDP_LOGD( "WS EVENT : [MAC : %s]\n", event_str);
break;
+ case WS_EVENT_GROUP_FORMATION_SUCCESS:
+ case WS_EVENT_GROUP_FORMATION_FAILURE:
+ g_pin_event_block = 0;
+ break;
case WS_EVENT_GROUP_STARTED:
+ if (g_pin_event_block)
+ g_pin_event_block = 0;
event->id = WS_EVENT_GROUP_STARTED;
WDP_LOGD( "WS EVENT : [WS_EVENT_GROUP_STARTED]\n");
{
ptr = __get_event_str(ptr + 19, event_str);
strncpy(event->peer_intf_mac_address, event_str, sizeof(event->peer_intf_mac_address));
- if (wfd_server->config_data.wps_config == WIFI_DIRECT_WPS_TYPE_PIN_KEYPAD)
- wfd_ws_connect_for_go_neg(g_incomming_peer_mac_address, wfd_server->config_data.wps_config);
}
break;
case WS_EVENT_PROVISION_DISCOVERY_RESPONSE_DISPLAY:
{
+ if (g_pin_event_block)
+ break;
+
+ g_pin_event_block = 1;
unsigned char la_mac_addr[6];
wfd_macaddr_atoe(event.peer_mac_address, la_mac_addr);
memset(g_incomming_peer_mac_address, 0, sizeof(g_incomming_peer_mac_address));
case WS_EVENT_PROVISION_DISCOVERY_RESPONSE_KEYPAD:
{
+ if (g_pin_event_block)
+ break;
+
+ g_pin_event_block = 1;
unsigned char la_mac_addr[6];
wfd_macaddr_atoe(event.peer_mac_address, la_mac_addr);
memset(g_incomming_peer_mac_address, 0, sizeof(g_incomming_peer_mac_address));
case WS_EVENT_PROVISION_DISCOVERY_DISPLAY:
case WS_EVENT_PROVISION_DISCOVERY_KEYPAD:
{
- g_current_conn_direction = CONN_DIRECTION_INCOMING;
+ if (g_pin_event_block)
+ break;
+
+ g_pin_event_block = 1;
WDP_LOGD("Incomming PROV_DISC [%d]", event.id);
unsigned char la_mac_addr[6];
wfd_macaddr_atoe(event.peer_mac_address, la_mac_addr);
case WS_EVENT_STA_CONNECTED:
{
+ if (g_pin_event_block)
+ g_pin_event_block = 0;
GList *element = NULL;
element = g_list_find_custom(g_conn_peer_addr, event.peer_mac_address, glist_compare_peer_mac_cb);
if(element == NULL)
int res_buffer_len=sizeof(res_buffer);
int result = 0;
+ g_pin_event_block = 0;
+
// stop p2p_find
wfd_ws_cancel_discovery();
return true;
}
-int wfd_ws_connect(unsigned char mac_addr[6], wifi_direct_wps_type_e wps_config)
+int wfd_ws_wps_pin_start(unsigned char peer_addr[6])
{
__WDP_LOG_FUNC_ENTER__;
int res_buffer_len = sizeof(res_buffer);
int result;
+ snprintf(mac_str, 18, MACSTR, MAC2STR(peer_addr));
+ snprintf(cmd, sizeof(cmd),"%s %s %s", CMD_WPS_WPS_PIN_START, mac_str, g_wps_pin);
+ result = __send_wpa_request(g_control_sockfd, cmd, (char*)res_buffer, res_buffer_len);
+ WDP_LOGD( "__send_wpa_request(WPS_PIN) result=[%d]\n", result);
+ if (result < 0)
+ {
+ WDP_LOGE( "__send_wpa_request FAILED!!\n");
+ __WDP_LOG_FUNC_EXIT__;
+ return false;
+ }
+
+ if ( (result == 0) || (strncmp(res_buffer, "FAIL", 4) == 0))
+ {
+ __WDP_LOG_FUNC_EXIT__;
+ return false;
+ }
+
+ WDP_LOGD( "start WPS PBC...\n");
+
+
+ __WDP_LOG_FUNC_EXIT__;
+ return true;
+}
+
+int wfd_ws_connect(unsigned char mac_addr[6], wifi_direct_wps_type_e wps_config)
+{
+ __WDP_LOG_FUNC_ENTER__;
+
+ char cmd[64] = {0, };
+ char mac_str[18] = {0, };
+ char wps_str[8] = {0, };
+ char res_buffer[1024]={0,};
+ int res_buffer_len = sizeof(res_buffer);
+ int result;
+
wfd_server_control_t * wfd_server = wfd_server_get_control();
WDP_LOGD( "wfd_server->current_peer.is_group_owner=[%d]\n", wfd_server->current_peer.is_group_owner);
if (wfd_server->current_peer.is_group_owner)
{
snprintf(mac_str, 18, MACSTR, MAC2STR(mac_addr));
- snprintf(cmd, sizeof(cmd),"%s %s %s join", CMD_CONNECT, mac_str, __convert_wps_config_methods_value(wps_config));
+ if (wps_config == WIFI_DIRECT_WPS_TYPE_PIN_KEYPAD ||
+ wps_config == WIFI_DIRECT_WPS_TYPE_PIN_DISPLAY)
+ snprintf(cmd, sizeof(cmd),"%s %s %s join", CMD_CONNECT, mac_str, g_wps_pin);
+ else
+ snprintf(cmd, sizeof(cmd),"%s %s %s join", CMD_CONNECT, mac_str, __convert_wps_config_methods_value(wps_config));
result = __send_wpa_request(g_control_sockfd, cmd, (char*)res_buffer, res_buffer_len);
WDP_LOGD( "__send_wpa_request(CMD_CONNECT join) result=[%d]\n", result);
}
snprintf(cmd, sizeof(cmd), "%s %s %s", CMD_CONNECT, mac_str, CMD_PBC_STRING);
} else if (wps_config == WIFI_DIRECT_WPS_TYPE_PIN_DISPLAY) {
WDP_LOGD("WIFI_DIRECT_WPS_TYPE_PIN_DISPLAY");
- if (g_current_conn_direction == CONN_DIRECTION_OUTGOING)
- snprintf(cmd, sizeof(cmd), "%s %s %s %s", CMD_CONNECT, mac_str, g_wps_pin, CMD_KEYPAD_STRING);
- else
- snprintf(cmd, sizeof(cmd), "%s %s %s %s", CMD_CONNECT, mac_str, g_wps_pin, CMD_DISPLAY_STRING);
+ snprintf(cmd, sizeof(cmd), "%s %s %s %s", CMD_CONNECT, mac_str, g_wps_pin, CMD_DISPLAY_STRING);
} else if (wps_config == WIFI_DIRECT_WPS_TYPE_PIN_KEYPAD) {
WDP_LOGD("WIFI_DIRECT_WPS_TYPE_PIN_KEYPAD");
- if (g_current_conn_direction == CONN_DIRECTION_OUTGOING)
- snprintf(cmd, sizeof(cmd), "%s %s %s %s", CMD_CONNECT, mac_str, g_wps_pin, CMD_DISPLAY_STRING);
- else
- snprintf(cmd, sizeof(cmd), "%s %s %s %s", CMD_CONNECT, mac_str, g_wps_pin, CMD_KEYPAD_STRING);
+ snprintf(cmd, sizeof(cmd), "%s %s %s %s", CMD_CONNECT, mac_str, g_wps_pin, CMD_KEYPAD_STRING);
} else {
WDP_LOGD( "UNKNOWN CONFIG METHOD\n");
return false;
wifi_direct_wps_type_e wps_config)
{
__WDP_LOG_FUNC_ENTER__;
- char cmd[50] = {0, };
+ char cmd[64] = {0, };
char mac_str[18] = {0, };
char res_buffer[1024]={0,};
int res_buffer_len = sizeof(res_buffer);
WDP_LOGD( "CONNECT REQUEST FOR GO NEGOTIATION");
snprintf(mac_str, 18, MACSTR, MAC2STR(mac_addr));
-#if 0
- snprintf(cmd, sizeof(cmd), "%s %s %s", CMD_CONNECT, mac_str,
- g_wps_pin);
+ snprintf(cmd, sizeof(cmd), "%s %s %s %s", CMD_CONNECT, mac_str, g_wps_pin, __convert_wps_config_methods_value(wps_config));
if (wps_config == WIFI_DIRECT_WPS_TYPE_PIN_KEYPAD ||
wps_config == WIFI_DIRECT_WPS_TYPE_PIN_DISPLAY) {
WDP_LOGE( "Not expected CONFIG METHOD\n");
return false;
}
-#else
- if (wps_config == WIFI_DIRECT_WPS_TYPE_PIN_DISPLAY) {
- WDP_LOGD("WIFI_DIRECT_WPS_TYPE_PIN_DISPLAY");
- if (g_current_conn_direction == CONN_DIRECTION_OUTGOING)
- snprintf(cmd, sizeof(cmd), "%s %s %s %s", CMD_CONNECT, mac_str, g_wps_pin, CMD_KEYPAD_STRING);
- else
- snprintf(cmd, sizeof(cmd), "%s %s %s %s", CMD_CONNECT, mac_str, g_wps_pin, CMD_DISPLAY_STRING);
- } else if (wps_config == WIFI_DIRECT_WPS_TYPE_PIN_KEYPAD) {
- WDP_LOGD("WIFI_DIRECT_WPS_TYPE_PIN_KEYPAD");
- if (g_current_conn_direction == CONN_DIRECTION_OUTGOING)
- snprintf(cmd, sizeof(cmd), "%s %s %s %s", CMD_CONNECT, mac_str, g_wps_pin, CMD_DISPLAY_STRING);
- else
- snprintf(cmd, sizeof(cmd), "%s %s %s %s", CMD_CONNECT, mac_str, g_wps_pin, CMD_KEYPAD_STRING);
- } else {
- WDP_LOGD( "Unexpexted CONFIG METHOD\n");
- return false;
- }
-#endif
+
WDP_LOGD( "COMMAND = [%s]****\n", cmd);
result = __send_wpa_request(g_control_sockfd, cmd, (char*)res_buffer,
res_buffer_len);
{
__WDP_LOG_FUNC_ENTER__;
- char cmd[50] = {0, };
+ char cmd[64] = {0, };
char mac_str[18] = {0, };
char res_buffer[1024]={0,};
int res_buffer_len = sizeof(res_buffer);
int res_buffer_len = sizeof(res_buffer);
int result;
+ g_pin_event_block = 0;
+
snprintf(cmd, sizeof(cmd), "%s %s", CMD_GROUP_REMOVE, DEFAULT_IF_NAME);
result = __send_wpa_request(g_control_sockfd, cmd, (char*)res_buffer, res_buffer_len);
WDP_LOGD( "__send_wpa_request(P2P_GROUP_REMOVE) result=[%d]\n", result);
bool wfd_ws_flush()
{
- __WDP_LOG_FUNC_ENTER__;
-
- char cmd[16] = {0, };
- char res_buffer[1024]={0,};
- int res_buffer_len=sizeof(res_buffer);
- int result = 0;
-
- // Skip checking result..
- strncpy(cmd, CMD_FLUSH, sizeof(cmd));
- result = __send_wpa_request(g_control_sockfd, cmd, (char*)res_buffer, res_buffer_len);
- WDP_LOGD( "__send_wpa_request(P2P_FLUSH) result=[%d]\n", result);
-
- if (result < 0)
- {
- WDP_LOGE( "__send_wpa_request FAILED!!\n");
- __WDP_LOG_FUNC_EXIT__;
- return false;
- }
-
- if ( (result == 0) || (strncmp(res_buffer, "FAIL", 4) == 0))
- {
- __WDP_LOG_FUNC_EXIT__;
- return false;
- }
-
- __WDP_LOG_FUNC_EXIT__;
- return true;
+ __WDP_LOG_FUNC_ENTER__;
+
+ char cmd[16] = {0, };
+ char res_buffer[1024]={0,};
+ int res_buffer_len=sizeof(res_buffer);
+ int result = 0;
+
+ g_pin_event_block = 0;
+
+ // Skip checking result..
+ strncpy(cmd, CMD_FLUSH, sizeof(cmd));
+ result = __send_wpa_request(g_control_sockfd, cmd, (char*)res_buffer, res_buffer_len);
+ WDP_LOGD( "__send_wpa_request(P2P_FLUSH) result=[%d]\n", result);
+
+ if (result < 0)
+ {
+ WDP_LOGE( "__send_wpa_request FAILED!!\n");
+ __WDP_LOG_FUNC_EXIT__;
+ return false;
+ }
+
+ if ( (result == 0) || (strncmp(res_buffer, "FAIL", 4) == 0))
+ {
+ __WDP_LOG_FUNC_EXIT__;
+ return false;
+ }
+
+ __WDP_LOG_FUNC_EXIT__;
+ return true;
}
{
__WDP_LOG_FUNC_ENTER__;
- char cmd[40] = {0, };
+ char cmd[64] = {0, };
char mac_str[18] = {0, };
char res_buffer[1024]={0,};
int res_buffer_len = sizeof(res_buffer);
int result;
- g_current_conn_direction = CONN_DIRECTION_OUTGOING;
WDP_LOGD("Outgoing PROV_DISC");
- if (is_peer_go)
+ if (is_peer_go && config_method == WIFI_DIRECT_WPS_TYPE_PBC)
{
snprintf(mac_str, 18, MACSTR, MAC2STR(mac_addr));
snprintf(cmd, sizeof(cmd),"%s %s %s join", CMD_CONNECT, mac_str, __convert_wps_config_methods_value(config_method));
* Macros
*****************************************************************************/
#define WFD_MAX_CLIENTS 16
-#define WFD_MAC_ASSOC_STA 8
+#define WFD_MAX_ASSOC_STA 8
#define WFD_SERVER_SOCKET_PATH "/tmp/wfd_client_socket"
wfd_discovery_entry_s current_peer; // it is used during connecting/disconnecting
- wfd_local_connected_peer_info_t connected_peers[WFD_MAC_ASSOC_STA];
+ wfd_local_connected_peer_info_t connected_peers[WFD_MAX_ASSOC_STA];
int connected_peer_count;
int dhcp_pid;
WDS_LOGD( "is Connected ? %s\n", list[i].is_connected ? "YES" : "NO");
WDS_LOGD( "device_name : %s\n", list[i].device_name);
WDS_LOGD( "MAC address : " MACSTR "\n", MAC2STR(list[i].mac_address));
+ WDS_LOGD( "Iface address : " MACSTR "\n", MAC2STR(list[i].intf_mac_address));
WDS_LOGD( "Device type [%d/%d] ==\n", list[i].category, list[i].subcategory);
WDS_LOGD( "wps cfg method [%d] ==\n", list[i].wps_cfg_methods);
-
}
WDS_LOGD( "------------------------------------------\n");
}
void wfd_server_process_client_request(wifi_direct_client_request_s * client_req)
{
__WDS_LOG_FUNC_ENTER__;
- WDS_LOGD("TEST");
int ret = WIFI_DIRECT_ERROR_NONE;
wifi_direct_client_response_s resp;
{
int i = -1;
unsigned char NULL_MAC[6] = {0,0,0,0,0,0};
- for(i=0;i<WFD_MAC_ASSOC_STA;i++)
+ for(i=0;i<WFD_MAX_ASSOC_STA;i++)
{
memset(&wfd_server->connected_peers[i], 0, sizeof(wfd_local_connected_peer_info_t));
wfd_server->connected_peers[i].isUsed = 0;
resp.result = WIFI_DIRECT_ERROR_NONE;
wfd_server_send_response(client->sync_sockfd, &resp, sizeof(wifi_direct_client_response_s));
- if (wfd_oem_is_groupowner())
+ if (wfd_oem_is_groupowner()) {
+ if (wps_config == WIFI_DIRECT_WPS_TYPE_PIN_DISPLAY ||
+ wps_config == WIFI_DIRECT_WPS_TYPE_PIN_KEYPAD)
+ wfd_oem_wps_pin_start(client_req->data.mac_addr);
+ else
+ wfd_oem_wps_pbc_start();
break;
+ }
if (wfd_oem_connect(client_req->data.mac_addr, wps_config))
{
resp.param1 = wfd_server_get_state();
- if (max_client > WFD_MAC_ASSOC_STA)
+ if (max_client > WFD_MAX_ASSOC_STA)
{
- WDS_LOGF( "ERROR : Max client number shold be under [%d]\n", WFD_MAC_ASSOC_STA);
+ WDS_LOGF( "ERROR : Max client number shold be under [%d]\n", WFD_MAX_ASSOC_STA);
resp.result = WIFI_DIRECT_ERROR_INVALID_PARAMETER;
}
else
}
wfd_macaddr_atoe(mac_str, mac_hex);
__wfd_server_print_connected_peer();
- for(i=0; i<WFD_MAC_ASSOC_STA; i++)
+ for(i=0; i<WFD_MAX_ASSOC_STA; i++)
{
if (wfd_server->connected_peers[i].isUsed == 1 &&
break;
}
}
- if (i==WFD_MAC_ASSOC_STA)
+ if (i==WFD_MAX_ASSOC_STA)
WDS_LOGE( "Can't find peer from table\n");
__wfd_server_print_connected_peer();
wfd_server_control_t *wfd_server = wfd_server_get_control();\r
int i;\r
\r
- for (i = 0; i < WFD_MAC_ASSOC_STA; i++)\r
+ for (i = 0; i < WFD_MAX_ASSOC_STA; i++)\r
{\r
if (wfd_server->connected_peers[i].isUsed == 0)\r
{\r
int i;\r
unsigned char NULL_IP[4] = { 0, 0, 0, 0};\r
\r
- for (i = 0; i < WFD_MAC_ASSOC_STA; i++)\r
+ for (i = 0; i < WFD_MAX_ASSOC_STA; i++)\r
{\r
wfd_server->connected_peers[i].isUsed = 0;\r
memcpy(wfd_server->connected_peers[i].ip_address, NULL_IP, 4);\r
wfd_server_control_t *wfd_server = wfd_server_get_control();\r
int i;\r
\r
- for (i = 0; i < WFD_MAC_ASSOC_STA; i++)\r
+ for (i = 0; i < WFD_MAX_ASSOC_STA; i++)\r
{\r
if (wfd_server->connected_peers[i].isUsed == 0)\r
{\r
int i;\r
unsigned char NULL_IP[4] = { 0, 0, 0, 0};\r
\r
- for (i = 0; i < WFD_MAC_ASSOC_STA; i++)\r
+ for (i = 0; i < WFD_MAX_ASSOC_STA; i++)\r
{\r
if (wfd_server->connected_peers[i].isUsed==1 &&\r
memcmp(wfd_server->connected_peers[i].peer.mac_address, peer->mac_address, 6) == 0 )\r
int i;\r
unsigned char NULL_IP[4] = { 0, 0, 0, 0};\r
\r
- for (i = 0; i < WFD_MAC_ASSOC_STA; i++)\r
+ for (i = 0; i < WFD_MAX_ASSOC_STA; i++)\r
{\r
if (wfd_server->connected_peers[i].isUsed==1 &&\r
memcmp(wfd_server->connected_peers[i].int_address, interface_mac, 6) == 0 )\r
wfd_server_control_t *wfd_server = wfd_server_get_control();\r
int i;\r
\r
- for (i = 0; i < WFD_MAC_ASSOC_STA; i++)\r
+ for (i = 0; i < WFD_MAX_ASSOC_STA; i++)\r
{\r
if (wfd_server->connected_peers[i].isUsed==1 &&\r
memcmp(wfd_server->connected_peers[i].peer.mac_address, device_mac, 6) == 0 )\r
wfd_server_control_t *wfd_server = wfd_server_get_control();\r
int i;\r
\r
- for (i = 0; i < WFD_MAC_ASSOC_STA; i++)\r
+ for (i = 0; i < WFD_MAX_ASSOC_STA; i++)\r
{\r
if (wfd_server->connected_peers[i].isUsed==1 &&\r
memcmp(wfd_server->connected_peers[i].peer.mac_address, device_mac, 6) == 0 )\r
\r
__wfd_server_print_connected_peer();\r
\r
- for (i = 0; i < WFD_MAC_ASSOC_STA; i++)\r
+ for (i = 0; i < WFD_MAX_ASSOC_STA; i++)\r
{\r
if (wfd_server->connected_peers[i].isUsed == 1 &&\r
memcmp(wfd_server->connected_peers[i].int_address, int_mac, 6) == 0)\r
wfd_server_control_t *wfd_server = wfd_server_get_control();\r
int i;\r
\r
- for (i = 0; i < WFD_MAC_ASSOC_STA; i++)\r
+ for (i = 0; i < WFD_MAX_ASSOC_STA; i++)\r
{\r
if (wfd_server->connected_peers[i].isUsed==1 &&\r
memcmp(wfd_server->connected_peers[i].int_address, interface_mac, 6) == 0 )\r
\r
case WFD_EVENT_PROV_DISCOVERY_RESPONSE_WPS_DISPLAY:\r
case WFD_EVENT_PROV_DISCOVERY_RESPONSE_WPS_KEYPAD:\r
+ if (event == WFD_EVENT_PROV_DISCOVERY_RESPONSE_WPS_DISPLAY) {\r
+ wfd_server->config_data.wps_config = WIFI_DIRECT_WPS_TYPE_PIN_DISPLAY;\r
+ wfd_oem_connect(g_incomming_peer_mac_address, wfd_server->config_data.wps_config);\r
+ }\r
+ else if (event == WFD_EVENT_PROV_DISCOVERY_RESPONSE_WPS_KEYPAD)\r
+ wfd_server->config_data.wps_config = WIFI_DIRECT_WPS_TYPE_PIN_KEYPAD;\r
noti.event = WIFI_DIRECT_CLI_EVENT_CONNECTION_WPS_REQ;\r
- WDS_LOGI("g_incomming_peer_mac_address is [%s]\n", g_incomming_peer_mac_address);\r
+ WDS_LOGI("g_incomming_peer_mac_address is [" MACSTR "]\n", MAC2STR(g_incomming_peer_mac_address));\r
snprintf(noti.param1, sizeof(noti.param1), MACSTR, MAC2STR(g_incomming_peer_mac_address));\r
- WDS_LOGD( "SENDING CLIENT EVENT NOTI MAC = %s\n", g_incomming_peer_mac_address);\r
__wfd_server_send_client_event(¬i);\r
break;\r
\r
case WFD_EVENT_PROV_DISCOVERY_REQUEST_WPS_KEYPAD:\r
{\r
if (event == WFD_EVENT_PROV_DISCOVERY_REQUEST)\r
- wfd_server->config_data.wps_config =\r
- WIFI_DIRECT_WPS_TYPE_PBC;\r
+ wfd_server->config_data.wps_config = WIFI_DIRECT_WPS_TYPE_PBC;\r
else if (event == WFD_EVENT_PROV_DISCOVERY_REQUEST_WPS_DISPLAY)\r
- wfd_server->config_data.wps_config =\r
- WIFI_DIRECT_WPS_TYPE_PIN_DISPLAY;\r
+ wfd_server->config_data.wps_config = WIFI_DIRECT_WPS_TYPE_PIN_DISPLAY;\r
else if (event == WFD_EVENT_PROV_DISCOVERY_REQUEST_WPS_KEYPAD)\r
wfd_server->config_data.wps_config = WIFI_DIRECT_WPS_TYPE_PIN_KEYPAD;\r
else\r
static int wfd_server_init(void)
{
- int i = -1;
- unsigned char NULL_MAC[6] = { 0, 0, 0, 0, 0, 0 };
-
__WDS_LOG_FUNC_ENTER__;
+ int i = -1;
- memset(&g_wfd_server, 0, sizeof(wfd_server_control_t));
- g_wfd_server.active_clients = 0;
+ memset(&g_wfd_server, 0x00, sizeof(wfd_server_control_t));
g_wfd_server.async_sockfd = -1;
g_wfd_server.sync_sockfd = -1;
g_wfd_server.config_data.wps_config = WIFI_DIRECT_WPS_TYPE_PBC;
g_wfd_server.config_data.auto_connection = false;
g_wfd_server.config_data.want_persistent_group = false;
- g_wfd_server.config_data.max_clients = WFD_MAC_ASSOC_STA;
+ g_wfd_server.config_data.max_clients = WFD_MAX_ASSOC_STA;
g_wfd_server.config_data.hide_SSID = false;
g_wfd_server.config_data.group_owner_intent = 8;
g_wfd_server.config_data.primary_dev_type = WIFI_DIRECT_PRIMARY_DEVICE_TYPE_TELEPHONE; // Telephone
g_wfd_server.config_data.secondary_dev_type = WIFI_DIRECT_SECONDARY_DEVICE_TYPE_PHONE_SM_DUAL; // smart phone dual mode (wifi and cellular)
- //g_wfd_server.config_data.primary_dev_type = WFD_DEVICE_TYPE_CAT_TELEPHONE;
- //g_wfd_server.config_data.secondary_dev_type = WFD_DEVICE_TYPE_SUB_CAT_PHONE_WM;
-
-
- for (i = 0; i < WFD_MAX_CLIENTS; i++)
- {
- memset(&g_wfd_server.client[i], 0, sizeof(wfd_server_client_t));
- }
-
- for (i = 0; i < 8; i++)
- {
- memset(&g_wfd_server.connected_peers[i], 0, sizeof(wfd_local_connected_peer_info_t));
- g_wfd_server.connected_peers[i].isUsed = 0;
-
- }
- g_wfd_server.connected_peer_count = 0;
- memcpy(g_wfd_server.current_peer.mac_address, NULL_MAC, 6);
-
- g_wfd_server.autonomous_group_owner = false;
-
wfd_load_plugin();
wfd_oem_init(wfd_server_process_event);
WDS_LOGD("========================================\n");
for (i = 0; i < argc; i++)
- {
WDS_LOGD( "arg[%d]= %s", i, argv[i]);
- }
if (!g_thread_supported())
- {
g_thread_init(NULL);
- }
g_type_init();
mainloop = g_main_loop_new(NULL, FALSE);
- WDS_LOGD( "gmainloop is initialized");
-
-
- WDS_LOGD( "Entering g_main_loop()...");
-
wfd_server_init();
if (wfd_server_create_socket() == -1)
wfd_server->client[index].dev_handle = -1;
wfd_server->active_clients--;
+ break;
+ }
+ }
- wfd_termination_timer_start();
-
- wfd_server_print_client();
+ if (wfd_server->active_clients == 0)
+ wfd_termination_timer_start();
- __WDS_LOG_FUNC_EXIT__;
- return;
- }
+ if (index == WFD_MAX_CLIENTS)
+ {
+ WDS_LOGE("Error!!! Reset client fail: socketfd=%d is not found\n", sync_sockfd);
+ __WDS_LOG_FUNC_EXIT__;
+ return;
}
- WDS_LOGF(
- "Error!!! Reset client fail: socketfd=%d is not found\n", sync_sockfd);
__WDS_LOG_FUNC_EXIT__;
return;
}
void wfd_server_print_client()
{
__WDS_LOG_FUNC_ENTER__;
-
wfd_server_control_t *wfd_server = wfd_server_get_control();
int index = 0;
- WDS_LOGI( "--------------------\n", wfd_server->active_clients-1);
+ WDS_LOGI( "--------------------\n");
for (index = 0; index < WFD_MAX_CLIENTS; index++)
{
if (wfd_server->client[index].isUsed == TRUE)
bool wfd_server_client_request_callback(GIOChannel* source, GIOCondition condition, gpointer data)
{
+ __WDS_LOG_FUNC_ENTER__;
int sockfd = (int) data;
wifi_direct_client_request_s client_req;
int req_len = sizeof(wifi_direct_client_request_s);
- __WDS_LOG_FUNC_ENTER__;
-
- memset(&client_req, 0, req_len);
+ memset(&client_req, 0x00, req_len);
if (wfd_server_read_socket_event(sockfd, (char *) &client_req, req_len) < 0)
{
/* Function to connect client with wfd_server */
bool wfd_server_register_client(int sockfd)
{
+ __WDS_LOG_FUNC_ENTER__;
int index = 0;
int status = 0;
wifi_direct_client_request_s register_req;
wifi_direct_client_response_s register_rsp;
wfd_server_control_t *wfd_server = wfd_server_get_control();
- __WDS_LOG_FUNC_ENTER__;
-
if (sockfd <= 0)
{
- // invalid socket fd should not be closed!!
WDS_LOGE( "Error!!! Invalid sockfd argument = [%d] \n", sockfd);
__WDS_LOG_FUNC_EXIT__;
- return TRUE;
+ return FALSE;
}
/** Read the Register socket type*/