*
* Copyright (c) 2000 - 2012 Samsung Electronics Co., Ltd. All rights reserved.
*
- * Contact: Sungsik Jang <sungsik.jang@samsung.com>, Dongwook Lee <dwmax.lee@samsung.com>
+ * Contact: Sungsik Jang <sungsik.jang@samsung.com>, Dongwook Lee <dwmax.lee@samsung.com>
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
typedef enum
{
WIFI_DIRECT_ERROR_NONE = 0, /**< Successful */
- WIFI_DIRECT_ERROR_OUT_OF_MEMORY = -ENOMEM, /**< Out of memory */
- WIFI_DIRECT_ERROR_NOT_PERMITTED = -EPERM, /**< Operation not permitted */
- WIFI_DIRECT_ERROR_INVALID_PARAMETER = -EINVAL, /**< Invalid function parameter */
- WIFI_DIRECT_ERROR_RESOURCE_BUSY = -EBUSY, /**< Device or resource busy */
- WIFI_DIRECT_ERROR_CONNECTION_TIME_OUT = -ETIMEDOUT, /**< Connection timed out */
+ WIFI_DIRECT_ERROR_NOT_PERMITTED = -EPERM, /** Operation not permitted(1) */
+ WIFI_DIRECT_ERROR_OUT_OF_MEMORY = -ENOMEM, /** Out of memory(12) */
+ WIFI_DIRECT_ERROR_RESOURCE_BUSY = -EBUSY, /** Device or resource busy(16) */
+ WIFI_DIRECT_ERROR_INVALID_PARAMETER = -EINVAL, /** Invalid function parameter(22) */
+ WIFI_DIRECT_ERROR_CONNECTION_TIME_OUT = -ETIMEDOUT, /**< Connection timed out(110) */
WIFI_DIRECT_ERROR_NOT_INITIALIZED = -0x00008000|0x0201, /**< Not initialized */
WIFI_DIRECT_ERROR_COMMUNICATION_FAILED = -0x00008000|0x0202, /**< I/O error */
WIFI_DIRECT_ERROR_WIFI_USED = -0x00008000|0x0203, /**< WiFi is being used */
*/
typedef struct
{
- char* device_name; /** Null-terminated device friendly name. */
+ char *device_name; /** Null-terminated device friendly name. */
char *mac_address; /** Device's P2P Device Address */
- char* interface_address; /** Device's P2P Interface Address. Valid only if device is a P2P GO. */
+ char *interface_address; /** Device's P2P Interface Address. Valid only if device is a P2P GO. */
int channel; /** Channel the device is listening on. */
bool is_connected; /** Is peer connected*/
- bool is_group_owner; /** Is an active P2P Group Owner */
+ bool is_group_owner; /** Is an active P2P Group Owner */
bool is_persistent_group_owner; /** Is a stored Persistent GO */
wifi_direct_primary_device_type_e primary_device_type; /** Primary category of device */
wifi_direct_secondary_device_type_e secondary_device_type; /** Sub category of device */
int supported_wps_types; /** The list of supported WPS type. \n
The OR operation on #wifi_direct_wps_type_e can be used like #WIFI_DIRECT_WPS_TYPE_PBC | #WIFI_DIRECT_WPS_TYPE_PIN_DISPLAY */
- char* ssid; /**< Service set identifier - DEPRECATED */
+ char *ssid; /**< Service set identifier - DEPRECATED */
} wifi_direct_discovered_peer_info_s;
*
*/
typedef void (*wifi_direct_discovery_state_chagned_cb) (int error_code,
- wifi_direct_discovery_state_e
- discovery_state,
+ wifi_direct_discovery_state_e discovery_state,
void *user_data);
/**
*
*/
typedef void (*wifi_direct_device_state_changed_cb) (int error_code,
- wifi_direct_device_state_e
- device_state,
+ wifi_direct_device_state_e device_state,
void *user_data);
/**
*
*/
typedef void (*wifi_direct_connection_state_changed_cb) (int error_code,
- wifi_direct_connection_state_e
- connection_state,
- const char
- *mac_address,
+ wifi_direct_connection_state_e connection_state,
+ const char *mac_address,
void *user_data);
* @see wifi_direct_set_client_ip_address_assigned_cb()
* @see wifi_direct_unset_client_ip_address_assigned_cb()
*/
-typedef void (*wifi_direct_client_ip_address_assigned_cb) (const char* mac_address,
- const char* ip_address,
- const char* interface_address,
+typedef void (*wifi_direct_client_ip_address_assigned_cb) (const char *mac_address,
+ const char *ip_address,
+ const char *interface_address,
void *user_data);
* {
*
* int result;
- *
+ *
* result = wifi_direct_initialize();
*
* if(result == WIFI_DIRECT_ERROR_NONE).........// Successfully connected to the wifi direct server
*
* \param[in] cb Application Callback function pointer to receive Wi-Fi Direct events
* \param[in] user_data user data
- *
+ *
* \return Return Type (int) \n
*
* - WIFI_DIRECT_ERROR_NONE on success \n
* {
*
* int result;
- *
+ *
* result = wifi_direct_set_connection_state_changed_cb(_cb_activation, void* user_data);
*
* if(result == WIFI_DIRECT_ERROR_NONE).........// Successfully registered the callback function
* {
*
* int result;
- *
+ *
* result = wifi_direct_unset_connection_state_changed_cb();
*
* if(result == WIFI_DIRECT_ERROR_NONE).........// Successfully deregistered the callback function
*
* \param[in] cb Application Callback function pointer to receive Wi-Fi Direct events
* \param[in] user_data user data
- *
+ *
* \return Return Type (int) \n
*
* - WIFI_DIRECT_ERROR_NONE on success \n
* {
*
* int result;
- *
+ *
* result = wifi_direct_set_discovery_state_changed_cb(_cb_discover, void* user_data);
*
* if(result == WIFI_DIRECT_ERROR_NONE).........// Successfully registered the callback function
* {
*
* int result;
- *
+ *
* result = wifi_direct_unset_discovery_state_changed_cb();
*
* if(result == WIFI_DIRECT_ERROR_NONE).........// Successfully deregistered the callback function
*
* \param[in] cb Application Callback function pointer to receive Wi-Fi Direct events
* \param[in] user_data user data
- *
+ *
* \return Return Type (int) \n
*
* - WIFI_DIRECT_ERROR_NONE on success \n
* {
*
* int result;
- *
+ *
* result = wifi_direct_set_connection_state_changed_cb(_cb_connection, void* user_data);
*
* if(result == WIFI_DIRECT_ERROR_NONE).........// Successfully registered the callback function
* {
*
* int result;
- *
+ *
* result = wifi_direct_unset_connection_state_changed_cb();
*
* if(result == WIFI_DIRECT_ERROR_NONE).........// Successfully deregistered the callback function
* @see wifi_direct_unset_client_ip_address_assigned_cb()
* @see wifi_direct_client_ip_address_assigned_cb()
*/
-int wifi_direct_set_client_ip_address_assigned_cb(wifi_direct_client_ip_address_assigned_cb cb, void* user_data);
+int wifi_direct_set_client_ip_address_assigned_cb(wifi_direct_client_ip_address_assigned_cb cb, void *user_data);
/**
*
*\endcode
*
- *\remarks If discover is over, peer can not find the device and the device can not find peer, too.
- *
+ *\remarks If discover is over, peer can not find the device and the device can not find peer, too.
+ *
******************************************************************************/
int wifi_direct_start_discovery(bool listen_only, int timeout);
* @see wifi_direct_foreach_discovered_peers()
*
*/
-typedef bool(*wifi_direct_discovered_peer_cb) (wifi_direct_discovered_peer_info_s * peer, void *user_data);
+typedef bool(*wifi_direct_discovered_peer_cb) (wifi_direct_discovered_peer_info_s *peer, void *user_data);
/*****************************************************************************************/
* bool _cb_discovered_peers_impl(wifi_direct_discovered_peer_info_s* peer, void* user_data)
* {
* struct appdata* ad = (struct appdata*) user_data;
- *
+ *
* if(NULL != peer)
* {
* if ( ad->peer_count >= MAX_PEER_NUM )
*\remarks None.
*
******************************************************************************/
-int wifi_direct_foreach_discovered_peers(wifi_direct_discovered_peer_cb
- callback, void *user_data);
+int wifi_direct_foreach_discovered_peers(wifi_direct_discovered_peer_cb callback,
+ void *user_data);
/*****************************************************************************************/
* \par Async Response Message:
* - WIFI_DIRECT_DISCONNECTION_RSP : Applications will receive this event
* via callback when the disconnection process is completed.
- *
+ *
*
* \return Return Type (int) \n
* - WIFI_DIRECT_ERROR_NONE on success \n
* int wifi_direct_disconnect(const char* mac_address);
*/
/**
- * \brief This API shall disconnect the specified peer by mac address.
+ * \brief This API shall disconnect the specified peer by mac address.
*
* @param mac_addr Device address of target peer.
*
* @see wifi_direct_foreach_connected_peers()
*
*/
-typedef bool(*wifi_direct_connected_peer_cb) (wifi_direct_connected_peer_info_s
- * peer, void *user_data);
+typedef bool(*wifi_direct_connected_peer_cb) (wifi_direct_connected_peer_info_s *peer,
+ void *user_data);
/*****************************************************************************************/
*
* bool _cb_connected_peers_impl(wifi_direct_connected_peer_info_s* peer, void* user_data)
*{
- *
+ *
* struct appdata* ad = (struct appdata*) user_data;
*
* if(NULL != peer)
* {
* if ( ad->connected_peer_count >= MAX_PEER_NUM )
* return false; // break out of the loop
- *
+ *
* memcpy(&ad->connected_peer_list[ad->connected_peer_count], peer, sizeof(wifi_direct_connected_peer_info_s));
* ad->connected_peer_count++;
- *
+ *
* }
*
* return true; // continue with the next iteration of the loop
*\remarks None.
*
******************************************************************************/
-int wifi_direct_is_group_owner(bool * is_group_owner);
+int wifi_direct_is_group_owner(bool *is_group_owner);
*\remarks None.
*
******************************************************************************/
-int wifi_direct_is_autonomous_group(bool * is_autonomous_group);
+int wifi_direct_is_autonomous_group(bool *is_autonomous_group);
* int wifi_direct_set_ssid(const char* ssid);
*/
/**
- * \brief This API shall set or update ssid of local device. \n
+ * \brief This API shall set or update ssid of local device. \n
* @param ssid new ssid to set. Application must set the new ssid before.
*
* \see wifi_direct_get_ssid
*
*if( strlen(ssid) > 0 )
* result = wifi_direct_set_ssid(ssid);
- *
+ *
* if(result == WIFI_DIRECT_ERROR_NONE)......... // setting ssid is successful
*
*\endcode
*
*\remarks When the wifi direct is re-activated, ssid will be reset to the device name. \n
- *
+ *
*
******************************************************************************/
int wifi_direct_set_ssid(const char *ssid);
* @see wifi_direct_activate()
* @see wifi_direct_get_device_name()
*/
-int wifi_direct_set_device_name(const char* device_name);
+int wifi_direct_set_device_name(const char *device_name);
/**
* @brief Gets the name of local device.
* @see wifi_direct_initialize()
* @see wifi_direct_set_device_name()
*/
-int wifi_direct_get_device_name(char** device_name);
+int wifi_direct_get_device_name(char **device_name);
/*****************************************************************************************/
/* wifi_direct_get_ssid API function prototype
* @pre Wi-Fi Direct service must be activated by wifi_direct_activate().
* @see wifi_direct_activate()
*/
-int wifi_direct_get_network_interface_name(char** name);
+int wifi_direct_get_network_interface_name(char **name);
/*****************************************************************************************/
* @pre Wi-Fi Direct service must be activated by wifi_direct_activate().
* @see wifi_direct_activate()
*/
-int wifi_direct_get_subnet_mask(char** subnet_mask);
+int wifi_direct_get_subnet_mask(char **subnet_mask);
/**
* @pre Wi-Fi Direct service must be activated by wifi_direct_activate().
* @see wifi_direct_activate()
*/
-int wifi_direct_get_gateway_address(char** gateway_address);
+int wifi_direct_get_gateway_address(char **gateway_address);
*\remarks None.
*
******************************************************************************/
-int wifi_direct_get_state(wifi_direct_state_e * state);
+int wifi_direct_get_state(wifi_direct_state_e *state);
* @see wifi_direct_start_discovery()
* @see wifi_direct_cancel_discovery()
*/
-int wifi_direct_is_discoverable(bool* discoverable);
+int wifi_direct_is_discoverable(bool *discoverable);
/**
* @brief Checks whether the local device is listening only.
* @see wifi_direct_cancel_discovery()
* @see wifi_direct_is_discoverable()
*/
-int wifi_direct_is_listening_only(bool* listen_only);
+int wifi_direct_is_listening_only(bool *listen_only);
/**
* @brief Gets the primary device type of local device.
* @pre Wi-Fi Direct service must be initialized by wifi_direct_initialize().
* @see wifi_direct_initialize()
*/
-int wifi_direct_get_primary_device_type(wifi_direct_primary_device_type_e* type);
+int wifi_direct_get_primary_device_type(wifi_direct_primary_device_type_e *type);
/**
* @brief Gets the secondary device type of local device.
* @pre Wi-Fi Direct service must be initialized by wifi_direct_initialize().
* @see wifi_direct_initialize()
*/
-int wifi_direct_get_secondary_device_type(wifi_direct_secondary_device_type_e* type);
+int wifi_direct_get_secondary_device_type(wifi_direct_secondary_device_type_e *type);
/*****************************************************************************************/
*
*if( strlen(new_wpa) > 0 )
* result = wifi_direct_set_wpa_passphrase(new_wpa);
- *
+ *
* if(result == WIFI_DIRECT_ERROR_NONE)......... // setting password is successful
*
*\endcode
*
*if( strlen(pin) > 0 )
* result = wifi_direct_set_wps_pin(pin);
- *
+ *
* if(result == WIFI_DIRECT_ERROR_NONE)......... // setting wps pin number is successful
*
*\endcode
* char* pin = NULL;
*
* result = wifi_direct_get_wps_pin(&pin);
- *
+ *
* if(result == WIFI_DIRECT_ERROR_NONE)......... // getting wps pin number is successful
*
* free(pin); // Application should free the memory.
* int result;
*
* result = wifi_direct_generate_wps_pin();
- *
+ *
* if(result == WIFI_DIRECT_ERROR_NONE)......... // generating wps pin number is successful
*
*\endcode
* int supported_wps_mode = 0;
*
* result = wifi_direct_get_supported_wps_mode(&supported_wps_mode);
- *
+ *
* if(result == WIFI_DIRECT_ERROR_NONE)......... // getting supported wps mode is successful
*
*\endcode
* @pre wifi_direct_foreach_supported_wps_types() will invoke this callback.
* @see wifi_direct_foreach_supported_wps_types()
*/
-typedef bool(*wifi_direct_supported_wps_type_cb)(wifi_direct_wps_type_e type, void* user_data);
+typedef bool(*wifi_direct_supported_wps_type_cb)(wifi_direct_wps_type_e type, void *user_data);
/**
* @brief Gets the supported WPS(Wi-Fi Protected Setup) types.
* @retval #WIFI_DIRECT_ERROR_INVALID_PARAMETER Invalid parameter
* @see wifi_direct_supported_wps_type_cb()
*/
-int wifi_direct_foreach_supported_wps_types(wifi_direct_supported_wps_type_cb callback, void* user_data);
+int wifi_direct_foreach_supported_wps_types(wifi_direct_supported_wps_type_cb callback, void *user_data);
/**
* @brief Sets the WPS(Wi-Fi Protected Setup) type.
* @retval #WIFI_DIRECT_ERROR_INVALID_PARAMETER Invalid parameter
* @see wifi_direct_foreach_supported_wps_types()
*/
-int wifi_direct_get_wps_type(wifi_direct_wps_type_e* type);
+int wifi_direct_get_wps_type(wifi_direct_wps_type_e *type);
/**
* @brief Sets the intent of a group owner.
* @retval #WIFI_DIRECT_ERROR_INVALID_PARAMETER Invalid parameter
* @see wifi_direct_set_group_owner_intent()
*/
-int wifi_direct_get_group_owner_intent(int* intent);
-
+int wifi_direct_get_group_owner_intent(int *intent);
+
/**
* @brief Sets the max number of clients.
* @param[in] max The max number of clients
* @see wifi_direct_get_max_clients()
*/
int wifi_direct_set_max_clients(int max);
-
+
/**
* @brief Gets the max number of clients.
* @param[in] max The max number of clients
* @retval #WIFI_DIRECT_ERROR_INVALID_PARAMETER Invalid parameter
* @see wifi_direct_set_max_clients()
*/
-int wifi_direct_get_max_clients(int* max);
+int wifi_direct_get_max_clients(int *max);
/**
-* @brief Gets the channel of own group. - DEPRECATED
+* @brief Gets the channel of own group. - DEPRECATED
* @param[out] channel The channel of own group
* @return 0 on success, otherwise a negative error value.
* @retval #WIFI_DIRECT_ERROR_NONE Successful
* @pre Wi-Fi Direct service must be initialized by wifi_direct_initialize().
* @see wifi_direct_initialize()
*/
-int wifi_direct_get_own_group_channel(int* channel);
+int wifi_direct_get_own_group_channel(int *channel);
/**
* @pre Wi-Fi Direct service must be initialized by wifi_direct_initialize().
* @see wifi_direct_initialize()
*/
-int wifi_direct_get_operating_channel(int* channel);
+int wifi_direct_get_operating_channel(int *channel);
/**
* @brief Sets the Autoconnection mode.
*/
int wifi_direct_set_autoconnection_mode(bool mode);
-int wifi_direct_is_autoconnection_mode(bool* mode);
+int wifi_direct_is_autoconnection_mode(bool *mode);
-/**
+/**
* @brief Enables the persistent group.
* @details If @a enabled is true, then P2P persisten group will be used when creating a group and establishing a connection.
* @param[in] enabled The status of persistent group: (@c true = enabled, @c false = disabled)
* @see wifi_direct_initialize()
* @see wifi_direct_set_persistent_group_enabled()
*/
-int wifi_direct_is_persistent_group_enabled(bool* enabled);
+int wifi_direct_is_persistent_group_enabled(bool *enabled);
/**
* @pre wifi_direct_foreach_persistent_groups() will invoke this callback.
* @see wifi_direct_foreach_persistent_groups()
*/
-typedef bool(*wifi_direct_persistent_group_cb)(const char* mac_address, const char* ssid, void* user_data);
+typedef bool(*wifi_direct_persistent_group_cb)(const char *mac_address, const char *ssid, void *user_data);
/**
* @brief Gets the persistent groups.
* @see wifi_direct_initialize()
* @see wifi_direct_persistent_group_cb()
*/
-int wifi_direct_foreach_persistent_groups(wifi_direct_persistent_group_cb callback, void* user_data);
+int wifi_direct_foreach_persistent_groups(wifi_direct_persistent_group_cb callback, void *user_data);
/**
* @brief Remove a persistent group.
* @see wifi_direct_initialize()
* @see wifi_direct_foreach_persistent_groups()
*/
-int wifi_direct_remove_persistent_group(const char* mac_address, const char* ssid);
+int wifi_direct_remove_persistent_group(const char *mac_address, const char *ssid);
/**
*
* Copyright (c) 2000 - 2012 Samsung Electronics Co., Ltd. All rights reserved.
*
- * Contact: Sungsik Jang <sungsik.jang@samsung.com>, Dongwook Lee <dwmax.lee@samsung.com>
+ * Contact: Sungsik Jang <sungsik.jang@samsung.com>, Dongwook Lee <dwmax.lee@samsung.com>
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* Macros and Typedefs
*****************************************************************************/
-
/*****************************************************************************
* Global Variables
*****************************************************************************/
return syscall(__NR_gettid);
}
#else
-#error "__NR_gettid is not defined, please include linux/unistd.h "
+#error "__NR_gettid is not defined, please include linux/unistd.h"
#endif
static wifi_direct_client_info_s *__wfd_get_control()
{
WDC_LOGE("Error!!! writing to socket, Errno = %s\n", strerror(errno));
WDC_LOGE("Error!!! [%s]\n", __wfd_print_error(status));
- close(sockfd);
+ if (sockfd > 0)
+ close(sockfd);
__WDC_LOG_FUNC_END__;
return WIFI_DIRECT_ERROR_COMMUNICATION_FAILED;
}
/*Get client id */
- if ((status = __wfd_client_read_socket(sockfd, (char *) &resp,
+ if ((status = __wfd_client_read_socket(sockfd, (char *) &resp,
sizeof(wifi_direct_client_response_s))) <= 0)
{
WDC_LOGE("Error!!! reading socket, status = %d errno = %s\n", status, strerror(errno));
+ if (sockfd > 0)
+ close(sockfd);
__WDC_LOG_FUNC_END__;
return WIFI_DIRECT_ERROR_COMMUNICATION_FAILED;
}
}
else
{
- WDC_LOGE("Error!!! Client Register = %d\n",
- resp.result);
- close(sockfd);
+ WDC_LOGE("Error!!! Client Register = %d\n", resp.result);
+ if (sockfd > 0)
+ close(sockfd);
__WDC_LOG_FUNC_END__;
return resp.result;
}
int async_sockfd = -1;
/* Send request for establishing async communication channel */
- if ((async_sockfd =
- __wfd_client_async_event_init(client_info->client_id)) ==
- WIFI_DIRECT_ERROR_COMMUNICATION_FAILED)
+ async_sockfd = __wfd_client_async_event_init(client_info->client_id);
+ if (async_sockfd == WIFI_DIRECT_ERROR_COMMUNICATION_FAILED)
{
WDC_LOGE("Error!!! creating Async Socket \n");
+ if (sockfd > 0)
+ close(sockfd);
__wfd_reset_control();
__WDC_LOG_FUNC_END__;
return WIFI_DIRECT_ERROR_COMMUNICATION_FAILED;
{
WDC_LOGE("Error!!! Invalid Response received from wfd Server. cmd = %d \n",
resp.cmd);
- close(sockfd);
+ if (sockfd > 0)
+ close(sockfd);
__WDC_LOG_FUNC_END__;
return WIFI_DIRECT_ERROR_COMMUNICATION_FAILED;
}
client_info->user_data_for_cb_connection = NULL;
__WDC_LOG_FUNC_END__;
-
return WIFI_DIRECT_ERROR_NONE;
}
WDC_LOGE("socket read error.\n");
return WIFI_DIRECT_ERROR_OPERATION_FAILED;
}
- }
- __wfd_client_print_connected_peer_info(buff, num);
+ __wfd_client_print_connected_peer_info(buff, num);
- WDC_LOGD("wifi_direct_foreach_connected_peers() SUCCESS\n");
+ WDC_LOGD("wifi_direct_foreach_connected_peers() SUCCESS\n");
- wifi_direct_connected_peer_info_s *peer_list;
+ wifi_direct_connected_peer_info_s *peer_list = NULL;
- for (i = 0; i < num; i++)
- {
- peer_list = (wifi_direct_connected_peer_info_s *) calloc(1, sizeof(wifi_direct_connected_peer_info_s));
- peer_list->device_name = strdup(buff[i].device_name);
- peer_list->ip_address= (char *) calloc(1, 16);
- snprintf(peer_list->ip_address, 16, IPSTR, IP2STR(buff[i].ip_address));
- peer_list->mac_address = (char *) calloc(1, 18);
- snprintf(peer_list->mac_address, 18, MACSTR, MAC2STR(buff[i].mac_address));
- peer_list->interface_address = (char *) calloc(1, 18);
- snprintf(peer_list->interface_address, 18, MACSTR, MAC2STR(buff[i].intf_mac_address));
- peer_list->p2p_supported = buff[i].is_p2p;
- peer_list->primary_device_type = buff[i].category;
- peer_list->channel = buff[i].channel;
-
- if (!callback(peer_list, user_data))
- break;
+ for (i = 0; i < num; i++)
+ {
+ peer_list = (wifi_direct_connected_peer_info_s *) calloc(1, sizeof(wifi_direct_connected_peer_info_s));
+ peer_list->device_name = strdup(buff[i].device_name);
+ peer_list->ip_address= (char *) calloc(1, 16);
+ snprintf(peer_list->ip_address, 16, IPSTR, IP2STR(buff[i].ip_address));
+ peer_list->mac_address = (char *) calloc(1, 18);
+ snprintf(peer_list->mac_address, 18, MACSTR, MAC2STR(buff[i].mac_address));
+ peer_list->interface_address = (char *) calloc(1, 18);
+ snprintf(peer_list->interface_address, 18, MACSTR, MAC2STR(buff[i].intf_mac_address));
+ peer_list->p2p_supported = buff[i].is_p2p;
+ peer_list->primary_device_type = buff[i].category;
+ peer_list->channel = buff[i].channel;
+
+ if (!callback(peer_list, user_data))
+ break;
+ }
+ } else {
+ callback(NULL, user_data);
}
if (NULL != buff)
if ((result == true) && (wps_mode & WIFI_DIRECT_WPS_TYPE_PIN_DISPLAY))
result = callback(WIFI_DIRECT_WPS_TYPE_PIN_DISPLAY, user_data);
-
+
if ((result == true) && (wps_mode & WIFI_DIRECT_WPS_TYPE_PIN_KEYPAD))
result = callback(WIFI_DIRECT_WPS_TYPE_PIN_KEYPAD, user_data);
WDC_LOGE("Failed to allocate memory for MAC address");
return WIFI_DIRECT_ERROR_OUT_OF_MEMORY;
}
-
+
sprintf(temp_mac, MACSTR, MAC2STR(la_mac_addr));
*mac_address = temp_mac;
unsigned char la_mac_addr[6];
memset(mac_info, 0, sizeof(mac_info));
-
- if( (fd = open(WIFI_DIRECT_MAC_ADDRESS_INFO_FILE, O_RDONLY)) == -1)
+
+ fd = open(WIFI_DIRECT_MAC_ADDRESS_INFO_FILE, O_RDONLY);
+ if (fd == -1)
{
WDC_LOGE("[.mac.info] file open failed.");
__WDC_LOG_FUNC_END__;
if(n < 0)
{
WDC_LOGE("[.mac.info] file read failed.");
+ if (fd > 0)
+ close(fd);
__WDC_LOG_FUNC_END__;
return WIFI_DIRECT_ERROR_OPERATION_FAILED;
}
memset(la_mac_addr, 0, sizeof(la_mac_addr));
macaddr_atoe(mac_info, la_mac_addr);
la_mac_addr[0] = la_mac_addr[0] | 0x02;
- la_mac_addr[1] = la_mac_addr[1];
- la_mac_addr[2] = la_mac_addr[2];
- la_mac_addr[3] = la_mac_addr[3];
- la_mac_addr[4] = la_mac_addr[4];
- la_mac_addr[5] = la_mac_addr[5];
char *temp_mac = NULL;
temp_mac = (char *) calloc(1, 18);
if (NULL == temp_mac)
{
WDC_LOGE("Failed to allocate memory for MAC address");
+ if (fd > 0)
+ close(fd);
return WIFI_DIRECT_ERROR_OUT_OF_MEMORY;
}
snprintf(temp_mac, 18, MACSTR, MAC2STR(la_mac_addr));
*mac_address = temp_mac;
-
+
#endif
- __WDC_LOG_FUNC_END__;
+ if (fd > 0)
+ close(fd);
+ __WDC_LOG_FUNC_END__;
return WIFI_DIRECT_ERROR_NONE;
}
/* for CAPI : there is no WIFI_DIRECT_STATE_GROUP_OWNER type in CAPI */
if(*state == WIFI_DIRECT_STATE_GROUP_OWNER)
*state = WIFI_DIRECT_STATE_CONNECTED;
-
+
}
}
else