1 /* 2 * Copyright (C) 2024 Huawei Device Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 #ifndef NFC_WIFI_CONN_MGR_H 16 #define NFC_WIFI_CONN_MGR_H 17 18 #include <shared_mutex> 19 #include "ndef_wifi_data_parser.h" 20 #include "nfc_event_handler.h" 21 #include "wifi_device.h" 22 23 namespace OHOS { 24 namespace NFC { 25 namespace TAG { 26 class WifiConnectionManager { 27 public: 28 static WifiConnectionManager& GetInstance(); 29 void Initialize(std::weak_ptr<NfcService> nfcService); 30 31 void TryConnectWifi(std::shared_ptr<WifiData> data); 32 void OnWifiNtfClicked(); 33 void HandleWifiEnableFailed(); 34 void HandleWifiConnectFailed(); 35 void OnWifiEnabled(); 36 void OnWifiConnected(); 37 protected: 38 // wifi common event receiver 39 class WifiCommonEventReceiver; 40 private: 41 WifiConnectionManager(); ~WifiConnectionManager()42 ~WifiConnectionManager() {} 43 // wifi common event 44 void SubscribeWifiCommonEvents(); 45 void UnsubscribeWifiCommonEvents(); 46 // timeout event messages 47 void SendMsgToEvtHandler(NfcCommonEvent evt, int64_t delay); 48 void RemoveMsgFromEvtHandler(NfcCommonEvent evt); 49 // step 1: wifi state check 50 std::shared_ptr<Wifi::WifiDevice> GetWifiDevPtr(); 51 bool IsWifiEnabled(); 52 bool HandleEnableWifi(); 53 // step 2: wifi connect 54 bool IsSameSsid(); 55 bool HandleConnectWifi(); 56 // clear function 57 void OnFinish(); 58 59 private: 60 std::weak_ptr<NfcService> nfcService_ {}; 61 std::shared_mutex mutex_ {}; 62 bool isInitialized_ = false; 63 }; 64 } // namespace TAG 65 } // namespace NFC 66 } // namespace OHOS 67 #endif // NFC_WIFI_CONN_MGR_H