return 0;
}
-int wfd_event_notify_clients(wfd_manager_s *manager, wifi_direct_client_noti_s *noti)
-{
- __WDS_LOG_FUNC_ENTER__;
- GList *temp = NULL;
- wfd_client_s *client = NULL;
- int noti_cnt = 0;
- int res = 0;
-
- if (!manager || !noti) {
- WDS_LOGE("Invalid parameter");
- __WDS_LOG_FUNC_EXIT__;
- return -1;
- }
-
- temp = g_list_first(manager->clients);
- while (temp) {
- client = temp->data;
- if (!client) {
- WDS_LOGE("Invalid client");
- goto next_client;
- }
- res = _wfd_event_send_to_client(client->asock, (char*) noti, sizeof(wifi_direct_client_noti_s));
- if (res < 0) {
- WDS_LOGE("Failed to send notification to client[%d]", client->client_id);
- goto next_client;
- }
- noti_cnt++;
-next_client:
- temp = g_list_next(temp);
- client = NULL;
- }
- WDS_LOGD("Notification[%d:%d] sent to %d clients", noti->event, noti->error, noti_cnt);
-
- __WDS_LOG_FUNC_EXIT__;
- return 0;
-}
-
static int _wfd_event_update_peer(wfd_manager_s *manager, wfd_oem_dev_data_s *data)
{
__WDS_LOG_FUNC_ENTER__;
memset(¬i, 0x0, sizeof(wifi_direct_client_noti_s));
noti.event = WIFI_DIRECT_CLI_EVENT_DISCOVER_FOUND_PEERS;
noti.error = WIFI_DIRECT_ERROR_NONE;
- wfd_event_notify_clients(manager, ¬i);
+ wfd_client_send_event(manager, ¬i);
}
}
break;
memset(¬i, 0x0, sizeof(wifi_direct_client_noti_s));
noti.event = WIFI_DIRECT_CLI_EVENT_DISCOVER_FOUND_PEERS;
noti.error = WIFI_DIRECT_ERROR_NONE;
- wfd_event_notify_clients(manager, ¬i);
+ wfd_client_send_event(manager, ¬i);
}
break;
case WFD_OEM_EVENT_DISCOVERY_FINISHED:
memset(¬i, 0x0, sizeof(wifi_direct_client_noti_s));
noti.event = WIFI_DIRECT_CLI_EVENT_DISCOVER_END;
noti.error = WIFI_DIRECT_ERROR_NONE;
- wfd_event_notify_clients(manager, ¬i);
+ wfd_client_send_event(manager, ¬i);
}
break;
case WFD_OEM_EVENT_INVITATION_REQ:
noti.event = WIFI_DIRECT_CLI_EVENT_INVITATION_REQ;
noti.error = WIFI_DIRECT_ERROR_NONE;
snprintf(noti.param1, sizeof(noti.param1), MACSTR, MAC2STR(event->dev_addr));
- wfd_event_notify_clients(manager, ¬i);
+ wfd_client_send_event(manager, ¬i);
}
break;
case WFD_OEM_EVENT_GO_NEG_REQ:
noti.event = WIFI_DIRECT_CLI_EVENT_CONNECTION_RSP;
noti.error = WIFI_DIRECT_ERROR_NONE;
snprintf(noti.param1, MACSTR_LEN, MACSTR, MAC2STR(peer->dev_addr));
- wfd_event_notify_clients(manager, ¬i);
+ wfd_client_send_event(manager, ¬i);
wfd_util_dhcps_wait_ip_leased(peer);
wfd_state_set(manager, WIFI_DIRECT_STATE_GROUP_OWNER);
noti.event = WIFI_DIRECT_CLI_EVENT_DISCONNECTION_IND;
noti.error = WIFI_DIRECT_ERROR_NONE;
snprintf(noti.param1, MACSTR_LEN, MACSTR, MAC2STR(peer->dev_addr));
- wfd_event_notify_clients(manager, ¬i);
+ wfd_client_send_event(manager, ¬i);
} else if (manager->state == WIFI_DIRECT_STATE_DISCONNECTING) {
noti.event = WIFI_DIRECT_CLI_EVENT_DISCONNECTION_RSP;
noti.error = WIFI_DIRECT_ERROR_NONE;
snprintf(noti.param1, MACSTR_LEN, MACSTR, MAC2STR(peer->dev_addr));
- wfd_event_notify_clients(manager, ¬i);
+ wfd_client_send_event(manager, ¬i);
}
if (group->role == WFD_DEV_ROLE_GO) {
} else {
if (group->flags & WFD_GROUP_FLAG_AUTONOMOUS) {
noti.event = WIFI_DIRECT_CLI_EVENT_GROUP_CREATE_RSP;
- wfd_event_notify_clients(manager, ¬i);
+ wfd_client_send_event(manager, ¬i);
} else if (!manager->session) {
WDS_LOGE("Unexpected Event. Group should be removed(Owner)");
wfd_oem_destroy_group(manager->oem_ops, group->ifname);
memset(¬i, 0x0, sizeof(wifi_direct_client_noti_s));
noti.event = WIFI_DIRECT_CLI_EVENT_DISCONNECTION_RSP;
noti.error = WIFI_DIRECT_ERROR_NONE;
- wfd_event_notify_clients(manager, ¬i);
+ wfd_client_send_event(manager, ¬i);
} else {
wifi_direct_client_noti_s noti;
memset(¬i, 0x0, sizeof(wifi_direct_client_noti_s));
noti.event = WIFI_DIRECT_CLI_EVENT_GROUP_DESTROY_RSP;
noti.error = WIFI_DIRECT_ERROR_NONE;
- wfd_event_notify_clients(manager, ¬i);
+ wfd_client_send_event(manager, ¬i);
}
res = wfd_destroy_group(manager, event->ifname);
#include "wifi-direct-oem.h"
#include "wifi-direct-util.h"
#include "wifi-direct-session.h"
-#include "wifi-direct-event.h"
+#include "wifi-direct-client.h"
#include "wifi-direct-state.h"
noti.event = WIFI_DIRECT_CLI_EVENT_CONNECTION_RSP;
noti.error = WIFI_DIRECT_ERROR_CONNECTION_CANCELED;
snprintf(noti.param1, MACSTR_LEN, MACSTR, MAC2STR(peer_addr));
- wfd_event_notify_clients(manager, ¬i);
+ wfd_client_send_event(manager, ¬i);
wfd_session_cancel(session, peer_addr);
noti.event = WIFI_DIRECT_CLI_EVENT_CONNECTION_REQ;
noti.error = WIFI_DIRECT_ERROR_NONE;
snprintf(noti.param1, sizeof(noti.param1), MACSTR, MAC2STR(event->dev_addr));
- wfd_event_notify_clients(manager, ¬i);
+ wfd_client_send_event(manager, ¬i);
} else {
if (session->state > SESSION_STATE_STARTED ||
session->direction == SESSION_DIRECTION_INCOMING) {
memset(¬i, 0x0, sizeof(wifi_direct_client_noti_s));
noti.event = WIFI_DIRECT_CLI_EVENT_CONNECTION_WPS_REQ;
snprintf(noti.param1, sizeof(noti.param1), MACSTR, MAC2STR(event->dev_addr));
- wfd_event_notify_clients(manager, ¬i);
+ wfd_client_send_event(manager, ¬i);
if (session->wps_mode == WFD_WPS_MODE_KEYPAD)
break;
}
#include "wifi-direct-manager.h"
#include "wifi-direct-state.h"
-#include "wifi-direct-event.h"
+#include "wifi-direct-client.h"
#include "wifi-direct-util.h"
static int _txt_to_mac(char *txt, unsigned char *mac)
void _wfd_util_dev_name_changed_cb(keynode_t *key, void* data)
{
__WDS_LOG_FUNC_ENTER__;
- char dev_name[DEV_NAME_LEN] = {0, };
+ char dev_name[DEV_NAME_LEN+1] = {0, };
int res = 0;
res = wfd_util_get_phone_name(dev_name);
noti.event = WIFI_DIRECT_CLI_EVENT_IP_LEASED_IND;
snprintf(noti.param1, MACSTR_LEN, MACSTR, MAC2STR(peer->dev_addr));
snprintf(noti.param2, IPSTR_LEN, IPSTR, IP2STR(peer->ip_addr));
- wfd_event_notify_clients(manager, ¬i);
+ wfd_client_send_event(manager, ¬i);
break;
} else {
WDS_LOGE("Different interface address peer[" MACSTR "] vs dhcp[" MACSTR "]", MAC2STR(peer->intf_addr), MAC2STR(intf_addr));
noti.event = WIFI_DIRECT_CLI_EVENT_CONNECTION_RSP;
noti.error = WIFI_DIRECT_ERROR_NONE;
snprintf(noti.param1, MACSTR_LEN, MACSTR, MAC2STR(peer->dev_addr));
- wfd_event_notify_clients(manager, ¬i);
+ wfd_client_send_event(manager, ¬i);
__WDS_LOG_FUNC_EXIT__;
return FALSE;