void
_WifiDirectDeviceEvent::FireImpl(Tizen::Base::Runtime::IEventListener& listener, const Tizen::Base::Runtime::IEventArg& arg)
{
- const _WifiDirectEventArg* pArg = dynamic_cast<const _WifiDirectEventArg*>(&arg);
- SysTryReturnVoidResult(NID_NET_WIFI, pArg != null, E_INVALID_ARG, "[E_INVALID_ARG] The argument is a null pointer.");
-
- IWifiDirectDeviceListener* pDeviceListener = dynamic_cast<IWifiDirectDeviceListener*>(&listener);
- SysTryReturnVoidResult(NID_NET_WIFI, pDeviceListener != null, E_INVALID_ARG,
- "[E_INVALID_ARG] The result of a dynamic_cast operation is null for external Device listener.");
-
- _WifiDirectEventType eventType = pArg->GetEventType();
- WifiDirectDeviceId localDeviceId = pArg->GetDeviceId();
- result r = pArg->GetError();
-
- switch (eventType)
- {
- case WIFI_DIRECT_DEVICE_EVENT_ACTIVATED:
- SysLog(NID_NET_WIFI, "Firing External Event (Type: WIFI_DIRECT_DEVICE_EVENT_ACTIVATED) : %s",GetErrorMessage(r));
- pDeviceListener->OnWifiDirectDeviceActivated(localDeviceId, r);
- break;
- case WIFI_DIRECT_DEVICE_EVENT_DEACTIVATED:
- SysLog(NID_NET_WIFI, "Firing External Event (Type: WIFI_DIRECT_DEVICE_EVENT_DEACTIVATED) : %s",GetErrorMessage(r));
- pDeviceListener->OnWifiDirectDeviceDeactivated(localDeviceId, r);
- break;
- case WIFI_DIRECT_DEVICE_EVENT_GROUP_CREATED:
- SysLog(NID_NET_WIFI, "Firing External Event (Type: WIFI_DIRECT_DEVICE_EVENT_GROUP_CREATED) : %s",GetErrorMessage(r));
- {
- WifiDirectGroupInfo* pGroupInfo = pArg->GetGroupInfo();
- WifiDirectDeviceInfo* pGroupOwnerInfo = pArg->GetDeviceInfo();
- WifiDirectGroupMember* pGroupMember = pArg->GetGroupMember();
- pDeviceListener->OnWifiDirectGroupCreatedN(localDeviceId, *pGroupInfo, *pGroupOwnerInfo, pGroupMember, r);
- }
- break;
- case WIFI_DIRECT_DEVICE_EVENT_SCAN_COMPLETED:
- SysLog(NID_NET_WIFI, "Firing External Event (Type: WIFI_DIRECT_DEVICE_EVENT_SCAN_COMPLETED) : %s",GetErrorMessage(r));
- {
- if(!IsFailed(r))
- {
- ArrayList* pSrcDeviceInfoList = dynamic_cast<ArrayList*>(pArg->GetDeviceInfoList());
- SysTryCatch(NID_NET_WIFI, pSrcDeviceInfoList != null, , E_SYSTEM, "[E_SYSTEM] Failed to dynamic casting DeviceInfo list.");
-
- ArrayList* pDescDeviceInfoList = new (std::nothrow) ArrayList();
- SysTryCatch(NID_NET_WIFI, pDescDeviceInfoList != null, , E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation failed.");
-
- result res = pDescDeviceInfoList->Construct(*pSrcDeviceInfoList);
-
- if (IsFailed(res))
- {
- delete pDescDeviceInfoList;
- pDescDeviceInfoList = null;
-
- r = E_SYSTEM;
- }
-
- pDeviceListener->OnWifiDirectScanCompletedN(localDeviceId, pDescDeviceInfoList, r);
- }
- else
- {
- pDeviceListener->OnWifiDirectScanCompletedN(localDeviceId, null, r);
- }
- }
- break;
- case WIFI_DIRECT_DEVICE_EVENT_ASSOCIATED:
- SysLog(NID_NET_WIFI, "Firing External Event (Type: WIFI_DIRECT_DEVICE_EVENT_ASSOCIATED) : %s",GetErrorMessage(r));
- {
- WifiDirectDeviceInfo* pGroupOwnerInfo = pArg->GetDeviceInfo();
- if (pGroupOwnerInfo == null)
- {
- pDeviceListener->OnWifiDirectAssociationCompleted(localDeviceId, WifiDirectDeviceInfo(), r);
- }
- else
- {
- pDeviceListener->OnWifiDirectAssociationCompleted(localDeviceId, *pGroupOwnerInfo, r);
- }
- }
- break;
- case WIFI_DIRECT_DEVICE_EVENT_CONNECTED:
- SysLog(NID_NET_WIFI, "Firing External Event (Type: WIFI_DIRECT_DEVICE_EVENT_CONNECTED) : %s",GetErrorMessage(r));
- {
- WifiDirectDeviceInfo* pDeviceInfo = pArg->GetDeviceInfo();
- if (pDeviceInfo == null)
- {
- pDeviceListener->OnWifiDirectConnected(localDeviceId, WifiDirectDeviceInfo(), r);
- }
- else
- {
- pDeviceListener->OnWifiDirectConnected(localDeviceId, *pDeviceInfo, r);
- }
- }
- break;
- case WIFI_DIRECT_DEVICE_EVENT_DISCONNECTED:
- {
- SysLog(NID_NET_WIFI, "Firing External Event (Type: WIFI_DIRECT_DEVICE_EVENT_DISCONNECTED) : %s",GetErrorMessage(r));
- String macAddress = pArg->GetMacAddress();
- pDeviceListener->OnWifiDirectDisconnected(localDeviceId, macAddress, r);
- }
- break;
- case WIFI_DIRECT_DEVICE_EVENT_AUTONOMOS_GROUP_CREATED:
- SysLog(NID_NET_WIFI, "Firing External Event (Type: WIFI_DIRECT_DEVICE_EVENT_AUTONOMOS_GROUP_CREATED) : %s",GetErrorMessage(r));
- pDeviceListener->OnWifiDirectAutonomousGroupCreated(localDeviceId, r);
- break;
- case WIFI_DIRECT_DEVICE_EVENT_GROUP_LEFT:
- SysLog(NID_NET_WIFI, "Firing External Event (Type: WIFI_DIRECT_DEVICE_EVENT_GROUP_LEFT) : %s",GetErrorMessage(r));
- pDeviceListener->OnWifiDirectGroupLeft(localDeviceId, r);
- break;
- default:
- SysLog(NID_NET_WIFI, "An undefined external WifiDirectDevice event occurs. (Type: %d)",eventType);
- SysAssert(false);
- break;
- }
- return;
-
-CATCH:
- pDeviceListener->OnWifiDirectScanCompletedN(localDeviceId, null, r);
-
+ const _WifiDirectEventArg* pArg = dynamic_cast< const _WifiDirectEventArg* >(&arg);
+ SysTryReturnVoidResult(NID_NET_WIFI, pArg != null, E_INVALID_ARG, "[E_INVALID_ARG] The argument is a null pointer.");
+
+ IWifiDirectDeviceListener* pDeviceListener = dynamic_cast< IWifiDirectDeviceListener* >(&listener);
+ SysTryReturnVoidResult(NID_NET_WIFI, pDeviceListener != null, E_INVALID_ARG,
+ "[E_INVALID_ARG] The result of a dynamic_cast operation is null for external Device listener.");
+
+ _WifiDirectEventType eventType = pArg->GetEventType();
+ WifiDirectDeviceId localDeviceId = pArg->GetDeviceId();
+ result r = pArg->GetError();
+
+ switch (eventType)
+ {
+ case WIFI_DIRECT_DEVICE_EVENT_ACTIVATED:
+ SysLog(NID_NET_WIFI, "Firing External Event (Type: WIFI_DIRECT_DEVICE_EVENT_ACTIVATED) : %s", GetErrorMessage(r));
+ pDeviceListener->OnWifiDirectDeviceActivated(localDeviceId, r);
+ break;
+
+ case WIFI_DIRECT_DEVICE_EVENT_DEACTIVATED:
+ SysLog(NID_NET_WIFI, "Firing External Event (Type: WIFI_DIRECT_DEVICE_EVENT_DEACTIVATED) : %s", GetErrorMessage(r));
+ pDeviceListener->OnWifiDirectDeviceDeactivated(localDeviceId, r);
+ break;
+
+ case WIFI_DIRECT_DEVICE_EVENT_GROUP_CREATED:
+ SysLog(NID_NET_WIFI, "Firing External Event (Type: WIFI_DIRECT_DEVICE_EVENT_GROUP_CREATED) : %s", GetErrorMessage(r));
+ {
+ WifiDirectGroupInfo* pGroupInfo = pArg->GetGroupInfo();
+ WifiDirectDeviceInfo* pGroupOwnerInfo = pArg->GetDeviceInfo();
+ WifiDirectGroupMember* pGroupMember = pArg->GetGroupMember();
+ pDeviceListener->OnWifiDirectGroupCreatedN(localDeviceId, *pGroupInfo, *pGroupOwnerInfo, pGroupMember, r);
+ }
+ break;
+ case WIFI_DIRECT_DEVICE_EVENT_SCAN_FOUND:
+ SysLog(NID_NET_WIFI, "Firing External Event (Type: WIFI_DIRECT_DEVICE_EVENT_SCAN_FOUND)");
+ {
+ WifiDirectDeviceInfo* pDeviceInfo = pArg->GetDeviceInfo();
+ pDeviceListener->OnWifiDirectRemoteDeviceFound(localDeviceId, *pDeviceInfo);
+ }
+ break;
+ case WIFI_DIRECT_DEVICE_EVENT_SCAN_COMPLETED:
+ SysLog(NID_NET_WIFI, "Firing External Event (Type: WIFI_DIRECT_DEVICE_EVENT_SCAN_COMPLETED) : %s", GetErrorMessage(r));
+ {
+ if (!IsFailed(r))
+ {
+ ArrayList* pSrcDeviceInfoList = dynamic_cast< ArrayList* >(pArg->GetDeviceInfoList());
+ if (pSrcDeviceInfoList == null)
+ {
+ SysLogException(NID_NET_WIFI, E_SYSTEM, "[E_SYSTEM] Failed to dynamic casting DeviceInfo list.");
+ pDeviceListener->OnWifiDirectScanCompletedN(localDeviceId, null, E_SYSTEM);
+ return;
+ }
+
+ ArrayList* pDescDeviceInfoList = new (std::nothrow) ArrayList();
+ if (pSrcDeviceInfoList == null)
+ {
+ SysLogException(NID_NET_WIFI, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation failed.");
+ pDeviceListener->OnWifiDirectScanCompletedN(localDeviceId, null, E_SYSTEM);
+ return;
+ }
+
+ result res = pDescDeviceInfoList->Construct(*pSrcDeviceInfoList);
+
+ if (IsFailed(res))
+ {
+ delete pDescDeviceInfoList;
+ pDescDeviceInfoList = null;
+
+ r = E_SYSTEM;
+ }
+
+ pDeviceListener->OnWifiDirectScanCompletedN(localDeviceId, pDescDeviceInfoList, r);
+ }
+ else
+ {
+ pDeviceListener->OnWifiDirectScanCompletedN(localDeviceId, null, r);
+ }
+ }
+ break;
+
+ case WIFI_DIRECT_DEVICE_EVENT_ASSOCIATED:
+ SysLog(NID_NET_WIFI, "Firing External Event (Type: WIFI_DIRECT_DEVICE_EVENT_ASSOCIATED) : %s", GetErrorMessage(r));
+ {
+ WifiDirectDeviceInfo* pGroupOwnerInfo = pArg->GetDeviceInfo();
+ if (pGroupOwnerInfo == null)
+ {
+ pDeviceListener->OnWifiDirectAssociationCompleted(localDeviceId, WifiDirectDeviceInfo(), r);
+ }
+ else
+ {
+ pDeviceListener->OnWifiDirectAssociationCompleted(localDeviceId, *pGroupOwnerInfo, r);
+ }
+ }
+ break;
+
+ case WIFI_DIRECT_DEVICE_EVENT_CONNECTED:
+ SysLog(NID_NET_WIFI, "Firing External Event (Type: WIFI_DIRECT_DEVICE_EVENT_CONNECTED) : %s", GetErrorMessage(r));
+ {
+ WifiDirectDeviceInfo* pDeviceInfo = pArg->GetDeviceInfo();
+ if (pDeviceInfo == null)
+ {
+ pDeviceListener->OnWifiDirectConnected(localDeviceId, WifiDirectDeviceInfo(), r);
+ }
+ else
+ {
+ pDeviceListener->OnWifiDirectConnected(localDeviceId, *pDeviceInfo, r);
+ }
+ }
+ break;
+
+ case WIFI_DIRECT_DEVICE_EVENT_DISCONNECTED:
+ {
+ SysLog(NID_NET_WIFI, "Firing External Event (Type: WIFI_DIRECT_DEVICE_EVENT_DISCONNECTED) : %s", GetErrorMessage(r));
+ String macAddress = pArg->GetMacAddress();
+ pDeviceListener->OnWifiDirectDisconnected(localDeviceId, macAddress, r);
+ }
+ break;
+
+ case WIFI_DIRECT_DEVICE_EVENT_AUTONOMOS_GROUP_CREATED:
+ SysLog(NID_NET_WIFI, "Firing External Event (Type: WIFI_DIRECT_DEVICE_EVENT_AUTONOMOS_GROUP_CREATED) : %s", GetErrorMessage(r));
+ pDeviceListener->OnWifiDirectAutonomousGroupCreated(localDeviceId, r);
+ break;
+
+ case WIFI_DIRECT_DEVICE_EVENT_GROUP_LEFT:
+ SysLog(NID_NET_WIFI, "Firing External Event (Type: WIFI_DIRECT_DEVICE_EVENT_GROUP_LEFT) : %s", GetErrorMessage(r));
+ pDeviceListener->OnWifiDirectGroupLeft(localDeviceId, r);
+ break;
+
+ default:
+ SysLog(NID_NET_WIFI, "An undefined external WifiDirectDevice event occurs. (Type: %d)", eventType);
+ SysAssert(false);
+ break;
+ }
}
} } } // Tizen::Net::Wifi