summaryrefslogtreecommitdiffstatshomepage
path: root/esp8266/modnetwork.c
diff options
context:
space:
mode:
Diffstat (limited to 'esp8266/modnetwork.c')
-rw-r--r--esp8266/modnetwork.c34
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;
}