7
7
* The MIT License (MIT)
8
8
*
9
9
* Copyright (c) 2016, 2017 Nick Moore @mnemote
10
+ * Copyright (c) 2017 "Eric Poulsen" <eric@zyxod.com>
10
11
*
11
12
* Based on esp8266/modnetwork.c which is Copyright (c) 2015 Paul Sokolovsky
12
13
* And the ESP IDF example code which is Public Domain / CC0
48
49
#include "lwip/dns.h"
49
50
#include "tcpip_adapter.h"
50
51
52
+ #include "modnetwork.h"
53
+
51
54
#define MODNETWORK_INCLUDE_CONSTANTS (1)
52
55
53
56
NORETURN void _esp_exceptions (esp_err_t e ) {
@@ -122,7 +125,7 @@ static esp_err_t event_handler(void *ctx, system_event_t *event) {
122
125
ESP_LOGI ("wifi" , "STA_START" );
123
126
break ;
124
127
case SYSTEM_EVENT_STA_GOT_IP :
125
- ESP_LOGI ("wifi " , "GOT_IP" );
128
+ ESP_LOGI ("network " , "GOT_IP" );
126
129
break ;
127
130
case SYSTEM_EVENT_STA_DISCONNECTED : {
128
131
// This is a workaround as ESP32 WiFi libs don't currently
@@ -161,7 +164,7 @@ static esp_err_t event_handler(void *ctx, system_event_t *event) {
161
164
break ;
162
165
}
163
166
default :
164
- ESP_LOGI ("wifi " , "event %d" , event -> event_id );
167
+ ESP_LOGI ("network " , "event %d" , event -> event_id );
165
168
break ;
166
169
}
167
170
return ESP_OK ;
@@ -182,6 +185,19 @@ STATIC void require_if(mp_obj_t wlan_if, int if_no) {
182
185
}
183
186
184
187
STATIC mp_obj_t get_wlan (size_t n_args , const mp_obj_t * args ) {
188
+ static int initialized = 0 ;
189
+ if (!initialized ) {
190
+ wifi_init_config_t cfg = WIFI_INIT_CONFIG_DEFAULT ();
191
+ ESP_LOGD ("modnetwork" , "Initializing WiFi" );
192
+ ESP_EXCEPTIONS ( esp_wifi_init (& cfg ) );
193
+ ESP_EXCEPTIONS ( esp_wifi_set_storage (WIFI_STORAGE_RAM ) );
194
+ ESP_LOGD ("modnetwork" , "Initialized" );
195
+ ESP_EXCEPTIONS ( esp_wifi_set_mode (0 ) );
196
+ ESP_EXCEPTIONS ( esp_wifi_start () );
197
+ ESP_LOGD ("modnetwork" , "Started" );
198
+ initialized = 1 ;
199
+ }
200
+
185
201
int idx = (n_args > 0 ) ? mp_obj_get_int (args [0 ]) : WIFI_IF_STA ;
186
202
if (idx == WIFI_IF_STA ) {
187
203
return MP_OBJ_FROM_PTR (& wlan_sta_obj );
@@ -201,14 +217,6 @@ STATIC mp_obj_t esp_initialize() {
201
217
ESP_LOGD ("modnetwork" , "Initializing Event Loop" );
202
218
ESP_EXCEPTIONS ( esp_event_loop_init (event_handler , NULL ) );
203
219
ESP_LOGD ("modnetwork" , "esp_event_loop_init done" );
204
- wifi_init_config_t cfg = WIFI_INIT_CONFIG_DEFAULT ();
205
- ESP_LOGD ("modnetwork" , "Initializing WiFi" );
206
- ESP_EXCEPTIONS ( esp_wifi_init (& cfg ) );
207
- ESP_EXCEPTIONS ( esp_wifi_set_storage (WIFI_STORAGE_RAM ) );
208
- ESP_LOGD ("modnetwork" , "Initialized" );
209
- ESP_EXCEPTIONS ( esp_wifi_set_mode (0 ) );
210
- ESP_EXCEPTIONS ( esp_wifi_start () );
211
- ESP_LOGD ("modnetwork" , "Started" );
212
220
initialized = 1 ;
213
221
}
214
222
return mp_const_none ;
@@ -342,6 +350,15 @@ STATIC mp_obj_t esp_ifconfig(size_t n_args, const mp_obj_t *args) {
342
350
return mp_obj_new_tuple (4 , tuple );
343
351
} else {
344
352
// set
353
+ if ((self -> if_id == WIFI_IF_STA || self -> if_id == ESP_IF_ETH ) &&
354
+ n_args == 2 &&
355
+ MP_OBJ_IS_STR (args [1 ]) &&
356
+ strcmp (mp_obj_str_get_str (args [1 ]), "dhcp" ) == 0 ) {
357
+ esp_err_t e = tcpip_adapter_dhcpc_start (self -> if_id );
358
+ if ( e != ESP_OK && e != ESP_ERR_TCPIP_ADAPTER_DHCP_ALREADY_STARTED ) _esp_exceptions (e );
359
+ return mp_const_none ;
360
+ }
361
+
345
362
mp_obj_t * items ;
346
363
mp_obj_get_array_fixed_n (args [1 ], 4 , & items );
347
364
netutils_parse_ipv4_addr (items [0 ], (void * )& info .ip , NETUTILS_BIG );
@@ -358,11 +375,11 @@ STATIC mp_obj_t esp_ifconfig(size_t n_args, const mp_obj_t *args) {
358
375
netutils_parse_ipv4_addr (items [2 ], (void * )& info .gw , NETUTILS_BIG );
359
376
netutils_parse_ipv4_addr (items [3 ], (void * )& dns_info .ip , NETUTILS_BIG );
360
377
// To set a static IP we have to disable DHCP first
361
- if (self -> if_id == WIFI_IF_STA ) {
362
- esp_err_t e = tcpip_adapter_dhcpc_stop (WIFI_IF_STA );
378
+ if (self -> if_id == WIFI_IF_STA || self -> if_id == ESP_IF_ETH ) {
379
+ esp_err_t e = tcpip_adapter_dhcpc_stop (self -> if_id );
363
380
if (e != ESP_OK && e != ESP_ERR_TCPIP_ADAPTER_DHCP_ALREADY_STOPPED ) _esp_exceptions (e );
364
- ESP_EXCEPTIONS (tcpip_adapter_set_ip_info (WIFI_IF_STA , & info ));
365
- ESP_EXCEPTIONS (tcpip_adapter_set_dns_info (WIFI_IF_STA , TCPIP_ADAPTER_DNS_MAIN , & dns_info ));
381
+ ESP_EXCEPTIONS (tcpip_adapter_set_ip_info (self -> if_id , & info ));
382
+ ESP_EXCEPTIONS (tcpip_adapter_set_dns_info (self -> if_id , TCPIP_ADAPTER_DNS_MAIN , & dns_info ));
366
383
} else if (self -> if_id == WIFI_IF_AP ) {
367
384
esp_err_t e = tcpip_adapter_dhcps_stop (WIFI_IF_AP );
368
385
if (e != ESP_OK && e != ESP_ERR_TCPIP_ADAPTER_DHCP_ALREADY_STOPPED ) _esp_exceptions (e );
@@ -374,7 +391,7 @@ STATIC mp_obj_t esp_ifconfig(size_t n_args, const mp_obj_t *args) {
374
391
}
375
392
}
376
393
377
- STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN (esp_ifconfig_obj , 1 , 2 , esp_ifconfig );
394
+ MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN (esp_ifconfig_obj , 1 , 2 , esp_ifconfig );
378
395
379
396
STATIC mp_obj_t esp_config (size_t n_args , const mp_obj_t * args , mp_map_t * kwargs ) {
380
397
if (n_args != 1 && kwargs -> used != 0 ) {
@@ -533,6 +550,7 @@ STATIC const mp_map_elem_t mp_module_network_globals_table[] = {
533
550
{ MP_OBJ_NEW_QSTR (MP_QSTR___name__ ), MP_OBJ_NEW_QSTR (MP_QSTR_network ) },
534
551
{ MP_OBJ_NEW_QSTR (MP_QSTR___init__ ), (mp_obj_t )& esp_initialize_obj },
535
552
{ MP_OBJ_NEW_QSTR (MP_QSTR_WLAN ), (mp_obj_t )& get_wlan_obj },
553
+ { MP_OBJ_NEW_QSTR (MP_QSTR_LAN ), (mp_obj_t )& get_lan_obj },
536
554
{ MP_OBJ_NEW_QSTR (MP_QSTR_phy_mode ), (mp_obj_t )& esp_phy_mode_obj },
537
555
538
556
#if MODNETWORK_INCLUDE_CONSTANTS
@@ -560,6 +578,11 @@ STATIC const mp_map_elem_t mp_module_network_globals_table[] = {
560
578
MP_OBJ_NEW_SMALL_INT (WIFI_AUTH_WPA_WPA2_PSK ) },
561
579
{ MP_OBJ_NEW_QSTR (MP_QSTR_AUTH_MAX ),
562
580
MP_OBJ_NEW_SMALL_INT (WIFI_AUTH_MAX ) },
581
+
582
+ { MP_OBJ_NEW_QSTR (MP_QSTR_PHY_LAN8720 ),
583
+ MP_OBJ_NEW_SMALL_INT (PHY_LAN8720 ) },
584
+ { MP_OBJ_NEW_QSTR (MP_QSTR_PHY_TLK110 ),
585
+ MP_OBJ_NEW_SMALL_INT (PHY_TLK110 ) },
563
586
#endif
564
587
};
565
588
0 commit comments