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_hal_fn.h" 17094332d3Sopenharmony_ci 18094332d3Sopenharmony_ciconst std::string VAILD_IFNAME = "wlan0"; 19094332d3Sopenharmony_ciconst std::string INVAILD_IFNAME = "wlan2"; 20094332d3Sopenharmony_ciconst int NAME_LEN = 5; 21094332d3Sopenharmony_ci 22094332d3Sopenharmony_ciWifiError VendorHalInit(wifiHandle *handle) 23094332d3Sopenharmony_ci{ 24094332d3Sopenharmony_ci return HAL_SUCCESS; 25094332d3Sopenharmony_ci} 26094332d3Sopenharmony_ci 27094332d3Sopenharmony_ciWifiError WaitDriverStart(void) 28094332d3Sopenharmony_ci{ 29094332d3Sopenharmony_ci return HAL_SUCCESS; 30094332d3Sopenharmony_ci} 31094332d3Sopenharmony_ci 32094332d3Sopenharmony_civoid VendorHalExit(wifiHandle handle, VendorHalExitHandler handler) 33094332d3Sopenharmony_ci{ 34094332d3Sopenharmony_ci HDF_LOGI("VendorHalExit enter"); 35094332d3Sopenharmony_ci} 36094332d3Sopenharmony_ci 37094332d3Sopenharmony_civoid StartHalLoop(wifiHandle handle) 38094332d3Sopenharmony_ci{ 39094332d3Sopenharmony_ci HDF_LOGI("StartHalLoop enter"); 40094332d3Sopenharmony_ci} 41094332d3Sopenharmony_ci 42094332d3Sopenharmony_ciWifiError VendorHalGetIfaces(wifiHandle handle, int *num, wifiInterfaceHandle **interfaces) 43094332d3Sopenharmony_ci{ 44094332d3Sopenharmony_ci return HAL_SUCCESS; 45094332d3Sopenharmony_ci} 46094332d3Sopenharmony_ci 47094332d3Sopenharmony_ciWifiError VendorHalGetIfName(wifiInterfaceHandle handle, char *name, size_t size) 48094332d3Sopenharmony_ci{ 49094332d3Sopenharmony_ci return HAL_SUCCESS; 50094332d3Sopenharmony_ci} 51094332d3Sopenharmony_ci 52094332d3Sopenharmony_ciWifiError VendorHalGetChannelsInBand(wifiInterfaceHandle handle, int band, 53094332d3Sopenharmony_ci std::vector<uint32_t>& freqs) 54094332d3Sopenharmony_ci{ 55094332d3Sopenharmony_ci if (band == 0) { 56094332d3Sopenharmony_ci return HAL_SUCCESS; 57094332d3Sopenharmony_ci } 58094332d3Sopenharmony_ci return HAL_UNKNOWN; 59094332d3Sopenharmony_ci} 60094332d3Sopenharmony_ci 61094332d3Sopenharmony_ciWifiError VendorHalSetRestartHandler(wifiHandle handle, VendorHalRestartHandler handler) 62094332d3Sopenharmony_ci{ 63094332d3Sopenharmony_ci return HAL_SUCCESS; 64094332d3Sopenharmony_ci} 65094332d3Sopenharmony_ci 66094332d3Sopenharmony_ciWifiError VendorHalCreateIface(wifiHandle handle, const char* ifname, HalIfaceType ifaceType) 67094332d3Sopenharmony_ci{ 68094332d3Sopenharmony_ci return HAL_SUCCESS; 69094332d3Sopenharmony_ci} 70094332d3Sopenharmony_ci 71094332d3Sopenharmony_ciWifiError VendorHalDeleteIface(wifiHandle handle, const char* ifname) 72094332d3Sopenharmony_ci{ 73094332d3Sopenharmony_ci if (strncmp(ifname, VAILD_IFNAME.c_str(), NAME_LEN) == 0) { 74094332d3Sopenharmony_ci return HAL_SUCCESS; 75094332d3Sopenharmony_ci } 76094332d3Sopenharmony_ci return HAL_NOT_SUPPORTED; 77094332d3Sopenharmony_ci} 78094332d3Sopenharmony_ci 79094332d3Sopenharmony_ciWifiError TriggerVendorHalRestart(wifiHandle handle) 80094332d3Sopenharmony_ci{ 81094332d3Sopenharmony_ci return HAL_SUCCESS; 82094332d3Sopenharmony_ci} 83094332d3Sopenharmony_ci 84094332d3Sopenharmony_cistatic WifiError WifiSetCountryCode(wifiInterfaceHandle handle, const char *countryCode) 85094332d3Sopenharmony_ci{ 86094332d3Sopenharmony_ci return HAL_SUCCESS; 87094332d3Sopenharmony_ci} 88094332d3Sopenharmony_ci 89094332d3Sopenharmony_ciWifiError GetPowerMode(const char *ifName, int *mode) 90094332d3Sopenharmony_ci{ 91094332d3Sopenharmony_ci return HAL_SUCCESS; 92094332d3Sopenharmony_ci} 93094332d3Sopenharmony_ci 94094332d3Sopenharmony_ciWifiError SetPowerMode(const char *ifName, int mode) 95094332d3Sopenharmony_ci{ 96094332d3Sopenharmony_ci return HAL_SUCCESS; 97094332d3Sopenharmony_ci} 98094332d3Sopenharmony_ci 99094332d3Sopenharmony_ciWifiError EnablePowerMode(const char *ifName, int mode) 100094332d3Sopenharmony_ci{ 101094332d3Sopenharmony_ci return HAL_SUCCESS; 102094332d3Sopenharmony_ci} 103094332d3Sopenharmony_ci 104094332d3Sopenharmony_cistatic WifiError WifiGetSignalInfo(wifiInterfaceHandle handle, 105094332d3Sopenharmony_ci OHOS::HDI::Wlan::Chip::V1_0::SignalPollResult& signalPollresult) 106094332d3Sopenharmony_ci{ 107094332d3Sopenharmony_ci return HAL_SUCCESS; 108094332d3Sopenharmony_ci} 109094332d3Sopenharmony_ci 110094332d3Sopenharmony_ciWifiError WifiSetDpiMarkRule(int32_t uid, int32_t protocol, int32_t enable) 111094332d3Sopenharmony_ci{ 112094332d3Sopenharmony_ci if (uid == 0) { 113094332d3Sopenharmony_ci return HAL_SUCCESS; 114094332d3Sopenharmony_ci } 115094332d3Sopenharmony_ci return HAL_INVALID_ARGS; 116094332d3Sopenharmony_ci} 117094332d3Sopenharmony_ci 118094332d3Sopenharmony_ciWifiError WifiStartScan(wifiInterfaceHandle handle, 119094332d3Sopenharmony_ci const OHOS::HDI::Wlan::Chip::V1_0::ScanParams& scanParam) 120094332d3Sopenharmony_ci{ 121094332d3Sopenharmony_ci if (scanParam.fastConnectFlag == 0) { 122094332d3Sopenharmony_ci return HAL_SUCCESS; 123094332d3Sopenharmony_ci } 124094332d3Sopenharmony_ci return HAL_INVALID_ARGS; 125094332d3Sopenharmony_ci} 126094332d3Sopenharmony_ci 127094332d3Sopenharmony_cistatic WifiError RegisterIfaceCallBack(const char *ifaceName, WifiCallbackHandler onCallbackEvent) 128094332d3Sopenharmony_ci{ 129094332d3Sopenharmony_ci if (ifaceName == nullptr) { 130094332d3Sopenharmony_ci HDF_LOGE("ifaceName is null"); 131094332d3Sopenharmony_ci return HAL_NONE; 132094332d3Sopenharmony_ci } 133094332d3Sopenharmony_ci return HAL_SUCCESS; 134094332d3Sopenharmony_ci} 135094332d3Sopenharmony_ci 136094332d3Sopenharmony_ciWifiError WifiGetScanInfo(wifiInterfaceHandle handle, 137094332d3Sopenharmony_ci std::vector<OHOS::HDI::Wlan::Chip::V1_0::ScanResultsInfo>& res) 138094332d3Sopenharmony_ci{ 139094332d3Sopenharmony_ci return HAL_SUCCESS; 140094332d3Sopenharmony_ci} 141094332d3Sopenharmony_ci 142094332d3Sopenharmony_ciWifiError WifiStartPnoScan(wifiInterfaceHandle handle, 143094332d3Sopenharmony_ci const OHOS::HDI::Wlan::Chip::V1_0::PnoScanParams& pnoScanParam) 144094332d3Sopenharmony_ci{ 145094332d3Sopenharmony_ci if (pnoScanParam.min2gRssi == 0) { 146094332d3Sopenharmony_ci return HAL_SUCCESS; 147094332d3Sopenharmony_ci } 148094332d3Sopenharmony_ci return HAL_INVALID_ARGS; 149094332d3Sopenharmony_ci} 150094332d3Sopenharmony_ci 151094332d3Sopenharmony_ciWifiError WifiStopPnoScan(wifiInterfaceHandle handle) 152094332d3Sopenharmony_ci{ 153094332d3Sopenharmony_ci return HAL_SUCCESS; 154094332d3Sopenharmony_ci} 155094332d3Sopenharmony_ci 156094332d3Sopenharmony_ciuint32_t WifiGetSupportedFeatureSet(const char *ifName) 157094332d3Sopenharmony_ci{ 158094332d3Sopenharmony_ci if (ifName == nullptr) { 159094332d3Sopenharmony_ci return 0; 160094332d3Sopenharmony_ci } 161094332d3Sopenharmony_ci if (strncmp(ifName, VAILD_IFNAME.c_str(), NAME_LEN) == 0) { 162094332d3Sopenharmony_ci return 1; 163094332d3Sopenharmony_ci } 164094332d3Sopenharmony_ci return 0; 165094332d3Sopenharmony_ci} 166094332d3Sopenharmony_ci 167094332d3Sopenharmony_ciuint32_t GetChipCaps(const char *ifName) 168094332d3Sopenharmony_ci{ 169094332d3Sopenharmony_ci if (ifName == nullptr) { 170094332d3Sopenharmony_ci return 0; 171094332d3Sopenharmony_ci } 172094332d3Sopenharmony_ci if (strncmp(ifName, VAILD_IFNAME.c_str(), NAME_LEN) == 0) { 173094332d3Sopenharmony_ci return 1; 174094332d3Sopenharmony_ci } 175094332d3Sopenharmony_ci return 0; 176094332d3Sopenharmony_ci} 177094332d3Sopenharmony_ci 178094332d3Sopenharmony_ciWifiError SetTxPower(const char *ifName, int mode) 179094332d3Sopenharmony_ci{ 180094332d3Sopenharmony_ci if (mode == 0) { 181094332d3Sopenharmony_ci return HAL_SUCCESS; 182094332d3Sopenharmony_ci } 183094332d3Sopenharmony_ci return HAL_INVALID_ARGS; 184094332d3Sopenharmony_ci} 185094332d3Sopenharmony_ci 186094332d3Sopenharmony_ciWifiError IsSupportCoex(bool& isCoex) 187094332d3Sopenharmony_ci{ 188094332d3Sopenharmony_ci isCoex = true; 189094332d3Sopenharmony_ci return HAL_SUCCESS; 190094332d3Sopenharmony_ci} 191094332d3Sopenharmony_ci 192094332d3Sopenharmony_ciWifiError InitWifiHalFuncTable(WifiHalFn *fn) 193094332d3Sopenharmony_ci{ 194094332d3Sopenharmony_ci if (fn == nullptr) { 195094332d3Sopenharmony_ci return HAL_UNKNOWN; 196094332d3Sopenharmony_ci } 197094332d3Sopenharmony_ci fn->vendorHalInit = VendorHalInit; 198094332d3Sopenharmony_ci fn->waitDriverStart = WaitDriverStart; 199094332d3Sopenharmony_ci fn->vendorHalExit = VendorHalExit; 200094332d3Sopenharmony_ci fn->startHalLoop = StartHalLoop; 201094332d3Sopenharmony_ci fn->vendorHalGetIfaces = VendorHalGetIfaces; 202094332d3Sopenharmony_ci fn->vendorHalGetIfName = VendorHalGetIfName; 203094332d3Sopenharmony_ci fn->vendorHalGetChannelsInBand = VendorHalGetChannelsInBand; 204094332d3Sopenharmony_ci fn->vendorHalSetRestartHandler = VendorHalSetRestartHandler; 205094332d3Sopenharmony_ci fn->vendorHalCreateIface = VendorHalCreateIface; 206094332d3Sopenharmony_ci fn->vendorHalDeleteIface = VendorHalDeleteIface; 207094332d3Sopenharmony_ci fn->triggerVendorHalRestart = TriggerVendorHalRestart; 208094332d3Sopenharmony_ci fn->wifiSetCountryCode = WifiSetCountryCode; 209094332d3Sopenharmony_ci fn->getPowerMode = GetPowerMode; 210094332d3Sopenharmony_ci fn->setPowerMode = SetPowerMode; 211094332d3Sopenharmony_ci fn->enablePowerMode = EnablePowerMode; 212094332d3Sopenharmony_ci fn->getSignalPollInfo = WifiGetSignalInfo; 213094332d3Sopenharmony_ci fn->setDpiMarkRule = WifiSetDpiMarkRule; 214094332d3Sopenharmony_ci fn->wifiStartScan = WifiStartScan; 215094332d3Sopenharmony_ci fn->registerIfaceCallBack = RegisterIfaceCallBack; 216094332d3Sopenharmony_ci fn->getScanResults = WifiGetScanInfo; 217094332d3Sopenharmony_ci fn->wifiStartPnoScan = WifiStartPnoScan; 218094332d3Sopenharmony_ci fn->wifiStopPnoScan = WifiStopPnoScan; 219094332d3Sopenharmony_ci fn->wifiGetSupportedFeatureSet = WifiGetSupportedFeatureSet; 220094332d3Sopenharmony_ci fn->getChipCaps = GetChipCaps; 221094332d3Sopenharmony_ci fn->setTxPower = SetTxPower; 222094332d3Sopenharmony_ci fn->isSupportCoex = IsSupportCoex; 223094332d3Sopenharmony_ci return HAL_SUCCESS; 224094332d3Sopenharmony_ci}