diff --git a/wifi/frameworks/native/src/wifi_device_proxy.cpp b/wifi/frameworks/native/src/wifi_device_proxy.cpp index 9a2b7eccd51efc55efa0d3f3ec7fd22370c81172..5071bfe651373e4b6d883c51055313096d50fc0f 100644 --- a/wifi/frameworks/native/src/wifi_device_proxy.cpp +++ b/wifi/frameworks/native/src/wifi_device_proxy.cpp @@ -1367,6 +1367,8 @@ void WifiDeviceProxy::ReadLinkedInfo(MessageParcel &reply, WifiLinkedInfo &info) info.lastTxPackets = reply.ReadInt32(); info.wifiLinkType = static_cast(reply.ReadInt32()); info.linkId = reply.ReadInt32(); + info.centerFrequency0 = reply.ReadInt32(); + info.centerFrequency1 = reply.ReadInt32(); } void WifiDeviceProxy::ReadWifiSignalPollInfo(MessageParcel &reply, std::vector &wifiSignalPollInfos) diff --git a/wifi/interfaces/inner_api/wifi_msg.h b/wifi/interfaces/inner_api/wifi_msg.h index 1098bfcca71e14724b97f82f37d1cef3021443cd..77b2ec0fe32074c002f9df45e795dbd3f1e9f8ee 100644 --- a/wifi/interfaces/inner_api/wifi_msg.h +++ b/wifi/interfaces/inner_api/wifi_msg.h @@ -283,6 +283,8 @@ struct WifiLinkedInfo { int c0Rssi; int c1Rssi; int linkId; + int centerFrequency0; /* 40M center frequency */ + int centerFrequency1; /* 160M center frequency */ WifiLinkedInfo() { networkId = INVALID_NETWORK_ID; @@ -317,6 +319,8 @@ struct WifiLinkedInfo { c0Rssi = 0; c1Rssi = 0; linkId = INVALID_LINK_ID; + centerFrequency0 = 0; + centerFrequency1 = 0; } }; 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 960dd2e5fc4648440ef3c5a80bf3d2ae609a8de8..f8e44d431de3914700d3db08e3ea9feca62f1b3e 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 @@ -414,7 +414,7 @@ void StaStateMachine::InitState::HandleNetworkConnectionEvent(InternalMessagePtr #ifndef OHOS_ARCH_LITE pStaStateMachine->SaveWifiConfigForUpdate(pStaStateMachine->targetNetworkId_); - pStaStateMachine->UpdateWifiCategory(); + pStaStateMachine->UpdateLinkedInfoFromScanInfo(); pStaStateMachine->SetSupportedWifiCategory(); #endif pStaStateMachine->DealMloConnectionLinkInfo(); @@ -1419,7 +1419,7 @@ void StaStateMachine::ApLinkedState::HandleStaBssidChangedEvent(InternalMessageP pStaStateMachine->UpdateLinkedBssid(bssid); #ifndef OHOS_ARCH_LITE pStaStateMachine->ResetWifi7WurInfo(); - pStaStateMachine->UpdateWifiCategory(); + pStaStateMachine->UpdateLinkedInfoFromScanInfo(); pStaStateMachine->SetSupportedWifiCategory(); #endif pStaStateMachine->DealMloConnectionLinkInfo(); @@ -3714,9 +3714,9 @@ void StaStateMachine::UpdateLinkedBssid(std::string &bssid) } #ifndef OHOS_ARCH_LITE -void StaStateMachine::UpdateWifiCategory() +void StaStateMachine::UpdateLinkedInfoFromScanInfo() { - WIFI_LOGI("UpdateWifiCategory"); + WIFI_LOGI("UpdateLinkedInfoFromScanInfo"); std::vector scanInfos; if (WifiStaHalInterface::GetInstance().QueryScanInfos( WifiConfigCenter::GetInstance().GetStaIfaceName(m_instId), scanInfos) != WIFI_HAL_OPT_OK) { @@ -3732,13 +3732,23 @@ void StaStateMachine::UpdateWifiCategory() WifiConfigCenter::GetInstance().GetStaIfaceName(m_instId), chipsetFeatrureCapability) != WIFI_HAL_OPT_OK) { WIFI_LOGE("GetChipsetWifiFeatrureCapability failed.\n"); } - if (enhanceService_ != nullptr) { - for (auto iter = scanInfos.begin(); iter != scanInfos.end(); iter++) { + + for (auto iter = scanInfos.begin(); iter != scanInfos.end(); iter++) { + if (enhanceService_ != nullptr) { WifiCategory category = enhanceService_->GetWifiCategory(iter->infoElems, chipsetCategory, chipsetFeatrureCapability); WifiConfigCenter::GetInstance().GetWifiScanConfig()->RecordWifiCategory(iter->bssid, category); - if (iter->bssid == linkedInfo.bssid) { - linkedInfo.channelWidth = iter->channelWidth; + } + + if (iter->bssid == linkedInfo.bssid) { + linkedInfo.channelWidth = iter->channelWidth; + LOGI("centerFrequency0:%{public}d, centerFrequency1:%{public}d.", + iter->centerFrequency0, iter->centerFrequency1); + if ((iter->centerFrequency0 != 0) && (linkedInfo.centerFrequency0 != iter->centerFrequency0)) { + linkedInfo.centerFrequency0 = iter->centerFrequency0; + } + if ((iter->centerFrequency1 != 0) && (linkedInfo.centerFrequency1 != iter->centerFrequency1)) { + linkedInfo.centerFrequency1 = iter->centerFrequency1; } } } 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 0b7ae295f609f7832e4ca536200f3aa947d0f7b8..01105e55d6b487591604184fc84b159f0df8981a 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 @@ -1018,7 +1018,7 @@ private: #ifndef OHOS_ARCH_LITE void ShowPortalNitification(); void ResetWifi7WurInfo(); - void UpdateWifiCategory(); + void UpdateLinkedInfoFromScanInfo(); void SetSupportedWifiCategory(); #endif void SetConnectMethod(int connectMethod); diff --git a/wifi/services/wifi_standard/wifi_framework/wifi_manage/wifi_sta_sa/wifi_device_stub.cpp b/wifi/services/wifi_standard/wifi_framework/wifi_manage/wifi_sta_sa/wifi_device_stub.cpp index 2ccfb2d2f899629f287e12fb8fcc4038bdd9cd1f..c963c8b1f7e66ae3de8f89512fa9055ff7826513 100644 --- a/wifi/services/wifi_standard/wifi_framework/wifi_manage/wifi_sta_sa/wifi_device_stub.cpp +++ b/wifi/services/wifi_standard/wifi_framework/wifi_manage/wifi_sta_sa/wifi_device_stub.cpp @@ -952,6 +952,8 @@ void WifiDeviceStub::WriteWifiLinkedInfo(MessageParcel &reply, const WifiLinkedI reply.WriteInt32(wifiInfo.lastTxPackets); reply.WriteInt32(static_cast(wifiInfo.wifiLinkType)); reply.WriteInt32(wifiInfo.linkId); + reply.WriteInt32(wifiInfo.centerFrequency0); + reply.WriteInt32(wifiInfo.centerFrequency1); } void WifiDeviceStub::OnGetLinkedInfo(uint32_t code, MessageParcel &data, MessageParcel &reply)