1 /*
2 * Copyright (C) 2019-2020 Alibaba Group Holding Limited
3 */
4
5 //#if defined(CONFIG_SAL) || defined(CONFIG_TCPIP)
6 #include <stdio.h>
7 #include <string.h>
8 #include <unistd.h>
9
10 #include <aos/hal/wifi.h>
11 #include <vfsdev/wifi_dev.h>
12
13 #define WIFI_DRIVER(dev) ((wifi_driver_t *)dev->drv_ops)
14
hal_wifi_init(netdev_t * dev)15 int hal_wifi_init(netdev_t *dev)
16 {
17 int ret = -1;
18
19 printf("%s:%d\n", __func__, __LINE__);
20 if(dev && WIFI_DRIVER(dev) && WIFI_DRIVER(dev)->init) {
21 printf("%s:%d\n", __func__, __LINE__);
22 ret = WIFI_DRIVER(dev)->init(dev);
23 }
24
25 return ret;
26 }
27
hal_wifi_deinit(netdev_t * dev)28 int hal_wifi_deinit(netdev_t *dev)
29 {
30 int ret = -1;
31
32 if(dev && WIFI_DRIVER(dev) && WIFI_DRIVER(dev)->deinit) {
33 ret = WIFI_DRIVER(dev)->deinit(dev);
34 }
35
36 return ret;
37 }
38
hal_wifi_get_base_info(netdev_t * dev,wifi_base_info_t * info)39 int hal_wifi_get_base_info(netdev_t *dev, wifi_base_info_t* info)
40 {
41 if(dev&& WIFI_DRIVER(dev)) {
42 wifi_base_info_t* base = (wifi_base_info_t*)&(WIFI_DRIVER(dev)->base);
43
44 if(base->partner) {
45 info->partner = base->partner;
46 } else {
47 info->partner = NULL;
48 }
49
50 if(base->project) {
51 info->project = base->project;
52 } else {
53 info->project = NULL;
54 }
55
56 if(base->app_net) {
57 info->app_net = base->app_net;
58 } else {
59 info->app_net = NULL;
60 }
61
62 if(base->cloud) {
63 info->cloud = base->cloud;
64 } else {
65 info->cloud = NULL;
66 }
67
68 if(base->os) {
69 info->os = base->os;
70 } else {
71 info->os = NULL;
72 }
73
74 if(base->type) {
75 info->type = base->type;
76 } else {
77 info->type = NULL;
78 }
79 return 0;
80 } else {
81 return -1;
82 }
83 }
hal_wifi_set_mode(netdev_t * dev,wifi_mode_t mode)84 int hal_wifi_set_mode(netdev_t *dev, wifi_mode_t mode)
85 {
86 int ret = -1;
87
88 if(dev && WIFI_DRIVER(dev) && WIFI_DRIVER(dev)->set_mode) {
89 ret = WIFI_DRIVER(dev)->set_mode(dev, mode);
90 }
91
92 return ret;
93 }
94
95
hal_wifi_get_mode(netdev_t * dev,wifi_mode_t * mode)96 int hal_wifi_get_mode(netdev_t *dev, wifi_mode_t *mode)
97 {
98 int ret = -1;
99
100 if(dev && WIFI_DRIVER(dev) && WIFI_DRIVER(dev)->get_mode) {
101 ret = WIFI_DRIVER(dev)->get_mode(dev, mode);
102 }
103
104 return ret;
105 }
106
107
hal_wifi_install_event_cb(netdev_t * dev,wifi_event_func * evt_cb)108 int hal_wifi_install_event_cb(netdev_t *dev, wifi_event_func *evt_cb)
109 {
110 int ret = -1;
111
112 if(dev && WIFI_DRIVER(dev) && WIFI_DRIVER(dev)->install_event_cb) {
113 ret = WIFI_DRIVER(dev)->install_event_cb(dev, evt_cb);
114 }
115
116 return ret;
117 }
118
hal_wifi_cancel_connect(netdev_t * dev)119 int hal_wifi_cancel_connect(netdev_t *dev)
120 {
121 int ret = -1;
122
123 if(dev && WIFI_DRIVER(dev) && WIFI_DRIVER(dev)->cancel_connect) {
124 ret = WIFI_DRIVER(dev)->cancel_connect(dev);
125 }
126
127 return ret;
128 }
129
hal_wifi_set_mac_addr(netdev_t * dev,const uint8_t * mac)130 int hal_wifi_set_mac_addr(netdev_t *dev, const uint8_t *mac)
131 {
132 int ret = -1;
133
134 if(dev && WIFI_DRIVER(dev) && WIFI_DRIVER(dev)->set_mac_addr) {
135 ret = WIFI_DRIVER(dev)->set_mac_addr(dev, mac);
136 }
137
138 return ret;
139 }
140
hal_wifi_get_mac_addr(netdev_t * dev,uint8_t * mac)141 int hal_wifi_get_mac_addr(netdev_t *dev, uint8_t *mac)
142 {
143 int ret = -1;
144
145 if(dev && WIFI_DRIVER(dev) && WIFI_DRIVER(dev)->get_mac_addr) {
146 ret = WIFI_DRIVER(dev)->get_mac_addr(dev, mac);
147 }
148
149 return ret;
150 }
151
hal_wifi_set_lpm(netdev_t * dev,wifi_lpm_mode_t mode)152 int hal_wifi_set_lpm(netdev_t *dev, wifi_lpm_mode_t mode)
153 {
154 int ret = -1;
155
156 if(dev && WIFI_DRIVER(dev) && WIFI_DRIVER(dev)->set_lpm) {
157 ret = WIFI_DRIVER(dev)->set_lpm(dev, mode);
158 }
159
160 return ret;
161 }
162
hal_wifi_get_lpm(netdev_t * dev,wifi_lpm_mode_t * mode)163 int hal_wifi_get_lpm(netdev_t *dev, wifi_lpm_mode_t *mode)
164 {
165 int ret = -1;
166
167 if(dev && WIFI_DRIVER(dev) && WIFI_DRIVER(dev)->get_lpm) {
168 ret = WIFI_DRIVER(dev)->get_lpm(dev, mode);
169 }
170
171 return ret;
172 }
173
hal_wifi_notify_ip_state2drv(netdev_t * dev,wifi_ip_stat_t * out_net_para,wifi_mode_t wifi_type)174 int hal_wifi_notify_ip_state2drv(netdev_t *dev, wifi_ip_stat_t *out_net_para, wifi_mode_t wifi_type)
175 {
176 int ret = -1;
177
178 if(dev && WIFI_DRIVER(dev) && WIFI_DRIVER(dev)->notify_ip_state2drv) {
179 ret = WIFI_DRIVER(dev)->notify_ip_state2drv(dev, out_net_para, wifi_type);
180 }
181
182 return ret;
183 }
184
hal_wifi_start_scan(netdev_t * dev,wifi_scan_config_t * config,bool block)185 int hal_wifi_start_scan(netdev_t *dev, wifi_scan_config_t *config, bool block)
186 {
187 int ret = -1;
188
189 if(dev && WIFI_DRIVER(dev) && WIFI_DRIVER(dev)->start_scan) {
190 ret = WIFI_DRIVER(dev)->start_scan(dev, config, block);
191 }
192
193 return ret;
194 }
195
hal_wifi_connect(netdev_t * dev,wifi_config_t * config)196 int hal_wifi_connect(netdev_t *dev, wifi_config_t *config)
197 {
198 int ret = -1;
199
200 if(dev && WIFI_DRIVER(dev) && WIFI_DRIVER(dev)->connect) {
201 ret = WIFI_DRIVER(dev)->connect(dev, config);
202 }
203
204 return ret;
205 }
206
hal_wifi_disconnect(netdev_t * dev)207 int hal_wifi_disconnect(netdev_t *dev)
208 {
209 int ret = -1;
210
211 if(dev && WIFI_DRIVER(dev) && WIFI_DRIVER(dev)->disconnect) {
212 ret = WIFI_DRIVER(dev)->disconnect(dev);
213 }
214
215 return ret;
216 }
217
hal_wifi_sta_get_link_status(netdev_t * dev,wifi_ap_record_t * ap_info)218 int hal_wifi_sta_get_link_status(netdev_t *dev, wifi_ap_record_t *ap_info)
219 {
220 int ret = -1;
221
222 if(dev && WIFI_DRIVER(dev) && WIFI_DRIVER(dev)->sta_get_link_status) {
223 ret = WIFI_DRIVER(dev)->sta_get_link_status(dev, ap_info);
224 }
225
226 return ret;
227 }
228
hal_wifi_ap_get_sta_list(netdev_t * dev,wifi_sta_list_t * sta)229 int hal_wifi_ap_get_sta_list(netdev_t *dev, wifi_sta_list_t *sta)
230 {
231 int ret = -1;
232
233 if(dev && WIFI_DRIVER(dev) && WIFI_DRIVER(dev)->ap_get_sta_list) {
234 ret = WIFI_DRIVER(dev)->ap_get_sta_list(dev, sta);
235 }
236
237 return ret;
238 }
239
hal_wifi_start_monitor(netdev_t * dev,wifi_promiscuous_cb_t cb)240 int hal_wifi_start_monitor(netdev_t *dev, wifi_promiscuous_cb_t cb)
241 {
242 int ret = -1;
243
244 if(dev && WIFI_DRIVER(dev) && WIFI_DRIVER(dev)->start_monitor) {
245 ret = WIFI_DRIVER(dev)->start_monitor(dev, cb);
246 }
247
248 return ret;
249 }
250
hal_wifi_stop_monitor(netdev_t * dev)251 int hal_wifi_stop_monitor(netdev_t *dev)
252 {
253 int ret = -1;
254
255 if(dev && WIFI_DRIVER(dev) && WIFI_DRIVER(dev)->stop_monitor) {
256 ret = WIFI_DRIVER(dev)->stop_monitor(dev);
257 }
258
259 return ret;
260 }
261
hal_wifi_send_80211_raw_frame(netdev_t * dev,void * buffer,uint16_t len)262 int hal_wifi_send_80211_raw_frame(netdev_t *dev, void *buffer, uint16_t len)
263 {
264 int ret = -1;
265
266 if(dev && WIFI_DRIVER(dev) && WIFI_DRIVER(dev)->send_80211_raw_frame) {
267 ret = WIFI_DRIVER(dev)->send_80211_raw_frame(dev, buffer, len);
268 }
269
270 return ret;
271 }
272
hal_wifi_set_channel(netdev_t * dev,uint8_t primary)273 int hal_wifi_set_channel(netdev_t *dev, uint8_t primary)
274 {
275 int ret = -1;
276
277 if(dev && WIFI_DRIVER(dev) && WIFI_DRIVER(dev)->set_channel) {
278 ret = WIFI_DRIVER(dev)->set_channel(dev, primary);
279 }
280
281 return ret;
282 }
283
hal_wifi_get_channel(netdev_t * dev,uint8_t * primary)284 int hal_wifi_get_channel(netdev_t *dev, uint8_t *primary)
285 {
286 int ret = -1;
287
288 if(dev && WIFI_DRIVER(dev) && WIFI_DRIVER(dev)->get_channel) {
289 ret = WIFI_DRIVER(dev)->get_channel(dev, (int *)primary);
290 }
291
292 return ret;
293 }
294
hal_wifi_register_monitor_cb(netdev_t * dev,monitor_data_cb_t fn)295 int hal_wifi_register_monitor_cb(netdev_t *dev, monitor_data_cb_t fn)
296 {
297 int ret = -1;
298
299 if(dev && WIFI_DRIVER(dev) && WIFI_DRIVER(dev)->register_monitor_cb) {
300 ret = WIFI_DRIVER(dev)->register_monitor_cb(dev, fn);
301 }
302
303 return ret;
304 }
305
hal_wifi_start_mgnt_monitor(netdev_t * dev)306 int hal_wifi_start_mgnt_monitor(netdev_t *dev)
307 {
308 int ret = -1;
309
310 if(dev && WIFI_DRIVER(dev) && WIFI_DRIVER(dev)->start_mgnt_monitor) {
311 ret = WIFI_DRIVER(dev)->start_mgnt_monitor(dev);
312 }
313
314 return ret;
315 }
316
hal_wifi_stop_mgnt_monitor(netdev_t * dev)317 int hal_wifi_stop_mgnt_monitor(netdev_t *dev)
318 {
319 int ret = -1;
320
321 if(dev && WIFI_DRIVER(dev)&& WIFI_DRIVER(dev)->stop_mgnt_monitor) {
322 ret = WIFI_DRIVER(dev)->stop_mgnt_monitor(dev);
323 }
324
325 return ret;
326 }
327
hal_wifi_register_mgnt_monitor_cb(netdev_t * dev,monitor_data_cb_t fn)328 int hal_wifi_register_mgnt_monitor_cb(netdev_t *dev, monitor_data_cb_t fn)
329 {
330 int ret = -1;
331
332 if(dev && WIFI_DRIVER(dev) && WIFI_DRIVER(dev)->register_mgnt_monitor_cb) {
333 ret = WIFI_DRIVER(dev)->register_mgnt_monitor_cb(dev, fn);
334 }
335
336 return ret;
337 }
338
339
hal_wifi_set_smartcfg(netdev_t * dev,int enable)340 int hal_wifi_set_smartcfg(netdev_t *dev, int enable)
341 {
342 int ret = -1;
343
344 if(dev && WIFI_DRIVER(dev) && WIFI_DRIVER(dev)->set_smartcfg) {
345 ret = WIFI_DRIVER(dev)->set_smartcfg(dev, enable);
346 }
347
348 return ret;
349 }
350
hal_wifi_start_specified_scan(netdev_t * dev,ap_list_t * ap_list,int ap_num)351 int hal_wifi_start_specified_scan(netdev_t *dev, ap_list_t *ap_list, int ap_num)
352 {
353 int ret = -1;
354
355 if(dev && WIFI_DRIVER(dev) && WIFI_DRIVER(dev)->start_specified_scan) {
356 ret = WIFI_DRIVER(dev)->start_specified_scan(dev, ap_list, ap_num);
357 }
358
359 return ret;
360 }
361
hal_wifi_set_channellist(netdev_t * dev,wifi_channel_list_t * channel_list)362 int hal_wifi_set_channellist(netdev_t *dev, wifi_channel_list_t *channel_list)
363 {
364 int ret = -1;
365
366 if (dev && WIFI_DRIVER(dev) && WIFI_DRIVER(dev)->set_channellist) {
367 ret = WIFI_DRIVER(dev)->set_channellist(dev, channel_list);
368 }
369
370 return ret;
371 }
372
hal_wifi_get_channellist(netdev_t * dev,wifi_channel_list_t * channel_list)373 int hal_wifi_get_channellist(netdev_t *dev, wifi_channel_list_t *channel_list)
374 {
375 int ret = -1;
376
377 if (dev && WIFI_DRIVER(dev) && WIFI_DRIVER(dev)->get_channellist) {
378 ret = WIFI_DRIVER(dev)->get_channellist(dev, channel_list);
379 }
380
381 return ret;
382 }
383
384 //#endif
385