diff --git a/wifi/services/wifi_standard/wifi_framework/wifi_manage/wifi_controller/wifi_service_scheduler.cpp b/wifi/services/wifi_standard/wifi_framework/wifi_manage/wifi_controller/wifi_service_scheduler.cpp index 5a81e7e256d199362418a17da4eccb22aeebb599..4cfdad09af3ca40c9e2b3ce52a028a9addb4f359 100644 --- a/wifi/services/wifi_standard/wifi_framework/wifi_manage/wifi_controller/wifi_service_scheduler.cpp +++ b/wifi/services/wifi_standard/wifi_framework/wifi_manage/wifi_controller/wifi_service_scheduler.cpp @@ -495,6 +495,14 @@ ErrCode WifiServiceScheduler::StartWifiStaService(int instId) } pService->SetSelfCureService(pSelfCureService); #endif // FEATURE_SELF_CURE_SUPPORT +#ifdef FEATURE_WIFI_PRO_SUPPORT + IWifiProService *pWifiProService = WifiServiceManager::GetInstance().GetWifiProServiceInst(instId); + if (pWifiProService == nullptr) { + WIFI_LOGI("get wifiPro service failed"); + return WIFI_OPT_FAILED; + } + pService->SetWifiProService(pWifiProService); +#endif #endif WIFI_LOGI("StartWifiStaService instId%{public}d successful", instId); return WIFI_OPT_SUCCESS; diff --git a/wifi/services/wifi_standard/wifi_framework/wifi_manage/wifi_pro/iwifi_pro_service.h b/wifi/services/wifi_standard/wifi_framework/wifi_manage/wifi_pro/iwifi_pro_service.h index 9297a0aa92c0b6047815a91fa9cf3d15039f7f35..40d9c536dff81e0a49cfdfc3d0b05bc1ae37e34e 100644 --- a/wifi/services/wifi_standard/wifi_framework/wifi_manage/wifi_pro/iwifi_pro_service.h +++ b/wifi/services/wifi_standard/wifi_framework/wifi_manage/wifi_pro/iwifi_pro_service.h @@ -50,6 +50,13 @@ public: * @Description deal wifi channel qoe */ virtual void DealQoeReport(const NetworkLagType &networkLagType, const NetworkLagInfo &networkLagInfo) = 0; + + /** + * @Description Get switch state + * + * @return results - is Wifi2Wifi Switching + */ + virtual bool IsWifi2WifiSwitching() const = 0; }; } // namespace Wifi } // namespace OHOS diff --git a/wifi/services/wifi_standard/wifi_framework/wifi_manage/wifi_pro/wifi_pro_interface.cpp b/wifi/services/wifi_standard/wifi_framework/wifi_manage/wifi_pro/wifi_pro_interface.cpp index a63dada5a5c4100ad7d4aeed9c575566d0daed95..53f0c300d568aea0e41868d739c6cfbdf82a9e5e 100644 --- a/wifi/services/wifi_standard/wifi_framework/wifi_manage/wifi_pro/wifi_pro_interface.cpp +++ b/wifi/services/wifi_standard/wifi_framework/wifi_manage/wifi_pro/wifi_pro_interface.cpp @@ -110,6 +110,11 @@ void WifiProInterface::DealQoeReport(const NetworkLagType &networkLagType, const pWifiProService_->HandleQoeReport(networkLagType, networkLagInfo); } +bool WifiProInterface::IsWifi2WifiSwitching() const +{ + return pWifiProService_->IsWifi2WifiSwitching(); +} + void WifiProInterface::HandleSignalInfoChange(const WifiSignalPollInfo &wifiSignalPollInfo) { std::lock_guard lock(mutex_); @@ -124,6 +129,5 @@ StaServiceCallback WifiProInterface::GetStaCallback() const { return staCallback_; } - } // namespace Wifi } // namespace OHOS diff --git a/wifi/services/wifi_standard/wifi_framework/wifi_manage/wifi_pro/wifi_pro_interface.h b/wifi/services/wifi_standard/wifi_framework/wifi_manage/wifi_pro/wifi_pro_interface.h index 0c2942f704bc34c8352a4c7f679c40563ed40f1a..4b97b3ae8732d5875aee9f2d0964eef6e2c48aa4 100644 --- a/wifi/services/wifi_standard/wifi_framework/wifi_manage/wifi_pro/wifi_pro_interface.h +++ b/wifi/services/wifi_standard/wifi_framework/wifi_manage/wifi_pro/wifi_pro_interface.h @@ -54,6 +54,13 @@ public: * @Description deal wifi channel qoe */ void DealQoeReport(const NetworkLagType &networkLagType, const NetworkLagInfo &networkLagInfo) override; + + /** + * @Description Get switch state + * + * @return results - is Wifi2Wifi Switching + */ + bool IsWifi2WifiSwitching() const override; private: /** * @Description deal sta connection change diff --git a/wifi/services/wifi_standard/wifi_framework/wifi_manage/wifi_pro/wifi_pro_service.cpp b/wifi/services/wifi_standard/wifi_framework/wifi_manage/wifi_pro/wifi_pro_service.cpp index aec134231415b7097f448a5e3574bd97fe2001a2..d843248fa1ce2dc5d3b655d43fce63c3b72610cd 100644 --- a/wifi/services/wifi_standard/wifi_framework/wifi_manage/wifi_pro/wifi_pro_service.cpp +++ b/wifi/services/wifi_standard/wifi_framework/wifi_manage/wifi_pro/wifi_pro_service.cpp @@ -154,5 +154,10 @@ void WifiProService::HandleWifiHalSignalInfoChange(const WifiSignalPollInfo &wif { pWifiProStateMachine_->SendMessage(EVENT_SIGNAL_INFO_CHANGE, wifiSignalPollInfo); } + +bool WifiProService::IsWifi2WifiSwitching() +{ + return pWifiProStateMachine_->IsWifi2WifiSwitching(); +} } // namespace Wifi } // namespace OHOS \ No newline at end of file diff --git a/wifi/services/wifi_standard/wifi_framework/wifi_manage/wifi_pro/wifi_pro_service.h b/wifi/services/wifi_standard/wifi_framework/wifi_manage/wifi_pro/wifi_pro_service.h index 0cf1cf2d9e1897694f23c435034637bed8dadbb9..2b5807ca9aa1427d8131dd5951af483867469af8 100644 --- a/wifi/services/wifi_standard/wifi_framework/wifi_manage/wifi_pro/wifi_pro_service.h +++ b/wifi/services/wifi_standard/wifi_framework/wifi_manage/wifi_pro/wifi_pro_service.h @@ -35,6 +35,7 @@ public: void HandleScanResult(const std::vector &scanInfos); void HandleWifiHalSignalInfoChange(const WifiSignalPollInfo &wifiSignalPollInfo); void HandleQoeReport(const NetworkLagType &networkLagType, const NetworkLagInfo &networkLagInfo); + bool IsWifi2WifiSwitching(); private: std::shared_ptr pWifiProStateMachine_ { nullptr }; int32_t instId_ { 0 }; diff --git a/wifi/services/wifi_standard/wifi_framework/wifi_manage/wifi_pro/wifi_pro_state_machine.cpp b/wifi/services/wifi_standard/wifi_framework/wifi_manage/wifi_pro/wifi_pro_state_machine.cpp index bf1789d52427a2517f4d396adf85a59bf8ed423e..76ff76ed86cd9450e098d260b68a6518ef340fab 100644 --- a/wifi/services/wifi_standard/wifi_framework/wifi_manage/wifi_pro/wifi_pro_state_machine.cpp +++ b/wifi/services/wifi_standard/wifi_framework/wifi_manage/wifi_pro/wifi_pro_state_machine.cpp @@ -271,7 +271,7 @@ bool WifiProStateMachine::IsDisableWifiAutoSwitch() void WifiProStateMachine::Wifi2WifiFinish() { - isWifi2WifiSwitching_ = false; + isWifi2WifiSwitching_.store(false); badBssid_ = ""; badSsid_ = ""; targetBssid_ = ""; @@ -347,7 +347,7 @@ void WifiProStateMachine::FastScan(std::vector &scanInfoList) bool WifiProStateMachine::TrySelfCure(bool forceNoHttpCheck) { - if (isWifi2WifiSwitching_) { + if (isWifi2WifiSwitching_.load()) { WIFI_LOGI("Wifi2Wifi Switching"); return false; } @@ -417,7 +417,7 @@ bool WifiProStateMachine::SelectNetwork(NetworkSelectionResult &networkSelection bool WifiProStateMachine::IsSatisfiedWifi2WifiCondition() { - if (isWifi2WifiSwitching_) { + if (isWifi2WifiSwitching_.load()) { WIFI_LOGI("IsSatisfiedWifi2WifiCondition, wifi2Wifi is switching."); WifiProChr::GetInstance().RecordReasonNotSwitchChrCnt(WIFIPRO_SWITCHING); return false; @@ -465,7 +465,7 @@ bool WifiProStateMachine::TryWifi2Wifi(const NetworkSelectionResult &networkSele badBssid_ = currentBssid_; badSsid_ = currentSsid_; targetBssid_ = networkSelectionResult.interScanInfo.bssid; - isWifi2WifiSwitching_ = true; + isWifi2WifiSwitching_.store(true); WifiProChr::GetInstance().RecordWifiProConnectTime(); WIFI_LOGE("TryWifi2Wifi: Switch reason : %{public}s", (g_switchReason[wifiSwitchReason_]).c_str()); if (pStaService->StartConnectToBssid(networkId, targetBssid_, NETWORK_SELECTED_BY_AUTO) != WIFI_OPT_SUCCESS) { @@ -492,20 +492,25 @@ void WifiProStateMachine::ProcessSwitchResult(const InternalMessagePtr msg) WifiLinkedInfo linkedInfo; msg->GetMessageObj(linkedInfo); perf5gHandoverService_.OnConnected(linkedInfo); - if (isWifi2WifiSwitching_ && targetBssid_ != linkedInfo.bssid) { + if (isWifi2WifiSwitching_.load() && targetBssid_ != linkedInfo.bssid) { WIFI_LOGI("selected bssid and switched bssid are not same:selected bssid:%{public}s," "switched bssid:%{public}s,", MacAnonymize(targetBssid_).c_str(), MacAnonymize(linkedInfo.bssid).c_str()); WifiProChr::GetInstance().RecordSwitchChrCnt(false); HandleWifi2WifiFailed(); - } else if (isWifi2WifiSwitching_ && targetBssid_ == linkedInfo.bssid) { + } else if (isWifi2WifiSwitching_.load() && targetBssid_ == linkedInfo.bssid) { WifiProChr::GetInstance().RecordSwitchChrCnt(true); WifiProChr::GetInstance().RecordWifiProSwitchSuccTime(); HandleWifi2WifiSucsess(BLOCKLIST_VALID_TIME); } Wifi2WifiFinish(); } + +bool WifiProStateMachine::IsWifi2WifiSwitching() +{ + return isWifi2WifiSwitching_.load(); +} /* --------------------------- state machine default state ------------------------------ */ WifiProStateMachine::DefaultState::DefaultState(WifiProStateMachine *pWifiProStateMachine) : State("DefaultState"), @@ -795,7 +800,7 @@ void WifiProStateMachine::WifiDisconnectedState::GoInState() { WIFI_LOGI("WifiDisconnectedState GoInState function."); pWifiProStateMachine_->currentState_ = WifiProState::WIFI_DISCONNECTED; - if (!pWifiProStateMachine_->isWifi2WifiSwitching_) { + if (!pWifiProStateMachine_->isWifi2WifiSwitching_.load()) { auto &networkBlackListManager = NetworkBlockListManager::GetInstance(); networkBlackListManager.CleanAbnormalWifiBlocklist(); } @@ -849,7 +854,7 @@ void WifiProStateMachine::WifiDisconnectedState::HandleWifi2WifiFailedEvent(cons WIFI_LOGI("DisconnectedState, msg is nullptr."); return; } - if (pWifiProStateMachine_->isWifi2WifiSwitching_) { + if (pWifiProStateMachine_->isWifi2WifiSwitching_.load()) { int32_t state = msg->GetParam1(); WIFI_LOGW("HandleWifi2Wifi error : %{public}d", state); WifiProChr::GetInstance().RecordSwitchChrCnt(false); @@ -881,7 +886,7 @@ void WifiProStateMachine::WifiHasNetState::WifiHasNetStateInit() mLastTcpRxCounter_ = 0; mLastDnsFailedCnt_ = 0; netDisableDetectCount_ = 0; - pWifiProStateMachine_->isWifi2WifiSwitching_ = false; + pWifiProStateMachine_->isWifi2WifiSwitching_.store(false); pWifiProStateMachine_->currentState_ = WifiProState::WIFI_HASNET; pWifiProStateMachine_->SendMessage(EVENT_CMD_INTERNET_STATUS_DETECT_INTERVAL); pWifiProStateMachine_->perf5gHandoverService_.NetworkStatusChanged(NetworkStatus::HAS_INTERNET); @@ -939,8 +944,8 @@ void WifiProStateMachine::WifiHasNetState::HandleRssiChangedInHasNet(const Inter return; } pWifiProStateMachine_->currentRssi_ = msg->GetParam1(); - if ((pWifiProStateMachine_->isWifi2WifiSwitching_)) { - WIFI_LOGI("HasNetState, isWifi2WifiSwitching:%{public}d.", pWifiProStateMachine_->isWifi2WifiSwitching_); + if ((pWifiProStateMachine_->isWifi2WifiSwitching_.load())) { + WIFI_LOGI("HasNetState, isWifi2WifiSwitching:%{public}d.", pWifiProStateMachine_->isWifi2WifiSwitching_.load()); return; } @@ -1034,7 +1039,7 @@ void WifiProStateMachine::WifiHasNetState::HandleScanResultInHasNet(const Intern std::vector scanInfos; msg->GetMessageObj(scanInfos); WifiProChr::GetInstance().RecordCountWiFiPro(true); - if (pWifiProStateMachine_->isWifi2WifiSwitching_) { + if (pWifiProStateMachine_->isWifi2WifiSwitching_.load()) { WIFI_LOGI("HandleScanResultInHasNet, Wifi2WifiSwitching."); return; } @@ -1044,7 +1049,7 @@ void WifiProStateMachine::WifiHasNetState::HandleScanResultInHasNet(const Intern if (pWifiProStateMachine_->targetBssid_ != "") { WIFI_LOGI("HandleScanResultInHasNet, perf 5g tried to switch."); pWifiProStateMachine_->badBssid_ = pWifiProStateMachine_->currentBssid_; - pWifiProStateMachine_->isWifi2WifiSwitching_ = true; + pWifiProStateMachine_->isWifi2WifiSwitching_.store(true); return; } // Make sure the wifipro lag switch is done only once @@ -1207,7 +1212,7 @@ void WifiProStateMachine::WifiNoNetState::HandleWifiNoInternet(const InternalMes std::vector scanInfos; msg->GetMessageObj(scanInfos); WifiProChr::GetInstance().RecordCountWiFiPro(true); - if (pWifiProStateMachine_->isWifi2WifiSwitching_) { + if (pWifiProStateMachine_->isWifi2WifiSwitching_.load()) { WIFI_LOGI("HandleWifiNoInternet Wifi2WifiSwitching."); return; } @@ -1256,7 +1261,7 @@ void WifiProStateMachine::WifiNoNetState::HandleNoNetChanged() { WIFI_LOGI("HandleNoNetChanged, enter."); fullScan_ = false; - pWifiProStateMachine_->isWifi2WifiSwitching_ = false; + pWifiProStateMachine_->isWifi2WifiSwitching_.store(false); pWifiProStateMachine_->currentState_ = WifiProState::WIFI_NONET; pWifiProStateMachine_->SetSwitchReason(WIFI_SWITCH_REASON_NO_INTERNET); pWifiProStateMachine_->perf5gHandoverService_.NetworkStatusChanged(NetworkStatus::NO_INTERNET); diff --git a/wifi/services/wifi_standard/wifi_framework/wifi_manage/wifi_pro/wifi_pro_state_machine.h b/wifi/services/wifi_standard/wifi_framework/wifi_manage/wifi_pro/wifi_pro_state_machine.h index c4d0456716f06f594948fa928bc0c3543fbf7022..c195db5eb79aae0dedb9897d68d854bc242675eb 100644 --- a/wifi/services/wifi_standard/wifi_framework/wifi_manage/wifi_pro/wifi_pro_state_machine.h +++ b/wifi/services/wifi_standard/wifi_framework/wifi_manage/wifi_pro/wifi_pro_state_machine.h @@ -207,7 +207,8 @@ private: void BuildStateTree(); ErrCode InitWifiProStates(); - +public: + bool IsWifi2WifiSwitching(); private: int32_t instId_ { 0 }; DefaultState *pDefaultState_ { nullptr }; @@ -232,7 +233,7 @@ private: std::string currentSsid_; std::shared_ptr pCurrWifiInfo_ { nullptr }; std::shared_ptr pCurrWifiDeviceConfig_ { nullptr }; - bool isWifi2WifiSwitching_ { false }; + std::atomic isWifi2WifiSwitching_ { false }; bool isDisableWifiAutoSwitch_ { false }; std::string targetBssid_ { "" }; NetworkSelectionResult networkSelectionResult_; diff --git a/wifi/services/wifi_standard/wifi_framework/wifi_manage/wifi_sta/ista_service.h b/wifi/services/wifi_standard/wifi_framework/wifi_manage/wifi_sta/ista_service.h index ac4bb9cf19944616725560b097e6bffa8555bc40..1453f7c8e70e15a924b9be0ce18c5d8b4e2c7300 100644 --- a/wifi/services/wifi_standard/wifi_framework/wifi_manage/wifi_sta/ista_service.h +++ b/wifi/services/wifi_standard/wifi_framework/wifi_manage/wifi_sta/ista_service.h @@ -22,6 +22,7 @@ #include "app_state_data.h" #include "ienhance_service.h" #include "iself_cure_service.h" +#include "iwifi_pro_service.h" #endif #include "wifi_msg.h" #include "sta_service_callback.h" @@ -380,6 +381,14 @@ public: * @return success: WIFI_OPT_SUCCESS, failed: WIFI_OPT_FAILED */ virtual ErrCode SetSelfCureService(ISelfCureService *selfCureService) = 0; + + /** + * @Description Set wifiProService to sta Service. + * + * @param wifiProService IwifiProService object + * @return success: WIFI_OPT_SUCCESS, failed: WIFI_OPT_FAILED + */ + virtual ErrCode SetWifiProService(IWifiProService *wifiProService) = 0; #endif /** * @Description enable hilink diff --git a/wifi/services/wifi_standard/wifi_framework/wifi_manage/wifi_sta/sta_interface.cpp b/wifi/services/wifi_standard/wifi_framework/wifi_manage/wifi_sta/sta_interface.cpp index b2a226ae6cc4834a0a00fe03afe62fd154098f87..8efeedc32f3b6083d88e1dfd1e9abddd35189744 100644 --- a/wifi/services/wifi_standard/wifi_framework/wifi_manage/wifi_sta/sta_interface.cpp +++ b/wifi/services/wifi_standard/wifi_framework/wifi_manage/wifi_sta/sta_interface.cpp @@ -509,6 +509,15 @@ ErrCode StaInterface::SetSelfCureService(ISelfCureService *selfCureService) pStaService->SetSelfCureService(selfCureService); return WIFI_OPT_SUCCESS; } + +ErrCode StaInterface::SetWifiProService(IWifiProService *wifiProService) +{ + WIFI_LOGI("Enter SetWifiProService"); + std::lock_guard lock(mutex); + CHECK_NULL_AND_RETURN(pStaService, WIFI_OPT_FAILED); + pStaService->SetWifiProService(wifiProService); + return WIFI_OPT_SUCCESS; +} #endif ErrCode StaInterface::EnableHiLinkHandshake(bool uiFlag, const WifiDeviceConfig &config, const std::string &bssid) diff --git a/wifi/services/wifi_standard/wifi_framework/wifi_manage/wifi_sta/sta_interface.h b/wifi/services/wifi_standard/wifi_framework/wifi_manage/wifi_sta/sta_interface.h index 4eaf960328f73da4bc82e4fc6bb77fb05f72c7fa..9d2f23c8026ada17b2ffc8218fea473b026807a3 100644 --- a/wifi/services/wifi_standard/wifi_framework/wifi_manage/wifi_sta/sta_interface.h +++ b/wifi/services/wifi_standard/wifi_framework/wifi_manage/wifi_sta/sta_interface.h @@ -383,6 +383,14 @@ public: * @return success: WIFI_OPT_SUCCESS, failed: WIFI_OPT_FAILED */ virtual ErrCode SetSelfCureService(ISelfCureService *selfCureService) override; + + /** + * @Description Set wifiProService to sta Service. + * + * @param wifiProService IwifiProService object + * @return success: WIFI_OPT_SUCCESS, failed: WIFI_OPT_FAILED + */ + virtual ErrCode SetWifiProService(IWifiProService *wifiProService) override; #endif /** * @Description EnableHiLinkHandshake. diff --git a/wifi/services/wifi_standard/wifi_framework/wifi_manage/wifi_sta/sta_service.cpp b/wifi/services/wifi_standard/wifi_framework/wifi_manage/wifi_sta/sta_service.cpp index cf606f1db48c147cc5e9c0af674d700370e55208..fb37a8d0c2c53de6a6574234c23b6db88da42732 100644 --- a/wifi/services/wifi_standard/wifi_framework/wifi_manage/wifi_sta/sta_service.cpp +++ b/wifi/services/wifi_standard/wifi_framework/wifi_manage/wifi_sta/sta_service.cpp @@ -1031,6 +1031,13 @@ ErrCode StaService::SetSelfCureService(ISelfCureService *selfCureService) pStaStateMachine->SetSelfCureService(selfCureService); return WIFI_OPT_SUCCESS; } + +ErrCode StaService::SetWifiProService(IWifiProService *wifiProService) +{ + CHECK_NULL_AND_RETURN(pStaStateMachine, WIFI_OPT_FAILED); + pStaStateMachine->SetWifiProService(wifiProService); + return WIFI_OPT_SUCCESS; +} #endif ErrCode StaService::EnableHiLinkHandshake(bool uiFlag, const WifiDeviceConfig &config, const std::string &cmd) diff --git a/wifi/services/wifi_standard/wifi_framework/wifi_manage/wifi_sta/sta_service.h b/wifi/services/wifi_standard/wifi_framework/wifi_manage/wifi_sta/sta_service.h index 420aee539d1393759b4fa1037aa008f1bf26e6d6..2d1f86d0ea2149134e8fc53e7d22f2f38757032c 100644 --- a/wifi/services/wifi_standard/wifi_framework/wifi_manage/wifi_sta/sta_service.h +++ b/wifi/services/wifi_standard/wifi_framework/wifi_manage/wifi_sta/sta_service.h @@ -382,6 +382,14 @@ public: * @return success: WIFI_OPT_SUCCESS, failed: WIFI_OPT_FAILED */ virtual ErrCode SetSelfCureService(ISelfCureService *selfCureService); + + /** + * @Description Set wifiProService to sta Service. + * + * @param wifiProService IwifiProService object + * @return success: WIFI_OPT_SUCCESS, failed: WIFI_OPT_FAILED + */ + virtual ErrCode SetWifiProService(IWifiProService *wifiProService); #endif /** * @Description enable hilink diff --git a/wifi/services/wifi_standard/wifi_framework/wifi_manage/wifi_sta/sta_state_machine.cpp b/wifi/services/wifi_standard/wifi_framework/wifi_manage/wifi_sta/sta_state_machine.cpp index fd2183caf1be787fcb0e3c28410b2c6b7d97ba6d..2a90fe0a8225a885ff199b58d2ba8d3d84a975d6 100755 --- a/wifi/services/wifi_standard/wifi_framework/wifi_manage/wifi_sta/sta_state_machine.cpp +++ b/wifi/services/wifi_standard/wifi_framework/wifi_manage/wifi_sta/sta_state_machine.cpp @@ -3742,6 +3742,11 @@ void StaStateMachine::SetSelfCureService(ISelfCureService *selfCureService) { selfCureService_ = selfCureService; } + +void StaStateMachine::SetWifiProService(IWifiProService *wifiProService) +{ + wifiProService_ = wifiProService; +} #endif int setRssi(int rssi) @@ -5026,6 +5031,12 @@ void StaStateMachine::InvokeOnStaConnChanged(OperateResState state, const WifiLi return; } } + if (wifiProService_ != nullptr) { + if (wifiProService_->IsWifi2WifiSwitching() && state == OperateResState::DISCONNECT_DISCONNECTED) { + WIFI_LOGI("wfiPro ignore network state changed"); + return; + } + } #endif { std::shared_lock lock(m_staCallbackMutex); @@ -5077,6 +5088,12 @@ void StaStateMachine::InvokeOnStaRssiLevelChanged(int level) return; } } + if (wifiProService_ != nullptr) { + if (wifiProService_->IsWifi2WifiSwitching()) { + WIFI_LOGI("wfiPro ignore rssi changed"); + return; + } + } #endif for (const auto &callBackItem : m_staCallback) { if (callBackItem.second.OnStaRssiLevelChanged != nullptr) { diff --git a/wifi/services/wifi_standard/wifi_framework/wifi_manage/wifi_sta/sta_state_machine.h b/wifi/services/wifi_standard/wifi_framework/wifi_manage/wifi_sta/sta_state_machine.h index 57155cb48e7959d13b7e65e87edd6d7b8bcbadbb..84ece3f739bc82b99b69eb14c9aeb61dd55ad928 100644 --- a/wifi/services/wifi_standard/wifi_framework/wifi_manage/wifi_sta/sta_state_machine.h +++ b/wifi/services/wifi_standard/wifi_framework/wifi_manage/wifi_sta/sta_state_machine.h @@ -44,6 +44,7 @@ #include "telephony_errors.h" #include "ienhance_service.h" #include "iself_cure_service.h" +#include "iwifi_pro_service.h" #include "wifi_common_event_helper.h" #include "appmgr/app_mgr_interface.h" #include "sta_sm_ext.h" @@ -489,6 +490,7 @@ public: #ifndef OHOS_ARCH_LITE void SetEnhanceService(IEnhanceService* enhanceService); void SetSelfCureService(ISelfCureService *selfCureService); + void SetWifiProService(IWifiProService *wifiProService); void UpdateAcceptUnvalidatedState(); /** @@ -1044,6 +1046,7 @@ private: sptr m_NetWorkState; IEnhanceService *enhanceService_ = nullptr; /* EnhanceService handle */ ISelfCureService *selfCureService_ = nullptr; + IWifiProService *wifiProService_ = nullptr; #endif int targetNetworkId_; diff --git a/wifi/services/wifi_standard/wifi_framework/wifi_manage/wifi_sta_ext/BUILD.gn b/wifi/services/wifi_standard/wifi_framework/wifi_manage/wifi_sta_ext/BUILD.gn index 63691aeb5becc9a04d4e01361b0dcce147904b37..cf43c9c324c9dff71a821d16df8978452547910c 100644 --- a/wifi/services/wifi_standard/wifi_framework/wifi_manage/wifi_sta_ext/BUILD.gn +++ b/wifi/services/wifi_standard/wifi_framework/wifi_manage/wifi_sta_ext/BUILD.gn @@ -32,6 +32,7 @@ local_base_include_dirs = [ "$WIFI_ROOT_DIR/services/wifi_standard/wifi_framework/wifi_manage/wifi_common", "$WIFI_ROOT_DIR/services/wifi_standard/wifi_framework/wifi_manage/wifi_common/network_status_history", "$WIFI_ROOT_DIR/services/wifi_standard/wifi_framework/wifi_manage/wifi_native/common", + "$WIFI_ROOT_DIR/services/wifi_standard/wifi_framework/wifi_manage/wifi_pro", "$WIFI_ROOT_DIR/services/wifi_standard/wifi_framework/wifi_manage/wifi_self_cure", "$WIFI_ROOT_DIR/services/wifi_standard/wifi_framework/wifi_manage/wifi_sta_ext", "$WIFI_ROOT_DIR/services/wifi_standard/wifi_framework/wifi_manage/wifi_sta_ext/wifi_data_report", diff --git a/wifi/test/wifi_standard/wifi_framework/wifi_manage/wifi_pro/mock/mock_wifi_pro_interface.cpp b/wifi/test/wifi_standard/wifi_framework/wifi_manage/wifi_pro/mock/mock_wifi_pro_interface.cpp index 3132413203a48abf24cdb26c9d1a9cc1cd8ee10e..215b04f00d8cb3fb5b66a71ff1bb4dc8ef7fa5f1 100644 --- a/wifi/test/wifi_standard/wifi_framework/wifi_manage/wifi_pro/mock/mock_wifi_pro_interface.cpp +++ b/wifi/test/wifi_standard/wifi_framework/wifi_manage/wifi_pro/mock/mock_wifi_pro_interface.cpp @@ -73,5 +73,10 @@ StaServiceCallback WifiProInterface::GetStaCallback() const return staCallback_; } +bool WifiProInterface::IsWifi2WifiSwitching() const +{ + WIFI_LOGI("Enter WifiProInterface::IsWifi2WifiSwitching"); + return true; +} } // namespace Wifi } // namespace OHOS diff --git a/wifi/test/wifi_standard/wifi_framework/wifi_manage/wifi_pro/wifi_pro_interface_test.cpp b/wifi/test/wifi_standard/wifi_framework/wifi_manage/wifi_pro/wifi_pro_interface_test.cpp index 6771307e1047267a86a5b3860423cc40099b4bd1..2f49b7fbd9c8c289cdc5219827fa628c2a3e8ee5 100644 --- a/wifi/test/wifi_standard/wifi_framework/wifi_manage/wifi_pro/wifi_pro_interface_test.cpp +++ b/wifi/test/wifi_standard/wifi_framework/wifi_manage/wifi_pro/wifi_pro_interface_test.cpp @@ -99,5 +99,11 @@ HWTEST_F(WifiProInterfaceTest, GetStaCallbackTest01, TestSize.Level1) wifiProInterface_->GetStaCallback(); EXPECT_NE(wifiProInterface_->instId_, TEN); } + +HWTEST_F(WifiProInterfaceTest, IsWifi2WifiSwitchingTest01, TestSize.Level1) +{ + wifiProInterface_->IsWifi2WifiSwitching(); + EXPECT_NE(wifiProInterface_->instId_, TEN); +} } // namespace Wifi } // namespace OHOS \ No newline at end of file diff --git a/wifi/test/wifi_standard/wifi_framework/wifi_manage/wifi_pro/wifi_pro_state_machine_test.cpp b/wifi/test/wifi_standard/wifi_framework/wifi_manage/wifi_pro/wifi_pro_state_machine_test.cpp index eed9358319664c7de2788fc3e8b437e65804fcec..b7e46abae36c72185410bceb21edaa457b600a94 100644 --- a/wifi/test/wifi_standard/wifi_framework/wifi_manage/wifi_pro/wifi_pro_state_machine_test.cpp +++ b/wifi/test/wifi_standard/wifi_framework/wifi_manage/wifi_pro/wifi_pro_state_machine_test.cpp @@ -310,6 +310,19 @@ HWTEST_F(WifiProStateMachineTest, TryNoNetSwitchTest, TestSize.Level1) EXPECT_NE(pWifiProStateMachine_->wifiSwitchReason_, TEN); } +HWTEST_F(WifiProStateMachineTest, FullScanTest, TestSize.Level1) +{ + pWifiProStateMachine_->FullScan(); + EXPECT_NE(pWifiProStateMachine_->wifiSwitchReason_, TEN); +} + +HWTEST_F(WifiProStateMachineTest, IsWifi2WifiSwitchingTest, TestSize.Level1) +{ + pWifiProStateMachine_->isWifi2WifiSwitching_ = false; + pWifiProStateMachine_->IsWifi2WifiSwitching(); + EXPECT_EQ(pWifiProStateMachine_->isWifi2WifiSwitching_, false); +} + HWTEST_F(WifiProStateMachineTest, WifiProEnableStateTransitionNetStateTest01, TestSize.Level1) { wifiProEnableState_->pWifiProStateMachine_ = new WifiProStateMachine(); diff --git a/wifi/test/wifi_standard/wifi_framework/wifi_manage/wifi_sta/Mock/mock_sta_interface.cpp b/wifi/test/wifi_standard/wifi_framework/wifi_manage/wifi_sta/Mock/mock_sta_interface.cpp index e180d7e1ad9db4cfd00dad03f6831a6f176d5ac8..dd8afbbc773d35b6219a4b71f40270f17672bbed 100644 --- a/wifi/test/wifi_standard/wifi_framework/wifi_manage/wifi_sta/Mock/mock_sta_interface.cpp +++ b/wifi/test/wifi_standard/wifi_framework/wifi_manage/wifi_sta/Mock/mock_sta_interface.cpp @@ -270,6 +270,12 @@ ErrCode StaInterface::HandleForegroundAppChangedAction(const AppExecFwk::AppStat WIFI_LOGD("Enter HandleForegroundAppChangedAction"); return WIFI_OPT_SUCCESS; } + +ErrCode StaInterface::SetWifiProService(IWifiProService *wifiProService) +{ + WIFI_LOGI("Enter wifiProService"); + return WIFI_OPT_SUCCESS; +} #endif ErrCode StaInterface::EnableHiLinkHandshake(bool uiFlag, const WifiDeviceConfig &config, const std::string &bssid) diff --git a/wifi/test/wifi_standard/wifi_framework/wifi_manage/wifi_sta/sta_service_test.cpp b/wifi/test/wifi_standard/wifi_framework/wifi_manage/wifi_sta/sta_service_test.cpp index 0ad5716e677a4cd59cf216f63d1737104b7a1d30..9e45264146522e2ee2e71aed929c13cc29bb59e8 100644 --- a/wifi/test/wifi_standard/wifi_framework/wifi_manage/wifi_sta/sta_service_test.cpp +++ b/wifi/test/wifi_standard/wifi_framework/wifi_manage/wifi_sta/sta_service_test.cpp @@ -138,6 +138,7 @@ public: void OnWifiCountryCodeChangedTest(); void StartPortalCertificationTest(); void HandleForegroundAppChangedActionTest(); + void SetWifiProServiceTest(); void EnableHiLinkHandshakeTest(); void DeliverStaIfaceDataTest(); void StartConnectToBssidTest(); @@ -807,7 +808,17 @@ void StaServiceTest::StartPortalCertificationTest() void StaServiceTest::HandleForegroundAppChangedActionTest() { AppExecFwk::AppStateData appData; +#ifndef OHOS_ARCH_LITE pStaService->HandleForegroundAppChangedAction(appData); +#endif +} + +void StaServiceTest::SetWifiProServiceTest() +{ + IWifiProService *pWifiProService = nullptr; +#ifndef OHOS_ARCH_LITE + pStaService->SetWifiProService(pWifiProService); +#endif } void StaServiceTest::EnableHiLinkHandshakeTest() @@ -1237,6 +1248,12 @@ HWTEST_F(StaServiceTest, HandleForegroundAppChangedActionTest, TestSize.Level0) EXPECT_FALSE(g_errLog.find("callback")!=std::string::npos); } +HWTEST_F(StaServiceTest, SetWifiProServiceTestTest, TestSize.Level0) +{ + SetWifiProServiceTest(); + EXPECT_FALSE(g_errLog.find("callback")!=std::string::npos); +} + HWTEST_F(StaServiceTest, EnableHiLinkHandshakeTest, TestSize.Level0) { EnableHiLinkHandshakeTest(); diff --git a/wifi/test/wifi_standard/wifi_framework/wifi_manage/wifi_sta/sta_state_machine_test.cpp b/wifi/test/wifi_standard/wifi_framework/wifi_manage/wifi_sta/sta_state_machine_test.cpp index 07eb14442095b85e0cae82c2ffb3dbd6386a3ec4..dbfba1b373d27103cfcdfc383a01e7083c0f7e08 100644 --- a/wifi/test/wifi_standard/wifi_framework/wifi_manage/wifi_sta/sta_state_machine_test.cpp +++ b/wifi/test/wifi_standard/wifi_framework/wifi_manage/wifi_sta/sta_state_machine_test.cpp @@ -1328,6 +1328,14 @@ public: pStaStateMachine->HandleForegroundAppChangedAction(msg); } + void SetWifiProServiceTest() + { + IWifiProService *pWifiProService = nullptr; +#ifndef OHOS_ARCH_LITE + pStaStateMachine->SetWifiProService(pWifiProService); +#endif + } + void DealSignalPacketChangedTest() { pStaStateMachine->linkedInfo.lastTxPackets = -1; @@ -2383,6 +2391,18 @@ HWTEST_F(StaStateMachineTest, DealSignalPollResultTest, TestSize.Level1) DealSignalPollResultTest(); } +/** + * @tc.name: SetWifiProServiceTest + * @tc.desc: SetWifiProService() + * @tc.type: FUNC + * @tc.require: issue +*/ +HWTEST_F(StaStateMachineTest, SetWifiProServiceTest, TestSize.Level1) +{ + SetWifiProServiceTest(); + EXPECT_FALSE(g_errLog.find("service is null")!=std::string::npos); +} + /** * @tc.name: HandleForegroundAppChangedActionTest * @tc.desc: HandleForegroundAppChangedAction()