# drivers_peripheral_wlan **Repository Path**: BrokenHalberd/drivers_peripheral_wlan ## Basic Information - **Project Name**: drivers_peripheral_wlan - **Description**: No description available - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 39 - **Created**: 2021-03-23 - **Last Updated**: 2021-03-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # WLAN - [简介](#section11660541593) - [目录](#section161941989596) - [接口说明](#section1564411661810) - [使用说明](#section19806524151819) - [相关仓](#section1371113476307) ## 简介 该仓下主要包含WLAN相关HDI接口与实现,提供功能包括: 1. 创建和销毁HAL层和WLAN驱动的通道; 2. 获取本设备支持的WLAN特性; 3. 创建特性所对应的实例等。 **图 1** WLAN驱动模块架构图 ![](figures/wlan-driver-module-architecture_zh.png "wlan-driver-module-architecture_zh") ## 目录 WLAN源代码目录结构如下所示: ``` /drivers/peripheral/wlan ├── client # 实现用户态与内核态通信的client模块存放目录 │ └── include # client相关头文件存放目录 │ └── src # client代码存放目录 ├── hal # hal层框架代码 │ └── include # hal内部头文件存放目录 │ └── src # hal层代码的具体实现存放目录 ├── interfaces # 对外接口存放目录 │ └── include # 对外提供的接口头文件存放目录 ``` ## 接口说明 WLAN驱动HAL模块提供给Wi-Fi service可直接调用的能力接口,主要功能有:创建/销毁 IWiFi对象、设置MAC地址等。提供的部分接口说明如下表所示: **表 1** hal层对外接口

头文件

接口名称

功能描述

wifi_hal.h

int32_t WifiConstruct(struct IWiFi **wifiInstance);

创建IWiFi对象,提供IWiFi基本能力。

int32_t WifiDestruct(struct IWiFi **wifiInstance);

销毁IWiFi对象。

int32_t (*start)(struct IWiFi *);

创建HAL和驱动之间的通道及获取驱动支持的网卡信息。

int32_t (*stop)(struct IWiFi *);

销毁通道。

wifi_hal_base_feature.h

int32_t (*getFeatureType)(const struct IWiFiBaseFeature *);

获取特性的类型。

int32_t (*setMacAddress)(const struct IWiFiBaseFeature *, unsigned char *, uint8_t);

设置MAC地址。

int32_t (*getDeviceMacAddress)(const struct IWiFiBaseFeature *, unsigned char *, uint8_t);

获取设备持久化的MAC地址。

int32_t (*setTxPower)(const struct IWiFiBaseFeature *, int32_t);

设置发射功率。

## 使用说明 HAL模块使用步骤: 1. 使用WifiConstruct创建一个WiFi实体。 2. 用创建的WiFi实体调用start开启HAL和驱动之间的通道,获得驱动网卡信息。 3. 通过createFeature一个apFeature或者staFeature。后面可通过这些Feature去调用具体的实现接口,下面基于创建的apFeature。 4. 调用和使用相关接口:如setMacAddress设置MAC地址、getDeviceMacAddress获取设备的MAC地址等。 5. 调用destroyFeature,销毁掉创建的这个Feature。 6. 调用stop销毁创建的通道。 7. 执行WifiDestruct销毁创建的WiFi实体。 代码示例: ``` #include "wifi_hal.h" #include "wifi_hal_sta_feature.h" #include "wifi_hal_ap_feature.h" #include "wifi_hal_cmd.h" #include "wifi_hal_event.h" #define MAC_LEN 6 static void *hal_main() { int ret; struct IWiFi *wifi; /* 创建一个WiFi实体 */ ret = WifiConstruct(&wifi); if (ret != 0 || wifi == NULL) { return; } /* 开启HAL和驱动之间的通道 */ ret = wifi->start(wifi); if (ret != 0) { return; } /* 创建apFeature */ ret = wifi->createFeature(PROTOCOL_80211_IFTYPE_AP, (struct IWiFiBaseFeature **)&apFeature); if (ret != 0) { return; } /* 获取设备的MAC地址 */ unsigned char mac[MAC_LEN] = {0}; ret = apFeature->baseFeature.getDeviceMacAddress((struct IWiFiBaseFeature *)apFeature, mac, MAC_LEN); if (ret != 0) { return; } /* 销毁掉创建的这个Feature */ ret = wifi->destroyFeature((struct IWiFiBaseFeature *)apFeature); if (ret != 0) { return; } /* 销毁创建的通道 */ ret = wifi->stop(wifi); if (ret != 0) { return; } /* 销毁创建的WiFi实体 */ ret = WifiDestruct(&wifi); if (ret != 0) { return; } return; } ``` ## 相关仓 [驱动子系统](https://gitee.com/openharmony/docs/blob/master/zh-cn/readme/%E9%A9%B1%E5%8A%A8%E5%AD%90%E7%B3%BB%E7%BB%9F.md) [drivers\_framework](https://gitee.com/openharmony/drivers_framework/blob/master/README_zh.md)