Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
17 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 27 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
Expand Up @@ -424,3 +424,30 @@
[submodule "ports/espressif/esp-hosted"]
path = ports/espressif/esp-hosted
url = https://github.com/espressif/esp-hosted-mcu.git
[submodule "frozen/Adafruit_CircuitPython_IL0373"]
path = frozen/Adafruit_CircuitPython_IL0373
url = https://github.com/adafruit/Adafruit_CircuitPython_IL0373.git
[submodule "frozen/Adafruit_CircuitPython_JD79667"]
path = frozen/Adafruit_CircuitPython_JD79667
url = https://github.com/adafruit/Adafruit_CircuitPython_JD79667.git
[submodule "frozen/Adafruit_CircuitPython_MAX1704x"]
path = frozen/Adafruit_CircuitPython_MAX1704x
url = https://github.com/adafruit/Adafruit_CircuitPython_MAX1704x.git
[submodule "frozen/Adafruit_CircuitPython_NTP"]
path = frozen/Adafruit_CircuitPython_NTP
url = https://github.com/adafruit/Adafruit_CircuitPython_NTP.git
[submodule "frozen/Adafruit_CircuitPython_SCD4X"]
path = frozen/Adafruit_CircuitPython_SCD4X
url = https://github.com/adafruit/Adafruit_CircuitPython_SCD4X.git
[submodule "frozen/Adafruit_CircuitPython_SCD30"]
path = frozen/Adafruit_CircuitPython_SCD30
url = https://github.com/adafruit/Adafruit_CircuitPython_SCD30.git
[submodule "frozen/Adafruit_CircuitPython_SEN6x"]
path = frozen/Adafruit_CircuitPython_SEN6x
url = https://github.com/adafruit/Adafruit_CircuitPython_SEN6x.git
[submodule "frozen/Adafruit_CircuitPython_PCF8523"]
path = frozen/Adafruit_CircuitPython_PCF8523
url = https://github.com/adafruit/Adafruit_CircuitPython_PCF8523.git
[submodule "frozen/Adafruit_CircuitPython_DS1307"]
path = frozen/Adafruit_CircuitPython_DS1307
url = https://github.com/adafruit/Adafruit_CircuitPython_DS1307.git
1 change: 1 addition & 0 deletions frozen/Adafruit_CircuitPython_DS1307
1 change: 1 addition & 0 deletions frozen/Adafruit_CircuitPython_IL0373
1 change: 1 addition & 0 deletions frozen/Adafruit_CircuitPython_JD79667
1 change: 1 addition & 0 deletions frozen/Adafruit_CircuitPython_MAX1704x
1 change: 1 addition & 0 deletions frozen/Adafruit_CircuitPython_NTP
1 change: 1 addition & 0 deletions frozen/Adafruit_CircuitPython_PCF8523
1 change: 1 addition & 0 deletions frozen/Adafruit_CircuitPython_SCD30
1 change: 1 addition & 0 deletions frozen/Adafruit_CircuitPython_SCD4X
1 change: 1 addition & 0 deletions frozen/Adafruit_CircuitPython_SEN6x
9 changes: 6 additions & 3 deletions ports/espressif/bindings/espnow/ESPNow.c
Original file line number Diff line number Diff line change
Expand Up @@ -109,7 +109,10 @@ static MP_DEFINE_CONST_FUN_OBJ_1(espnow_deinit_obj, espnow_deinit);
//| This blocks until a timeout of ``2`` seconds if the ESP-NOW internal buffers are full.
//|
//| :param ReadableBuffer message: The message to send (length <= 250 bytes).
//| :param Peer peer: Send message to this peer. If `None`, send to all registered peers.
//| :param Peer peer: Send message to this peer. If `None`, send to registered
//| unicast peers only. To broadcast or multicast, pass the corresponding
//| registered `Peer` explicitly. If no unicast peers are registered,
//| sending with `None` raises `OSError`.
//| """
//| ...
//|
Expand Down Expand Up @@ -308,7 +311,7 @@ static mp_uint_t espnow_stream_ioctl(mp_obj_t self_in, mp_uint_t request, uintpt
case MP_STREAM_POLL: {
mp_uint_t flags = arg;
mp_uint_t ret = 0;
if ((flags & MP_STREAM_POLL_RD) && ringbuf_num_filled(self->recv_buffer) > 0) {
if ((flags & MP_STREAM_POLL_RD) && common_hal_espnow_get_bytes_available(self) > 0) {
ret |= MP_STREAM_POLL_RD;
}
return ret;
Expand Down Expand Up @@ -337,7 +340,7 @@ static const mp_stream_p_t espnow_stream_p = {
static mp_obj_t espnow_unary_op(mp_unary_op_t op, mp_obj_t self_in) {
espnow_obj_t *self = MP_OBJ_TO_PTR(self_in);
espnow_check_for_deinit(self);
size_t len = ringbuf_num_filled(self->recv_buffer);
size_t len = common_hal_espnow_get_bytes_available(self);
switch (op) {
case MP_UNARY_OP_BOOL:
return mp_obj_new_bool(len != 0);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,3 +34,8 @@
// UART pins attached to the USB-serial converter chip
#define CIRCUITPY_CONSOLE_UART_TX (&pin_GPIO1)
#define CIRCUITPY_CONSOLE_UART_RX (&pin_GPIO3)

// Bench finding: 32 KB of IDF headroom is not enough for a softAP that also
// serves TLS -- handshakes hit MemoryError and DHCP replies fail while the
// Python heap still reports free space. 40 KB is what the C6 hub needed.
#define CIRCUITPY_ESP_RADIO_HEAP_RESERVE (40 * 1024)
37 changes: 37 additions & 0 deletions ports/espressif/boards/adafruit_feather_esp32_v2/mpconfigboard.mk
Original file line number Diff line number Diff line change
Expand Up @@ -10,3 +10,40 @@ CIRCUITPY_ESP_FLASH_SIZE = 8MB
CIRCUITPY_ESP_PSRAM_SIZE = 2MB
CIRCUITPY_ESP_PSRAM_MODE = qio
CIRCUITPY_ESP_PSRAM_FREQ = 40m

# --- environmental-collector frozen libraries -------------------------------
# Frozen bytecode executes in place from flash; the same library imported
# from lib/ is read into RAM and stays there. On a board without PSRAM that
# is the difference between running and not -- a Feather ESP32-S3 No PSRAM
# running this project, with its own code already cross-compiled to .mpy,
# had 6 KB of heap left once BLE + ESP-NOW + softAP were up and died on the
# next import.
#
# Listed literally rather than behind an include, even though the same 22
# lines repeat across every board this project targets: tools/
# ci_fetch_deps.py scans THIS file for "FROZEN_MPY_DIRS += $(TOP)/" to
# decide which submodules to check out, and it does not follow includes. An
# include builds locally and then fails CI at MKMANIFEST with empty frozen
# directories.
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_BLE
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_HTTPServer
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_Requests
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_ConnectionManager
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_NTP
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_BusDevice
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_Register
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_Ticks
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_SEN6x
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_SCD4X
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_SCD30
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_MAX1704x
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_LC709203F
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_JD79667
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_IL0373
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_Display_Text
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_Bitmap_Font
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_NeoPixel
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_PCF8563
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_DS3231
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_PCF8523
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_DS1307
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# Env Hub build: 3 MiB OTA slots and 1984 KiB filesystem on the 8 MiB Feather V2.
# Name, Type, SubType, Offset, Size
nvs, data, nvs, 0x9000, 20K
otadata, data, ota, 0xe000, 8K
ota_0, app, ota_0, 0x10000, 3072K
ota_1, app, ota_1, 0x310000, 3072K
user_fs, data, fat, 0x610000, 1984K
9 changes: 9 additions & 0 deletions ports/espressif/boards/adafruit_feather_esp32_v2/sdkconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
# Frozen Env Hub libraries exceed the original 2 MiB application slot.
# Updating this layout moves user_fs; back up and restore files when flashing.
CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="boards/adafruit_feather_esp32_v2/partitions.csv"
CONFIG_PARTITION_TABLE_FILENAME="boards/adafruit_feather_esp32_v2/partitions.csv"

# Allow the collector's certificate chain to fit in an outbound TLS record.
# Keep the upstream 16 KiB inbound record limit.
# The current three-certificate chain needs 4159 bytes including TLS framing.
CONFIG_MBEDTLS_SSL_OUT_CONTENT_LEN=8192
Original file line number Diff line number Diff line change
Expand Up @@ -32,3 +32,8 @@

// Explanation of how a user got into safe mode
#define BOARD_USER_SAFE_MODE_ACTION MP_ERROR_TEXT("You pressed the BOOT button at start up.")

// Bench finding: 32 KB of IDF headroom is not enough for a softAP that also
// serves TLS -- handshakes hit MemoryError and DHCP replies fail while the
// Python heap still reports free space. 40 KB is what the C6 hub needed.
#define CIRCUITPY_ESP_RADIO_HEAP_RESERVE (40 * 1024)
Original file line number Diff line number Diff line change
Expand Up @@ -7,5 +7,43 @@ CIRCUITPY_ESP_FLASH_MODE = qio
CIRCUITPY_ESP_FLASH_FREQ = 80m
CIRCUITPY_ESP_FLASH_SIZE = 4MB

# Board was originally defined with a 2MB firmware, almost 2MB user filesystem. Leave it that way.
CIRCUITPY_4MB_FLASH_LARGE_USER_FS_LAYOUT = 1
# Frozen Env Hub libraries exceed 2 MB. Use the standard larger app layout;
# back up and restore the filesystem when upgrading from the old layout.
CIRCUITPY_4MB_FLASH_LARGE_USER_FS_LAYOUT = 0

# --- environmental-collector frozen libraries -------------------------------
# Frozen bytecode executes in place from flash; the same library imported
# from lib/ is read into RAM and stays there. On a board without PSRAM that
# is the difference between running and not -- a Feather ESP32-S3 No PSRAM
# running this project, with its own code already cross-compiled to .mpy,
# had 6 KB of heap left once BLE + ESP-NOW + softAP were up and died on the
# next import.
#
# Listed literally rather than behind an include, even though the same 22
# lines repeat across every board this project targets: tools/
# ci_fetch_deps.py scans THIS file for "FROZEN_MPY_DIRS += $(TOP)/" to
# decide which submodules to check out, and it does not follow includes. An
# include builds locally and then fails CI at MKMANIFEST with empty frozen
# directories.
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_BLE
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_HTTPServer
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_Requests
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_ConnectionManager
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_NTP
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_BusDevice
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_Register
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_Ticks
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_SEN6x
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_SCD4X
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_SCD30
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_MAX1704x
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_LC709203F
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_JD79667
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_IL0373
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_Display_Text
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_Bitmap_Font
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_NeoPixel
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_PCF8563
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_DS3231
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_PCF8523
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_DS1307
Original file line number Diff line number Diff line change
Expand Up @@ -12,3 +12,6 @@
# end of Component config

# end of Espressif IoT Development Framework Configuration
# Fit the Env Hub server certificate chain in an outbound TLS record.
# The current three-certificate chain needs 4159 bytes including TLS framing.
CONFIG_MBEDTLS_SSL_OUT_CONTENT_LEN=8192
Original file line number Diff line number Diff line change
Expand Up @@ -27,3 +27,8 @@
#define DEFAULT_UART_BUS_TX (&pin_GPIO39)

#define DOUBLE_TAP_PIN (&pin_GPIO34)

// Bench finding: 32 KB of IDF headroom is not enough for a softAP that also
// serves TLS -- handshakes hit MemoryError and DHCP replies fail while the
// Python heap still reports free space. 40 KB is what the C6 hub needed.
#define CIRCUITPY_ESP_RADIO_HEAP_RESERVE (40 * 1024)
Original file line number Diff line number Diff line change
Expand Up @@ -12,3 +12,47 @@ CIRCUITPY_ESP_FLASH_FREQ = 80m
CIRCUITPY_ESP_PSRAM_SIZE = 2MB
CIRCUITPY_ESP_PSRAM_MODE = qio
CIRCUITPY_ESP_PSRAM_FREQ = 80m

# This project needs _bleio on this board: the hub serves its portal over
# a Nordic UART service and the nodes take their config the same way. The
# port already defaults CIRCUITPY_BLEIO_NATIVE to 1 and only forces it off
# for 2MB flash, the S2 and the P4 -- stated here so a future flash-size
# trim cannot take it away silently.
CIRCUITPY_BLEIO_NATIVE = 1

# --- environmental-collector frozen libraries -------------------------------
# Frozen bytecode executes in place from flash; the same library imported
# from lib/ is read into RAM and stays there. On a board without PSRAM that
# is the difference between running and not -- a Feather ESP32-S3 No PSRAM
# running this project, with its own code already cross-compiled to .mpy,
# had 6 KB of heap left once BLE + ESP-NOW + softAP were up and died on the
# next import.
#
# Listed literally rather than behind an include, even though the same 22
# lines repeat across every board this project targets: tools/
# ci_fetch_deps.py scans THIS file for "FROZEN_MPY_DIRS += $(TOP)/" to
# decide which submodules to check out, and it does not follow includes. An
# include builds locally and then fails CI at MKMANIFEST with empty frozen
# directories.
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_BLE
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_HTTPServer
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_Requests
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_ConnectionManager
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_NTP
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_BusDevice
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_Register
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_Ticks
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_SEN6x
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_SCD4X
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_SCD30
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_MAX1704x
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_LC709203F
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_JD79667
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_IL0373
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_Display_Text
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_Bitmap_Font
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_NeoPixel
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_PCF8563
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_DS3231
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_PCF8523
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_DS1307
Original file line number Diff line number Diff line change
Expand Up @@ -12,3 +12,6 @@
# end of Component config

# end of Espressif IoT Development Framework Configuration
# Fit the Env Hub server certificate chain in an outbound TLS record.
# The current three-certificate chain needs 4159 bytes including TLS framing.
CONFIG_MBEDTLS_SSL_OUT_CONTENT_LEN=8192
Original file line number Diff line number Diff line change
Expand Up @@ -27,3 +27,8 @@
#define DEFAULT_UART_BUS_TX (&pin_GPIO39)

#define DOUBLE_TAP_PIN (&pin_GPIO34)

// Bench finding: 32 KB of IDF headroom is not enough for a softAP that also
// serves TLS -- handshakes hit MemoryError and DHCP replies fail while the
// Python heap still reports free space. 40 KB is what the C6 hub needed.
#define CIRCUITPY_ESP_RADIO_HEAP_RESERVE (40 * 1024)
Original file line number Diff line number Diff line change
Expand Up @@ -8,3 +8,40 @@ IDF_TARGET = esp32s3
CIRCUITPY_ESP_FLASH_MODE = qio
CIRCUITPY_ESP_FLASH_FREQ = 80m
CIRCUITPY_ESP_FLASH_SIZE = 8MB

# --- environmental-collector frozen libraries -------------------------------
# Frozen bytecode executes in place from flash; the same library imported
# from lib/ is read into RAM and stays there. On a board without PSRAM that
# is the difference between running and not -- a Feather ESP32-S3 No PSRAM
# running this project, with its own code already cross-compiled to .mpy,
# had 6 KB of heap left once BLE + ESP-NOW + softAP were up and died on the
# next import.
#
# Listed literally rather than behind an include, even though the same 22
# lines repeat across every board this project targets: tools/
# ci_fetch_deps.py scans THIS file for "FROZEN_MPY_DIRS += $(TOP)/" to
# decide which submodules to check out, and it does not follow includes. An
# include builds locally and then fails CI at MKMANIFEST with empty frozen
# directories.
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_BLE
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_HTTPServer
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_Requests
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_ConnectionManager
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_NTP
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_BusDevice
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_Register
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_Ticks
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_SEN6x
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_SCD4X
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_SCD30
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_MAX1704x
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_LC709203F
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_JD79667
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_IL0373
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_Display_Text
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_Bitmap_Font
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_NeoPixel
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_PCF8563
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_DS3231
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_PCF8523
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_DS1307
Original file line number Diff line number Diff line change
Expand Up @@ -12,3 +12,6 @@
# end of Component config

# end of Espressif IoT Development Framework Configuration
# Fit the Env Hub server certificate chain in an outbound TLS record.
# The current three-certificate chain needs 4159 bytes including TLS framing.
CONFIG_MBEDTLS_SSL_OUT_CONTENT_LEN=8192
Original file line number Diff line number Diff line change
Expand Up @@ -27,3 +27,8 @@
#define DEFAULT_UART_BUS_TX (&pin_GPIO39)

#define DOUBLE_TAP_PIN (&pin_GPIO34)

// Bench finding: 32 KB of IDF headroom is not enough for a softAP that also
// serves TLS -- handshakes hit MemoryError and DHCP replies fail while the
// Python heap still reports free space. 40 KB is what the C6 hub needed.
#define CIRCUITPY_ESP_RADIO_HEAP_RESERVE (40 * 1024)
Loading
Loading