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}