文章目录

WLAN Model

本系列文章准备深入了解OpenHarmony的WLAN驱动模型,由于WLAN驱动模型非常庞大,我尝试根据WIFI 驱动模型的设计特点来给整个模式分模块进行介绍,本文是本系列文章的导读。

学习OpenHarmony的最好途径就是从官网的文档入手,我们可查看官网对于WLAN驱动模型的介绍:

​zh-cn/device-dev/driver/driver-peripherals-external-des.md · OpenHarmony/docs - 码云 - 开源中国 (gitee.com)​

一、前提必读

OpenHarmony WIFI 驱动模型是基于 HDF 驱动框架开发的,需要先理解 HDF 驱动开发框架,才能来学习WIFI 驱动模型。HDF 驱动的介绍:​​https://gitee.com/openharmony/docs/blob/master/zh-cn/device-dev/driver/driver-hdf-overview.md​

计算机技术是为了解决实际问题而产生,而我们学习WIFI驱动框架,就需要知道这个软件技术是为了解决什么问题。答案可在官网找到:

首先WIFI 驱动模型的基本功能就是提供给上层WLAN能力:


HDI层开发人员可根据WLAN模块提供的向上统一接口获取如下能力:建立/关闭WLAN热点、扫描、关联WLAN热点等。


其次,提供给驱动开发人员接口:


各WLAN厂商驱动开发人员可根据WLAN模块提供的向下统一接口适配各自的驱动代码.


最后是模型的优点:


基于OpenHarmony驱动框架的WLAN驱动模型,可实现跨操作系统迁移,自适应器件差异,模块化拼装编译等功能。


二、WIFI

WIFI是一种无线传输技术,一般由WIFI芯片实现,通过SDIO或USB接口等与主控芯片连接。WIFI芯片与主控有两种通信通路:命令和数据。数据和命令以分时复用的方式使用SDIO总线。

2.1、命令

命令有三种:base,station,ap。

base命令包括:电源、复位等。

station命令包括扫描,连接等。

ap命令包括建立热点,获取连接状态等。

2.2、数据

数据包含接受和发送,WIFI是网络设备,其数据需要经过网络协议栈处理,例如LWIP协议栈。

协议栈的数据最终通过SDIO发送到WIFI芯片,WIFI芯片的网络数据也是通过SDIO最终输入到协议栈。

三、代码实现

在代码上就可以分为命令和数据两个部分。

命令部分又可以分为三类,分别以feature的方式来命名:

  • base feature
  • sta feature
  • ap feature

这三个概念会贯穿命令传输的通路。

数据通路主要是实现与网络协议栈的适配对接。

3.1、学习方法

由于OpenHarmony的驱动框架采用的是C语言面向对象的编程方法,所以在学习中也尽量使用面向对象的方法来入手。着重理解各个对象之间的调用关系,以及对象的创建方法。

下图所示是WLAN 命令通路:

OpenHarmony WLAN驱动模型分析 导读(更新中)_HDF

以hdf_wifi_core.c为界,可将通路分为两部分:HDI 层和核心层。

从这两个部分来分别学习 WIFI 命令通路。