From 02ea74d8f57009040ea2a268b1080e72ded286bf Mon Sep 17 00:00:00 2001 From: Damien George Date: Tue, 22 Dec 2015 14:28:53 +0000 Subject: [PATCH] esp8266: Add network.ifconfig(). --- esp8266/modnetwork.c | 14 ++++++++++++++ esp8266/qstrdefsport.h | 1 + 2 files changed, 15 insertions(+) diff --git a/esp8266/modnetwork.c b/esp8266/modnetwork.c index b47ec8a67a..79d7121862 100644 --- a/esp8266/modnetwork.c +++ b/esp8266/modnetwork.c @@ -136,6 +136,19 @@ STATIC mp_obj_t esp_mac(mp_uint_t n_args, const mp_obj_t *args) { } STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(esp_mac_obj, 0, 1, esp_mac); +STATIC mp_obj_t esp_ifconfig(void) { + struct ip_info info; + wifi_get_ip_info(STATION_IF, &info); + mp_obj_t ifconfig[4] = { + netutils_format_ipv4_addr((uint8_t*)&info.ip, NETUTILS_BIG), + netutils_format_ipv4_addr((uint8_t*)&info.netmask, NETUTILS_BIG), + netutils_format_ipv4_addr((uint8_t*)&info.gw, NETUTILS_BIG), + MP_OBJ_NEW_QSTR(MP_QSTR_), // no DNS server + }; + return mp_obj_new_tuple(4, ifconfig); +} +STATIC MP_DEFINE_CONST_FUN_OBJ_0(esp_ifconfig_obj, esp_ifconfig); + STATIC const mp_map_elem_t mp_module_network_globals_table[] = { { MP_OBJ_NEW_QSTR(MP_QSTR___name__), MP_OBJ_NEW_QSTR(MP_QSTR_network) }, // MicroPython "network" module interface requires it to contains classes @@ -149,6 +162,7 @@ STATIC const mp_map_elem_t mp_module_network_globals_table[] = { { MP_OBJ_NEW_QSTR(MP_QSTR_scan), (mp_obj_t)&esp_scan_obj }, { MP_OBJ_NEW_QSTR(MP_QSTR_isconnected), (mp_obj_t)&esp_isconnected_obj }, { MP_OBJ_NEW_QSTR(MP_QSTR_mac), (mp_obj_t)&esp_mac_obj }, + { MP_OBJ_NEW_QSTR(MP_QSTR_ifconfig), (mp_obj_t)&esp_ifconfig_obj }, #if MODNETWORK_INCLUDE_CONSTANTS { MP_OBJ_NEW_QSTR(MP_QSTR_STAT_IDLE), diff --git a/esp8266/qstrdefsport.h b/esp8266/qstrdefsport.h index 1f199a3731..d75c65414c 100644 --- a/esp8266/qstrdefsport.h +++ b/esp8266/qstrdefsport.h @@ -103,6 +103,7 @@ Q(scan) Q(status) Q(isconnected) Q(mac) +Q(ifconfig) Q(STAT_IDLE) Q(STAT_CONNECTING) Q(STAT_WRONG_PASSWORD)