Applied latest source code
[apps/native/preloaded/Settings.git] / inc / StWifiDirectManager.h
1 //
2 // Copyright (c) 2012 Samsung Electronics Co., Ltd.
3 //
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
7 //
8 //     http://floralicense.org/license/
9 //
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.
15 //
16
17 /**
18  * @file                WifiDirectManager.h
19  * @brief               This is the header file for WifiDirectManager class.
20  */
21
22 #ifndef _ST_WIFI_DIRECT_MANAGER_H_
23 #define _ST_WIFI_DIRECT_MANAGER_H_
24
25 #include <FNet.h>
26 #include "StIWifiDirectManagerEventListener.h"
27
28 class WifiDirectManager
29         : public Tizen::Net::Wifi::IWifiDirectDeviceListener
30         , public Tizen::Net::Wifi::IWifiDirectGroupClientListener
31         , public Tizen::Net::Wifi::IWifiDirectGroupOwnerListener
32 {
33 public:
34         virtual ~WifiDirectManager(void);
35
36         result Activate(void);
37         result Deactivate(void);
38         bool IsActivated(void);
39         bool IsScanInProgress(void);
40
41         result Associate(const Tizen::Net::Wifi::WifiDirectDeviceInfo& pRemoteDeviceInfo);
42         result ConnectTo(const Tizen::Net::Wifi::WifiDirectDeviceInfo& pRemoteDeviceInfo);
43         result DisconnectAll(void);
44         result CancelConnect(void);
45         result RemoteDeviceScan(void);
46         result CancelRemoteDeviceScan(void);
47
48         Tizen::Base::String GetLocalDeviceName(void);
49         Tizen::Net::Wifi::WifiDirectGroupMemberType GetLocalDeviceGroupMemberType(void);
50         Tizen::Net::Wifi::WifiWpsConfigurationMode GetRemoteWpsConfigurationMode(Tizen::Net::Wifi::WifiDirectDevice* pRemoteDevice);
51
52         Tizen::Base::Collection::IList* GetScanDeviceListInfoN(void);
53         Tizen::Net::Wifi::WifiDirectDeviceInfo* GetScanDeviceListInfoAt(int index);
54         int GetScanDeviceListInfoCount(void);
55
56         Tizen::Base::Collection::IList* GetBusyDeviceListInfoN(void);
57         Tizen::Net::Wifi::WifiDirectDeviceInfo* GetBusyDeviceListInfoAt(int index);
58         int GetBusyDeviceListInfoCount(void);
59
60         result QueryAllGroupMemberInfoList(void);
61         Tizen::Base::Collection::IList* GetAllGroupMemberListInfoN(void);
62         Tizen::Net::Wifi::WifiDirectDeviceInfo* GetGroupMemberListInfoAt(int index);
63         int GetGroupMemberInfoListCount(void);
64
65         void SetIWifiDirectManagerEventListener(const IWifiDirectManagerEventListener& pEventListener);
66         void RemoveIWifiDirectManagerEventListener(void);
67         WifiDirectManagerEvent GetLastEventToPerform(void);
68
69         static WifiDirectManager* GetInstance();
70
71 private:
72         WifiDirectManager(void);
73
74         result AddLinstener(void);
75         result Construct(void);
76         result RemoveLinstener(void);
77
78         void InitAllGroupMemberListInfo(void);
79         void InitScanDeviceInfoList(void);
80         void InitBusyDeviceInfoList(void);
81
82         result AddGroupMemberDeviceInfo(const Tizen::Net::Wifi::WifiDirectDeviceInfo& deviceInfo);
83         result SetAllGroupMemberListInfoByOwner(Tizen::Net::Wifi::WifiDirectGroupMember* groupMember);
84
85         result DivideDeviceInfoListToBusyAndScan(Tizen::Base::Collection::IList* pDeviceInfoList);
86         result RemoveLocalGroupMemberFromAllGroupMemberListInfo(Tizen::Base::Collection::IList* pAllGroupMemberListInfo);
87         void SetLastEventToPerform(WifiDirectManagerEvent lsatEvent);
88         void SendToEventListener(WifiDirectManagerEvent requestEvent, result r);
89
90         static void CreateInstance(void);
91         static void DestroyInstance(void);
92
93         virtual void OnWifiDirectDeviceActivated(Tizen::Net::Wifi::WifiDirectDeviceId localDeviceId, result r);
94         virtual void OnWifiDirectDeviceDeactivated(Tizen::Net::Wifi::WifiDirectDeviceId localDeviceId, result r);
95         virtual void OnWifiDirectGroupCreatedN(Tizen::Net::Wifi::WifiDirectDeviceId localDeviceId,
96                                                                                         const Tizen::Net::Wifi::WifiDirectGroupInfo& wifiDirectGroupInfo, const Tizen::Net::Wifi::WifiDirectDeviceInfo& wifiDirectGroupOwnerDeviceInfo,
97                                                                                         Tizen::Net::Wifi::WifiDirectGroupMember* pWifiDirectMember, result r);
98         virtual void OnWifiDirectScanCompletedN(Tizen::Net::Wifi::WifiDirectDeviceId localDeviceId, Tizen::Base::Collection::IList* pWifiDirectDeviceInfoList, result r);
99         virtual void OnWifiDirectAssociationCompleted(Tizen::Net::Wifi::WifiDirectDeviceId localDeviceId,
100                                                                                                         const Tizen::Net::Wifi::WifiDirectDeviceInfo& wifiDirectGroupOwnerDeviceInfo, result r);
101         virtual void OnWifiDirectAssociationTerminated(Tizen::Net::Wifi::WifiDirectDeviceId localDeviceId,
102                                                                                         Tizen::Net::Wifi::WifiDirectAssociationTerminationReason reason, result r);
103         virtual void OnWifiDirectGroupOwnerInfoReceived(Tizen::Net::Wifi::WifiDirectDeviceId localDeviceId,
104                                                                                         const Tizen::Net::Wifi::WifiDirectDeviceInfo& wifiDirectGroupOwnerDeviceInfo, result r);
105         virtual void OnWifiDirectAllGroupMemberInfoReceivedN(Tizen::Net::Wifi::WifiDirectDeviceId localDeviceId,
106                                                                                         Tizen::Base::Collection::IList* pWifiDirectDeviceInfoList, result r);
107         virtual void OnWifiDirectClientAssociated(Tizen::Net::Wifi::WifiDirectDeviceId localDeviceId,
108                                                                                                 const Tizen::Net::Wifi::WifiDirectDeviceInfo& wifiDirectClientInfo);
109         virtual void OnWifiDirectClientDisassociated(Tizen::Net::Wifi::WifiDirectDeviceId localDeviceId, const Tizen::Net::Wifi::WifiDirectDeviceInfo& wifiDirectClientInfo,
110                                                                                                 Tizen::Net::Wifi::WifiDirectAssociationTerminationReason reason);
111         virtual void OnWifiDirectGroupDestroyed(Tizen::Net::Wifi::WifiDirectDeviceId localDeviceId, result r);
112         virtual void OnWifiDirectGroupMemberInfoServiceStarted(Tizen::Net::Wifi::WifiDirectDeviceId localDeviceId,
113                                                                                 const Tizen::Net::NetConnection* pNetConnection, result r);
114         virtual void OnWifiDirectGroupMemberInfoServiceStopped(Tizen::Net::Wifi::WifiDirectDeviceId localDeviceId, result r);
115         virtual void OnWifiDirectConnected(Tizen::Net::Wifi::WifiDirectDeviceId, const Tizen::Net::Wifi::WifiDirectDeviceInfo&, result){}
116         virtual void OnWifiDirectDisconnected(Tizen::Net::Wifi::WifiDirectDeviceId, const Tizen::Base::String&, result){}
117         virtual void OnWifiDirectAutonomousGroupCreated(Tizen::Net::Wifi::WifiDirectDeviceId, result){}
118         virtual void OnWifiDirectGroupLeft(Tizen::Net::Wifi::WifiDirectDeviceId, result){}
119
120 private:
121         static WifiDirectManager* __pWifiDirectManagerInstance;
122         Tizen::Net::Wifi::WifiDirectDevice* __pLocalDevice;
123         Tizen::Base::Collection::IList* __pAllGroupMemberListInfo;
124         Tizen::Base::Collection::IList* __pScanDeviceInfoList;
125         Tizen::Base::Collection::IList* __pBusyDeviceInfoList;
126         IWifiDirectManagerEventListener* __pEventListener;
127         WifiDirectManagerEvent __lastEventToPerform;
128 };
129
130 #endif // _ST_WIFI_DIRECT_MANAGER_H_