summaryrefslogtreecommitdiff
path: root/ports/esp32s2
diff options
context:
space:
mode:
authormicroDev <70126934+microDev1@users.noreply.github.com>2021-01-12 18:28:38 +0530
committermicroDev <70126934+microDev1@users.noreply.github.com>2021-01-12 18:28:38 +0530
commitcd16f29efdc2df4544ffcccca5ae227be2f816ba (patch)
tree8a90c5519f5b478d72d1647f7a537918bb543fdd /ports/esp32s2
parent5f448139e0c5972def8a8f138cd29afd1e9222f8 (diff)
parent047708e36e67beee14771120296cdf758f00601d (diff)
Merge branch 'main' into TouchAlarm
Diffstat (limited to 'ports/esp32s2')
-rw-r--r--ports/esp32s2/boards/unexpectedmaker_feathers2/board.c8
-rw-r--r--ports/esp32s2/boards/unexpectedmaker_feathers2/mpconfigboard.h4
-rw-r--r--ports/esp32s2/common-hal/microcontroller/Pin.c45
-rw-r--r--ports/esp32s2/common-hal/microcontroller/Pin.h4
-rw-r--r--ports/esp32s2/common-hal/socketpool/Socket.c7
-rw-r--r--ports/esp32s2/common-hal/wifi/Network.c34
-rw-r--r--ports/esp32s2/mpconfigport.h1
7 files changed, 92 insertions, 11 deletions
diff --git a/ports/esp32s2/boards/unexpectedmaker_feathers2/board.c b/ports/esp32s2/boards/unexpectedmaker_feathers2/board.c
index d8fd3a0a2..ac08190a5 100644
--- a/ports/esp32s2/boards/unexpectedmaker_feathers2/board.c
+++ b/ports/esp32s2/boards/unexpectedmaker_feathers2/board.c
@@ -27,6 +27,8 @@
#include "supervisor/board.h"
#include "mpconfigboard.h"
#include "shared-bindings/microcontroller/Pin.h"
+#include "components/driver/include/driver/gpio.h"
+#include "components/soc/include/hal/gpio_hal.h"
void board_init(void) {
// USB
@@ -47,6 +49,12 @@ void board_init(void) {
common_hal_never_reset_pin(&pin_GPIO30);
common_hal_never_reset_pin(&pin_GPIO31);
common_hal_never_reset_pin(&pin_GPIO32);
+
+
+ // Add LDO2 to never reset list, set to output and enable
+ common_hal_never_reset_pin(&pin_GPIO21);
+ gpio_set_direction(pin_GPIO21.number, GPIO_MODE_DEF_OUTPUT);
+ gpio_set_level(pin_GPIO21.number, true);
}
bool board_requests_safe_mode(void) {
diff --git a/ports/esp32s2/boards/unexpectedmaker_feathers2/mpconfigboard.h b/ports/esp32s2/boards/unexpectedmaker_feathers2/mpconfigboard.h
index e100ac118..6b1a0c4aa 100644
--- a/ports/esp32s2/boards/unexpectedmaker_feathers2/mpconfigboard.h
+++ b/ports/esp32s2/boards/unexpectedmaker_feathers2/mpconfigboard.h
@@ -34,8 +34,8 @@
#define AUTORESET_DELAY_MS 500
-// #define MICROPY_HW_APA102_MOSI (&pin_GPIO40)
-// #define MICROPY_HW_APA102_SCK (&pin_GPIO45)
+#define MICROPY_HW_APA102_MOSI (&pin_GPIO40)
+#define MICROPY_HW_APA102_SCK (&pin_GPIO45)
#define DEFAULT_I2C_BUS_SCL (&pin_GPIO9)
#define DEFAULT_I2C_BUS_SDA (&pin_GPIO8)
diff --git a/ports/esp32s2/common-hal/microcontroller/Pin.c b/ports/esp32s2/common-hal/microcontroller/Pin.c
index fca89ce8e..6889720e8 100644
--- a/ports/esp32s2/common-hal/microcontroller/Pin.c
+++ b/ports/esp32s2/common-hal/microcontroller/Pin.c
@@ -37,13 +37,14 @@
#ifdef MICROPY_HW_NEOPIXEL
bool neopixel_in_use;
#endif
+#ifdef MICROPY_HW_APA102_MOSI
+bool apa102_sck_in_use;
+bool apa102_mosi_in_use;
+#endif
STATIC uint32_t never_reset_pins[2];
STATIC uint32_t in_use[2];
-bool apa102_mosi_in_use;
-bool apa102_sck_in_use;
-
STATIC void floating_gpio_reset(gpio_num_t pin_number) {
// This is the same as gpio_reset_pin(), but without the pullup.
// Note that gpio_config resets the iomatrix to GPIO_FUNC as well.
@@ -86,6 +87,20 @@ void reset_pin_number(gpio_num_t pin_number) {
return;
}
#endif
+ #ifdef MICROPY_HW_APA102_MOSI
+ if (pin_number == MICROPY_HW_APA102_MOSI->number ||
+ pin_number == MICROPY_HW_APA102_SCK->number) {
+ apa102_mosi_in_use = apa102_mosi_in_use && pin_number != MICROPY_HW_APA102_MOSI->number;
+ apa102_sck_in_use = apa102_sck_in_use && pin_number != MICROPY_HW_APA102_SCK->number;
+ if (!apa102_sck_in_use && !apa102_mosi_in_use) {
+ rgb_led_status_init();
+ }
+ return;
+ }
+ #endif
+
+
+
}
void common_hal_reset_pin(const mcu_pin_obj_t* pin) {
@@ -110,6 +125,11 @@ void reset_all_pins(void) {
#ifdef MICROPY_HW_NEOPIXEL
neopixel_in_use = false;
#endif
+ #ifdef MICROPY_HW_APA102_MOSI
+ apa102_sck_in_use = false;
+ apa102_mosi_in_use = false;
+ #endif
+
}
void claim_pin(const mcu_pin_obj_t* pin) {
@@ -119,6 +139,15 @@ void claim_pin(const mcu_pin_obj_t* pin) {
neopixel_in_use = true;
}
#endif
+ #ifdef MICROPY_HW_APA102_MOSI
+ if (pin == MICROPY_HW_APA102_MOSI) {
+ apa102_mosi_in_use = true;
+ }
+ if (pin == MICROPY_HW_APA102_SCK) {
+ apa102_sck_in_use = true;
+ }
+ #endif
+
}
void common_hal_mcu_pin_claim(const mcu_pin_obj_t* pin) {
@@ -131,10 +160,18 @@ bool pin_number_is_free(gpio_num_t pin_number) {
return !neopixel_in_use;
}
#endif
+ #ifdef MICROPY_HW_APA102_MOSI
+ if (pin_number == MICROPY_HW_APA102_MOSI->number) {
+ return !apa102_mosi_in_use;
+ }
+ if (pin_number == MICROPY_HW_APA102_SCK->number) {
+ return !apa102_sck_in_use;
+ }
+ #endif
uint8_t offset = pin_number / 32;
uint32_t mask = 1 << (pin_number % 32);
- return (never_reset_pins[offset] & mask) == 0 && (in_use[offset] & mask) == 0;
+ return (in_use[offset] & mask) == 0;
}
bool common_hal_mcu_pin_is_free(const mcu_pin_obj_t *pin) {
diff --git a/ports/esp32s2/common-hal/microcontroller/Pin.h b/ports/esp32s2/common-hal/microcontroller/Pin.h
index f6c008703..65f57a82d 100644
--- a/ports/esp32s2/common-hal/microcontroller/Pin.h
+++ b/ports/esp32s2/common-hal/microcontroller/Pin.h
@@ -31,8 +31,10 @@
#include "peripherals/pins.h"
-extern bool apa102_mosi_in_use;
+#ifdef MICROPY_HW_APA102_MOSI
extern bool apa102_sck_in_use;
+extern bool apa102_mosi_in_use;
+#endif
#ifdef MICROPY_HW_NEOPIXEL
extern bool neopixel_in_use;
diff --git a/ports/esp32s2/common-hal/socketpool/Socket.c b/ports/esp32s2/common-hal/socketpool/Socket.c
index 32c5fc72f..5e943f8fd 100644
--- a/ports/esp32s2/common-hal/socketpool/Socket.c
+++ b/ports/esp32s2/common-hal/socketpool/Socket.c
@@ -178,7 +178,7 @@ mp_uint_t common_hal_socketpool_socket_recvfrom_into(socketpool_socket_obj_t* se
struct sockaddr_in source_addr;
socklen_t socklen = sizeof(source_addr);
- int bytes_received = lwip_recvfrom(self->num, buf, len - 1, 0, (struct sockaddr *)&source_addr, &socklen);
+ int bytes_received = lwip_recvfrom(self->num, buf, len, 0, (struct sockaddr *)&source_addr, &socklen);
memcpy((void *)ip, (void*)&source_addr.sin_addr.s_addr, sizeof source_addr.sin_addr.s_addr);
*port = source_addr.sin_port;
@@ -186,10 +186,9 @@ mp_uint_t common_hal_socketpool_socket_recvfrom_into(socketpool_socket_obj_t* se
if (bytes_received < 0) {
mp_raise_BrokenPipeError();
return 0;
- } else {
- buf[bytes_received] = 0; // Null-terminate whatever we received
- return bytes_received;
}
+
+ return bytes_received;
}
void common_hal_socketpool_socket_close(socketpool_socket_obj_t* self) {
diff --git a/ports/esp32s2/common-hal/wifi/Network.c b/ports/esp32s2/common-hal/wifi/Network.c
index 2674df065..b6eb6bb43 100644
--- a/ports/esp32s2/common-hal/wifi/Network.c
+++ b/ports/esp32s2/common-hal/wifi/Network.c
@@ -54,3 +54,37 @@ mp_obj_t common_hal_wifi_network_get_country(wifi_network_obj_t *self) {
// 2 instead of strlen(cstr) as this gives us only the country-code
return mp_obj_new_str(cstr, 2);
}
+
+mp_obj_t common_hal_wifi_network_get_authmode(wifi_network_obj_t *self) {
+ const char* authmode = "";
+ switch (self->record.authmode) {
+ case WIFI_AUTH_OPEN:
+ authmode = "OPEN";
+ break;
+ case WIFI_AUTH_WEP:
+ authmode = "WEP";
+ break;
+ case WIFI_AUTH_WPA_PSK:
+ authmode = "WPA_PSK";
+ break;
+ case WIFI_AUTH_WPA2_PSK:
+ authmode = "WPA2_PSK";
+ break;
+ case WIFI_AUTH_WPA_WPA2_PSK:
+ authmode = "WPA_WPA2_PSK";
+ break;
+ case WIFI_AUTH_WPA2_ENTERPRISE:
+ authmode = "WPA2_ENTERPRISE";
+ break;
+ case WIFI_AUTH_WPA3_PSK:
+ authmode = "WPA3_PSK";
+ break;
+ case WIFI_AUTH_WPA2_WPA3_PSK:
+ authmode = "WPA2_WPA3_PSK";
+ break;
+ default:
+ authmode = "UNKNOWN";
+ break;
+ }
+ return mp_obj_new_str(authmode, strlen(authmode));
+}
diff --git a/ports/esp32s2/mpconfigport.h b/ports/esp32s2/mpconfigport.h
index db7393d8e..9c0fd9da3 100644
--- a/ports/esp32s2/mpconfigport.h
+++ b/ports/esp32s2/mpconfigport.h
@@ -32,6 +32,7 @@
#define MICROPY_PY_UJSON (1)
#define MICROPY_USE_INTERNAL_PRINTF (0)
+#define MICROPY_PY_SYS_PLATFORM "Espressif ESP32-S2"
#include "py/circuitpy_mpconfig.h"