blob: 8caf003750e5e9ab96c8f09df1bbd03715b5b5c5 [file] [log] [blame]
qs.xiong799dab02022-03-14 09:12:12 -04001/**@File libwifi6.h
2* @Brief :about function test
3* @details :
4* @Author : qs.xiong
5* @Date : 2022-3-14
6* @Version : V1.0
7* @copy ritght : Copyright (c) MobileTek
8*/
qs.xiong8d42bb92022-03-02 09:43:11 -05009#ifndef __LIBWIFI6_H__
10#define __LIBWIFI6_H__
11
12typedef enum {
you.chenebcb8022022-05-06 11:30:57 +080013 LYNQ_WIFI_BANDWIDTH_HT10 = 0, // not support in ap mode
14 LYNQ_WIFI_BANDWIDTH_HT20,
15 LYNQ_WIFI_BANDWIDTH_HT40, // not support in ap mode
16 LYNQ_WIFI_BANDWIDTH_HT80,
qs.xiong8d42bb92022-03-02 09:43:11 -050017}lynq_wifi_bandwidth_type_m;
18
19typedef enum {
you.chenebcb8022022-05-06 11:30:57 +080020 LYNQ_WIFI_AUTH_OPEN = 0,
qs.xiongd6c33cf2023-04-01 15:49:35 +080021 LYNQ_WIFI_AUTH_WEP, // not support WEP
you.chenebcb8022022-05-06 11:30:57 +080022 LYNQ_WIFI_AUTH_WPA_PSK,
23 LYNQ_WIFI_AUTH_WPA2_PSK,
qs.xiongd6c33cf2023-04-01 15:49:35 +080024 LYNQ_WIFI_AUTH_WPA2_WPA3_PSK,
25 LYNQ_WIFI_AUTH_WPA3_PSK,
you.chenebcb8022022-05-06 11:30:57 +080026}lynq_wifi_auth_s;
qs.xiong8d42bb92022-03-02 09:43:11 -050027
28typedef enum {
you.chenebcb8022022-05-06 11:30:57 +080029 LYNQ_WIFI_2G_band = 1,
30 LYNQ_WIFI_5G_band,
31 LYNQ_WIFI_2_and_5G_band, //not support
32}lynq_wifi_band_m;
qs.xiong8d42bb92022-03-02 09:43:11 -050033
qs.xiongd189c542022-03-31 00:58:23 -040034typedef enum {
you.chenebcb8022022-05-06 11:30:57 +080035 LYNQ_WIFI_AP_STATUS_DISABLE = 0,
36 LYNQ_WIFI_AP_STATUS_ENABLE, //ap is running status
37}lynq_wifi_ap_run_status_s;
38
39typedef enum {
40 LYNQ_WIFI_STA_STATUS_DISABLE = 0,
41 LYNQ_WIFI_STA_STATUS_ENABLE, //sta is running status
42}lynq_wifi_sta_run_status_s;
43
44typedef enum {
45 LYNQ_WIFI_INTERFACE_0 = 0, //sta
46 LYNQ_WIFI_INTERFACE_1, //ap
qs.xiongd189c542022-03-31 00:58:23 -040047}lynq_wifi_index_e;
qs.xiong8d42bb92022-03-02 09:43:11 -050048
you.chenebcb8022022-05-06 11:30:57 +080049typedef enum {
50 LYNQ_WIFI_STATUS_DISCONNECT = 0,
51 LYNQ_WIFI_STATUS_CONNECT,
you.chen8874cd62023-06-08 17:27:19 +080052 LYNQ_WIFI_SERVICE_ABNORMAL,
you.chenebcb8022022-05-06 11:30:57 +080053}lynq_wifi_ap_status_s;
54
55typedef struct ap_info
56{
57 char ap_ip[32];
58 char ap_mac[32];
qs.xiongd6c33cf2023-04-01 15:49:35 +080059 char ap_ssid[64];
you.chenebcb8022022-05-06 11:30:57 +080060 char psw[64]; //password
61 lynq_wifi_auth_s auth;
62 lynq_wifi_band_m band;
63}ap_info_s;
64
65typedef struct device_info
66{
67 char sta_ip[32];
68 char sta_mac[32];
69 char hostname[32];
70 lynq_wifi_ap_status_s status;
71}device_info_s;
72
73typedef struct scan_info
74{
75 char mac[32];
qs.xiongd6c33cf2023-04-01 15:49:35 +080076 char ssid[64];
you.chenebcb8022022-05-06 11:30:57 +080077 lynq_wifi_band_m band;
78 lynq_wifi_auth_s auth;
79 int rssi;
80}scan_info_s;
81
82typedef struct ap_detail_info
83{
84 struct ap_info base_info; // base_info : base info of strcut ap_info
85 lynq_wifi_ap_run_status_s status; // status:is not running 1:is running
86 int rssi; //[0~199]
87}ap_detail_info_s;
88
89typedef struct saved_ap_info
90{
91 struct ap_info base_info;
92}saved_ap_info_s;
93
94
95// insmod drive and start service of wifi
qs.xiong8d42bb92022-03-02 09:43:11 -050096int lynq_wifi_enable(void);
you.chenebcb8022022-05-06 11:30:57 +080097//rmmod drive
qs.xiong8d42bb92022-03-02 09:43:11 -050098int lynq_wifi_disable(void);
you.chenebcb8022022-05-06 11:30:57 +080099//set ssid of ap
qs.xiongd189c542022-03-31 00:58:23 -0400100int lynq_wifi_ap_ssid_set(lynq_wifi_index_e idx,char *ap_ssid);
you.chenebcb8022022-05-06 11:30:57 +0800101//get ap of ssid
qs.xiongd189c542022-03-31 00:58:23 -0400102int lynq_wifi_ap_ssid_get(lynq_wifi_index_e idx,char *ap_ssid);
you.chenebcb8022022-05-06 11:30:57 +0800103
104//set frquency for ap
qs.xiongd189c542022-03-31 00:58:23 -0400105int lynq_wifi_ap_frequency_set(lynq_wifi_index_e idx,int lynq_wifi_frequency);
you.chenebcb8022022-05-06 11:30:57 +0800106//get freuency of ap
qs.xiongd189c542022-03-31 00:58:23 -0400107int lynq_wifi_ap_frequency_get(lynq_wifi_index_e idx,int *lynq_wifi_frequency);
you.chenebcb8022022-05-06 11:30:57 +0800108
109//set bandwidth for ap
110int lynq_wifi_ap_bandwidth_set(lynq_wifi_index_e idx,lynq_wifi_bandwidth_type_m bandwidth);
111//get thr bandwidth of ap
qs.xiongd189c542022-03-31 00:58:23 -0400112int lynq_wifi_ap_bandwidth_get(lynq_wifi_index_e idx,lynq_wifi_bandwidth_type_m *bandwidth);
you.chenebcb8022022-05-06 11:30:57 +0800113
114//set channel for ap
115int lynq_wifi_ap_channel_set( lynq_wifi_index_e idx,int channel);
116//get channel of ap
qs.xiongd189c542022-03-31 00:58:23 -0400117int lynq_wifi_ap_channel_get( lynq_wifi_index_e idx,int* channel);
you.chenebcb8022022-05-06 11:30:57 +0800118
119//set auth for ap
120int lynq_wifi_ap_auth_set(lynq_wifi_index_e idx, lynq_wifi_auth_s auth);
121//get ap auth
122int lynq_wifi_ap_auth_get(lynq_wifi_index_e idx, lynq_wifi_auth_s *auth);
123
124//start ap
qs.xiongd189c542022-03-31 00:58:23 -0400125int lynq_wifi_ap_start(lynq_wifi_index_e idx);
you.chenebcb8022022-05-06 11:30:57 +0800126//stop ap
qs.xiongd189c542022-03-31 00:58:23 -0400127int lynq_wifi_ap_stop(lynq_wifi_index_e idx);
you.chenebcb8022022-05-06 11:30:57 +0800128//restart ap
129int lynq_wifi_ap_restart(lynq_wifi_index_e idx);
130
131//hide ssid
qs.xiongd189c542022-03-31 00:58:23 -0400132int lynq_wifi_ap_hide_ssid(lynq_wifi_index_e idx);
you.chenebcb8022022-05-06 11:30:57 +0800133//unhide ssid
qs.xiongd189c542022-03-31 00:58:23 -0400134int lynq_wifi_ap_unhide_ssid(lynq_wifi_index_e idx);
qs.xiong99b48d62022-04-07 05:41:29 -0400135
you.chenebcb8022022-05-06 11:30:57 +0800136//set the password for ap
137int lynq_ap_password_set(lynq_wifi_index_e idx, char *password);
138//get the ap password
139int lynq_ap_password_get(lynq_wifi_index_e idx, char *password);
qs.xiong8d42bb92022-03-02 09:43:11 -0500140
you.chenebcb8022022-05-06 11:30:57 +0800141//set the password to connet to dest_ap
142int lynq_sta_ssid_password_set(lynq_wifi_index_e idx, ap_info_s *ap, char *password);
143int lynq_sta_ssid_password_get(lynq_wifi_index_e idx, ap_info_s *ap, char *password);
144
145//get the ssid of sta
146int lynq_wifi_get_sta_ssid(lynq_wifi_index_e idx,char *sta_ssid);
147//get availble device info such as:ssid mac band rssi status auth
148int lynq_wifi_get_sta_available_ap(lynq_wifi_index_e idx,ap_detail_info_s *info);
149
150
151
152//get the sta connect ap auth
153int lynq_wifi_get_sta_auth(lynq_wifi_index_e idx, lynq_wifi_auth_s* auth); //auth 0:OPEN 1:WEP 2:WPA-PSK 3:WPA2-PSK
154
155//sta start connect to dest_ap
156int lynq_wifi_sta_connect(lynq_wifi_index_e idx, char *ssid, lynq_wifi_auth_s auth, char *psw);
you.chen8874cd62023-06-08 17:27:19 +0800157int lynq_wifi_sta_connect_timeout(lynq_wifi_index_e idx, char *ssid, lynq_wifi_auth_s auth, char *psw, int timeout);
you.chenebcb8022022-05-06 11:30:57 +0800158//disconnect
159int lynq_wifi_sta_disconnect(lynq_wifi_index_e idx,char *ssid);
160
161//start sta mode;enable sta
162int lynq_wifi_sta_start(lynq_wifi_index_e idx);
163//stop sta:disable sta
164int lynq_wifi_sta_stop(lynq_wifi_index_e idx);
165
166//Get all device info linked ap
167int lynq_get_ap_device_list(lynq_wifi_index_e idx, ap_info_s **ap, device_info_s ** list,int * len); //list info:mac ip hostname status len:device len
168//Get scan_result info
169int lynq_get_scan_list(lynq_wifi_index_e idx, scan_info_s ** list,int * len); //list info:mac ssid band auth rssi len:scan_info len
170int lynq_sta_forget_ap(lynq_wifi_index_e idx, char *ssid,lynq_wifi_auth_s auth);
171int lynq_get_sta_saved_ap(lynq_wifi_index_e idx,saved_ap_info_s ** list,int * len); //len: length of saved_ap_info
172
173//start scan availbale ap active
174int lynq_wifi_sta_start_scan(lynq_wifi_index_e idx);
175
qs.xionga60634f2023-07-06 21:16:20 +0800176//add for STA auto connect
177int lynq_wifi_sta_stop_net(lynq_wifi_index_e idx,int networkid);
you.chenebcb8022022-05-06 11:30:57 +0800178/*
179 * event usage:
180 * first declare a funcion like AP_CALLBACK_FUNC_PTR to recv messge from wifi lib
181 * call lynq_reg_ap_event_callback to register whih private data pointer and the callback fuction pointer declared before
182 * when envent comes the last registered callback function will been called
183 */
184
185typedef void(*AP_CALLBACK_FUNC_PTR)(void *priv, lynq_wifi_ap_status_s status);
186int lynq_reg_ap_event_callback(void *priv, AP_CALLBACK_FUNC_PTR cb);
187int lynq_unreg_ap_event_callback(void *priv);
188
189typedef enum {
190 LYNQ_WIFI_STA_STATUS_DISCONNECT = 0,
191 LYNQ_WIFI_STA_STATUS_CONNECT,
192 LYNQ_WIFI_STA_STATUS_SCAN_RESULT, //finish sta scan
you.chen8874cd62023-06-08 17:27:19 +0800193 LYNQ_WIFI_STA_STATUS_CONNECT_FAIL,
194 LYNQ_WIFI_STA_SERVICE_ABNORMAL,
195 LYNQ_WIFI_STATUS_EGNORE,
you.chenebcb8022022-05-06 11:30:57 +0800196}lynq_wifi_sta_status_s;
197typedef enum
198{
199 LYNQ_TIME_OUT = 0,
qs.xiong466c27c2023-04-12 11:40:02 +0800200 LYNQ_UNSPECIFIED_REASON,
201 LYNQ_AUTHENTICATION_NO_LONGER_VALID,
you.chenebcb8022022-05-06 11:30:57 +0800202 LYNQ_PSW_ERROR,
203 LYNQ_AUTH_ERROR,
qs.xiong466c27c2023-04-12 11:40:02 +0800204 LYNQ_AP_UNABLE_HANDLE,
you.chenebcb8022022-05-06 11:30:57 +0800205 LYNQ_NOT_FIND_AP,
qs.xiong466c27c2023-04-12 11:40:02 +0800206 LYNQ_WAIT_CONNECT_ACTIVE,
you.chenebcb8022022-05-06 11:30:57 +0800207}error_number_s;
208
209typedef void(*STA_CALLBACK_FUNC_PTR)(void *priv, lynq_wifi_sta_status_s status, error_number_s number);
210int lynq_reg_sta_event_callback(void * priv, STA_CALLBACK_FUNC_PTR cb);
211int lynq_unreg_sta_event_callback(void * priv);
qs.xionga60634f2023-07-06 21:16:20 +0800212typedef void(*STA_AUTO_CALLBACK_FUNC_PTR)(void *priv, lynq_wifi_sta_status_s status, error_number_s number,int networkid);
213int lynq_reg_sta_auto_event_callback(void * priv, STA_AUTO_CALLBACK_FUNC_PTR cb);
214int lynq_unreg_sta_auto_event_callback(void * priv);
you.chenebcb8022022-05-06 11:30:57 +0800215
216//get current ap status
217int lynq_get_ap_status(lynq_wifi_index_e idx, lynq_wifi_ap_run_status_s * ap_status);
218//get curent sta status
219int lynq_get_sta_status(lynq_wifi_index_e idx, lynq_wifi_sta_run_status_s * sta_status);
220
221//set the country code
222int lynq_get_country_code(lynq_wifi_index_e idx, char *country_code);
223//get current country code
224int lynq_set_country_code(lynq_wifi_index_e idx, char *country_code);
225
226//get wlan0/ap0 ip or mac
227int lynq_get_interface_ip(lynq_wifi_index_e idx,char *ip);
228int lynq_get_interface_mac(lynq_wifi_index_e idx,char *mac);
229
230
231//get current connect ap mac rssi band
232int lynq_get_connect_ap_mac(lynq_wifi_index_e idx,char *mac);
233int lynq_get_connect_ap_rssi(lynq_wifi_index_e idx,int * rssi);
234int lynq_get_connect_ap_band(lynq_wifi_index_e idx,lynq_wifi_band_m * band);
you.chencbf0c4e2022-06-21 16:53:48 +0800235int lynq_get_connect_ap_ip(lynq_wifi_index_e idx,char *ip);
qs.xiong8d42bb92022-03-02 09:43:11 -0500236
qs.xiongea22f162022-10-17 11:15:45 +0800237/*****add limit of connected ap device number 2022.10.12 by qs.xiong
238 *
239 *sta_number:
240 * ap max be connected no more than 15
241 * so sta_number : [1-15]
242 */
243int lynq_ap_connect_num(int sta_number);
244
qs.xiongf75768c2022-10-17 11:19:57 +0800245/****add acs contrl api*****************
246 *
247 *idx:
248 * 1 is ap and only 1 is legal in this api
249 *acs_mode:
250 * 2 is open acs at 2.4GHz
251 * 5 is open acs at 5GHz
252 * didnt ssuport 2.4G&5G together
253 * add by qs.xiong 20221012*************/
254int lynq_enable_acs(lynq_wifi_index_e idx,int acs_mode);
255
you.chenaa2c2242022-11-07 18:31:14 +0800256//you.chen add for tv-box start
257/**
258 * @brief enableGBW, repeat call will fail before disableGBW
259 * @param mac of tv-box
260 * @return
261 */
262int enableGBW(const char* mac);
263/**
264 * @brief disableGBW
265 * @return
266 */
267int disableGBW();
268//you.chen add for tv-box end
269
qs.xiong8d42bb92022-03-02 09:43:11 -0500270#endif