* Copyright (c) 2021 Huawei Device Co., Ltd.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
* @addtogroup WLAN
* @{
*
* @brief Provides cross-OS migration, component adaptation, and modular assembly and compilation.
*
* Based on the unified APIs provided by the WLAN module, developers of the Hardware Driver Interface
* (HDI) are capable of creating, disabling, scanning for, and connecting to WLAN hotspots, managing WLAN chips,
* network devices, and power, and applying for, releasing, and moving network data buffers.
*
* @since 1.0
* @version 1.0
*/
* @file wifi_hal_base_feature.h
*
* @brief Declares basic WLAN features.
*
* @since 1.0
* @version 1.0
*/
#ifndef WIFI_HAL_BASE_FEATURE_H
#define WIFI_HAL_BASE_FEATURE_H
#include <stdint.h>
#ifdef __cplusplus
#if __cplusplus
extern "C" {
#endif
#endif
* @brief Indicates the maximum length of the network interface name.
*
* @since 1.0
* @version 1.0
*/
#define IFNAME_MAX_LEN 16
* @brief Indicates the length of the MAC address.
*
* @since 1.0
* @version 1.0
*/
#define WIFI_MAC_ADDR_LENGTH 6
* @brief Defines the access failure error.
*
* @since 1.0
* @version 1.0
*/
#define ERR_UNAUTH_ACCESS (-6)
* @brief Enumerates feature types.
*
* @since 1.0
* @version 1.0
*/
typedef enum {
PROTOCOL_80211_IFTYPE_UNSPECIFIED,
PROTOCOL_80211_IFTYPE_ADHOC,
PROTOCOL_80211_IFTYPE_STATION,
PROTOCOL_80211_IFTYPE_AP,
PROTOCOL_80211_IFTYPE_AP_VLAN,
PROTOCOL_80211_IFTYPE_WDS,
PROTOCOL_80211_IFTYPE_MONITOR,
PROTOCOL_80211_IFTYPE_MESH_POINT,
PROTOCOL_80211_IFTYPE_P2P_CLIENT,
PROTOCOL_80211_IFTYPE_P2P_GO,
PROTOCOL_80211_IFTYPE_P2P_DEVICE,
PROTOCOL_80211_IFTYPE_NUM,
} FeatureType;
* @brief Defines basic WLAN features, such as obtaining the network interface name, setting the MAC address,
* and setting the transmit power.
*
* @since 1.0
* @version 1.0
*/
struct IWiFiBaseFeature {
char ifName[IFNAME_MAX_LEN];
int32_t type;
* @brief Obtains the name of a network interface.
*
* @param baseFeature Indicates the pointer to the basic feature, as described in {@link IWiFiBaseFeature}.
*
* @return Returns network interface name if the network interface name is obtained;
* returns NULL otherwise.
*
* @since 1.0
* @version 1.0
*/
const char *(*getNetworkIfaceName)(const struct IWiFiBaseFeature *baseFeature);
* @brief Obtains the type of a basic feature.
*
* @param baseFeature Indicates the pointer to the basic feature, as described in {@link IWiFiBaseFeature}.
*
* @return Returns feature type if the feature type is obtained; returns a negative value otherwise.
*
* @since 1.0
* @version 1.0
*/
int32_t (*getFeatureType)(const struct IWiFiBaseFeature *baseFeature);
* @brief Sets the MAC address.
*
* @param baseFeature Indicates the pointer to the basic feature, as described in {@link IWiFiBaseFeature}.
* @param mac Indicates the pointer to the MAC address.
* @param len Indicates the length of the MAC address.
*
* @return Returns <b>0</b> if the MAC address is set; returns a negative value otherwise.
*
* @since 1.0
* @version 1.0
*/
int32_t (*setMacAddress)(const struct IWiFiBaseFeature *baseFeature, unsigned char *mac, uint8_t len);
* @brief Obtains the device MAC address.
*
* @param baseFeature Indicates the pointer to the basic feature, as described in {@link IWiFiBaseFeature}.
* @param mac Indicates the pointer to the MAC address.
* @param len Indicates the length of the MAC address.
*
* @return Returns <b>0</b> if the MAC address is obtained; returns a negative value otherwise.
*
* @since 1.0
* @version 1.0
*/
int32_t (*getDeviceMacAddress)(const struct IWiFiBaseFeature *baseFeature, unsigned char *mac, uint8_t len);
* @brief Obtains the frequencies supported by the 2.4 GHz or 5 GHz band.
*
* @param baseFeature Indicates the pointer to the basic feature, as described in {@link IWiFiBaseFeature}.
* @param band Indicates the frequency band, either 2.4 GHz or 5 GHz.
* @param freqs Indicates the pointer to the supported frequencies.
* @param count Indicates the number of elements in the frequency array.
* @param num Indicates the number of supported frequencies.
*
* @return Returns <b>0</b> if the supported frequencies are obtained; returns a negative value otherwise.
*
* @since 1.0
* @version 1.0
*/
int32_t (*getValidFreqsWithBand)(const struct IWiFiBaseFeature *baseFeature, int32_t band, int32_t *freqs,
uint32_t count, uint32_t *num);
* @brief Sets the transmit power.
*
* @param baseFeature Indicates the pointer to the basic feature, as described in {@link IWiFiBaseFeature}.
* @param power Indicates the transmit power to set.
*
* @return Returns <b>0</b> if the transmit power is set; returns a negative value otherwise.
*
* @since 1.0
* @version 1.0
*/
int32_t (*setTxPower)(const struct IWiFiBaseFeature *baseFeature, int32_t power);
* @brief Obtains the chip ID of the current driver.
*
* @param baseFeature Indicates the pointer to the {@link IWiFiBaseFeature}.
* @param chipId Indicates the pointer to the chip ID.
*
* @return Returns <b>0</b> if the chip ID is obtained; returns a negative value otherwise.
*
* @since 1.0
* @version 1.0
*/
int32_t (*getChipId)(const struct IWiFiBaseFeature *baseFeature, uint8_t *chipId);
* @brief Obtains names of all the NICs of the current chip based on the chip ID.
*
* @param chipId Indicates the chip ID.
* @param ifNames Indicates the pointer to the NIC names.
* @param num Indicates the pointer to the number of NICs.
*
* @return Returns <b>0</b> if the NIC names are obtained; returns a negative value otherwise.
*
* @since 1.0
* @version 1.0
*/
int32_t (*getIfNamesByChipId)(const uint8_t chipId, char **ifNames, uint32_t *num);
* @brief reset to factory mac address(permanent hardware address).
*
* @param ifName Indicates the NIC name.
*
* @return Returns <b>0</b> if the operation is successful.
* @return Returns a negative value if the operation fails.
*
* @since 4.1
* @version 1.2
*/
int32_t (*resetToFactoryMacAddress)(const char *ifNames);
};
* @brief Initializes a specified basic feature. This function is called during {@link FeatureType} creation.
*
* @param fe Indicates the double pointer to the basic feature.
*
* @return Returns <b>0</b> if the operation is successful; returns a negative value representing {@link HDF_STATUS}
* if the operation fails.
*
* @since 1.0
* @version 1.0
*/
int32_t InitBaseFeature(struct IWiFiBaseFeature **fe);
#ifdef __cplusplus
#if __cplusplus
}
#endif
#endif
#endif