1094332d3Sopenharmony_ci/*
2094332d3Sopenharmony_ci * Copyright (c) 2021 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/**
17094332d3Sopenharmony_ci * @addtogroup WLAN
18094332d3Sopenharmony_ci * @{
19094332d3Sopenharmony_ci *
20094332d3Sopenharmony_ci * @brief Provides cross-OS migration, component adaptation, and modular assembly and compilation.
21094332d3Sopenharmony_ci *
22094332d3Sopenharmony_ci * Based on the unified APIs provided by the WLAN module, developers of the Hardware Driver Interface
23094332d3Sopenharmony_ci * (HDI) are capable of creating, disabling, scanning for, and connecting to WLAN hotspots, managing WLAN chips,
24094332d3Sopenharmony_ci * network devices, and power, and applying for, releasing, and moving network data buffers.
25094332d3Sopenharmony_ci *
26094332d3Sopenharmony_ci * @since 1.0
27094332d3Sopenharmony_ci * @version 1.0
28094332d3Sopenharmony_ci */
29094332d3Sopenharmony_ci
30094332d3Sopenharmony_ci/**
31094332d3Sopenharmony_ci * @file wifi_hal_sta_feature.h
32094332d3Sopenharmony_ci *
33094332d3Sopenharmony_ci * @brief Declares WLAN station (STA) features.
34094332d3Sopenharmony_ci *
35094332d3Sopenharmony_ci * @since 1.0
36094332d3Sopenharmony_ci * @version 1.0
37094332d3Sopenharmony_ci */
38094332d3Sopenharmony_ci
39094332d3Sopenharmony_ci#ifndef WIFI_HAL_STA_FEATURE_H
40094332d3Sopenharmony_ci#define WIFI_HAL_STA_FEATURE_H
41094332d3Sopenharmony_ci
42094332d3Sopenharmony_ci#include "wifi_hal_base_feature.h"
43094332d3Sopenharmony_ci#include "wifi_driver_client.h"
44094332d3Sopenharmony_ci
45094332d3Sopenharmony_ci#ifdef __cplusplus
46094332d3Sopenharmony_ci#if __cplusplus
47094332d3Sopenharmony_ciextern "C" {
48094332d3Sopenharmony_ci#endif
49094332d3Sopenharmony_ci#endif
50094332d3Sopenharmony_ci
51094332d3Sopenharmony_ci/**
52094332d3Sopenharmony_ci * @brief Inherits the basic features of {@link IWiFiBaseFeature} and additionally provides the feature of setting
53094332d3Sopenharmony_ci * scanning for a single MAC address.
54094332d3Sopenharmony_ci *
55094332d3Sopenharmony_ci * @since 1.0
56094332d3Sopenharmony_ci * @version 1.0
57094332d3Sopenharmony_ci */
58094332d3Sopenharmony_cistruct IWiFiSta {
59094332d3Sopenharmony_ci    struct IWiFiBaseFeature baseFeature;  /**< Basic features of {@link IWiFiBaseFeature} */
60094332d3Sopenharmony_ci
61094332d3Sopenharmony_ci    /**
62094332d3Sopenharmony_ci     * @brief Sets scanning for a single MAC address.
63094332d3Sopenharmony_ci     *
64094332d3Sopenharmony_ci     * @param staFeature Indicates the pointer to the STA feature, as described in {@link IWiFiSta}.
65094332d3Sopenharmony_ci     * @param scanMac Indicates the pointer to the MAC address to scan for.
66094332d3Sopenharmony_ci     * @param len Indicates the length of the MAC address.
67094332d3Sopenharmony_ci     *
68094332d3Sopenharmony_ci     * @return Returns <b>0</b> if scanning for the MAC address is successfully set; returns a negative value otherwise.
69094332d3Sopenharmony_ci     *
70094332d3Sopenharmony_ci     * @since 1.0
71094332d3Sopenharmony_ci     * @version 1.0
72094332d3Sopenharmony_ci     */
73094332d3Sopenharmony_ci    int32_t (*setScanningMacAddress)(const struct IWiFiSta *staFeature, unsigned char *scanMac, uint8_t len);
74094332d3Sopenharmony_ci
75094332d3Sopenharmony_ci    /**
76094332d3Sopenharmony_ci     * @brief wlan hal start scan.
77094332d3Sopenharmony_ci     *
78094332d3Sopenharmony_ci     * @param ifName The interface name.
79094332d3Sopenharmony_ci     * @param scan start scan with param.
80094332d3Sopenharmony_ci     *
81094332d3Sopenharmony_ci     * @return Returns <b>0</b> if start scan is successfully; returns a negative value otherwise.
82094332d3Sopenharmony_ci     *
83094332d3Sopenharmony_ci     * @since 1.0
84094332d3Sopenharmony_ci     * @version 1.0
85094332d3Sopenharmony_ci     */
86094332d3Sopenharmony_ci    int32_t (*startScan)(const char *ifName, WifiScan *scan);
87094332d3Sopenharmony_ci
88094332d3Sopenharmony_ci    /**
89094332d3Sopenharmony_ci     * @brief wlan hal start pno scan.
90094332d3Sopenharmony_ci     *
91094332d3Sopenharmony_ci     * @param ifName The interface name.
92094332d3Sopenharmony_ci     * @param pnoSettings pno scan parameters.
93094332d3Sopenharmony_ci     *
94094332d3Sopenharmony_ci     * @return Returns <b>0</b> if starting pno scan is successfully; returns a negative value otherwise.
95094332d3Sopenharmony_ci     *
96094332d3Sopenharmony_ci     * @since 4.0
97094332d3Sopenharmony_ci     * @version 1.1
98094332d3Sopenharmony_ci     */
99094332d3Sopenharmony_ci    int32_t (*startPnoScan)(const char *ifName, const WifiPnoSettings *pnoSettings);
100094332d3Sopenharmony_ci
101094332d3Sopenharmony_ci    /**
102094332d3Sopenharmony_ci     * @brief wlan hal start pno scan.
103094332d3Sopenharmony_ci     *
104094332d3Sopenharmony_ci     * @param ifName The interface name.
105094332d3Sopenharmony_ci     *
106094332d3Sopenharmony_ci     * @return Returns <b>0</b> if stopping pno scan is successfully; returns a negative value otherwise.
107094332d3Sopenharmony_ci     *
108094332d3Sopenharmony_ci     * @since 4.0
109094332d3Sopenharmony_ci     * @version 1.1
110094332d3Sopenharmony_ci     */
111094332d3Sopenharmony_ci    int32_t (*stopPnoScan)(const char *ifName);
112094332d3Sopenharmony_ci
113094332d3Sopenharmony_ci    /**
114094332d3Sopenharmony_ci     * @brief wlan hal get signal information.
115094332d3Sopenharmony_ci     *
116094332d3Sopenharmony_ci     * @param ifName The interface name.
117094332d3Sopenharmony_ci     * @param signalResult Signal information obtained.
118094332d3Sopenharmony_ci     *
119094332d3Sopenharmony_ci     * @return Returns <b>0</b> if getting signal information is successfully; returns a negative value otherwise.
120094332d3Sopenharmony_ci     *
121094332d3Sopenharmony_ci     * @since 4.0
122094332d3Sopenharmony_ci     * @version 1.1
123094332d3Sopenharmony_ci     */
124094332d3Sopenharmony_ci    int32_t (*getSignalPollInfo)(const char *ifName, struct SignalResult *signalResult);
125094332d3Sopenharmony_ci};
126094332d3Sopenharmony_ci
127094332d3Sopenharmony_ci/**
128094332d3Sopenharmony_ci * @brief Initializes a specified STA feature. This function is called during STA {@link FeatureType} creation.
129094332d3Sopenharmony_ci *
130094332d3Sopenharmony_ci * @param fe Indicates the double pointer to the STA feature.
131094332d3Sopenharmony_ci *
132094332d3Sopenharmony_ci * @return Returns <b>0</b> if the operation is successful; returns a negative value representing {@link HDF_STATUS}
133094332d3Sopenharmony_ci * if the operation fails.
134094332d3Sopenharmony_ci *
135094332d3Sopenharmony_ci * @since 1.0
136094332d3Sopenharmony_ci * @version 1.0
137094332d3Sopenharmony_ci */
138094332d3Sopenharmony_ciint32_t InitStaFeature(struct IWiFiSta **fe);
139094332d3Sopenharmony_ci
140094332d3Sopenharmony_ci#ifdef __cplusplus
141094332d3Sopenharmony_ci#if __cplusplus
142094332d3Sopenharmony_ci}
143094332d3Sopenharmony_ci#endif
144094332d3Sopenharmony_ci#endif
145094332d3Sopenharmony_ci
146094332d3Sopenharmony_ci#endif
147094332d3Sopenharmony_ci/** @} */
148