1094332d3Sopenharmony_ci# WLAN<a name="ZH-CN_TOPIC_0000001078436908"></a>
2094332d3Sopenharmony_ci
3094332d3Sopenharmony_ci## 简介<a name="section11660541593"></a>
4094332d3Sopenharmony_ci
5094332d3Sopenharmony_ci该仓下主要包含WLAN相关HDI和HAL接口与实现,提供主要功能包括:
6094332d3Sopenharmony_ci
7094332d3Sopenharmony_ci1.  创建和销毁IWiFi对象。
8094332d3Sopenharmony_ci2.  创建和销毁HAL层和WLAN驱动的通道。
9094332d3Sopenharmony_ci3.  设置MAC地址、设置国家码、获取网络设备信息等。
10094332d3Sopenharmony_ci
11094332d3Sopenharmony_ci**图 1**  WLAN驱动模块架构图<a name="fig14142101381112"></a>
12094332d3Sopenharmony_ci
13094332d3Sopenharmony_ci![](figures/wlan-driver-module-architecture_zh.png "wlan-driver-module-architecture_zh")
14094332d3Sopenharmony_ci
15094332d3Sopenharmony_ci## 目录<a name="section161941989596"></a>
16094332d3Sopenharmony_ci
17094332d3Sopenharmony_ciWLAN源代码目录结构如下所示:
18094332d3Sopenharmony_ci
19094332d3Sopenharmony_ci```
20094332d3Sopenharmony_ci/drivers/peripheral/wlan
21094332d3Sopenharmony_ci├── client              # 实现用户态与内核态通信的client模块存放目录
22094332d3Sopenharmony_ci│   └── include         # client相关头文件存放目录
23094332d3Sopenharmony_ci│   └── src             # client代码存放目录
24094332d3Sopenharmony_ci├── hal                 # hal层框架代码
25094332d3Sopenharmony_ci│   └── include         # hal层相关头文件存放目录
26094332d3Sopenharmony_ci│   └── src             # hal层代码存放目录
27094332d3Sopenharmony_ci├── hdi_service         # hdi层框架代码
28094332d3Sopenharmony_ci│   └── service_common  # hdi层通用接口存放目录
29094332d3Sopenharmony_ci│   └── service_extend  # hdi扩展接口存放目录
30094332d3Sopenharmony_ci├── interfaces          # hal接口的存放目录
31094332d3Sopenharmony_ci│   └── include         # 对外提供的接口头文件存放目录
32094332d3Sopenharmony_ci```
33094332d3Sopenharmony_ci
34094332d3Sopenharmony_ci### 接口说明<a name="section1564411661810"></a>
35094332d3Sopenharmony_ci
36094332d3Sopenharmony_ciWLAN驱动模块通过HAL/HDI层(HAL是直调,HDI是通过IPC调用)对Wi-Fi Service提供接口,主要功能有:创建/销毁IWiFi对象、设置MAC地址等。提供的接口说明如下表所示:
37094332d3Sopenharmony_ci
38094332d3Sopenharmony_ci**表 1**  hal层和hdi层对外接口
39094332d3Sopenharmony_ci
40094332d3Sopenharmony_ci<a name="table1521573319472"></a>
41094332d3Sopenharmony_ci<table><thead align="left"><tr id="row121519334474"><th class="cellrowborder" valign="top" w idth="10.950000000000001%" id="mcps1.2.4.1.1"><p id="p1221510339475"><a name="p1221510339475"></a><a name="p1221510339475"></a>头文件</p>
42094332d3Sopenharmony_ci</th>
43094332d3Sopenharmony_ci<th class="cellrowborder" valign="top" width="30.91%" id="mcps1.2.4.1.2"><p id="p0215153344716"><a name="p0215153344716"></a><a name="p0215153344716"></a>HDI接口名称</p>
44094332d3Sopenharmony_ci</th>
45094332d3Sopenharmony_ci<th class="cellrowborder" valign="top" width="6.950000000000001%" id="mcps1.2.4.1.1"><p id="p1221510339475"><a name="p1221510339475"></a><a name="p1221510339475"></a>头文件</p>
46094332d3Sopenharmony_ci</th>
47094332d3Sopenharmony_ci<th class="cellrowborder" valign="top" width="30.91%" id="mcps1.2.4.1.2"><p id="p0215153344716"><a name="p0215153344716"></a><a name="p0215153344716"></a>HAL接口名称</p>
48094332d3Sopenharmony_ci</th>
49094332d3Sopenharmony_ci<th class="cellrowborder" valign="top" width="20.14%" id="mcps1.2.4.1.3"><p id="p1421503315478"><a name="p1421503315478"></a><a name="p1421503315478"></a>功能描述</p>
50094332d3Sopenharmony_ci</th>
51094332d3Sopenharmony_ci</tr>
52094332d3Sopenharmony_ci</thead>
53094332d3Sopenharmony_ci<tbody><tr id="row112150333476">
54094332d3Sopenharmony_ci<td class="cellrowborder" rowspan="31" valign="top" width="10.950000000000001%" headers="mcps1.2.4.1.1 "><p id="p2155710125317"><a name="p2155710125317"></a><a name="p2155710125317"></a>v1_3/iwlan_interface.h(V1_3为版本号,随着接口的增加而改变)</p>
55094332d3Sopenharmony_ci<p id="p189132019183"><a name="p189132019183"></a><a name="p189132019183"></a></p>
56094332d3Sopenharmony_ci</td>
57094332d3Sopenharmony_ci<td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p4950434142314"><a name="p4950434142314"></a><a name="p4950434142314"></a>int32_t (*Start)(struct IWlanInterface *self);</p>
58094332d3Sopenharmony_ci</td>
59094332d3Sopenharmony_ci<td class="cellrowborder" rowspan="15" valign="top" width="6.950000000000001%" headers="mcps1.2.4.1.1 "><p id="p2155710125317"><a name="p2155710125317"></a><a name="p2155710125317"></a>wifi_hal.h</p>
60094332d3Sopenharmony_ci<p id="p189132019183"><a name="p189132019183"></a><a name="p189132019183"></a></p>
61094332d3Sopenharmony_ci</td>
62094332d3Sopenharmony_ci<td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p4950434142314"><a name="p4950434142314"></a><a name="p4950434142314"></a>int32_t (*start)(struct IWiFi *);</p>
63094332d3Sopenharmony_ci</td>
64094332d3Sopenharmony_ci<td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p1162543816393"><a name="p1162543816393"></a><a name="p1162543816393"></a>创建HAL和驱动之间的通道及获取驱动支持的网卡信息。</p>
65094332d3Sopenharmony_ci</td>
66094332d3Sopenharmony_ci</tr>
67094332d3Sopenharmony_ci<tr id="row167876105514"><td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p162433816392"><a name="p162433816392"></a><a name="p162433816392"></a>int32_t (*Stop)(struct IWlanInterface *self);</p>
68094332d3Sopenharmony_ci</td>
69094332d3Sopenharmony_ci<td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p162433816392"><a name="p162433816392"></a><a name="p162433816392"></a>int32_t (*stop)(struct IWiFi *);</p>
70094332d3Sopenharmony_ci</td>
71094332d3Sopenharmony_ci<td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p186235383393"><a name="p186235383393"></a><a name="p186235383393"></a>销毁通道。</p>
72094332d3Sopenharmony_ci</td>
73094332d3Sopenharmony_ci</tr>
74094332d3Sopenharmony_ci<tr id="row77607815516"><td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p6760128135514"><a name="p6760128135514"></a><a name="p6760128135514"></a>int32_t (*GetSupportFeature)(struct IWlanInterface *self, uint8_t* supType, uint32_t* supTypeLen);</p>
75094332d3Sopenharmony_ci</td>
76094332d3Sopenharmony_ci<td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p6760128135514"><a name="p6760128135514"></a><a name="p6760128135514"></a>int32_t (*getSupportFeature)(uint8_t *supType, uint32_t size);</p>
77094332d3Sopenharmony_ci</td>
78094332d3Sopenharmony_ci<td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p1176014845516"><a name="p1176014845516"></a><a name="p1176014845516"></a>获取该设备支持的WLAN特性(不考虑当前的使用状态)。</p>
79094332d3Sopenharmony_ci</td>
80094332d3Sopenharmony_ci</tr>
81094332d3Sopenharmony_ci<tr id="row93918373572"><td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p2039103714572"><a name="p2039103714572"></a><a name="p2039103714572"></a>int32_t (*GetSupportCombo)(struct IWlanInterface *self, uint64_t* combo);</p>
82094332d3Sopenharmony_ci</td>
83094332d3Sopenharmony_ci<td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p2039103714572"><a name="p2039103714572"></a><a name="p2039103714572"></a>int32_t (*getSupportCombo)(uint64_t *combo, uint32_t size);</p>
84094332d3Sopenharmony_ci</td>
85094332d3Sopenharmony_ci<td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p13916375570"><a name="p13916375570"></a><a name="p13916375570"></a>获取多网卡共存情况。</p>
86094332d3Sopenharmony_ci</td>
87094332d3Sopenharmony_ci</tr>
88094332d3Sopenharmony_ci<tr id="row25031321195815"><td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p13503142195814"><a name="p13503142195814"></a><a name="p13503142195814"></a>int32_t (*CreateFeature)(struct IWlanInterface *self, int32_t type, struct HdfFeatureInfo* ifeature);</p>
89094332d3Sopenharmony_ci</td>
90094332d3Sopenharmony_ci<td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p13503142195814"><a name="p13503142195814"></a><a name="p13503142195814"></a>int32_t (*createFeature)(int32_t type, struct IWiFiBaseFeature **ifeature);</p>
91094332d3Sopenharmony_ci</td>
92094332d3Sopenharmony_ci<td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p11503172115585"><a name="p11503172115585"></a><a name="p11503172115585"></a>根据输入类型创建对应的特性。</p>
93094332d3Sopenharmony_ci</td>
94094332d3Sopenharmony_ci</tr>
95094332d3Sopenharmony_ci<tr id="row14371833185819"><td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p1443863325820"><a name="p1443863325820"></a><a name="p1443863325820"></a>int32_t (*GetFeatureByIfName)(struct IWlanInterface *self, const char* ifName, struct HdfFeatureInfo* ifeature);</p>
96094332d3Sopenharmony_ci</td>
97094332d3Sopenharmony_ci<td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p1443863325820"><a name="p1443863325820"></a><a name="p1443863325820"></a>int32_t (*getFeatureByIfName)(const char *ifName, struct IWiFiBaseFeature **ifeature);</p>
98094332d3Sopenharmony_ci</td>
99094332d3Sopenharmony_ci<td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p1343819334584"><a name="p1343819334584"></a><a name="p1343819334584"></a>通过网络接口名字获取对应的特性。</p>
100094332d3Sopenharmony_ci</td>
101094332d3Sopenharmony_ci</tr>
102094332d3Sopenharmony_ci<tr id="row03398561587"><td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p1933965615812"><a name="p1933965615812"></a><a name="p1933965615812"></a>int32_t (*RegisterEventCallback)(struct IWlanInterface *self, struct IWlanCallback* cbFunc, const char* ifName);</p>
103094332d3Sopenharmony_ci</td>
104094332d3Sopenharmony_ci<td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p1933965615812"><a name="p1933965615812"></a><a name="p1933965615812"></a>int32_t (*registerEventCallback)(CallbackFunc cbFunc);</p>
105094332d3Sopenharmony_ci</td>
106094332d3Sopenharmony_ci<td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p103396560587"><a name="p103396560587"></a><a name="p103396560587"></a>注册IWiFi的回调函数,监听异步事件。</p>
107094332d3Sopenharmony_ci</td>
108094332d3Sopenharmony_ci</tr>
109094332d3Sopenharmony_ci<tr id="row894162955918"><td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p1694112914590"><a name="p1694112914590"></a><a name="p1694112914590"></a>int32_t (*UnregisterEventCallback)(struct IWlanInterface *self, struct IWlanCallback* cbFunc, const char* ifName);</p>
110094332d3Sopenharmony_ci</td>
111094332d3Sopenharmony_ci<td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p1694112914590"><a name="p1694112914590"></a><a name="p1694112914590"></a>int32_t (*unRegisterEventCallback)(void);</p>
112094332d3Sopenharmony_ci</td>
113094332d3Sopenharmony_ci<td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p18948295597"><a name="p18948295597"></a><a name="p18948295597"></a>去注册IWiFi的回调函数。</p>
114094332d3Sopenharmony_ci</td>
115094332d3Sopenharmony_ci</tr>
116094332d3Sopenharmony_ci<tr id="row122731451103"><td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p2273125104"><a name="p2273125104"></a><a name="p2273125104"></a>int32_t (*DestroyFeature)(struct IWlanInterface *self, const struct HdfFeatureInfo* ifeature);</p>
117094332d3Sopenharmony_ci</td>
118094332d3Sopenharmony_ci<td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p2273125104"><a name="p2273125104"></a><a name="p2273125104"></a>int32_t (*destroyFeature)(struct IWiFiBaseFeature *ifeature);</p>
119094332d3Sopenharmony_ci</td>
120094332d3Sopenharmony_ci<td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p92731553017"><a name="p92731553017"></a><a name="p92731553017"></a>销毁对应的特性。</p>
121094332d3Sopenharmony_ci</td>
122094332d3Sopenharmony_ci</tr>
123094332d3Sopenharmony_ci<tr id="row172153335473"><td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p1292417115515"><a name="p1292417115515"></a><a name="p1292417115515"></a>int32_t (*ResetDriver)(struct IWlanInterface *self, uint8_t chipId, const char* ifName);</p>
124094332d3Sopenharmony_ci</td>
125094332d3Sopenharmony_ci<td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p1292417115515"><a name="p1292417115515"></a><a name="p1292417115515"></a>int32_t (*resetDriver)(const uint8_t chipId);</p>
126094332d3Sopenharmony_ci</td>
127094332d3Sopenharmony_ci<td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p17272317145516"><a name="p17272317145516"></a><a name="p17272317145516"></a>WLAN驱动进行重置。</p>
128094332d3Sopenharmony_ci</td>
129094332d3Sopenharmony_ci</tr>
130094332d3Sopenharmony_ci<tr id="row172153335473"><td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p1292417115515"><a name="p1292417115515"></a><a name="p1292417115515"></a>int32_t (*GetPowerMode)(struct IWlanInterface *self, const struct HdfFeatureInfo* ifeature, uint8_t* mode);</p>
131094332d3Sopenharmony_ci</td>
132094332d3Sopenharmony_ci<td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p1292417115515"><a name="p1292417115515"></a><a name="p1292417115515"></a>int32_t (*getPowerMode)(const char *ifName, uint8_t *mode);</p>
133094332d3Sopenharmony_ci</td>
134094332d3Sopenharmony_ci<td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p17272317145516"><a name="p17272317145516"></a><a name="p17272317145516"></a>获取正在使用的功率模式。</p>
135094332d3Sopenharmony_ci</td>
136094332d3Sopenharmony_ci</tr>
137094332d3Sopenharmony_ci<tr id="row172153335473"><td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p1292417115515"><a name="p1292417115515"></a><a name="p1292417115515"></a>int32_t (*SetPowerMode)(struct IWlanInterface *self, const struct HdfFeatureInfo* ifeature, uint8_t mode);</p>
138094332d3Sopenharmony_ci</td>
139094332d3Sopenharmony_ci<td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p1292417115515"><a name="p1292417115515"></a><a name="p1292417115515"></a>int32_t (*setPowerMode)(const char *ifName, uint8_t mode);</p>
140094332d3Sopenharmony_ci</td>
141094332d3Sopenharmony_ci<td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p17272317145516"><a name="p17272317145516"></a><a name="p17272317145516"></a>设置功率模式。</p>
142094332d3Sopenharmony_ci</td>
143094332d3Sopenharmony_ci</tr>
144094332d3Sopenharmony_ci<tr id="row172153335473"><td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p1292417115515"><a name="p1292417115515"></a><a name="p1292417115515"></a>int32_t (*StartChannelMeas)(struct IWlanInterface *self, const char* ifName, const struct MeasChannelParam* measChannelParam);</p>
145094332d3Sopenharmony_ci</td>
146094332d3Sopenharmony_ci<td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p1292417115515"><a name="p1292417115515"></a><a name="p1292417115515"></a>int32_t (*startChannelMeas)(const char *ifName, const struct MeasParam *measParam);</p>
147094332d3Sopenharmony_ci</td>
148094332d3Sopenharmony_ci<td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p17272317145516"><a name="p17272317145516"></a><a name="p17272317145516"></a>通过ioctl向底层驱动发送信道测量命令。</p>
149094332d3Sopenharmony_ci</td>
150094332d3Sopenharmony_ci</tr>
151094332d3Sopenharmony_ci<tr id="row172153335473"><td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p1292417115515"><a name="p1292417115515"></a><a name="p1292417115515"></a>int32_t (*GetNetDevInfo)(struct IWlanInterface *self, struct HdfNetDeviceInfoResult* netDeviceInfoResult);</p>
152094332d3Sopenharmony_ci</td>
153094332d3Sopenharmony_ci<td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p1292417115515"><a name="p1292417115515"></a><a name="p1292417115515"></a>int32_t (*getNetDevInfo)(struct NetDeviceInfoResult *netDeviceInfoResult);</p>
154094332d3Sopenharmony_ci</td>
155094332d3Sopenharmony_ci<td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p17272317145516"><a name="p17272317145516"></a><a name="p17272317145516"></a>获取网络设备信息(设备索引、网卡名字、MAC等信息)。</p>
156094332d3Sopenharmony_ci</td>
157094332d3Sopenharmony_ci</tr>
158094332d3Sopenharmony_ci<tr id="row172153335473"><td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p1292417115515"><a name="p1292417115515"></a><a name="p1292417115515"></a>int32_t (*GetChannelMeasResult)(struct IWlanInterface *self, const char* ifName, struct MeasChannelResult* measChannelResult);</p>
159094332d3Sopenharmony_ci</td>
160094332d3Sopenharmony_ci<td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p1292417115515"><a name="p1292417115515"></a><a name="p1292417115515"></a>int32_t (*getChannelMeasResult)(const char *ifName, struct MeasResult *measResult);</p>
161094332d3Sopenharmony_ci</td>
162094332d3Sopenharmony_ci<td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p17272317145516"><a name="p17272317145516"></a><a name="p17272317145516"></a>获取底层上报上来的测量结果。</p>
163094332d3Sopenharmony_ci</td>
164094332d3Sopenharmony_ci</tr>
165094332d3Sopenharmony_ci<tr id="row27321001058"><td class="cellrowborder" valign="top" width="30.91%" headers="mcps1.2.4.1.2 "><p id="p77321105516"><a name="p77321105516"></a><a name="p77321105516"></a>int32_t (*GetAssociatedStas)(struct IWlanInterface *self, const struct HdfFeatureInfo* ifeature,struct HdfStaInfo* staInfo, uint32_t* staInfoLen, uint32_t* num);</p>
166094332d3Sopenharmony_ci</td>
167094332d3Sopenharmony_ci<td class="cellrowborder" rowspan="2" valign="top" width="6.950000000000001%" headers="mcps1.2.4.1.1 "><p id="p134208191041"><a name="p134208191041"></a><a name="p134208191041"></a>wifi_hal_ap_feature.h</p>
168094332d3Sopenharmony_ci</td>
169094332d3Sopenharmony_ci<td class="cellrowborder" valign="top" width="30.91%" headers="mcps1.2.4.1.2 "><p id="p77321105516"><a name="p77321105516"></a><a name="p77321105516"></a>int32_t (*getAssociatedStas)(const struct IWiFiAp *apFeature, struct StaInfo *staInfo, uint32_t count, uint32_t *num);</p>
170094332d3Sopenharmony_ci</td>
171094332d3Sopenharmony_ci<td class="cellrowborder" valign="top" width="20.14%" headers="mcps1.2.4.1.3 "><p id="p1673213014513"><a name="p1673213014513"></a><a name="p1673213014513"></a>获取连接上的所有STA的信息(目前只包含MAC地址)。</p>
172094332d3Sopenharmony_ci</td>
173094332d3Sopenharmony_ci</tr>
174094332d3Sopenharmony_ci<tr id="row39802291664"><td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p149801729465"><a name="p149801729465"></a><a name="p149801729465"></a>int32_t (*SetCountryCode)(struct IWlanInterface *self, const struct HdfFeatureInfo* ifeature, const char* code, uint32_t len);</p>
175094332d3Sopenharmony_ci</td>
176094332d3Sopenharmony_ci<td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p149801729465"><a name="p149801729465"></a><a name="p149801729465"></a>int32_t (*setCountryCode)(const struct IWiFiAp *apFeature, const char *code, uint32_t len);</p>
177094332d3Sopenharmony_ci</td>
178094332d3Sopenharmony_ci<td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p098022910610"><a name="p098022910610"></a><a name="p098022910610"></a>设置国家码。</p>
179094332d3Sopenharmony_ci</td>
180094332d3Sopenharmony_ci</tr>
181094332d3Sopenharmony_ci<tr id="row14149145512411"><td class="cellrowborder" valign="top" width="30.91%" headers="mcps1.2.4.1.2 "><p id="p17149165511414"><a name="p17149165511414"></a><a name="p17149165511414"></a>int32_t (*SetScanningMacAddress)(struct IWlanInterface *self, const struct HdfFeatureInfo* ifeature, const uint8_t* scanMac, uint32_t scanMacLen);</p>
182094332d3Sopenharmony_ci</td>
183094332d3Sopenharmony_ci<td class="cellrowborder" rowspan="2" valign="top" width="6.950000000000001%" headers="mcps1.2.4.1.1 "><p id="p18149155246"><a name="p18149155246"></a><a name="p18149155246"></a>wifi_hal_sta_feature.h</p>
184094332d3Sopenharmony_ci</td>
185094332d3Sopenharmony_ci<td class="cellrowborder" valign="top" width="30.91%" headers="mcps1.2.4.1.2 "><p id="p17149165511414"><a name="p17149165511414"></a><a name="p17149165511414"></a>int32_t (*setScanningMacAddres)(const struct IWiFiSta *staFeature, unsigned char *scanMac, uint8_t len);</p>
186094332d3Sopenharmony_ci</td>
187094332d3Sopenharmony_ci<td class="cellrowborder" valign="top" width="20.14%" headers="mcps1.2.4.1.3 "><p id="p181491255149"><a name="p181491255149"></a><a name="p181491255149"></a>设置扫描单个MAC地址。</p>
188094332d3Sopenharmony_ci</td>
189094332d3Sopenharmony_ci</tr>
190094332d3Sopenharmony_ci<tr id="row39802291664"><td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p149801729465"><a name="p149801729465"></a><a name="p149801729465"></a>int32_t (*StartScan)(struct IWlanInterface *self, const struct HdfFeatureInfo* ifeature, const struct HdfWifiScan* scan);</p>
191094332d3Sopenharmony_ci</td>
192094332d3Sopenharmony_ci<td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p149801729465"><a name="p149801729465"></a><a name="p149801729465"></a>int32_t (*startScan)(const char *ifName, WifiScan *scan);</p>
193094332d3Sopenharmony_ci</td>
194094332d3Sopenharmony_ci<td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p098022910610"><a name="p098022910610"></a><a name="p098022910610"></a>启动扫描。</p>
195094332d3Sopenharmony_ci</td>
196094332d3Sopenharmony_ci</tr>
197094332d3Sopenharmony_ci<tr id="row451796205011"><td class="cellrowborder" valign="top" width="30.91%" headers="mcps1.2.4.1.2 "><p id="p73831421111010"><a name="p73831421111010"></a><a name="p73831421111010"></a>int32_t (*GetNetworkIfaceName)(struct IWlanInterface *self, const struct HdfFeatureInfo* ifeature, char* ifName, uint32_t ifNameLen);</p>
198094332d3Sopenharmony_ci</td>
199094332d3Sopenharmony_ci<td class="cellrowborder" rowspan="12" valign="top" width="6.950000000000001%" headers="mcps1.2.4.1.1 "><p id="p2659417135013"><a name="p2659417135013"></a><a name="p2659417135013"></a>wifi_hal_base_feature.h</p>
200094332d3Sopenharmony_ci</td>
201094332d3Sopenharmony_ci<td class="cellrowborder" valign="top" width="30.91%" headers="mcps1.2.4.1.2 "><p id="p73831421111010"><a name="p73831421111010"></a><a name="p73831421111010"></a>const char *(*getNetworkIfaceName)(const struct IWiFiBaseFeature *baseFeature);</p>
202094332d3Sopenharmony_ci</td>
203094332d3Sopenharmony_ci<td class="cellrowborder" valign="top" width="20.14%" headers="mcps1.2.4.1.3 "><p id="p16363321101014"><a name="p16363321101014"></a><a name="p16363321101014"></a>获取网络接口的名字。</p>
204094332d3Sopenharmony_ci</td>
205094332d3Sopenharmony_ci</tr>
206094332d3Sopenharmony_ci<tr id="row1657914017107"><td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p15117233152315"><a name="p15117233152315"></a><a name="p15117233152315"></a>int32_t (*GetFeatureType)(struct IWlanInterface *self, const struct HdfFeatureInfo* ifeature, int32_t* featureType);</p>
207094332d3Sopenharmony_ci</td>
208094332d3Sopenharmony_ci<td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p15117233152315"><a name="p15117233152315"></a><a name="p15117233152315"></a>int32_t (*getFeatureType)(const struct IWiFiBaseFeature *);</p>
209094332d3Sopenharmony_ci</td>
210094332d3Sopenharmony_ci<td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p195182610507"><a name="p195182610507"></a><a name="p195182610507"></a>获取特性的类型。</p>
211094332d3Sopenharmony_ci</td>
212094332d3Sopenharmony_ci</tr>
213094332d3Sopenharmony_ci<tr id="row5518663503"><td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p125181260501"><a name="p125181260501"></a><a name="p125181260501"></a>int32_t (*SetMacAddress)(struct IWlanInterface *self, const struct HdfFeatureInfo* ifeature, const uint8_t* mac, uint32_t macLen);</p>
214094332d3Sopenharmony_ci</td>
215094332d3Sopenharmony_ci<td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p125181260501"><a name="p125181260501"></a><a name="p125181260501"></a>int32_t (*setMacAddress)(const struct IWiFiBaseFeature *, unsigned char *, uint8_t);</p>
216094332d3Sopenharmony_ci</td>
217094332d3Sopenharmony_ci<td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p1151815635014"><a name="p1151815635014"></a><a name="p1151815635014"></a>设置MAC地址。</p>
218094332d3Sopenharmony_ci</td>
219094332d3Sopenharmony_ci</tr>
220094332d3Sopenharmony_ci<tr id="row851915617503"><td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p20519865500"><a name="p20519865500"></a><a name="p20519865500"></a>int32_t (*GetDeviceMacAddress)(struct IWlanInterface *self, const struct HdfFeatureInfo *ifeature, uint8_t* mac, uint32_t* macLen, uint8_t len)</p>
221094332d3Sopenharmony_ci</td>
222094332d3Sopenharmony_ci<td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p20519865500"><a name="p20519865500"></a><a name="p20519865500"></a>int32_t (*getDeviceMacAddress)(const struct IWiFiBaseFeature *, unsigned char *, uint8_t);</p>
223094332d3Sopenharmony_ci</td>
224094332d3Sopenharmony_ci<td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p14519469509"><a name="p14519469509"></a><a name="p14519469509"></a>获取设备持久化的MAC地址。</p>
225094332d3Sopenharmony_ci</td>
226094332d3Sopenharmony_ci</tr>
227094332d3Sopenharmony_ci<tr id="row986761516115"><td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p15867101551112"><a name="p15867101551112"></a><a name="p15867101551112"></a>int32_t (*GetFreqsWithBand)(struct IWlanInterface *self, const struct HdfFeatureInfo* ifeature, const struct HdfWifiInfo* wifiInfo, int32_t* freq, uint32_t* freqLen);</p>
228094332d3Sopenharmony_ci</td>
229094332d3Sopenharmony_ci<td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p2867181581116"><a name="p2867181581116"></a><a name="p2867181581116"></a>int32_t (*getValidFreqsWithBand)(const struct IWiFiBaseFeature *baseFeature, int32_t band, int32_t *freqs, uint32_t count, uint32_t *num);</p>
230094332d3Sopenharmony_ci</td>
231094332d3Sopenharmony_ci<td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p15867101551112"><a name="p15867101551112"></a><a name="p15867101551112"></a>获取指定频段(2.4G或者5G)下支持的频率。</p>
232094332d3Sopenharmony_ci</td>
233094332d3Sopenharmony_ci</tr>
234094332d3Sopenharmony_ci<tr id="row18232258171117"><td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p175191863503"><a name="p175191863503"></a><a name="p175191863503"></a>int32_t (*SetTxPower)(struct IWlanInterface *self, const struct HdfFeatureInfo* ifeature, int32_t power);</p>
235094332d3Sopenharmony_ci</td>
236094332d3Sopenharmony_ci<td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p145195620502"><a name="p145195620502"></a><a name="p145195620502"></a>int32_t (*setTxPower)(const struct IWiFiBaseFeature *, int32_t);</p>
237094332d3Sopenharmony_ci</td>
238094332d3Sopenharmony_ci<td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p175191863503"><a name="p175191863503"></a><a name="p175191863503"></a>设置发射功率。</p>
239094332d3Sopenharmony_ci</td>
240094332d3Sopenharmony_ci</tr>
241094332d3Sopenharmony_ci<tr id="row1744948201219"><td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p7449128101215"><a name="p7449128101215"></a><a name="p7449128101215"></a>int32_t (*GetChipId)(struct IWlanInterface *self, const struct HdfFeatureInfo* ifeature, uint8_t* chipId);</p>
242094332d3Sopenharmony_ci</td>
243094332d3Sopenharmony_ci<td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p7449128101215"><a name="p7449128101215"></a><a name="p7449128101215"></a>int32_t (*getChipId)(const struct IWiFiBaseFeature *baseFeature, uint8_t *chipId);</p>
244094332d3Sopenharmony_ci</td>
245094332d3Sopenharmony_ci<td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p1244998131219"><a name="p1244998131219"></a><a name="p1244998131219"></a>获得当前驱动的芯片ID。</p>
246094332d3Sopenharmony_ci</td>
247094332d3Sopenharmony_ci</tr>
248094332d3Sopenharmony_ci<tr id="row34351131216"><td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p743711161213"><a name="p743711161213"></a><a name="p743711161213"></a>int32_t (*GetIfNamesByChipId)(struct IWlanInterface *self, uint8_t chipId, char* ifName, uint32_t ifNameLen, uint32_t* num);</p>
249094332d3Sopenharmony_ci</td>
250094332d3Sopenharmony_ci<td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p743711161213"><a name="p743711161213"></a><a name="p743711161213"></a>int32_t (*getIfNamesByChipId)(const uint8_t chipId, char **ifNames, uint32_t *num);</p>
251094332d3Sopenharmony_ci</td>
252094332d3Sopenharmony_ci<td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p164361118121"><a name="p164361118121"></a><a name="p164361118121"></a>通过芯片ID获得当前芯片所有的网卡名。</p>
253094332d3Sopenharmony_ci</td>
254094332d3Sopenharmony_ci</tr>
255094332d3Sopenharmony_ci<tr id="row34351131216"><td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p743711161213"><a name="p743711161213"></a><a name="p743711161213"></a>struct IWlanInterface *WlanInterfaceGetInstance(const char *serviceName);</p>
256094332d3Sopenharmony_ci</td>
257094332d3Sopenharmony_ci<td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p743711161213"><a name="p743711161213"></a><a name="p743711161213"></a></p>
258094332d3Sopenharmony_ci</td>
259094332d3Sopenharmony_ci<td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p164361118121"><a name="p164361118121"></a><a name="p164361118121"></a>获取WLAN服务对象。</p>
260094332d3Sopenharmony_ci</td>
261094332d3Sopenharmony_ci</tr>
262094332d3Sopenharmony_ci<tr id="row34351131216"><td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p743711161213"><a name="p743711161213"></a><a name="p743711161213"></a>struct IWlanCallback *WlanCallbackServiceGet(void);</p>
263094332d3Sopenharmony_ci</td>
264094332d3Sopenharmony_ci<td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p743711161213"><a name="p743711161213"></a><a name="p743711161213"></a></p>
265094332d3Sopenharmony_ci</td>
266094332d3Sopenharmony_ci<td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p164361118121"><a name="p164361118121"></a><a name="p164361118121"></a>获取WLAN回调服务。</p>
267094332d3Sopenharmony_ci</td>
268094332d3Sopenharmony_ci</tr>
269094332d3Sopenharmony_ci<tr id="row34351131216"><td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p743711161213"><a name="p743711161213"></a><a name="p743711161213"></a>void WlanInterfaceRelease(struct IWlanCallback *instance);</p>
270094332d3Sopenharmony_ci</td>
271094332d3Sopenharmony_ci<td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p743711161213"><a name="p743711161213"></a><a name="p743711161213"></a></p>
272094332d3Sopenharmony_ci</td>
273094332d3Sopenharmony_ci<td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p164361118121"><a name="p164361118121"></a><a name="p164361118121"></a>销毁WLAN服务对象。</p>
274094332d3Sopenharmony_ci</td>
275094332d3Sopenharmony_ci</tr>
276094332d3Sopenharmony_ci<tr id="row34351131216"><td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p743711161213"><a name="p743711161213"></a><a name="p743711161213"></a>void WlanCallbackServiceRelease(struct IWlanCallback *instance);</p>
277094332d3Sopenharmony_ci</td>
278094332d3Sopenharmony_ci<td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p743711161213"><a name="p743711161213"></a><a name="p743711161213"></a></p>
279094332d3Sopenharmony_ci</td>
280094332d3Sopenharmony_ci<td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p164361118121"><a name="p164361118121"></a><a name="p164361118121"></a>销毁WLAN回调服务。</p>
281094332d3Sopenharmony_ci</td>
282094332d3Sopenharmony_ci</tr>
283094332d3Sopenharmony_ci</tbody>
284094332d3Sopenharmony_ci</table>
285094332d3Sopenharmony_ci
286094332d3Sopenharmony_ci### 使用说明(HAL接口)<a name="section19806524151819"></a>
287094332d3Sopenharmony_ci
288094332d3Sopenharmony_ciHAL接口使用步骤:
289094332d3Sopenharmony_ci
290094332d3Sopenharmony_ci1.  使用WifiConstruct创建一个WiFi实体。
291094332d3Sopenharmony_ci2.  用创建的WiFi实体调用start开启HAL和驱动之间的通道,获得驱动网卡信息。
292094332d3Sopenharmony_ci3.  通过createFeature函数创建一个apFeature或者staFeature。后面可通过apFeature或者staFeature去调用具体的实现接口,下面代码示例基于创建的apFeature。
293094332d3Sopenharmony_ci4.  调用和使用相关接口:如setMacAddress设置MAC地址、getDeviceMacAddress获取设备的MAC地址等。
294094332d3Sopenharmony_ci5.  调用destroyFeature,销毁创建的Feature。
295094332d3Sopenharmony_ci6.  调用stop销毁创建的通道。
296094332d3Sopenharmony_ci7.  执行WifiDestruct销毁创建的WiFi实体。
297094332d3Sopenharmony_ci
298094332d3Sopenharmony_ci代码示例:
299094332d3Sopenharmony_ci
300094332d3Sopenharmony_ci```
301094332d3Sopenharmony_ci#include "wifi_hal.h"
302094332d3Sopenharmony_ci#include "wifi_hal_sta_feature.h"
303094332d3Sopenharmony_ci#include "wifi_hal_ap_feature.h"
304094332d3Sopenharmony_ci#include "wifi_hal_cmd.h"
305094332d3Sopenharmony_ci#include "wifi_hal_event.h"
306094332d3Sopenharmony_ci
307094332d3Sopenharmony_ci#define MAC_LEN 6
308094332d3Sopenharmony_ci#define HDF_SUCCESS 0
309094332d3Sopenharmony_ci#define HDF_FAILURE (-1)
310094332d3Sopenharmony_ci
311094332d3Sopenharmony_cistatic int32_t hal_main()
312094332d3Sopenharmony_ci{
313094332d3Sopenharmony_ci    int32_t ret;
314094332d3Sopenharmony_ci    struct IWiFi *wifi;
315094332d3Sopenharmony_ci
316094332d3Sopenharmony_ci    /* 创建一个WiFi实体 */
317094332d3Sopenharmony_ci    ret = WifiConstruct(&wifi);
318094332d3Sopenharmony_ci    if (ret != HDF_SUCCESS || wifi == NULL) {
319094332d3Sopenharmony_ci        return HDF_FAILURE;
320094332d3Sopenharmony_ci    }
321094332d3Sopenharmony_ci
322094332d3Sopenharmony_ci    /* 开启HAL和驱动之间的通道 */
323094332d3Sopenharmony_ci    ret = wifi->start(wifi);
324094332d3Sopenharmony_ci    if (ret != HDF_SUCCESS) {
325094332d3Sopenharmony_ci        return HDF_FAILURE;
326094332d3Sopenharmony_ci    }
327094332d3Sopenharmony_ci
328094332d3Sopenharmony_ci    /* 创建apFeature */
329094332d3Sopenharmony_ci    ret = wifi->createFeature(PROTOCOL_80211_IFTYPE_AP, (struct IWiFiBaseFeature **)&apFeature);
330094332d3Sopenharmony_ci    if (ret != HDF_SUCCESS) {
331094332d3Sopenharmony_ci        return HDF_FAILURE;
332094332d3Sopenharmony_ci    }
333094332d3Sopenharmony_ci
334094332d3Sopenharmony_ci    /* 获取设备的MAC地址 */
335094332d3Sopenharmony_ci    unsigned char mac[MAC_LEN] = {0};
336094332d3Sopenharmony_ci    ret = apFeature->baseFeature.getDeviceMacAddress((struct IWiFiBaseFeature *)apFeature, mac, MAC_LEN);
337094332d3Sopenharmony_ci    if (ret != HDF_SUCCESS) {
338094332d3Sopenharmony_ci        return HDF_FAILURE;
339094332d3Sopenharmony_ci    }
340094332d3Sopenharmony_ci
341094332d3Sopenharmony_ci    /* 销毁掉创建的这个Feature */
342094332d3Sopenharmony_ci    ret = wifi->destroyFeature((struct IWiFiBaseFeature *)apFeature);
343094332d3Sopenharmony_ci    if (ret != HDF_SUCCESS) {
344094332d3Sopenharmony_ci        return HDF_FAILURE;
345094332d3Sopenharmony_ci    }
346094332d3Sopenharmony_ci
347094332d3Sopenharmony_ci    /* 销毁创建的通道 */
348094332d3Sopenharmony_ci    ret = wifi->stop(wifi);
349094332d3Sopenharmony_ci    if (ret != HDF_SUCCESS) {
350094332d3Sopenharmony_ci        return HDF_FAILURE;
351094332d3Sopenharmony_ci    }
352094332d3Sopenharmony_ci
353094332d3Sopenharmony_ci    /* 销毁创建的WiFi实体 */
354094332d3Sopenharmony_ci    ret = WifiDestruct(&wifi);
355094332d3Sopenharmony_ci    if (ret != HDF_SUCCESS) {
356094332d3Sopenharmony_ci        return HDF_FAILURE;
357094332d3Sopenharmony_ci    }
358094332d3Sopenharmony_ci    return ret;
359094332d3Sopenharmony_ci}
360094332d3Sopenharmony_ci```
361094332d3Sopenharmony_ci### 使用说明(HDI接口)<a name="section19806524151819"></a>
362094332d3Sopenharmony_ci
363094332d3Sopenharmony_ciHDI接口使用步骤:
364094332d3Sopenharmony_ci
365094332d3Sopenharmony_ci1.  使用WlanInterfaceGetInstance获取WLAN服务对象。
366094332d3Sopenharmony_ci2.  使用Start创建HAL和驱动之间的通道。
367094332d3Sopenharmony_ci3.  通过GetSupportFeature获取该设备支持的WLAN特性。
368094332d3Sopenharmony_ci4.  调用Stop,销毁HAL和驱动之间的通道。
369094332d3Sopenharmony_ci5.  执行WlanInterfaceRelease销毁WLAN服务对象。
370094332d3Sopenharmony_ci
371094332d3Sopenharmony_ci代码示例:
372094332d3Sopenharmony_ci
373094332d3Sopenharmony_ci```
374094332d3Sopenharmony_ci#include "v1_3/iwlan_interface.h"
375094332d3Sopenharmony_ci#include "wlan_callback_impl.h"
376094332d3Sopenharmony_ci#include "wlan_impl.h"
377094332d3Sopenharmony_ci
378094332d3Sopenharmony_ci#define PROTOCOL_80211_IFTYPE_NUM 11
379094332d3Sopenharmony_ci#define HDF_SUCCESS 0
380094332d3Sopenharmony_ci#define HDF_FAILURE (-1)
381094332d3Sopenharmony_ci
382094332d3Sopenharmony_cistatic int32_t hdi_main()
383094332d3Sopenharmony_ci{
384094332d3Sopenharmony_ci	int32_t rc;
385094332d3Sopenharmony_ci	const char *WLAN_SERVICE_NAME = "wlan_hal_c_service";
386094332d3Sopenharmony_ci	static struct IWlanInterface *g_wlanObj = NULL;
387094332d3Sopenharmony_ci	uint8_t supType[ PROTOCOL_80211_IFTYPE_NUM + 1 ] = {0};
388094332d3Sopenharmony_ci    uint32_t supTypeLen = PROTOCOL_80211_IFTYPE_NUM + 1;
389094332d3Sopenharmony_ci	
390094332d3Sopenharmony_ci	/* 获取wlan服务对象。*/
391094332d3Sopenharmony_ci	g_wlanObj = WlanInterfaceGetInstance(WLAN_SERVICE_NAME);
392094332d3Sopenharmony_ci	if (g_wlanObj == NULL)
393094332d3Sopenharmony_ci	{
394094332d3Sopenharmony_ci		returnHDF_FAILURE;
395094332d3Sopenharmony_ci	}
396094332d3Sopenharmony_ci	
397094332d3Sopenharmony_ci	/* 创建HAL和驱动之间的通道及获取驱动网卡信息。 */
398094332d3Sopenharmony_ci	rc = g_wlanObj->Start(g_wlanObj);
399094332d3Sopenharmony_ci	if (rc != HDF_SUCCESS)
400094332d3Sopenharmony_ci	{
401094332d3Sopenharmony_ci		return HDF_FAILURE;
402094332d3Sopenharmony_ci	}
403094332d3Sopenharmony_ci	
404094332d3Sopenharmony_ci	/* 获取该设备支持的WLAN特性(不考虑当前的使用状态)。 */
405094332d3Sopenharmony_ci	rc = g_wlanObj->GetSupportFeature(g_wlanObj, supType, &supTypeLen);
406094332d3Sopenharmony_ci	if (rc != HDF_SUCCESS)
407094332d3Sopenharmony_ci	{
408094332d3Sopenharmony_ci		return HDF_FAILURE;
409094332d3Sopenharmony_ci	}
410094332d3Sopenharmony_ci	
411094332d3Sopenharmony_ci	/* 销毁HAL和驱动之间的通道。 */
412094332d3Sopenharmony_ci	rc = g_wlanObj->Stop(g_wlanObj);
413094332d3Sopenharmony_ci	if (rc != HDF_SUCCESS)
414094332d3Sopenharmony_ci	{
415094332d3Sopenharmony_ci		return HDF_FAILURE;
416094332d3Sopenharmony_ci	}
417094332d3Sopenharmony_ci	
418094332d3Sopenharmony_ci	/* 销毁wlan服务对象。 */
419094332d3Sopenharmony_ci	WlanInterfaceRelease(g_wlanObj);
420094332d3Sopenharmony_ci	
421094332d3Sopenharmony_ci	return rc;
422094332d3Sopenharmony_ci}
423094332d3Sopenharmony_ci```
424094332d3Sopenharmony_ci
425094332d3Sopenharmony_ci## 相关仓<a name="section1371113476307"></a>
426094332d3Sopenharmony_ci
427094332d3Sopenharmony_ci[驱动子系统](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)
428094332d3Sopenharmony_ci
429094332d3Sopenharmony_ci[drivers\_hdf_core](https://gitee.com/openharmony/drivers_hdf_core)
430094332d3Sopenharmony_ci
431094332d3Sopenharmony_ci[driver\_interface](https://gitee.com/openharmony/drivers_interface)
432094332d3Sopenharmony_ci
433094332d3Sopenharmony_ci[**drivers\_peripheral**](https://gitee.com/openharmony/drivers_peripheral)
434094332d3Sopenharmony_ci
435