2 // Copyright (c) 2012 Samsung Electronics Co., Ltd.
4 // Licensed under the Flora License, Version 1.0 (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 StWifiPresentationModel.cpp
19 * @brief This is the implementation file for WifiPresentationModel class.
23 #include "StWifiPresentationModel.h"
25 using namespace Tizen::Base;
26 using namespace Tizen::Base::Collection;
27 using namespace Tizen::Net::Wifi;
29 WifiPresentationModel* WifiPresentationModel::__pWifiPresentationModelInstance = null;
31 WifiPresentationModel::WifiPresentationModel(void)
32 : __pWifiManager(null)
33 , __pAccessPointList(null)
34 , __pIWifiPresentationModelEventListener(null)
35 , __wifiEventInProgress(WIFI_PRESENTATION_MODEL_EVENT_NONE)
39 WifiPresentationModel::~WifiPresentationModel(void)
41 RemoveAccessPointList();
42 __pIWifiPresentationModelEventListener = null;
44 delete __pWifiManager;
45 __pWifiManager = null;
49 WifiPresentationModel::Construct(void)
51 __pWifiManager = new (std::nothrow) WifiManager();
52 result r = __pWifiManager->Construct(*this);
56 AppLogDebug("Construct failed(%s)", GetErrorMessage(r));
57 delete __pWifiManager;
58 __pWifiManager = null;
63 r = __pWifiManager->AddSystemMonitoringEventListener(*this);
66 AppLogDebug("Construct failed(%s)", GetErrorMessage(r));
67 delete __pWifiManager;
68 __pWifiManager = null;
74 WifiPresentationModel*
75 WifiPresentationModel::GetInstance(void)
77 if (__pWifiPresentationModelInstance == null)
82 return __pWifiPresentationModelInstance;
86 WifiPresentationModel::CreateInstance(void)
88 __pWifiPresentationModelInstance = new (std::nothrow) WifiPresentationModel();
89 result r = __pWifiPresentationModelInstance->Construct();
92 delete __pWifiPresentationModelInstance;
93 __pWifiPresentationModelInstance = null;
97 std::atexit(DestroyInstance);
101 WifiPresentationModel::DestroyInstance(void)
103 if (__pWifiPresentationModelInstance != null)
105 delete __pWifiPresentationModelInstance;
106 __pWifiPresentationModelInstance = null;
111 WifiPresentationModel::SetWifiEventListener(const IWifiPresentationModelEventListener* pWifiEventListener)
113 __pIWifiPresentationModelEventListener = pWifiEventListener;
117 WifiPresentationModel::OnWifiConnectionStateChanged(Tizen::Net::Wifi::WifiConnectionState state)
119 FireWifiEvnet(WIFI_PRESENTATION_MODEL_EVENT_CONNECTION_STATE_CHANGED);
123 WifiPresentationModel::OnWifiSystemScanResultUpdated(void)
125 RemoveAccessPointList();
126 SetAccessPointList(__pWifiManager->GetSystemScanResultN());
128 FireWifiEvnet(WIFI_PRESENTATION_MODEL_EVENT_SYSTEM_SCAN_UPDATED);
132 WifiPresentationModel::IsWifiActivated(void)
134 return __pWifiManager->IsActivated();
138 WifiPresentationModel::ScanWifi(void)
140 if (IsWifiActivated() == false)
145 result r = __pWifiManager->Scan();
148 SetWifiEventInProgress(WIFI_PRESENTATION_MODEL_EVENT_SCANNING);
155 WifiPresentationModel::IsWifiConnected(void)
157 if (IsWifiActivated() == false)
162 return __pWifiManager->IsConnected();
166 WifiPresentationModel::ConnectToAccessPointListAt(int index)
168 if (__pAccessPointList == null)
170 AppLogDebug("__pAccessPointList is null");
174 WifiBssInfo* pWifiBssInfo = static_cast<WifiBssInfo*>(__pAccessPointList->GetAt(index));
175 if (pWifiBssInfo == null)
177 AppLogDebug("GetAt is null");
181 result r = __pWifiManager->Connect(*pWifiBssInfo);
184 SetWifiEventInProgress(WIFI_PRESENTATION_MODEL_EVENT_CONNECTTING);
191 WifiPresentationModel::ActivateWifi(void)
193 if (IsWifiActivated() == true)
198 result r = __pWifiManager->Activate();
201 SetWifiEventInProgress(WIFI_PRESENTATION_MODEL_EVENT_ACTIVATING);
208 WifiPresentationModel::DeactivateWifi(void)
210 if (IsWifiActivated() == false)
215 result r = __pWifiManager->Deactivate();
218 SetWifiEventInProgress(WIFI_PRESENTATION_MODEL_EVENT_DEACTIVATING);
225 WifiPresentationModel::SetWifiActivateScanMode(Tizen::Net::Wifi::WifiSystemScanMode wifiSystemScanMode)
227 return __pWifiManager->SetWifiSystemScanMode(wifiSystemScanMode);
231 WifiPresentationModel::SetWifiBssUnknownAt(int index)
233 if (__pAccessPointList == null)
235 AppLogDebug("__pAccessPointList is null");
239 WifiBssInfo* pWifiAccessPointBssInfo = const_cast<WifiBssInfo*>(__pWifiManager->GetConnectionTargetInfoN());
240 if (pWifiAccessPointBssInfo == null)
242 AppLogDebug("pWifiAccessPointBssInfo is null");
246 pWifiAccessPointBssInfo->SetUnknown();
247 delete pWifiAccessPointBssInfo;
248 pWifiAccessPointBssInfo = null;
253 WifiPresentationModel::GetWifiMacAddress(void)
255 return __pWifiManager->GetMacAddress();
259 WifiPresentationModel::OnWifiActivated(result r)
263 RemoveAccessPointList();
266 FireWifiEvnet(WIFI_PRESENTATION_MODEL_EVENT_DEACTIVATED, r);
270 WifiPresentationModel::OnWifiDeactivated(result r)
274 RemoveAccessPointList();
277 FireWifiEvnet(WIFI_PRESENTATION_MODEL_EVENT_DEACTIVATED, r);
281 WifiPresentationModel::GetSsidInAccessPointListAt(int index)
283 if (__pAccessPointList == null)
285 AppLogDebug("__pAccessPointList is null");
286 SetLastResult(E_FAILURE);
290 WifiBssInfo* pWifiBssInfo = static_cast<WifiBssInfo*>(__pAccessPointList->GetAt(index));
291 if (pWifiBssInfo == null)
293 AppLogDebug("GetAt is null");
294 SetLastResult(E_FAILURE);
298 return pWifiBssInfo->GetSsid();
302 WifiPresentationModel::GetRssiInAccessPointListAt(int index)
304 if (__pAccessPointList == null)
306 AppLogDebug("__pAccessPointList is null");
307 SetLastResult(E_FAILURE);
311 WifiBssInfo* pWifiBssInfo = static_cast<WifiBssInfo*>(__pAccessPointList->GetAt(index));
312 if (pWifiBssInfo == null)
314 AppLogDebug("GetAt is null");
315 SetLastResult(E_FAILURE);
319 return pWifiBssInfo->GetRssi();
323 WifiPresentationModel::GetAccessPointCount(void)
325 if (__pAccessPointList == null)
327 AppLogDebug("__pAccessPointList is null");
328 SetLastResult(E_FAILURE);
332 return __pAccessPointList->GetCount();
336 WifiPresentationModel::IsWifiBssInfoConnect(int index)
338 if (IsWifiConnected() == false)
340 AppLogDebug("Wifi is disconnect");
344 if (__pAccessPointList == null)
346 AppLogDebug("__pAccessPointList is null");
350 WifiBssInfo* pWifiBssInfo = static_cast<WifiBssInfo*>(__pAccessPointList->GetAt(index));
351 if (pWifiBssInfo == null)
353 AppLogDebug("GetAt is null");
357 WifiBssInfo* pWifiAccessBssInfo = const_cast<WifiBssInfo*>(__pWifiManager->GetConnectionTargetInfoN());
358 if (pWifiBssInfo == null)
360 AppLogDebug("GetConnectionTargetInfoN is null");
364 if (pWifiBssInfo->GetSsid().Equals(pWifiAccessBssInfo->GetSsid()))
366 AppLogDebug("pWifiBssInfo == pWifiAccessBssInfo");
367 delete pWifiAccessBssInfo;
372 delete pWifiAccessBssInfo;
373 pWifiAccessBssInfo = null;
378 Tizen::Net::Wifi::WifiBssInfo*
379 WifiPresentationModel::GetWifiBssInfoInAccessPointListAt(void)
381 if (IsWifiConnected() == false)
383 AppLogDebug("Wifi is disconnect");
387 if (__pAccessPointList == null)
389 AppLogDebug("__pAccessPointList is null");
393 WifiBssInfo* pWifiAccessBssInfo = const_cast<WifiBssInfo*>(__pWifiManager->GetConnectionTargetInfoN());
394 if (pWifiAccessBssInfo == null)
396 AppLogDebug("GetConnectionTargetInfoN is null");
400 return pWifiAccessBssInfo;
403 Tizen::Net::Wifi::WifiBssInfo*
404 WifiPresentationModel::GetWifiBssInfoListAt(int index)
406 WifiBssInfo* pWifiBssInfo = null;
407 if (__pAccessPointList == null)
409 AppLogDebug("__pAccessPointList is null");
413 pWifiBssInfo = static_cast<WifiBssInfo*>(__pAccessPointList->GetAt(index));
414 if (pWifiBssInfo == null)
416 AppLogDebug("GetAt is null");
422 WifiAuthenticationType
423 WifiPresentationModel::GetAuthenticationtypeInAccessPointListAt(int index)
425 SetLastResult(E_SUCCESS);
426 if (__pAccessPointList == null)
428 AppLogDebug("__pAccessPointList is null");
429 SetLastResult(E_FAILURE);
430 return WIFI_AUTHENTICATION_OPEN;
433 WifiBssInfo* pWifiBssInfo = static_cast<WifiBssInfo*>(__pAccessPointList->GetAt(index));
434 if (pWifiBssInfo == null)
436 AppLogDebug("GetAt is null");
437 SetLastResult(E_FAILURE);
438 return WIFI_AUTHENTICATION_OPEN;
441 WifiSecurityInfo* pWifiSecurityInfo = const_cast<WifiSecurityInfo*>(pWifiBssInfo->GetSecurityInfo());
442 if (pWifiSecurityInfo == null)
444 AppLogDebug("pWifiSecurityInfo is null");
445 return WIFI_AUTHENTICATION_OPEN;
448 WifiAuthenticationType tmp = pWifiSecurityInfo->GetAuthenticationType();
454 WifiPresentationModel::SetWifiEventInProgress(WifiPresentationModelEvent setEventInProgress)
456 __wifiEventInProgress = setEventInProgress;
460 WifiPresentationModel::FireWifiEvnet(WifiPresentationModelEvent wifiEvent, result r)
462 if (__pIWifiPresentationModelEventListener == null)
464 AppLogDebug("__pBluetoothPresentationModelEventListener is null");
468 SetWifiEventInProgress(wifiEvent);
469 (const_cast <IWifiPresentationModelEventListener*>(__pIWifiPresentationModelEventListener))->OnWifiPresentationModelEventCompleted(wifiEvent, r);
474 WifiPresentationModelEvent
475 WifiPresentationModel::GetWifiEventInProgress(void)
477 return __wifiEventInProgress;
481 WifiPresentationModel::SetAccessPointList(Tizen::Base::Collection::IList* pWifiBssInfoList)
483 RemoveAccessPointList();
484 __pAccessPointList = pWifiBssInfoList;
488 WifiPresentationModel::RemoveAccessPointList(void)
490 if (__pAccessPointList != null)
492 __pAccessPointList->RemoveAll();
493 delete __pAccessPointList;
494 __pAccessPointList = null;
499 WifiPresentationModel::OnWifiConnected(const Tizen::Base::String& ssid, result r)
501 FireWifiEvnet(WIFI_PRESENTATION_MODEL_EVENT_RSSI_CHANGED, r);
505 WifiPresentationModel::OnWifiDisconnected(void)
507 FireWifiEvnet(WIFI_PRESENTATION_MODEL_EVENT_DISCONNECTED);
511 WifiPresentationModel::OnWifiRssiChanged(long rssi)
513 FireWifiEvnet(WIFI_PRESENTATION_MODEL_EVENT_RSSI_CHANGED);
517 WifiPresentationModel::OnWifiScanCompletedN(const Tizen::Base::Collection::IList* pWifiBssInfoList, result r)
521 SetAccessPointList(const_cast<IList*>(pWifiBssInfoList));
524 FireWifiEvnet(WIFI_PRESENTATION_MODEL_EVENT_SCAN_COMPLETED_N, r);
528 WifiPresentationModel::SetWifiBssInfoList(const Tizen::Base::Collection::IList* pWifiBssInfoList)
530 __pAccessPointList = const_cast<Tizen::Base::Collection::IList*>(pWifiBssInfoList);
531 return GetLastResult();