2 // Open Service Platform
3 // Copyright (c) 2012-2013 Samsung Electronics Co., Ltd.
5 // Licensed under the Apache License, Version 2.0 (the License);
6 // you may not use this file except in compliance with the License.
7 // You may obtain a copy of the License at
9 // http://www.apache.org/licenses/LICENSE-2.0
11 // Unless required by applicable law or agreed to in writing, software
12 // distributed under the License is distributed on an "AS IS" BASIS,
13 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 // See the License for the specific language governing permissions and
15 // limitations under the License.
19 * @file FNetWifi_WifiDirectDeviceImpl.h
20 * @brief This is the header file for the _WifiDirectDeviceImpl class.
23 * This header file contains declarations of the _WifiDirectDeviceImpl class.
26 #ifndef _FNET_WIFI_INTERNAL_WIFI_DIRECT_DEVICE_IMPL_H_
27 #define _FNET_WIFI_INTERNAL_WIFI_DIRECT_DEVICE_IMPL_H_
30 #include <unique_ptr.h>
31 #include <FOspConfig.h>
32 #include <FBaseObject.h>
33 #include <FNetWifiWifiTypes.h>
34 #include "FNetWifi_WifiDirectGroupOwnerImpl.h"
35 #include "FNetWifi_WifiDirectGroupClientImpl.h"
36 #include "FNetWifi_IWifiDirectListener.h"
38 namespace Tizen { namespace Base { namespace Collection
41 } } } // Tizen::Base::Collection
43 namespace Tizen { namespace Net { namespace Wifi
45 class IWifiDirectDeviceListener;
46 class IWifiDirectGroupOwnerListener;
47 class IWifiDirectGroupClientListener;
48 class WifiDirectDevice;
49 class WifiDirectDeviceInfo;
50 class WifiDirectGroupInfo;
51 class _WifiDirectSystemAdapter;
52 class _WifiDirectDeviceEvent;
53 class _WifiDirectGroupOwnerEvent;
54 class _WifiDirectGroupClientEvent;
55 class _WifiDirectEventArg;
57 enum _WifiDirectDeviceState
59 WIFI_DIRECT_DEVICE_INTERNAL_DEACTIVATED,
60 WIFI_DIRECT_DEVICE_INTERNAL_ACTIVATING,
61 WIFI_DIRECT_DEVICE_INTERNAL_DEACTIVATING,
62 WIFI_DIRECT_DEVICE_INTERNAL_ACTIVATED,
63 WIFI_DIRECT_DEVICE_INTERNAL_CONNECTING,
64 WIFI_DIRECT_DEVICE_INTERNAL_CONNECT_CANCELLING,
65 WIFI_DIRECT_DEVICE_INTERNAL_CREATED_OWNER,
66 WIFI_DIRECT_DEVICE_INTERNAL_CREATED_CLIENT,
67 WIFI_DIRECT_DEVICE_INTERNAL_DISCONNECTING,
68 WIFI_DIRECT_DEVICE_INTERNAL_LEAVING,
69 WIFI_DIRECT_DEVICE_INTERNAL_GROUP_CREATING
73 enum _WifiDirectScanState
75 WIFI_DIRECT_SCAN_INTERNAL_IDLE,
76 WIFI_DIRECT_SCAN_INTERNAL_SCANNING,
77 WIFI_DIRECT_SCAN_INTERNAL_CANCELLING
81 * @class _WifiDirectDeviceImpl
82 * @brief This class provides methods for the Wi-Fi Direct management.
85 * WifiDirectDeviceImpl class provides the functionality for creating a WifiDirectDevice instance, and
86 * managing Wi-Fi Direct group. It also allows the listener to get events from Wi-Fi Direct group.
89 class _OSP_EXPORT_ _WifiDirectDeviceImpl
90 : public Tizen::Base::Object
91 , public _IWifiDirectListener
96 * @see WifiDirectDevice::Construct()
98 result Construct(WifiDirectDeviceId localDeviceId, bool enableIpInfoService = true);
101 * @see WifiDirectDevice::AddWifiDirectDeviceListener()
103 result AddWifiDirectDeviceListener(IWifiDirectDeviceListener &listener);
106 * @see WifiDirectDevice::AddWifiDirectGroupOwnerListener()
108 result AddWifiDirectGroupOwnerListener(IWifiDirectGroupOwnerListener &listener);
111 * @see WifiDirectDevice::AddWifiDirectGroupClientListener()
113 result AddWifiDirectGroupClientListener(IWifiDirectGroupClientListener &listener);
116 * @see WifiDirectDevice::RemoveWifiDirectDeviceListener()
118 result RemoveWifiDirectDeviceListener(IWifiDirectDeviceListener &listener);
121 * @see WifiDirectDevice::RemoveWifiDirectGroupOwnerListener()
123 result RemoveWifiDirectGroupOwnerListener(IWifiDirectGroupOwnerListener &listener);
126 * @see WifiDirectDevice::RemoveWifiDirectGroupClientListener()
128 result RemoveWifiDirectGroupClientListener(IWifiDirectGroupClientListener &listener);
131 * @see WifiDirectDevice::Activate()
133 result Activate(void);
136 * @see WifiDirectDevice::Deactivate()
138 result Deactivate(void);
141 * @see WifiDirectDevice::IsActivated()
143 bool IsActivated(void) const;
146 * @see WifiDirectDevice::GetGroupSettingInfoN()
148 WifiDirectGroupInfo* GetGroupSettingInfoN(void) const;
151 * @see WifiDirectDevice::GetLocalDeviceInfoN()
153 WifiDirectDeviceInfo* GetLocalDeviceInfoN(void) const;
156 * @see WifiDirectDevice::GetWpsConfigurationModePreference()
158 WifiWpsConfigurationMode GetWpsConfigurationModePreference(void) const;
161 * @see WifiDirectDevice::SetLocalDeviceName()
163 result SetLocalDeviceName(const Tizen::Base::String &name);
166 * @see WifiDirectDevice::SetWpsConfigurationModePreference()
168 result SetWpsConfigurationModePreference(WifiWpsConfigurationMode mode);
171 * @see WifiDirectDevice::CreateGroup()
173 result CreateGroup(const WifiDirectGroupInfo *pWifiDirectGroupInfo = null, const WifiDirectDeviceInfo *pWifiDirectRemoteDeviceInfo = null);
176 * @see WifiDirectDevice::CancelGroupCreation()
178 result CancelGroupCreation(void);
181 * @see WifiDirectDevice::Scan()
186 * @see WifiDirectDevice::CancelScan()
188 result CancelScan(void);
191 * @see WifiDirectDevice::Associate()
193 result Associate(const WifiDirectDeviceInfo &wifiDirectGroupOwnerDeviceInfo);
196 * @see WifiDirectDevice::GetWifiDirectMemberN()
198 WifiDirectGroupMember* GetWifiDirectMemberN(void);
201 * @see WifiDirectDevice::IsDiscoverable()
203 bool IsDiscoverable(void) const;
206 * @see WifiDirectDevice::Connect()
208 result Connect(const WifiDirectDeviceInfo& peerDeviceInfo);
211 * @see WifiDirectDevice::CancelConnect()
213 result CancelConnect(void);
216 * @see WifiDirectDevice::CreateAutonomousGroup()
218 result CreateAutonomousGroup(void);
221 * @see WifiDirectDevice::SetGroupSettingInfo()
223 result SetGroupSettingInfo(const WifiDirectGroupInfo& groupConfigurationInfo);
226 * @see WifiDirectDevice::Disconnect()
228 result Disconnect(const WifiDirectDeviceInfo& remoteDeviceInfo);
231 * @see WifiDirectDevice::LeaveGroup()
233 result LeaveGroup(void);
236 * @see WifiDirectDevice::GetGroupOwnerInfo()
238 WifiDirectDeviceInfo* GetGroupOwnerInfoN(void) const;
241 * @see WifiDirectDevice::GetGroupClientInfoListN()
243 Tizen::Base::Collection::IList* GetGroupClientInfoListN(void) const;
246 * @see WifiDirectDevice::GetOperatingChannel()
248 WifiRadioChannel GetOperatingChannel(void) const;
251 * Returns string representation of current status.
253 * @return current status of wifi direct
256 const char* GetStringOfCurrentState(void) const;
259 * Returns String representation of Current Status of Scan.
261 * @return current scan status of wifi direct
263 const char* GetStringOfScanState(void) const;
266 * Adds reference count.
268 * @return current reference count
273 * Removes reference count.
275 * @return current reference count
280 * returns current status of wifi direct
282 * @return Wifi Direct Device Status
284 _WifiDirectDeviceState GetWifiDirectDeviceCurrentState(void) const;
287 * Sets current status of wifi direct
289 * @param[in] currentState Wifi Direct Device Status
291 void SetWifiDirectDeviceCurrentState(_WifiDirectDeviceState currentState);
294 * Returns wifi direct group owner event object
296 * @return Wifi Direct Group Owner event object
298 _WifiDirectGroupOwnerEvent* GetWifiDirectGroupOwnerEvent() const;
301 * Returns wifi direct group client event object
303 * @return Wifi Direct Group Client event object
305 _WifiDirectGroupClientEvent* GetWifiDirectGroupClientEvent() const;
308 * Returns all device information
310 * @return List of Device Information
312 static Tizen::Base::Collection::IList* GetAllDeviceInfoN(void);
315 * Gets WifiDirectDeviceInstance,
316 * incase pDeviceInfo = null gets information of Default Device
318 * @return Wifi Direct Device instance
319 * @param[in] pDeviceInfo A pointer to WifiDirectDeviceInfo
321 static WifiDirectDevice* GetWifiDirectDeviceInstanceN(const WifiDirectDeviceInfo* pDeviceInfo = null);
325 * Gets WifiDirectDeviceInstance
327 * @return Wifi Direct Device instance
329 static WifiDirectDevice* GetWifiDirectDeviceInstanceWithoutIpServiceN(void);
332 * Creates _WifiDirectDeviceImpl class instance
334 * @return The pointer to _WifiDirectDeviceImpl
336 static _WifiDirectDeviceImpl* CreateWifiDirectDeviceImplInstanceN(void);
339 * Gets the Impl instance.
341 * @return The pointer to %_WifiDirectDeviceImpl
342 * @param[in] wifiDirectDevice An instance of %WifiDirectDevice
344 static _WifiDirectDeviceImpl* GetInstance(WifiDirectDevice& wifiDirectDevice);
347 * Gets the Impl instance.
349 * @return The pointer to %_WifiDirectDeviceImpl
350 * @param[in] wifiDirectDevice An instance of %WifiDirectDevice
352 static const _WifiDirectDeviceImpl* GetInstance(const WifiDirectDevice& wifiDirectDevice);
357 * This default constructor is intentionally declared as private so that only the platform can create an instance.
360 _WifiDirectDeviceImpl(void);
363 * The implementation of this copy constructor is intentionally blank and declared as private to prohibit copying of objects.
365 * @param[in] rhs _WifiDirectDeviceImpl
367 _WifiDirectDeviceImpl(const _WifiDirectDeviceImpl& rhs);
371 * This destructor overrides Tizen::Base::Object::~Object().
374 virtual ~_WifiDirectDeviceImpl(void);
377 * @see IWifiDirectDeviceListener::OnWifiDirectDeviceActivated()
379 void OnWifiDirectDeviceActivated(const _WifiDirectEventArg& arg, result r);
382 * @see IWifiDirectDeviceListener::OnWifiDirectDeviceDeactivated()
384 void OnWifiDirectDeviceDeactivated(const _WifiDirectEventArg& arg, result r);
387 * @see IWifiDirectDeviceListener::OnWifiDirectGroupCreatedN()
389 void OnWifiDirectGroupCreated(const _WifiDirectEventArg& arg, WifiDirectGroupMemberType wifiDirectMemberType, result r);
392 * @see IWifiDirectDeviceListener::OnWifiDirectRemoteDeviceFound()
394 void OnWifiDirectRemoteDeviceFound(const _WifiDirectEventArg& arg);
397 * @see IWifiDirectDeviceListener::OnWifiDirectScanCompleted()
399 void OnWifiDirectScanCompleted(const _WifiDirectEventArg& arg, result r);
402 * @see IWifiDirectDeviceListener::OnWifiDirectAssociationCompleted()
404 void OnWifiDirectAssociationCompleted(const _WifiDirectEventArg& arg, result r);
407 * @see IWifiDirectDeviceListener::OnWifiDirectConnected()
409 void OnWifiDirectConnected(const _WifiDirectEventArg& arg, result r);
412 * @see IWifiDirectDeviceListener::OnWifiDirectDisconnected()
415 void OnWifiDirectDisconnected(const _WifiDirectEventArg& arg, result r);
418 * @see IWifiDirectDeviceListener::OnWifiDirectGroupLeft()
420 void OnWifiDirectGroupLeft(const _WifiDirectEventArg& arg, result r);
423 * @see IWifiDirectDeviceListener::OnWifiDirectAutonomousGroupCreated()
425 void OnWifiDirectAutonomousGroupCreated(const _WifiDirectEventArg& arg, result r);
429 * @see IWifiDirectGroupOwnerListener::OnWifiDirectAssociationCompleted()
431 void OnWifiDirectClientAssociated(const _WifiDirectEventArg& arg);
434 * @see IWifiDirectGroupOwnerListener::OnWifiDirectClientDisassociated()
436 void OnWifiDirectClientDisassociated(const _WifiDirectEventArg& arg, WifiDirectAssociationTerminationReason reason);
439 * @see IWifiDirectGroupOwnerListener::OnWifiDirectGroupDestroyed()
441 void OnWifiDirectGroupDestroyed(const _WifiDirectEventArg& arg, result r);
444 * @see IWifiDirectGroupClientListener::OnWifiDirectAssociationTerminated()
447 void OnWifiDirectAssociationTerminated(const _WifiDirectEventArg& arg, result r);
450 * @see IWifiDirectGroupClientListener::OnWifiDirectGroupOwnerInfoReceived()
452 void OnWifiDirectGroupOwnerInfoReceived(const _WifiDirectEventArg& arg, result r);
455 * @see IWifiDirectGroupClientListener::OnWifiDirectAllGroupMemberInfoReceivedN()
457 void OnWifiDirectAllGroupMemberInfoReceivedN(const _WifiDirectEventArg& arg, result r);
461 * The implementation of this copy assignment operator is intentionally blank and declared as private to prohibit copying of objects.
463 * @param[in] rhs An instance of %_WifiDirectDeviceImpl
465 _WifiDirectDeviceImpl& operator =(const _WifiDirectDeviceImpl& rhs);
468 WifiDirectDeviceId __localDeviceId;
470 std::unique_ptr<_WifiDirectDeviceEvent> __pWifiDirectDeviceEvent;
471 std::unique_ptr<_WifiDirectGroupOwnerEvent> __pWifiDirectGroupOwnerEvent;
472 std::unique_ptr<_WifiDirectGroupClientEvent> __pWifiDirectGroupClientEvent;
474 _WifiDirectGroupOwnerImpl __groupOwnerImpl;
475 _WifiDirectGroupClientImpl __groupClientImpl;
477 _WifiDirectDeviceState __deviceState;
478 _WifiDirectScanState __scanState;
480 _WifiDirectSystemAdapter* __pWifiDirectSystemAdapter;
483 Tizen::Base::Runtime::Mutex __stateMutex;
484 friend class std::default_delete<_WifiDirectDeviceImpl>;
485 }; // _WifiDirectDeviceImpl
486 } } } // Tizen::Net::Wifi
488 #endif // _FNET_WIFI_INTERNAL_WIFI_DIRECT_DEVICE_IMPL_H_