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