]> Git Repo - esp-hosted.git/blob - host/linux/host_control/c_support/test.c
license year changed
[esp-hosted.git] / host / linux / host_control / c_support / test.c
1 /*
2  * Espressif Systems Wireless LAN device driver
3  *
4  * Copyright (C) 2015-2021 Espressif Systems (Shanghai) PTE LTD
5  *
6  * This software file (the "File") is distributed by Espressif Systems (Shanghai)
7  * PTE LTD under the terms of the GNU General Public License Version 2, June 1991
8  * (the "License").  You may use, redistribute and/or modify this File in
9  * accordance with the terms and conditions of the License, a copy of which
10  * is available by writing to the Free Software Foundation, Inc.,
11  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA or on the
12  * worldwide web at http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
13  *
14  * THE FILE IS DISTRIBUTED AS-IS, WITHOUT WARRANTY OF ANY KIND, AND THE
15  * IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE
16  * ARE EXPRESSLY DISCLAIMED.  The License provides additional details about
17  * this warranty disclaimer.
18  */
19
20 #include <string.h>
21 #include <stdlib.h>
22 #include "commands.h"
23 #include "platform_wrapper.h"
24
25 #define MAC_LENGTH                          18
26 #define SSID_LENGTH                         32
27 #define PWD_LENGTH                          64
28
29 #define SUCCESS                             0
30 #define FAILURE                             -1
31
32 /* station mode */
33 #define STATION_MODE_MAC_ADDRESS            "1a:11:11:11:11:11"
34 #define STATION_MODE_SSID                   "MyWifi"
35 #define STATION_MODE_PWD                    "MyWifiPass@123"
36 #define STATION_MODE_BSSID                  ""
37 #define STATION_MODE_IS_WPA3_SUPPORTED      false
38 #define STATION_MODE_LISTEN_INTERVAL        5
39
40 /* softap mode */
41 #define SOFTAP_MODE_MAC_ADDRESS             "1a:22:22:22:22:22"
42 #define SOFTAP_MODE_SSID                    "ESPWifi"
43 #define SOFTAP_MODE_PWD                     "ESPWifi@123"
44 #define SOFTAP_MODE_CHANNEL                 1
45 #define SOFTAP_MODE_ENCRYPTION_MODE         3
46 #define SOFTAP_MODE_MAX_ALLOWED_CLIENTS     4
47 #define SOFTAP_MODE_SSID_HIDDEN             false
48 #define SOFTAP_MODE_BANDWIDTH               2
49
50 #define TEST_DEBUG_PRINTS                   1
51
52
53 static void test_get_wifi_mode()
54 {
55     int mode = 0;
56     int ret = wifi_get_mode(&mode);
57     printf("==== %s =>\n",__func__);
58     if (ret == SUCCESS) {
59         printf("wifi mode is %d \n",mode);
60     } else {
61         printf("Failed to get wifi mode \n");
62     }
63     printf("====\n\n");
64 }
65
66 static int test_set_wifi_mode(int mode)
67 {
68     int ret = SUCCESS;
69     ret = wifi_set_mode(mode);
70 #ifdef TEST_DEBUG_PRINTS
71     printf("==== %s =>\n",__func__);
72     if (ret == SUCCESS) {
73         printf("wifi mode is %d \n", mode);
74     } else {
75         printf("error in setting mode \n");
76     }
77     printf("====\n\n");
78 #endif
79     return ret;
80 }
81
82 static int test_set_wifi_mode_none()
83 {
84     return test_set_wifi_mode(WIFI_MODE_NONE);
85 }
86
87 static int test_set_wifi_mode_station()
88 {
89     return test_set_wifi_mode(WIFI_MODE_STA);
90 }
91
92 static int test_set_wifi_mode_softap()
93 {
94     return test_set_wifi_mode(WIFI_MODE_AP);
95 }
96
97 static int test_set_wifi_mode_station_softap()
98 {
99     return test_set_wifi_mode(WIFI_MODE_APSTA);
100 }
101
102 static void test_station_mode_get_mac_addr()
103 {
104     char mac[MAC_LENGTH] = "";
105     int ret = SUCCESS;
106     printf("==== %s =>\n",__func__);
107     ret = wifi_get_mac(WIFI_MODE_STA, mac);
108     if (ret == SUCCESS) {
109         printf("Station mode: mac address %s \n", mac);
110     } else {
111         printf("Failed to get station mode MAC address \n");
112     }
113     printf("====\n\n");
114 }
115
116 static int test_station_mode_set_mac_addr_of_esp()
117 {
118     int ret = SUCCESS;
119     char mac[MAC_LENGTH] = STATION_MODE_MAC_ADDRESS;
120     ret = wifi_set_mac(WIFI_MODE_STA, mac);
121 #ifdef TEST_DEBUG_PRINTS
122     printf("==== %s =>\n",__func__);
123     if (ret == SUCCESS) {
124         printf("MAC address is set \n");
125     } else {
126         printf("MAC address is not set \n");
127     }
128     printf("====\n\n");
129 #endif
130
131     return ret;
132 }
133
134 static int test_softap_mode_set_mac_addr_of_esp()
135 {
136     int ret = SUCCESS;
137     char mac[MAC_LENGTH] = SOFTAP_MODE_MAC_ADDRESS;
138     ret = wifi_set_mac(WIFI_MODE_AP, mac);
139 #ifdef TEST_DEBUG_PRINTS
140     printf("==== %s =>\n",__func__);
141     if (ret == SUCCESS) {
142         printf("MAC address is set \n");
143     } else {
144         printf("MAC address is not set \n");
145     }
146     printf("====\n\n");
147 #endif
148
149     return ret;
150 }
151
152 static void test_softap_mode_get_mac_addr()
153 {
154     char mac[MAC_LENGTH] = "";
155     int ret = wifi_get_mac(WIFI_MODE_AP, mac);
156     printf("==== %s =>\n",__func__);
157     if (ret == SUCCESS) {
158         printf("Softap mode: mac address %s \n", mac);
159     } else {
160         printf("Failed to get softap mode MAC address \n");
161     }
162     printf("====\n\n");
163 }
164
165 static int test_station_mode_connect()
166 {
167     int ret = SUCCESS;
168     esp_hosted_control_config_t config = {0};
169
170     strcpy((char *)&config.station.ssid , STATION_MODE_SSID);
171     strcpy((char *)&config.station.pwd , STATION_MODE_PWD);
172     strcpy((char *)&config.station.bssid, STATION_MODE_BSSID);
173     config.station.is_wpa3_supported = STATION_MODE_IS_WPA3_SUPPORTED;
174     config.station.listen_interval = STATION_MODE_LISTEN_INTERVAL;
175
176     ret = wifi_set_ap_config(config);
177 #ifdef TEST_DEBUG_PRINTS
178     printf("==== %s =>\n",__func__);
179     if (ret == SUCCESS) {
180         printf("Connected to AP \n");
181     } else {
182         printf("Failed to connect with AP \n");
183     }
184     printf("====\n\n");
185 #endif
186     return ret;
187 }
188
189 static int test_station_mode_get_info()
190 {
191     int ret = SUCCESS;
192     esp_hosted_control_config_t config = {0};
193
194     printf("==== %s =>\n",__func__);
195     ret = wifi_get_ap_config(&config);
196     if (ret == SUCCESS) {
197         printf("AP's ssid %s \n", config.station.ssid);
198         printf("AP's bssid i.e. MAC address %s \n", config.station.bssid);
199         printf("AP's channel number %d \n", config.station.channel);
200         printf("AP's rssi %d \n", config.station.rssi);
201         printf("AP's encryption mode %d \n", config.station.encryption_mode);
202     } else {
203         printf("AP's status %s \n", config.station.status);
204     }
205     printf("====\n\n");
206
207     return ret;
208 }
209
210 static void test_get_available_wifi()
211 {
212     int count = 0;
213     esp_hosted_wifi_scanlist_t *list = NULL;
214
215     printf("==== %s =>\n",__func__);
216     list = wifi_ap_scan_list(&count);
217     if (!count) {
218         printf("No AP found \n");
219     } else if (!list) {
220         printf("Failed to get scanned AP list \n");
221     } else {
222         printf("Number of available APs is %d \n", count);
223         for (int i=0; i<count; i++) {
224             printf("%d th AP's ssid \"%s\" bssid \"%s\" rssi \"%d\" channel \"%d\" authentication mode \"%d\" \n",i, list[i].ssid, list[i].bssid, list[i].rssi, list[i].channel, list[i].encryption_mode);
225         }
226     }
227     if (list) {
228         esp_hosted_free(list);
229         list = NULL;
230     }
231     printf("====\n\n");
232 }
233
234 static int test_station_mode_disconnect()
235 {
236     int ret = wifi_disconnect_ap();
237 #ifdef TEST_DEBUG_PRINTS
238     printf("==== %s =>\n",__func__);
239     if (ret == SUCCESS) {
240         printf("Disconnected from AP \n");
241     } else {
242         printf("Failed to disconnect from AP \n");
243     }
244     printf("====\n\n");
245 #endif
246
247     return ret;
248 }
249
250 static int test_softap_mode_start()
251 {
252     int ret = SUCCESS;
253     esp_hosted_control_config_t config = {0};
254
255     strcpy((char *)&config.softap.ssid, SOFTAP_MODE_SSID);
256     strcpy((char *)&config.softap.pwd, SOFTAP_MODE_PWD);
257     config.softap.channel = SOFTAP_MODE_CHANNEL;
258     config.softap.encryption_mode = SOFTAP_MODE_ENCRYPTION_MODE;
259     config.softap.max_connections = SOFTAP_MODE_MAX_ALLOWED_CLIENTS;
260     config.softap.ssid_hidden = SOFTAP_MODE_SSID_HIDDEN;
261     config.softap.bandwidth = SOFTAP_MODE_BANDWIDTH;
262
263     ret = wifi_set_softap_config(config);
264 #ifdef TEST_DEBUG_PRINTS
265     printf("==== %s =>\n",__func__);
266     if (ret == SUCCESS) {
267         printf("esp32 softAP started \n");
268     } else {
269         printf("Failed to set softAP config \n");
270     }
271     printf("====\n\n");
272 #endif
273     return ret;
274 }
275
276 static int test_softap_mode_get_info()
277 {
278     esp_hosted_control_config_t config = {0};
279     int ret = wifi_get_softap_config(&config);
280     printf("==== %s =>\n",__func__);
281     if (ret == SUCCESS) {
282         printf("softAP ssid %s \n", config.softap.ssid);
283         printf("softAP pwd %s \n", config.softap.pwd);
284         printf("softAP channel ID %d \n", config.softap.channel);
285         printf("softAP encryption mode %d \n", config.softap.encryption_mode);
286         printf("softAP max connections %d \n", config.softap.max_connections);
287         printf("softAP ssid broadcast status %d \n", config.softap.ssid_hidden);
288         printf("softAP bandwidth mode %d \n", config.softap.bandwidth);
289     } else {
290         printf("Failed to get softAP config \n");
291     }
292     printf("====\n\n");
293
294     return ret;
295 }
296
297 static void test_softap_mode_connected_clients_info()
298 {
299     int count = 0;
300     esp_hosted_wifi_connected_stations_list *stations_list = NULL;
301
302     printf("==== %s =>\n",__func__);
303     stations_list = wifi_connected_stations_list(&count);
304     if (!count) {
305         printf("No station found \n");
306     } else if (!stations_list) {
307         printf("Failed to get connected stations list \n");
308     } else if (count) {
309         for (int i=0; i<count; i++) {
310             printf("%d th stations's bssid \"%s\" rssi \"%d\" \n",i, stations_list[i].bssid, stations_list[i].rssi);
311         }
312     }
313     if (stations_list) {
314         esp_hosted_free(stations_list);
315         stations_list = NULL;
316     }
317     printf("====\n\n");
318 }
319
320 static int test_softap_mode_stop()
321 {
322     int ret = wifi_stop_softap();
323 #ifdef TEST_DEBUG_PRINTS
324     printf("==== %s =>\n",__func__);
325     if (ret == SUCCESS) {
326         printf("ESP32 softAP stopped \n");
327     } else {
328         printf("Failed to stop ESP32 softAP \n");
329     }
330     printf("====\n\n");
331 #endif
332
333     return ret;
334 }
335
336
337 static int test_set_wifi_power_save_mode()
338 {
339     int power_save_mode = WIFI_PS_MIN_MODEM;
340     int ret = wifi_set_power_save_mode(power_save_mode);
341
342 #ifdef TEST_DEBUG_PRINTS
343     printf("==== %s =>\n",__func__);
344     if (ret == SUCCESS) {
345         printf("Power save mode set \n");
346     } else {
347         printf("Power save mode is not set \n");
348     }
349     printf("====\n\n");
350 #endif
351
352     return ret;
353 }
354
355 static int test_get_wifi_power_save_mode()
356 {
357     int power_save_mode = WIFI_PS_MIN_MODEM;
358     int ret = wifi_get_power_save_mode(&power_save_mode);
359 #ifdef TEST_DEBUG_PRINTS
360     printf("==== %s =>\n",__func__);
361     if (ret == SUCCESS) {
362         printf("Power save mode is %d \n", power_save_mode);
363     } else {
364         printf("Failed to get power save mode \n");
365     }
366     printf("====\n\n");
367 #endif
368
369     return ret;
370 }
371
372 int main()
373 {
374     /* Below APIs could be used by demo application */
375     test_set_wifi_mode_none();
376
377     test_get_wifi_mode();
378
379     test_get_available_wifi();
380
381     /* station mode */
382
383     test_set_wifi_mode_station();
384
385     test_station_mode_set_mac_addr_of_esp();
386
387     test_station_mode_get_mac_addr();
388
389     test_station_mode_connect();
390
391     test_station_mode_get_info();
392
393     test_station_mode_disconnect();
394
395     /* softap mode */
396
397     test_set_wifi_mode_softap();
398
399     test_softap_mode_set_mac_addr_of_esp();
400
401     test_softap_mode_get_mac_addr();
402
403     test_softap_mode_start();
404
405     test_softap_mode_get_info();
406
407     test_softap_mode_connected_clients_info();
408
409     test_softap_mode_stop();
410
411     /* station + softap mode*/
412
413     test_set_wifi_mode_station_softap();
414
415     test_station_mode_connect();
416
417     test_softap_mode_start();
418
419     test_station_mode_get_info();
420
421     test_softap_mode_get_info();
422
423     test_station_mode_disconnect();
424
425     test_softap_mode_stop();
426
427     /* power save mode */
428
429     test_set_wifi_power_save_mode();
430
431     test_get_wifi_power_save_mode();
432
433     return 0;
434 }
This page took 0.047388 seconds and 4 git commands to generate.