/* * Copyright (c) 2020-2021 Huawei Device Co., Ltd. * * HDF is dual licensed: you can use it either under the terms of * the GPL, or the BSD license, at your option. * See the LICENSE file in the root of this repository for complete details. */ /** * @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 hdf_wifi_product.h * * @brief Declares the data structure of the WLAN module. * * @since 1.0 * @version 1.0 */ #ifndef HDFLITE_HDF_WIFI_PRODUCT_H #define HDFLITE_HDF_WIFI_PRODUCT_H #include "hdf_device_desc.h" #include "hdf_wlan_config.h" #include "hdf_wlan_power_manager.h" #include "hdf_wlan_reset_manager.h" #include "hdf_ibus_intf.h" #ifdef __cplusplus extern "C" { #endif /** * @brief Defines the WLAN chip manufacturer. * * @since 1.0 * @version 1.0 */ struct HdfWlanManufacturer { int32_t vendorId; /**< Vendor ID of the chip */ int32_t deviceId; /**< Device ID of the chip */ }; /** * @brief Indicates the maximum number of interfaces. * * The value is 32. * @since 1.0 * @version 1.0 */ #define MAX_IF_COUNT 32 /** * @brief Defines the WLAN device. * * @since 1.0 */ struct HdfWlanDevice { uint8_t id; const char *driverName; /**< Driver name */ const char *chipName; /**< Chip name */ uint32_t netIfMap; /**< WLAN device bitmap */ struct HdfWlanManufacturer manufacturer; /**< WLAN device manufacturer */ struct ResetManager *reset; /**< Chip reset management API */ struct PowerManager *powers; /**< Chip power management APIs */ struct BusDev *bus; }; /** * @brief Initializes the WLAN module. * * @param device Indicates the pointer to the Hardware Driver Foundation (HDF) device. * @param config Indicates the pointer to the WLAN module configuration generated by * the HDF Configuration Source (HCS). * * @return Returns 0 if the WLAN module is initialized; returns a negative value otherwise. * * @since 1.0 * @version 1.0 */ int HdfWlanInitProduct(struct HdfDeviceObject *device, const struct HdfConfigWlanModuleConfig *config); /** * @brief Obtains the data structure of the WLAN module. * * @return Returns the data structure if obtained; returns NULL otherwise. * * @since 1.0 * @version 1.0 */ struct WifiModule* HdfWlanGetModule(void); /** * @brief Obtains the HdfWlanDevice structure. * * @param chipId Indicates the chip ID. * * @return Returns the pointer to the HdfWlanDevice structure if obtained; returns NULL otherwise. * * @since 1.1 * @version 1.0 */ struct HdfWlanDevice *HdfWlanGetWlanDevice(uint8_t chipId); /** * @brief Sends a broadcast event. * * @param id Indicates the ID of the event to send. * @param data Indicates the pointer to the event information. * * @return Returns 0 if the broadcast event is sent; returns a negative value otherwise. * * @since 1.0 * @version 1.0 */ int HdfWlanSendBroadcastEvent(uint32_t id, const struct HdfSBuf *data); /** * @brief Adds a WLAN device. * * @param device Indicates the pointer to the device to add. * * @return Returns 0 if the WLAN device is added; returns a negative value otherwise. * * @since 1.0 * @version 1.0 */ int HdfWlanAddDevice(struct HdfWlanDevice *device); /** * @brief Deinitializes the WLAN module. * * @since 1.0 * @version 1.0 */ void HdfWlanDeinitProduct(void); #ifdef __cplusplus } #endif #endif // HDFLITE_HDF_WIFI_PRODUCT_H /** @} */