1 Star 0 Fork 4.9K

Cain / docs

forked from OpenHarmony / docs 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
WLAN开发概述.md 12.00 KB
一键复制 编辑 原始数据 按行查看 历史
wenjun 提交于 2020-09-08 10:08 . add OpenHarmony 1.0 baseline

WLAN开发概述

简介

WLAN是基于统一驱动平台(以下简称HDF)开发的模块,该模块可实现跨操作系统迁移,自适应器件差异,模块化拼装编译等功能。各WLAN厂商驱动开发人员可根据WLAN模块提供的向下统一接口适配各自的驱动代码,HAL层开发人员可根据WLAN模块提供的向上统一接口获取如下能力:建立/关闭WLAN热点,扫描,关联WLAN热点等等。WLAN模块框架图如下:

图 1 WLAN框架

WLAN驱动接口架构

WLAN模块有三部分对外开放的API接口,如下图所示:

1、对HAL层提供的能力接口;

2、驱动直接调用WLAN模块能力接口;

3、提供给各厂商实现的能力接口,本章节以下内容将从以初始化为例进行开发指导。

图 2 WLAN模块开放能力分布图

接口说明

WLAN驱动模块对HAL层开发人员提供的接口功能有:建立/关闭WLAN热点、扫描WLAN、开始关联、断开连接等等。

WLAN驱动模块提供了驱动开发人员可直接调用的能力接口,主要功能有:创建/释放WifiModule、关联/取消关联、申请/释放net buf、lwip的pbuf和netbuf的相互转换等等。

表1 提供了部分接口说明如下:

表 1 可直接调用的接口

头文件

接口名称

功能描述

wifi_module.h

struct WifiModule *WifiModuleCreate(const struct HdfConfigWifiModuleConfig *config);

基于HDF开发WLAN驱动时,创建一个WifiModule。

void WifiModuleDelete(struct WifiModule *module);

基于HDF开发WLAN驱动时,删除并释放WifiModule所有数据。

int32_t DelFeature(struct WifiModule *module, uint16_t featureType);

基于HDF开发WLAN驱动时,从WifiModule删除一个功能组件。

int32_t AddFeature(struct WifiModule *module, uint16_t featureType, struct WifiFeature *featureData);

基于HDF开发WLAN驱动时,注册一个功能组件到WifiModule。

wifi_mac80211_ops.h

int32_t (*startAp)(NetDevice *netDev);

启动AP。

int32_t (*stopAp)(NetDevice *netDev);

停止AP。

int32_t (*connect)(NetDevice *netDev, WifiConnectParams *param);

开始连接。

int32_t (*disconnect)(NetDevice *netDev, uint16_t reasonCode);

断开连接。

hdf_netbuf.h

static inline void NetBufQueueInit(struct NetBufQueue *q);

初始化net buffer队列。

struct NetBuf *NetBufAlloc(uint32_t size);

申请net buffer。

void NetBufFree(struct NetBuf *nb);

释放net buffer。

struct NetBuf *Pbuf2NetBuf(const struct NetDevice *netdev, struct pbuf *lwipBuf);

lwip的pbuf转换为net buffer。

struct pbuf *NetBuf2Pbuf(const struct NetBuf *nb);

net buffer转换为lwip的pbuf。

WLAN驱动模块提供了需驱动开发人员实现的能力接口,主要功能有:初始化/注销net device、打开/关闭net device、获取net device的状态等等。

表2 提供了部分接口说明如下:

表 2 需要开发人员实现的接口

头文件

接口名称

功能描述

net_device.h

int32_t (*init)(struct NetDevice *netDev);

初始化net device。

struct NetDevStats *(*getStats)(struct NetDevice *netDev);

获取net device的状态。

int32_t (*setMacAddr)(struct NetDevice *netDev, void *addr);

设置mac地址。

void (*deInit)(struct NetDevice *netDev);

注销net device。

int32_t (*open)(struct NetDevice *netDev);

打开net device。

int32_t (*stop)(struct NetDevice *netDev);

关闭net device。

1
https://gitee.com/cain_qin/docs.git
git@gitee.com:cain_qin/docs.git
cain_qin
docs
docs
master

搜索帮助