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