diff options
Diffstat (limited to 'esp8266/modnetwork.c')
-rw-r--r-- | esp8266/modnetwork.c | 34 |
1 files changed, 27 insertions, 7 deletions
diff --git a/esp8266/modnetwork.c b/esp8266/modnetwork.c index 86bf27ca66..1d8a02bc9b 100644 --- a/esp8266/modnetwork.c +++ b/esp8266/modnetwork.c @@ -100,17 +100,23 @@ STATIC mp_obj_t esp_connect(mp_uint_t n_args, const mp_obj_t *args) { mp_uint_t len; const char *p; - p = mp_obj_str_get_data(args[1], &len); - memcpy(config.ssid, p, len); - p = mp_obj_str_get_data(args[2], &len); - memcpy(config.password, p, len); + if (n_args > 1) { + p = mp_obj_str_get_data(args[1], &len); + memcpy(config.ssid, p, len); + if (n_args > 2) { + p = mp_obj_str_get_data(args[2], &len); + } else { + p = ""; + } + memcpy(config.password, p, len); - error_check(wifi_station_set_config(&config), "Cannot set STA config"); + error_check(wifi_station_set_config(&config), "Cannot set STA config"); + } error_check(wifi_station_connect(), "Cannot connect to AP"); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(esp_connect_obj, 3, 7, esp_connect); +STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(esp_connect_obj, 1, 7, esp_connect); STATIC mp_obj_t esp_disconnect(mp_obj_t self_in) { require_if(self_in, STATION_IF); @@ -295,7 +301,7 @@ STATIC mp_obj_t esp_config(size_t n_args, const mp_obj_t *args, mp_map_t *kwargs switch ((uintptr_t)kwargs->table[i].key) { case QS(MP_QSTR_mac): { mp_buffer_info_t bufinfo; - mp_get_buffer_raise(args[1], &bufinfo, MP_BUFFER_READ); + mp_get_buffer_raise(kwargs->table[i].value, &bufinfo, MP_BUFFER_READ); if (bufinfo.len != 6) { nlr_raise(mp_obj_new_exception_msg(&mp_type_ValueError, "invalid buffer length")); @@ -336,6 +342,14 @@ STATIC mp_obj_t esp_config(size_t n_args, const mp_obj_t *args, mp_map_t *kwargs cfg.ap.channel = mp_obj_get_int(kwargs->table[i].value); break; } + case QS(MP_QSTR_dhcp_hostname): { + req_if = STATION_IF; + if (self->if_id == STATION_IF) { + const char *s = mp_obj_str_get_str(kwargs->table[i].value); + wifi_station_set_hostname((char*)s); + } + break; + } default: goto unknown; } @@ -389,6 +403,12 @@ STATIC mp_obj_t esp_config(size_t n_args, const mp_obj_t *args, mp_map_t *kwargs req_if = SOFTAP_IF; val = MP_OBJ_NEW_SMALL_INT(cfg.ap.channel); break; + case QS(MP_QSTR_dhcp_hostname): { + req_if = STATION_IF; + char* s = wifi_station_get_hostname(); + val = mp_obj_new_str(s, strlen(s), false); + break; + } default: goto unknown; } |