{
__WDP_LOG_FUNC_ENTER__;
wfd_oem_event_s event;
- wfd_oem_invite_data_s* invite_data = NULL;
- GVariantIter *iter = NULL;
DEBUG_SIGNAL(sender, object_path, interface, signal, parameters);
memset(&event, 0x0, sizeof(wfd_oem_event_s));
- int status = 0;
- invite_data = (wfd_oem_invite_data_s *)g_try_malloc0(sizeof(wfd_oem_invite_data_s));
- if (!invite_data) {
- WDP_LOGF("Failed to allocate memory for event.");
- __WDP_LOG_FUNC_EXIT__;
- return;
- }
-
- event.edata = (wfd_oem_invite_data_s *)invite_data;
- event.edata_type = WFD_OEM_EDATA_TYPE_INVITE;
- event.event_id = WFD_OEM_EVENT_INVITATION_RES;
-
- if (parameters != NULL) {
- g_variant_get(parameters, "(a{sv})", &iter);
- if (iter != NULL) {
- gchar *key = NULL;
- GVariant *value = NULL;
- while (g_variant_iter_loop(iter, "{sv}", &key, &value)) {
- CHECK_KEY_VALUE(key, value);
- if (g_strcmp0(key, "status") == 0) {
- g_variant_get(value, "i", &status);
- WDP_LOGD("Retrive invitation status [%d]", status);
- invite_data->status = status;
- } else if (g_strcmp0(key, "BSSID") == 0) {
- if (__ws_unpack_ay(invite_data->bssid, value, WS_MACADDR_LEN)) {
- WDP_LOGD("[" MACSTR "]", MAC2STR(invite_data->bssid));
- }
- }
- }
- g_variant_iter_free(iter);
- }
- }
-
- if (g_pd->callback->invitation_resp_cb)
- g_pd->callback->invitation_resp_cb(&event);
-
- g_free(event.edata);
-
__WDP_LOG_FUNC_EXIT__;
}
{
__WDS_LOG_FUNC_ENTER__;//LCOV_EXCL_LINE
- wfd_manager_s *manager = wfd_get_manager();
- wfd_session_s *session = (wfd_session_s *)manager->session;
- unsigned char *peer_addr = NULL;
- wfd_oem_invite_data_s *edata = NULL;
-
- if (!session) {
- WDS_LOGE("Unexpected event. Session not exist");
- __WDS_LOG_FUNC_EXIT__;
- return;
- }
-
- peer_addr = wfd_session_get_peer_addr(session);
- if (!peer_addr) {
- WDS_LOGE("Session does not have peer");
- return;
- }
-
- edata = (wfd_oem_invite_data_s *)event->edata;
- if (edata->status != 0) {
- WDS_LOGE("P2P-INVITATION-RESULT status= %d [Failed]", edata->status);
- wfd_destroy_session(manager);
- }
-
__WDS_LOG_FUNC_EXIT__;//LCOV_EXCL_LINE
return;
}