summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorScott Shawcroft <scott@tannewt.org>2020-08-11 14:50:37 -0700
committerScott Shawcroft <scott@tannewt.org>2020-08-19 14:22:13 -0700
commit7bdd243bf6f3cd84ddfd9cf6f35a2d6d8a6a415f (patch)
tree5f5e4b98d6ffa479ecd1f032da01cc999afe3732
parent3860991111511a9e4a60ea24f208b8de8f801ce7 (diff)
Ping works!
-rw-r--r--ports/esp32s2/common-hal/wifi/Radio.c1
-rw-r--r--ports/esp32s2/common-hal/wifi/__init__.c14
-rw-r--r--ports/esp32s2/common-hal/wifi/__init__.h4
-rw-r--r--shared-bindings/ipaddress/IPv4Address.h2
-rw-r--r--shared-bindings/ipaddress/__init__.c9
-rw-r--r--shared-bindings/ipaddress/__init__.h2
-rw-r--r--shared-bindings/wifi/Radio.c2
-rw-r--r--shared-module/ipaddress/__init__.c7
-rw-r--r--shared-module/ipaddress/__init__.h4
9 files changed, 28 insertions, 17 deletions
diff --git a/ports/esp32s2/common-hal/wifi/Radio.c b/ports/esp32s2/common-hal/wifi/Radio.c
index 49ad0592e..d4f17f2bb 100644
--- a/ports/esp32s2/common-hal/wifi/Radio.c
+++ b/ports/esp32s2/common-hal/wifi/Radio.c
@@ -28,6 +28,7 @@
#include <string.h>
+#include "common-hal/wifi/__init__.h"
#include "lib/utils/interrupt_char.h"
#include "py/runtime.h"
#include "shared-bindings/ipaddress/IPv4Address.h"
diff --git a/ports/esp32s2/common-hal/wifi/__init__.c b/ports/esp32s2/common-hal/wifi/__init__.c
index 1dc9ef9a8..eb033256d 100644
--- a/ports/esp32s2/common-hal/wifi/__init__.c
+++ b/ports/esp32s2/common-hal/wifi/__init__.c
@@ -24,6 +24,9 @@
* THE SOFTWARE.
*/
+#include "common-hal/wifi/__init__.h"
+
+#include "shared-bindings/ipaddress/IPv4Address.h"
#include "shared-bindings/wifi/Radio.h"
#include "py/runtime.h"
@@ -148,3 +151,14 @@ void wifi_reset(void) {
radio->netif = NULL;
ESP_ERROR_CHECK(esp_netif_deinit());
}
+
+void ipaddress_ipaddress_to_esp_idf(mp_obj_t ip_address, ip_addr_t* esp_ip_address) {
+ if (!MP_OBJ_IS_TYPE(ip_address, &ipaddress_ipv4address_type)) {
+ mp_raise_ValueError(translate("Only IPv4 addresses supported"));
+ }
+ mp_obj_t packed = common_hal_ipaddress_ipv4address_get_packed(ip_address);
+ size_t len;
+ const char* bytes = mp_obj_str_get_data(packed, &len);
+
+ IP_ADDR4(esp_ip_address, bytes[0], bytes[1], bytes[2], bytes[3]);
+}
diff --git a/ports/esp32s2/common-hal/wifi/__init__.h b/ports/esp32s2/common-hal/wifi/__init__.h
index bb68bcfdf..d2bd06c57 100644
--- a/ports/esp32s2/common-hal/wifi/__init__.h
+++ b/ports/esp32s2/common-hal/wifi/__init__.h
@@ -29,6 +29,10 @@
#include "py/obj.h"
+#include "lwip/api.h"
+
void wifi_reset(void);
+void ipaddress_ipaddress_to_esp_idf(mp_obj_t ip_address, ip_addr_t* esp_ip_address);
+
#endif // MICROPY_INCLUDED_ESP32S2_COMMON_HAL_WIFI___INIT___H
diff --git a/shared-bindings/ipaddress/IPv4Address.h b/shared-bindings/ipaddress/IPv4Address.h
index cf66b92b3..b45cf3bac 100644
--- a/shared-bindings/ipaddress/IPv4Address.h
+++ b/shared-bindings/ipaddress/IPv4Address.h
@@ -31,7 +31,7 @@
extern const mp_obj_type_t ipaddress_ipv4address_type;
-mp_obj_t common_hal_ipaddress_new_ipv4address(mp_int_t value);
+mp_obj_t common_hal_ipaddress_new_ipv4address(uint32_t value);
void common_hal_ipaddress_ipv4address_construct(ipaddress_ipv4address_obj_t* self, uint8_t* buf, size_t len);
mp_obj_t common_hal_ipaddress_ipv4address_get_packed(ipaddress_ipv4address_obj_t* self);
diff --git a/shared-bindings/ipaddress/__init__.c b/shared-bindings/ipaddress/__init__.c
index b88b3afbb..1c0ac9153 100644
--- a/shared-bindings/ipaddress/__init__.c
+++ b/shared-bindings/ipaddress/__init__.c
@@ -43,8 +43,8 @@
//|
STATIC mp_obj_t ipaddress_ip_address(mp_obj_t ip_in) {
- mp_int_t value;
- if (mp_obj_get_int_maybe(ip_in, &value)) {
+ uint32_t value;
+ if (mp_obj_get_int_maybe(ip_in, (mp_int_t*) &value)) {
// We're done.
} else if (MP_OBJ_IS_STR(ip_in)) {
GET_STR_DATA_LEN(ip_in, str_data, str_len);
@@ -63,11 +63,12 @@ STATIC mp_obj_t ipaddress_ip_address(mp_obj_t ip_in) {
}
size_t last_period = 0;
+ value = 0;
for (size_t i = 0; i < 4; i++) {
mp_obj_t octet = mp_parse_num_integer((const char*) str_data + last_period, period_index[i] - last_period, 10, NULL);
last_period = period_index[i] + 1;
- value |= MP_OBJ_SMALL_INT_VALUE(octet) << (24 - i * 8);
-
+ mp_int_t int_octet = MP_OBJ_SMALL_INT_VALUE(octet);
+ value |= int_octet << (i * 8);
}
} else {
mp_raise_ValueError(translate("Only raw int supported for ip."));
diff --git a/shared-bindings/ipaddress/__init__.h b/shared-bindings/ipaddress/__init__.h
index a31629cca..76d8bfa76 100644
--- a/shared-bindings/ipaddress/__init__.h
+++ b/shared-bindings/ipaddress/__init__.h
@@ -29,6 +29,6 @@
#include "shared-module/ipaddress/__init__.h"
-mp_obj_t common_hal_ipaddress_new_ipv4address(mp_int_t value);
+mp_obj_t common_hal_ipaddress_new_ipv4address(uint32_t value);
#endif // MICROPY_INCLUDED_SHARED_BINDINGS_IPADDRESS___INIT___H
diff --git a/shared-bindings/wifi/Radio.c b/shared-bindings/wifi/Radio.c
index 6884b83de..260a280c2 100644
--- a/shared-bindings/wifi/Radio.c
+++ b/shared-bindings/wifi/Radio.c
@@ -180,7 +180,7 @@ STATIC mp_obj_t wifi_radio_ping(size_t n_args, const mp_obj_t *pos_args, mp_map_
mp_int_t time_ms = common_hal_wifi_radio_ping(self, args[ARG_ip].u_obj, timeout);
- return mp_obj_new_float(time_ms / 1000);
+ return mp_obj_new_float(time_ms / 1000.0);
}
STATIC MP_DEFINE_CONST_FUN_OBJ_KW(wifi_radio_ping_obj, 1, wifi_radio_ping);
diff --git a/shared-module/ipaddress/__init__.c b/shared-module/ipaddress/__init__.c
index 031f317aa..2fce9d8f5 100644
--- a/shared-module/ipaddress/__init__.c
+++ b/shared-module/ipaddress/__init__.c
@@ -27,14 +27,9 @@
#include "shared-bindings/ipaddress/__init__.h"
#include "shared-bindings/ipaddress/IPv4Address.h"
-mp_obj_t common_hal_ipaddress_new_ipv4address(mp_int_t value) {
+mp_obj_t common_hal_ipaddress_new_ipv4address(uint32_t value) {
ipaddress_ipv4address_obj_t* self = m_new_obj(ipaddress_ipv4address_obj_t);
self->base.type = &ipaddress_ipv4address_type;
common_hal_ipaddress_ipv4address_construct(self, (uint8_t*) &value, 4);
return self;
}
-
-
-void ipaddress_ipaddress_to_esp_idf(mp_obj_t ip_address, ip_addr_t* esp_ip_address) {
- // FIX THIS TOMORROW!
-}
diff --git a/shared-module/ipaddress/__init__.h b/shared-module/ipaddress/__init__.h
index 9f1e00777..7d5f2c220 100644
--- a/shared-module/ipaddress/__init__.h
+++ b/shared-module/ipaddress/__init__.h
@@ -31,10 +31,6 @@
#include "py/obj.h"
-#include "lwip/api.h"
-
mp_obj_t common_hal_ipaddress_new_ipv4(uint32_t value);
-void ipaddress_ipaddress_to_esp_idf(mp_obj_t ip_address, ip_addr_t* esp_ip_address);
-
#endif // MICROPY_INCLUDED_SHARED_MODULE_IPADDRESS___INIT___H