2 // Copyright (c) 2012 Samsung Electronics Co., Ltd.
4 // Licensed under the Flora License, Version 1.1 (the License);
5 // you may not use this file except in compliance with the License.
6 // You may obtain a copy of the License at
8 // http://floralicense.org/license/
10 // Unless required by applicable law or agreed to in writing, software
11 // distributed under the License is distributed on an AS IS BASIS,
12 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 // See the License for the specific language governing permissions and
14 // limitations under the License.
18 * @file StWifiDirectManager.cpp
19 * @brief This is the implementation file for StWifiDirectManager class.
23 #include "StWifiDirectManager.h"
24 #include "StIWifiDirectManagerEventListener.h"
26 using namespace Tizen::Base;
27 using namespace Tizen::Base::Collection;
28 using namespace Tizen::Net::Wifi;
30 #define WIFI_DIRECT_MANAGER_DEBUG_CODE
31 #define WIFI_DIRECT_MANAGER_BUG_REPORT
33 WifiDirectManager* WifiDirectManager::__pWifiDirectManagerInstance = null;
35 WifiDirectManager::WifiDirectManager(void)
36 : __pLocalDevice(null)
37 , __pAllGroupMemberListInfo(null)
38 , __pScanDeviceInfoList(null)
39 , __pBusyDeviceInfoList(null)
40 , __pEventListener(null)
41 , __lastEventToPerform(WIFI_DIRECT_MANAGER_EVENT_NONE)
45 WifiDirectManager::~WifiDirectManager(void)
47 InitAllGroupMemberListInfo();
48 InitScanDeviceInfoList();
49 InitBusyDeviceInfoList();
51 delete __pLocalDevice;
52 __pLocalDevice = null;
54 __pEventListener = null;
58 WifiDirectManager::GetInstance(void)
60 if (__pWifiDirectManagerInstance == null)
65 return __pWifiDirectManagerInstance;
69 WifiDirectManager::Construct(void)
73 __pLocalDevice = WifiDirectDeviceManager::GetWifiDirectDeviceN();
75 if ((__pLocalDevice == null)
76 || (IsFailed(GetLastResult())))
78 if (__pLocalDevice == null)
83 delete __pLocalDevice;
84 __pLocalDevice = null;
91 delete __pLocalDevice;
92 __pLocalDevice = null;
99 WifiDirectManager::CreateInstance(void)
101 __pWifiDirectManagerInstance = new (std::nothrow) WifiDirectManager();
102 result r = __pWifiDirectManagerInstance->Construct();
105 delete __pWifiDirectManagerInstance;
106 __pWifiDirectManagerInstance = null;
110 std::atexit(DestroyInstance);
114 WifiDirectManager::DestroyInstance(void)
116 delete __pWifiDirectManagerInstance;
117 __pWifiDirectManagerInstance = null;
121 WifiDirectManager::AddLinstener(void)
123 if (__pLocalDevice == null)
128 result r = __pLocalDevice->AddWifiDirectDeviceListener(*this);
134 r = __pLocalDevice->AddWifiDirectGroupClientListener(*this);
140 r = __pLocalDevice->AddWifiDirectGroupOwnerListener(*this);
150 WifiDirectManager::RemoveLinstener(void)
152 if (__pLocalDevice == null)
157 result r = __pLocalDevice->RemoveWifiDirectDeviceListener(*this);
163 r = __pLocalDevice->RemoveWifiDirectGroupClientListener(*this);
169 r = __pLocalDevice->RemoveWifiDirectGroupOwnerListener(*this);
178 Tizen::Base::Collection::IList*
179 WifiDirectManager::GetAllGroupMemberListInfoN(void)
181 IList* pGroupMemberListInfo = null;
183 if ((__pLocalDevice == null)
184 || (__pAllGroupMemberListInfo == null))
186 if (__pLocalDevice == null)
188 SetLastResult(E_FAILURE);
192 SetLastResult(E_INVALID_OPERATION);
194 return pGroupMemberListInfo;
197 pGroupMemberListInfo = __pAllGroupMemberListInfo->GetItemsN(0, __pAllGroupMemberListInfo->GetCount());
199 if (IsFailed(GetLastResult()))
201 delete pGroupMemberListInfo;
202 pGroupMemberListInfo = null;
203 return pGroupMemberListInfo;
206 return pGroupMemberListInfo;
209 Tizen::Net::Wifi::WifiDirectDeviceInfo*
210 WifiDirectManager::GetGroupMemberListInfoAt(int index)
212 WifiDirectDeviceInfo* pGroupMemberListInfo = null;
214 if ((__pLocalDevice == null)
215 || (__pAllGroupMemberListInfo == null))
217 if (__pLocalDevice == null)
219 SetLastResult(E_FAILURE);
223 SetLastResult(E_INVALID_OPERATION);
225 return pGroupMemberListInfo;
228 int groupMemberListInfoCount = __pAllGroupMemberListInfo->GetCount();
229 if (groupMemberListInfoCount != 0)
231 pGroupMemberListInfo = static_cast<WifiDirectDeviceInfo*>(__pAllGroupMemberListInfo->GetAt(index));
233 if (IsFailed(GetLastResult()))
235 pGroupMemberListInfo = null;
240 SetLastResult(E_OBJ_NOT_FOUND);
243 return pGroupMemberListInfo;
246 Tizen::Base::Collection::IList*
247 WifiDirectManager::GetScanDeviceListInfoN(void)
249 IList* pScanDeviceInfoList = null;
251 if ((__pLocalDevice == null)
252 || (__pScanDeviceInfoList == null))
254 if (__pLocalDevice == null)
256 SetLastResult(E_FAILURE);
260 SetLastResult(E_INVALID_OPERATION);
262 return pScanDeviceInfoList;
265 pScanDeviceInfoList = __pScanDeviceInfoList->GetItemsN(0, __pScanDeviceInfoList->GetCount());
267 if (IsFailed(GetLastResult()))
269 delete pScanDeviceInfoList;
270 pScanDeviceInfoList = null;
271 return pScanDeviceInfoList;
274 return pScanDeviceInfoList;
277 Tizen::Net::Wifi::WifiDirectDeviceInfo*
278 WifiDirectManager::GetScanDeviceListInfoAt(int index)
280 WifiDirectDeviceInfo* pScanDeviceInfo = null;
282 if ((__pLocalDevice == null)
283 || (__pScanDeviceInfoList == null))
285 if (__pLocalDevice == null)
287 SetLastResult(E_FAILURE);
291 SetLastResult(E_INVALID_OPERATION);
293 return pScanDeviceInfo;
296 int scanDeviceListCount = __pScanDeviceInfoList->GetCount();
297 if (scanDeviceListCount != 0)
299 pScanDeviceInfo = static_cast<WifiDirectDeviceInfo*>(__pScanDeviceInfoList->GetAt(index));
301 if (IsFailed(GetLastResult()))
303 pScanDeviceInfo = null;
308 SetLastResult(E_OBJ_NOT_FOUND);
311 return pScanDeviceInfo;
315 WifiDirectManager::GetScanDeviceListInfoCount(void)
317 int scanDeviceListTotalCount = 0;
319 if ((__pLocalDevice == null)
320 || (__pScanDeviceInfoList == null))
322 if (__pLocalDevice == null)
324 SetLastResult(E_FAILURE);
328 SetLastResult(E_INVALID_OPERATION);
330 return scanDeviceListTotalCount;
333 scanDeviceListTotalCount = __pScanDeviceInfoList->GetCount();
334 return scanDeviceListTotalCount;
337 Tizen::Net::Wifi::WifiDirectDeviceInfo*
338 WifiDirectManager::GetBusyDeviceListInfoAt(int index)
340 WifiDirectDeviceInfo* pBusyDeviceInfo = null;
342 if ((__pLocalDevice == null)
343 || (__pScanDeviceInfoList == null))
345 if (__pLocalDevice == null)
347 SetLastResult(E_FAILURE);
351 SetLastResult(E_INVALID_OPERATION);
353 return pBusyDeviceInfo;
356 int busyDeviceListCount = __pBusyDeviceInfoList->GetCount();
357 if (busyDeviceListCount != 0)
359 pBusyDeviceInfo = static_cast<WifiDirectDeviceInfo*>(__pBusyDeviceInfoList->GetAt(index));
361 if (IsFailed(GetLastResult()))
363 pBusyDeviceInfo = null;
368 SetLastResult(E_OBJ_NOT_FOUND);
371 return pBusyDeviceInfo;
375 WifiDirectManager::GetBusyDeviceListInfoCount(void)
377 int busyDeviceListTotalCount = 0;
379 if ((__pLocalDevice == null)
380 || (__pBusyDeviceInfoList == null))
382 if (__pLocalDevice == null)
384 SetLastResult(E_FAILURE);
388 SetLastResult(E_INVALID_OPERATION);
390 return busyDeviceListTotalCount;
393 busyDeviceListTotalCount = __pBusyDeviceInfoList->GetCount();
394 return busyDeviceListTotalCount;
398 WifiDirectManager::Activate(void)
400 result r = E_INVALID_OPERATION;
402 if (__pLocalDevice == null)
409 r = __pLocalDevice->Activate();
412 SetLastEventToPerform(WIFI_DIRECT_MANAGER_EVENT_DEVICE_ACTIVATING);
420 WifiDirectManager::Deactivate(void)
422 result r = E_INVALID_OPERATION;
424 if (__pLocalDevice == null)
431 r = __pLocalDevice->Deactivate();
434 SetLastEventToPerform(WIFI_DIRECT_MANAGER_EVENT_DEVICE_DEACTIVATING);
442 WifiDirectManager::IsActivated(void)
444 bool isActivated = false;
446 if (__pLocalDevice == null)
448 SetLastResult(E_FAILURE);
452 isActivated = __pLocalDevice->IsActivated();
457 WifiDirectManager::IsScanInProgress(void)
459 if (__lastEventToPerform == WIFI_DIRECT_MANAGER_EVENT_SCANNING)
466 WifiDirectManagerEvent
467 WifiDirectManager::GetLastEventToPerform(void)
469 return __lastEventToPerform;
473 WifiDirectManager::SetLastEventToPerform(WifiDirectManagerEvent lsatEvent)
475 __lastEventToPerform = lsatEvent;
478 Tizen::Net::Wifi::WifiWpsConfigurationMode
479 WifiDirectManager::GetRemoteWpsConfigurationMode(Tizen::Net::Wifi::WifiDirectDevice* pRemoteDevice)
481 WifiWpsConfigurationMode getWpsMode = WIFI_WPS_CONFIG_MODE_NONE;
483 if (pRemoteDevice == null)
485 SetLastResult(E_FAILURE);
486 return WIFI_WPS_CONFIG_MODE_NONE;
489 getWpsMode = pRemoteDevice->GetWpsConfigurationModePreference();
491 if (IsFailed(GetLastResult()))
493 return WIFI_WPS_CONFIG_MODE_NONE;
499 WifiDirectGroupMemberType
500 WifiDirectManager::GetLocalDeviceGroupMemberType(void)
502 WifiDirectGroupMemberType groupMemberType = WIFI_DIRECT_GROUP_MEMBER_TYPE_NONE;
504 if (__pLocalDevice == null)
506 SetLastResult(E_FAILURE);
507 return WIFI_DIRECT_GROUP_MEMBER_TYPE_NONE;
510 WifiDirectDeviceInfo* pLocalDeviceInfo = __pLocalDevice->GetLocalDeviceInfoN();
512 #ifdef WIFI_DIRECT_MANAGER_DEBUG_CODE
513 if (pLocalDeviceInfo == null)
515 return WIFI_DIRECT_GROUP_MEMBER_TYPE_NONE;
518 if ((pLocalDeviceInfo == null)
519 || (IsFailed(GetLastResult())))
521 if (!IsFailed(GetLastResult()))
523 SetLastResult(E_SYSTEM);
526 delete pLocalDeviceInfo;
527 return WIFI_DIRECT_GROUP_MEMBER_TYPE_NONE;
532 #ifdef WIFI_DIRECT_MANAGER_BUG_REPORT
533 AppLogDebug("WIFI_DIRECT_MANAGER_BUG_REPORT [GetLocalDeviceGroupMemberType : %d][%s]", pLocalDeviceInfo->GetGroupMemberType(), GetErrorMessage(GetLastResult()));
535 groupMemberType = pLocalDeviceInfo->GetGroupMemberType();
536 delete pLocalDeviceInfo;
539 return groupMemberType;
543 WifiDirectManager::ConnectTo(const Tizen::Net::Wifi::WifiDirectDeviceInfo& pRemoteDeviceInfo)
545 result r = E_FAILURE;
547 if (__pLocalDevice == null)
552 if (GetLocalDeviceGroupMemberType() != WIFI_DIRECT_GROUP_MEMBER_TYPE_NONE)
554 return r = E_INVALID_CONNECTION;
557 if (pRemoteDeviceInfo.GetGroupMemberType() == WIFI_DIRECT_GROUP_MEMBER_TYPE_CLIENT)
559 return r = E_INVALID_ARG;
562 if (pRemoteDeviceInfo.GetGroupMemberType() == WIFI_DIRECT_GROUP_MEMBER_TYPE_OWNER)
564 r = __pLocalDevice->Associate(pRemoteDeviceInfo);
567 SetLastEventToPerform(WIFI_DIRECT_MANAGER_EVENT_ASSOCIATING);
572 WifiDirectGroupInfo* pSettingGroupInfo = (WifiDirectGroupInfo*)__pLocalDevice->GetGroupSettingInfoN();
574 if ((pSettingGroupInfo == null)
575 || (IsFailed(GetLastResult())))
577 if (!IsFailed(GetLastResult()))
579 SetLastResult(E_FAILURE);
582 delete pSettingGroupInfo;
583 return GetLastResult();
586 if (pSettingGroupInfo->GetAutonomousGroupOwnerMode() == true)
588 r = __pLocalDevice->CreateGroup(pSettingGroupInfo);
592 r = __pLocalDevice->CreateGroup(pSettingGroupInfo, &pRemoteDeviceInfo);
595 delete pSettingGroupInfo;
599 SetLastEventToPerform(WIFI_DIRECT_MANAGER_EVENT_GROUP_CREATING);
607 WifiDirectManager::Associate(const Tizen::Net::Wifi::WifiDirectDeviceInfo& pRemoteDeviceInfo)
609 int localDeviceGroupMemberType = GetLocalDeviceGroupMemberType();
611 if ((localDeviceGroupMemberType != WIFI_DIRECT_GROUP_MEMBER_TYPE_NONE)
613 || (IsFailed(GetLastResult())))
615 return E_INVALID_CONNECTION;
618 if (pRemoteDeviceInfo.GetGroupMemberType() == WIFI_DIRECT_GROUP_MEMBER_TYPE_CLIENT)
620 return E_INVALID_CONNECTION;
623 result r = __pLocalDevice->Associate(pRemoteDeviceInfo);
626 SetLastEventToPerform(WIFI_DIRECT_MANAGER_EVENT_ASSOCIATING);
633 WifiDirectManager::DisconnectAll(void)
635 result r = E_FAILURE;
637 if (GetLocalDeviceGroupMemberType() == WIFI_DIRECT_GROUP_MEMBER_TYPE_NONE)
639 return E_INVALID_CONNECTION;
642 WifiDirectGroupMember* pGroupMember = __pLocalDevice->GetWifiDirectMemberN();
644 if (pGroupMember == null)
646 SetLastResult(E_FAILURE);
650 if (pGroupMember->GetGroupMemberType() == WIFI_DIRECT_GROUP_MEMBER_TYPE_OWNER)
652 WifiDirectGroupOwner* pGroupOwner = dynamic_cast<WifiDirectGroupOwner*>(pGroupMember);
653 if (pGroupOwner != null)
655 r = pGroupOwner->DestroyGroup();
658 else if (pGroupMember->GetGroupMemberType() == WIFI_DIRECT_GROUP_MEMBER_TYPE_CLIENT)
660 WifiDirectGroupClient* pGroupClient = dynamic_cast<WifiDirectGroupClient*>(pGroupMember);
661 if (pGroupClient != null)
663 r = pGroupClient->Disassociate();
668 r = E_INVALID_CONNECTION;
676 WifiDirectManager::GetLocalDeviceName(void)
678 String localDeviceName;
680 if (__pLocalDevice == null)
682 SetLastResult(E_FAILURE);
683 return localDeviceName;
686 WifiDirectDeviceInfo* pLocalDeviceInfo =__pLocalDevice->GetLocalDeviceInfoN();
687 if (pLocalDeviceInfo == null)
689 AppLogDebug("__pLocalDevice->GetLocalDeviceInfoN() is null");
690 SetLastResult(E_FAILURE);
691 return localDeviceName;
694 localDeviceName = pLocalDeviceInfo->GetDeviceName();
695 delete pLocalDeviceInfo;
697 return localDeviceName;
701 WifiDirectManager::CancelConnect(void)
703 if (__pLocalDevice == null)
708 result r = __pLocalDevice->CancelGroupCreation();
713 WifiDirectManager::RemoteDeviceScan(void)
715 result r = E_FAILURE;
717 if (__pLocalDevice == null)
722 InitScanDeviceInfoList();
723 InitBusyDeviceInfoList();
725 r = __pLocalDevice->Scan();
728 SetLastEventToPerform(WIFI_DIRECT_MANAGER_EVENT_SCANNING);
735 WifiDirectManager::CancelRemoteDeviceScan(void)
737 result r = E_FAILURE;
739 if (__pLocalDevice != null)
741 r = __pLocalDevice->CancelScan();
748 WifiDirectManager::SendToEventListener(WifiDirectManagerEvent requestEvent, result r)
750 if (__pEventListener != null)
752 SetLastEventToPerform(requestEvent);
753 __pEventListener->OnWifiDirectManagerEventCompleted(requestEvent, r);
757 SetLastResult(E_FAILURE);
762 WifiDirectManager::SetIWifiDirectManagerEventListener(const IWifiDirectManagerEventListener& pEventListener)
764 __pEventListener = &const_cast<IWifiDirectManagerEventListener&>(pEventListener);
768 WifiDirectManager::RemoveIWifiDirectManagerEventListener(void)
770 __pEventListener = null;
774 WifiDirectManager::QueryAllGroupMemberInfoList(void)
776 if (__pLocalDevice == null)
781 if ((GetLocalDeviceGroupMemberType() == WIFI_DIRECT_GROUP_MEMBER_TYPE_NONE)
782 || (IsActivated() == false))
784 return E_INVALID_CONNECTION;
787 WifiDirectGroupMember* pLocalGroupMember = __pLocalDevice->GetWifiDirectMemberN();
789 if ((pLocalGroupMember == null)
790 || (IsFailed(GetLastResult())))
792 if (!IsFailed(GetLastResult()))
794 SetLastResult(E_FAILURE);
797 delete pLocalGroupMember;
798 return GetLastResult();
801 result r = E_SUCCESS;
802 if (pLocalGroupMember->GetGroupMemberType() == WIFI_DIRECT_GROUP_MEMBER_TYPE_OWNER)
804 r = SetAllGroupMemberListInfoByOwner(pLocalGroupMember);
805 SendToEventListener(WIFI_DIRECT_MANAGER_EVENT_REQUESTED_ALL_GROUP_MEMBER_INFO_RECEIVED_N, r);
807 else if (pLocalGroupMember->GetGroupMemberType() == WIFI_DIRECT_GROUP_MEMBER_TYPE_CLIENT)
809 WifiDirectGroupClient* pGroupClient = static_cast<WifiDirectGroupClient*>(pLocalGroupMember);
810 #ifdef WIFI_DIRECT_MANAGER_DEBUG_CODE
811 r = pGroupClient->RequestAllGroupMemberInfo();
817 AppLogDebug("groupMemberType : WIFI_DIRECT_GROUP_MEMBER_TYPE_CLIENT, ErrorMessage : %s]", GetErrorMessage(r));
821 delete pLocalGroupMember;
826 WifiDirectManager::GetGroupMemberInfoListCount(void)
828 int groupMemberTotalCount = 0;
830 if ((__pLocalDevice == null)
831 || (__pAllGroupMemberListInfo == null))
833 if (__pLocalDevice == null)
835 SetLastResult(E_FAILURE);
839 SetLastResult(E_INVALID_OPERATION);
841 return groupMemberTotalCount;
844 groupMemberTotalCount = __pAllGroupMemberListInfo->GetCount();
846 return groupMemberTotalCount;
850 WifiDirectManager::InitAllGroupMemberListInfo(void)
852 if (__pAllGroupMemberListInfo != null)
854 __pAllGroupMemberListInfo->RemoveAll();
855 delete __pAllGroupMemberListInfo;
856 __pAllGroupMemberListInfo = null;
861 WifiDirectManager::InitScanDeviceInfoList(void)
863 if (__pScanDeviceInfoList != null)
865 delete __pScanDeviceInfoList;
866 __pScanDeviceInfoList = null;
871 WifiDirectManager::InitBusyDeviceInfoList(void)
873 if (__pBusyDeviceInfoList != null)
875 delete __pBusyDeviceInfoList;
876 __pBusyDeviceInfoList = null;
881 WifiDirectManager::DivideDeviceInfoListToBusyAndScan(Tizen::Base::Collection::IList* pDeviceInfoList)
883 result r = E_SUCCESS;
884 WifiDirectDeviceInfo* pDeviceInfo = null;
885 ArrayList* pScanDeviceInfoList = null;
886 ArrayList* pBusyDeviceInfoList = null;
888 InitScanDeviceInfoList();
889 InitBusyDeviceInfoList();
891 if (pDeviceInfoList == null)
893 return E_INVALID_ARG;
896 pScanDeviceInfoList = new (std::nothrow) ArrayList(SingleObjectDeleter);
897 r = pScanDeviceInfoList->Construct();
900 AppLogDebug("pScanDeviceInfoList->Construct() failed(%s)",GetErrorMessage(r));
901 delete pScanDeviceInfoList;
905 pBusyDeviceInfoList = new (std::nothrow) ArrayList(SingleObjectDeleter);
906 r = pBusyDeviceInfoList->Construct();
909 AppLogDebug("pBusyDeviceInfoList->Construct() failed(%s)",GetErrorMessage(r));
910 delete pBusyDeviceInfoList;
911 delete pScanDeviceInfoList;
912 pBusyDeviceInfoList = null;
913 pScanDeviceInfoList = null;
917 int deviceInfoListCount = pDeviceInfoList->GetCount();
918 if (deviceInfoListCount == 0)
920 delete pBusyDeviceInfoList;
921 delete pScanDeviceInfoList;
922 pBusyDeviceInfoList = null;
923 pScanDeviceInfoList = null;
927 for (int loopCount = 0; loopCount < deviceInfoListCount; loopCount++)
929 pDeviceInfo = static_cast<WifiDirectDeviceInfo*>(pDeviceInfoList->GetAt(loopCount));
930 if (IsFailed(GetLastResult()))
932 AppLogDebug("pDeviceInfoList->GetAt failed(%s)",GetErrorMessage(GetLastResult()));
936 switch (pDeviceInfo->GetGroupMemberType())
938 case WIFI_DIRECT_GROUP_MEMBER_TYPE_NONE:
940 case WIFI_DIRECT_GROUP_MEMBER_TYPE_OWNER:
942 pScanDeviceInfoList->Add(new (std::nothrow) WifiDirectDeviceInfo(*pDeviceInfo));
947 case WIFI_DIRECT_GROUP_MEMBER_TYPE_CLIENT:
949 pBusyDeviceInfoList->Add(new (std::nothrow) WifiDirectDeviceInfo(*pDeviceInfo));
956 AppLogDebug("unknown GroupMemberType [MemberType : %d , DeviceName : %ls]", pDeviceInfo->GetGroupMemberType(), pDeviceInfo->GetDeviceName().GetPointer());
964 __pScanDeviceInfoList = pScanDeviceInfoList;
965 __pBusyDeviceInfoList = pBusyDeviceInfoList;
972 WifiDirectManager::RemoveLocalGroupMemberFromAllGroupMemberListInfo(Tizen::Base::Collection::IList* pAllGroupMemberListInfo)
974 if (pAllGroupMemberListInfo == null)
979 WifiDirectDeviceInfo* pDeviceInfo = static_cast<WifiDirectDeviceInfo*>(pAllGroupMemberListInfo->GetAt(0));
980 result r = E_FAILURE;
981 if ((pDeviceInfo != null)
982 || (!IsFailed(GetLastResult())))
984 if (pDeviceInfo->GetDeviceName().Equals(GetLocalDeviceName(), false))
986 pAllGroupMemberListInfo->RemoveAt(0, true);
995 WifiDirectManager::OnWifiDirectAssociationCompleted(WifiDirectDeviceId localDeviceId, const WifiDirectDeviceInfo& wifiDirectGroupOwnerDeviceInfo, result r)
999 InitAllGroupMemberListInfo();
1000 InitScanDeviceInfoList();
1001 InitBusyDeviceInfoList();
1002 r = AddGroupMemberDeviceInfo(wifiDirectGroupOwnerDeviceInfo);
1004 SendToEventListener(WIFI_DIRECT_MANAGER_EVENT_ASSOCIATION_COMPLETED, r);
1008 WifiDirectManager::OnWifiDirectDeviceActivated(WifiDirectDeviceId localDeviceId, result r)
1012 InitScanDeviceInfoList();
1013 InitBusyDeviceInfoList();
1016 SendToEventListener(WIFI_DIRECT_MANAGER_EVENT_DEVICE_ACTIVATED, r);
1020 WifiDirectManager::OnWifiDirectDeviceDeactivated(WifiDirectDeviceId localDeviceId, result r)
1024 InitAllGroupMemberListInfo();
1025 InitScanDeviceInfoList();
1026 InitBusyDeviceInfoList();
1029 SendToEventListener(WIFI_DIRECT_MANAGER_EVENT_DEVICE_DEACTIVATED, r);
1033 WifiDirectManager::OnWifiDirectGroupCreatedN(WifiDirectDeviceId localDeviceId, const WifiDirectGroupInfo& wifiDirectGroupInfo,
1034 const WifiDirectDeviceInfo& wifiDirectGroupOwnerDeviceInfo, WifiDirectGroupMember* pWifiDirectMember, result r)
1038 InitAllGroupMemberListInfo();
1039 InitScanDeviceInfoList();
1040 InitBusyDeviceInfoList();
1042 if (pWifiDirectMember->GetGroupMemberType() == WIFI_DIRECT_GROUP_MEMBER_TYPE_OWNER)
1044 r = SetAllGroupMemberListInfoByOwner(pWifiDirectMember);
1048 r = AddGroupMemberDeviceInfo(wifiDirectGroupOwnerDeviceInfo);
1049 #ifdef WIFI_DIRECT_MANAGER_BUG_REPORT
1050 AppLogDebug("WIFI_DIRECT_MANAGER_BUG_REPORT LocalDeviceGroupMemberType [%d] GroupOwner DeviceName [%ls]", GetLocalDeviceGroupMemberType(), wifiDirectGroupOwnerDeviceInfo.GetDeviceName().GetPointer());
1054 delete pWifiDirectMember;
1056 SendToEventListener(WIFI_DIRECT_MANAGER_EVENT_GROUP_CREATED_N, r);
1060 WifiDirectManager::SetAllGroupMemberListInfoByOwner(Tizen::Net::Wifi::WifiDirectGroupMember* groupMember)
1062 result r = E_SUCCESS;
1064 if (groupMember->GetGroupMemberType() == WIFI_DIRECT_GROUP_MEMBER_TYPE_OWNER)
1066 if (__pAllGroupMemberListInfo != null)
1068 InitAllGroupMemberListInfo();
1071 WifiDirectGroupOwner* pGroupOwner = static_cast<WifiDirectGroupOwner*>(groupMember);
1073 __pAllGroupMemberListInfo = pGroupOwner->GetAllGroupMemberInfoListN();
1075 if ((__pAllGroupMemberListInfo == null)
1076 || (IsFailed(GetLastResult())))
1078 if (!IsFailed(GetLastResult()))
1083 InitAllGroupMemberListInfo();
1087 RemoveLocalGroupMemberFromAllGroupMemberListInfo(__pAllGroupMemberListInfo);
1092 AppLogDebug("groupMeberType : %d][%s]", groupMember->GetGroupMemberType());
1100 WifiDirectManager::AddGroupMemberDeviceInfo(const Tizen::Net::Wifi::WifiDirectDeviceInfo& deviceInfo)
1102 result r = E_SUCCESS;
1103 ArrayList* pDeviceListInfo = null;
1105 if (__pAllGroupMemberListInfo != null)
1107 __pAllGroupMemberListInfo->Add(*(new (std::nothrow) WifiDirectDeviceInfo(deviceInfo)));
1111 pDeviceListInfo = new (std::nothrow) ArrayList();
1112 r = pDeviceListInfo->Construct();
1114 if ((pDeviceListInfo == null)
1117 delete pDeviceListInfo;
1123 pDeviceListInfo->Add(new (std::nothrow) WifiDirectDeviceInfo(deviceInfo));
1124 __pAllGroupMemberListInfo = pDeviceListInfo;
1131 WifiDirectManager::OnWifiDirectScanCompletedN(Tizen::Net::Wifi::WifiDirectDeviceId localDeviceId,
1132 Tizen::Base::Collection::IList* pWifiDirectDeviceInfoList, result r)
1135 || (r == E_OPERATION_CANCELED))
1137 InitScanDeviceInfoList();
1138 InitBusyDeviceInfoList();
1139 DivideDeviceInfoListToBusyAndScan(pWifiDirectDeviceInfoList);
1141 if (pWifiDirectDeviceInfoList != null)
1143 pWifiDirectDeviceInfoList->RemoveAll();
1144 delete pWifiDirectDeviceInfoList;
1150 InitScanDeviceInfoList();
1151 InitBusyDeviceInfoList();
1154 SendToEventListener(WIFI_DIRECT_MANAGER_EVENT_SCAN_COMPLETED_N, r);
1158 WifiDirectManager::OnWifiDirectAssociationTerminated(WifiDirectDeviceId localDeviceId, WifiDirectAssociationTerminationReason reason, result r)
1160 InitAllGroupMemberListInfo();
1161 InitScanDeviceInfoList();
1162 InitBusyDeviceInfoList();
1164 SendToEventListener(WIFI_DIRECT_MANAGER_EVENT_ASSOCITION_TERMINATED, r);
1168 WifiDirectManager::OnWifiDirectAllGroupMemberInfoReceivedN(WifiDirectDeviceId localDeviceId,
1169 Tizen::Base::Collection::IList* pWifiDirectDeviceInfoList, result r)
1173 InitAllGroupMemberListInfo();
1174 __pAllGroupMemberListInfo = pWifiDirectDeviceInfoList;
1175 RemoveLocalGroupMemberFromAllGroupMemberListInfo(__pAllGroupMemberListInfo);
1178 SendToEventListener(WIFI_DIRECT_MANAGER_EVENT_ALL_GROUP_MEMBER_INFO_RECEIVED_N, r);
1182 WifiDirectManager::OnWifiDirectGroupOwnerInfoReceived(Tizen::Net::Wifi::WifiDirectDeviceId localDeviceId, const WifiDirectDeviceInfo& wifiDirectGroupOwnerDeviceInfo, result r)
1184 SendToEventListener(WIFI_DIRECT_MANAGER_EVENT_GROUP_OWNER_INFO_RECEIVED, r);
1188 WifiDirectManager::OnWifiDirectClientAssociated(WifiDirectDeviceId localDeviceId, const WifiDirectDeviceInfo& wifiDirectClientInfo)
1190 result r = AddGroupMemberDeviceInfo(wifiDirectClientInfo);
1191 SendToEventListener(WIFI_DIRECT_MANAGER_EVENT_CLIENT_ASSOCIATED, r);
1195 WifiDirectManager::OnWifiDirectClientDisassociated(WifiDirectDeviceId localDeviceId, const WifiDirectDeviceInfo& wifiDirectClientInfo, WifiDirectAssociationTerminationReason reason)
1197 result r = E_SUCCESS;
1198 if (__pAllGroupMemberListInfo != null)
1200 WifiDirectDeviceInfo* pDeviceInfo = null;
1201 int pAllGroupMemberListInfoCount = __pAllGroupMemberListInfo->GetCount();
1202 for (int loopCount = 0; loopCount < pAllGroupMemberListInfoCount; loopCount++)
1204 pDeviceInfo = static_cast<WifiDirectDeviceInfo*>(__pAllGroupMemberListInfo->GetAt(loopCount));
1205 if ((pDeviceInfo == null)
1206 || (IsFailed(GetLastResult())))
1212 if (pDeviceInfo->Equals(wifiDirectClientInfo) == true)
1214 __pAllGroupMemberListInfo->RemoveAt(loopCount, true);
1220 SendToEventListener(WIFI_DIRECT_MANAGER_EVENT_CLIENT_DISASSOCIATED, r);
1224 WifiDirectManager::OnWifiDirectGroupDestroyed(WifiDirectDeviceId localDeviceId, result r)
1226 InitAllGroupMemberListInfo();
1227 InitScanDeviceInfoList();
1228 InitBusyDeviceInfoList();
1230 SendToEventListener(WIFI_DIRECT_MAMAGER_EVENT_GROUP_DESTRORYED, r);
1234 WifiDirectManager::OnWifiDirectGroupMemberInfoServiceStarted(Tizen::Net::Wifi::WifiDirectDeviceId localDeviceId, const Tizen::Net::NetConnection* pNetConnection, result r)
1236 SendToEventListener(WIFI_DIRECT_MANAGER_EVENT_GROUP_MEMBER_INFO_SERVICE_STARTED, r);
1240 WifiDirectManager::OnWifiDirectGroupMemberInfoServiceStopped(Tizen::Net::Wifi::WifiDirectDeviceId localDeviceId, result r)
1242 SendToEventListener(WIFI_DIRECT_MANAGER_EVENT_GROUP_MEMBER_INFO_SERVICE_STOPPED, r);