1094332d3Sopenharmony_ci/* 2094332d3Sopenharmony_ci * Copyright (c) 2024 Huawei Device Co., Ltd. 3094332d3Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 4094332d3Sopenharmony_ci * you may not use this file except in compliance with the License. 5094332d3Sopenharmony_ci * You may obtain a copy of the License at 6094332d3Sopenharmony_ci * 7094332d3Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 8094332d3Sopenharmony_ci * 9094332d3Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 10094332d3Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 11094332d3Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12094332d3Sopenharmony_ci * See the License for the specific language governing permissions and 13094332d3Sopenharmony_ci * limitations under the License. 14094332d3Sopenharmony_ci */ 15094332d3Sopenharmony_ci 16094332d3Sopenharmony_ci#include "wifi_ap_iface.h" 17094332d3Sopenharmony_ci#include <hdf_log.h> 18094332d3Sopenharmony_ci 19094332d3Sopenharmony_cinamespace OHOS { 20094332d3Sopenharmony_cinamespace HDI { 21094332d3Sopenharmony_cinamespace Wlan { 22094332d3Sopenharmony_cinamespace Chip { 23094332d3Sopenharmony_cinamespace V1_0 { 24094332d3Sopenharmony_ciWifiApIface::WifiApIface( 25094332d3Sopenharmony_ci const std::string& ifname, const std::vector<std::string>& instances, 26094332d3Sopenharmony_ci const std::weak_ptr<WifiVendorHal> vendorHal, 27094332d3Sopenharmony_ci const std::weak_ptr<IfaceUtil> ifaceUtil) 28094332d3Sopenharmony_ci : ifname_(ifname), 29094332d3Sopenharmony_ci instances_(instances), 30094332d3Sopenharmony_ci vendorHal_(vendorHal), 31094332d3Sopenharmony_ci ifaceUtil_(ifaceUtil), 32094332d3Sopenharmony_ci isValid_(true) {} 33094332d3Sopenharmony_ci 34094332d3Sopenharmony_civoid WifiApIface::Invalidate() 35094332d3Sopenharmony_ci{ 36094332d3Sopenharmony_ci vendorHal_.reset(); 37094332d3Sopenharmony_ci isValid_ = false; 38094332d3Sopenharmony_ci} 39094332d3Sopenharmony_ci 40094332d3Sopenharmony_cibool WifiApIface::IsValid() 41094332d3Sopenharmony_ci{ 42094332d3Sopenharmony_ci return isValid_; 43094332d3Sopenharmony_ci} 44094332d3Sopenharmony_ci 45094332d3Sopenharmony_cistd::string WifiApIface::GetName() 46094332d3Sopenharmony_ci{ 47094332d3Sopenharmony_ci return ifname_; 48094332d3Sopenharmony_ci} 49094332d3Sopenharmony_ci 50094332d3Sopenharmony_civoid WifiApIface::RemoveInstance(std::string instance) 51094332d3Sopenharmony_ci{ 52094332d3Sopenharmony_ci instances_.erase(std::remove(instances_.begin(), instances_.end(), instance), instances_.end()); 53094332d3Sopenharmony_ci} 54094332d3Sopenharmony_ci 55094332d3Sopenharmony_ciint32_t WifiApIface::GetIfaceType(IfaceType& type) 56094332d3Sopenharmony_ci{ 57094332d3Sopenharmony_ci type = IfaceType::AP; 58094332d3Sopenharmony_ci return HDF_SUCCESS; 59094332d3Sopenharmony_ci} 60094332d3Sopenharmony_ci 61094332d3Sopenharmony_ciint32_t WifiApIface::GetIfaceName(std::string& name) 62094332d3Sopenharmony_ci{ 63094332d3Sopenharmony_ci name = ifname_; 64094332d3Sopenharmony_ci return HDF_SUCCESS; 65094332d3Sopenharmony_ci} 66094332d3Sopenharmony_ci 67094332d3Sopenharmony_ciint32_t WifiApIface::GetSupportFreqs(int band, std::vector<uint32_t>& frequencies) 68094332d3Sopenharmony_ci{ 69094332d3Sopenharmony_ci WifiError status; 70094332d3Sopenharmony_ci std::vector<uint32_t> validFrequencies; 71094332d3Sopenharmony_ci std::tie(status, validFrequencies) = vendorHal_.lock()->GetValidFrequenciesForBand( 72094332d3Sopenharmony_ci instances_.size() > 0 ? instances_[0] : ifname_, band); 73094332d3Sopenharmony_ci frequencies = validFrequencies; 74094332d3Sopenharmony_ci if (status == HAL_SUCCESS) { 75094332d3Sopenharmony_ci return HDF_SUCCESS; 76094332d3Sopenharmony_ci } 77094332d3Sopenharmony_ci return HDF_FAILURE; 78094332d3Sopenharmony_ci} 79094332d3Sopenharmony_ci 80094332d3Sopenharmony_ciint32_t WifiApIface::GetIfaceCap(uint32_t& capabilities) 81094332d3Sopenharmony_ci{ 82094332d3Sopenharmony_ci return HDF_ERR_NOT_SUPPORT; 83094332d3Sopenharmony_ci} 84094332d3Sopenharmony_ci 85094332d3Sopenharmony_ciint32_t WifiApIface::SetMacAddress(const std::string& mac) 86094332d3Sopenharmony_ci{ 87094332d3Sopenharmony_ci bool status = ifaceUtil_.lock()->SetMacAddress(ifname_, mac); 88094332d3Sopenharmony_ci if (!status) { 89094332d3Sopenharmony_ci return HDF_FAILURE; 90094332d3Sopenharmony_ci } 91094332d3Sopenharmony_ci return HDF_SUCCESS; 92094332d3Sopenharmony_ci} 93094332d3Sopenharmony_ci 94094332d3Sopenharmony_ciint32_t WifiApIface::SetCountryCode(const std::string& code) 95094332d3Sopenharmony_ci{ 96094332d3Sopenharmony_ci WifiError status = vendorHal_.lock()->SetCountryCode(ifname_, code); 97094332d3Sopenharmony_ci if (status != HAL_SUCCESS) { 98094332d3Sopenharmony_ci return HDF_FAILURE; 99094332d3Sopenharmony_ci } 100094332d3Sopenharmony_ci return HDF_SUCCESS; 101094332d3Sopenharmony_ci} 102094332d3Sopenharmony_ci 103094332d3Sopenharmony_ciint32_t WifiApIface::GetPowerMode(int32_t& powerMode) 104094332d3Sopenharmony_ci{ 105094332d3Sopenharmony_ci WifiError status; 106094332d3Sopenharmony_ci int mode; 107094332d3Sopenharmony_ci 108094332d3Sopenharmony_ci std::tie(status, mode) = vendorHal_.lock()->GetPowerMode(ifname_); 109094332d3Sopenharmony_ci if (status == HAL_SUCCESS) { 110094332d3Sopenharmony_ci powerMode = mode; 111094332d3Sopenharmony_ci return HDF_SUCCESS; 112094332d3Sopenharmony_ci } 113094332d3Sopenharmony_ci return HDF_FAILURE; 114094332d3Sopenharmony_ci} 115094332d3Sopenharmony_ci 116094332d3Sopenharmony_ciint32_t WifiApIface::SetPowerMode(int32_t powerMode) 117094332d3Sopenharmony_ci{ 118094332d3Sopenharmony_ci WifiError status = vendorHal_.lock()->SetPowerMode(ifname_, powerMode); 119094332d3Sopenharmony_ci if (status == HAL_SUCCESS) { 120094332d3Sopenharmony_ci return HDF_SUCCESS; 121094332d3Sopenharmony_ci } 122094332d3Sopenharmony_ci return HDF_FAILURE; 123094332d3Sopenharmony_ci} 124094332d3Sopenharmony_ci 125094332d3Sopenharmony_ciint32_t WifiApIface::RegisterChipIfaceCallBack(const sptr<IChipIfaceCallback>& chipIfaceCallback) 126094332d3Sopenharmony_ci{ 127094332d3Sopenharmony_ci return HDF_ERR_NOT_SUPPORT; 128094332d3Sopenharmony_ci} 129094332d3Sopenharmony_ci 130094332d3Sopenharmony_ciint32_t WifiApIface::UnRegisterChipIfaceCallBack(const sptr<IChipIfaceCallback>& chipIfaceCallback) 131094332d3Sopenharmony_ci{ 132094332d3Sopenharmony_ci return HDF_ERR_NOT_SUPPORT; 133094332d3Sopenharmony_ci} 134094332d3Sopenharmony_ci 135094332d3Sopenharmony_ciint32_t WifiApIface::StartScan(const ScanParams& scanParam) 136094332d3Sopenharmony_ci{ 137094332d3Sopenharmony_ci return HDF_ERR_NOT_SUPPORT; 138094332d3Sopenharmony_ci} 139094332d3Sopenharmony_ci 140094332d3Sopenharmony_ciint32_t WifiApIface::GetScanInfos(std::vector<ScanResultsInfo>& scanResultsInfo) 141094332d3Sopenharmony_ci{ 142094332d3Sopenharmony_ci return HDF_ERR_NOT_SUPPORT; 143094332d3Sopenharmony_ci} 144094332d3Sopenharmony_ci 145094332d3Sopenharmony_ciint32_t WifiApIface::StartPnoScan(const PnoScanParams& pnoParams) 146094332d3Sopenharmony_ci{ 147094332d3Sopenharmony_ci return HDF_ERR_NOT_SUPPORT; 148094332d3Sopenharmony_ci} 149094332d3Sopenharmony_ci 150094332d3Sopenharmony_ciint32_t WifiApIface::StopPnoScan() 151094332d3Sopenharmony_ci{ 152094332d3Sopenharmony_ci return HDF_ERR_NOT_SUPPORT; 153094332d3Sopenharmony_ci} 154094332d3Sopenharmony_ci 155094332d3Sopenharmony_ciint32_t WifiApIface::GetSignalPollInfo(SignalPollResult& signalPollResult) 156094332d3Sopenharmony_ci{ 157094332d3Sopenharmony_ci return HDF_ERR_NOT_SUPPORT; 158094332d3Sopenharmony_ci} 159094332d3Sopenharmony_ci 160094332d3Sopenharmony_ciint32_t WifiApIface::EnablePowerMode(int32_t mode) 161094332d3Sopenharmony_ci{ 162094332d3Sopenharmony_ci return HDF_ERR_NOT_SUPPORT; 163094332d3Sopenharmony_ci} 164094332d3Sopenharmony_ci 165094332d3Sopenharmony_ciint32_t WifiApIface::SetDpiMarkRule(int32_t uid, int32_t protocol, int32_t enable) 166094332d3Sopenharmony_ci{ 167094332d3Sopenharmony_ci return HDF_ERR_NOT_SUPPORT; 168094332d3Sopenharmony_ci} 169094332d3Sopenharmony_ci 170094332d3Sopenharmony_ciint32_t WifiApIface::SetTxPower(int32_t power) 171094332d3Sopenharmony_ci{ 172094332d3Sopenharmony_ci{ 173094332d3Sopenharmony_ci WifiError status = vendorHal_.lock()->SetTxPower(ifname_, power); 174094332d3Sopenharmony_ci return status; 175094332d3Sopenharmony_ci} 176094332d3Sopenharmony_ci} 177094332d3Sopenharmony_ci 178094332d3Sopenharmony_ciint32_t WifiApIface::SetIfaceState(bool state) 179094332d3Sopenharmony_ci{ 180094332d3Sopenharmony_ci if (ifaceUtil_.lock()->SetUpState(ifname_, state)) { 181094332d3Sopenharmony_ci return HDF_SUCCESS; 182094332d3Sopenharmony_ci } 183094332d3Sopenharmony_ci return HDF_FAILURE; 184094332d3Sopenharmony_ci} 185094332d3Sopenharmony_ci 186094332d3Sopenharmony_ciint32_t WifiApIface::SendCmdToDriver(const std::string& ifName, int32_t cmdId, const std::vector<int8_t>& paramBuf) 187094332d3Sopenharmony_ci{ 188094332d3Sopenharmony_ci WifiError status = vendorHal_.lock()->SendCmdToDriver(ifName, cmdId, paramBuf); 189094332d3Sopenharmony_ci if (status == HAL_SUCCESS) { 190094332d3Sopenharmony_ci return HDF_SUCCESS; 191094332d3Sopenharmony_ci } 192094332d3Sopenharmony_ci return HDF_FAILURE; 193094332d3Sopenharmony_ci} 194094332d3Sopenharmony_ci 195094332d3Sopenharmony_ciint32_t WifiApIface::SendActionFrame(const std::string& ifName, uint32_t freq, const std::vector<uint8_t>& frameData) 196094332d3Sopenharmony_ci{ 197094332d3Sopenharmony_ci return HDF_ERR_NOT_SUPPORT; 198094332d3Sopenharmony_ci} 199094332d3Sopenharmony_ci 200094332d3Sopenharmony_ciint32_t WifiApIface::RegisterActionFrameReceiver(const std::string& ifName, const std::vector<uint8_t>& match) 201094332d3Sopenharmony_ci{ 202094332d3Sopenharmony_ci return HDF_ERR_NOT_SUPPORT; 203094332d3Sopenharmony_ci} 204094332d3Sopenharmony_ci 205094332d3Sopenharmony_ciint32_t WifiApIface::GetCoexictenceChannelList(const std::string& ifName, std::vector<uint8_t>& paramBuf) 206094332d3Sopenharmony_ci{ 207094332d3Sopenharmony_ci return HDF_ERR_NOT_SUPPORT; 208094332d3Sopenharmony_ci} 209094332d3Sopenharmony_ci 210094332d3Sopenharmony_ci} 211094332d3Sopenharmony_ci} 212094332d3Sopenharmony_ci} 213094332d3Sopenharmony_ci} 214094332d3Sopenharmony_ci}