Skip to content
Open
Changes from all commits
Commits
Show all changes
21 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
11 changes: 9 additions & 2 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
@@ -10,9 +10,9 @@ jobs:
matrix:
lua_ver: ['5.1', '5.3']
numbers: ['default', 'alternate']
target: ['esp32', 'esp32s2', 'esp32s3', 'esp32c3', 'esp32c6', 'esp32h2']
target: ['esp32', 'esp32s2', 'esp32s3', 'esp32c3', 'esp32c5', 'esp32c6', 'esp32h2']

runs-on: ubuntu-20.04
runs-on: ubuntu-24.04

steps:
- uses: actions/checkout@v4
@@ -31,7 +31,10 @@ jobs:
shell: bash
- name: Prepare default sdkconfig
run: |
# Compose sdkconfig manually rather than overwrite checked in files
cp sdkconfig.defaults sdkconfig
[ -e "sdkconfig.defaults.${{ matrix.target }}" ] && cat "sdkconfig.defaults.${{ matrix.target }}" >> sdkconfig || true
[ -e "sdkconfig.ci.${{ matrix.target }}" ] && cat "sdkconfig.ci.${{ matrix.target }}" >> sdkconfig || true
shell: bash
- name: Update config for Lua 5.1
if: ${{ matrix.lua_ver == '5.1' }}
@@ -54,6 +57,10 @@ jobs:
echo CONFIG_LUA_NUMBER_INT64=y >> sdkconfig
echo CONFIG_LUA_NUMBER_DOUBLE=y >> sdkconfig
shell: bash
- name: Show resulting sdkconfig
shell: bash
run: |
cat sdkconfig
- name: Build firmware
run: |
make IDF_TARGET=${{ matrix.target }}
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
sdk/
cache/
user_config.h
server-ca.crt
sdkconfig
sdkconfig.old*
@@ -13,6 +12,7 @@ bin
version.txt
managed_components/
dependencies.lock
.idf_tools_installed

#ignore Eclipse project files
.cproject
2 changes: 1 addition & 1 deletion components/base_nodemcu/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -2,6 +2,6 @@ idf_component_register(
SRCS "ip_fmt.c" "user_main.c"
INCLUDE_DIRS "include"
REQUIRES "lua"
PRIV_REQUIRES "nvs_flash" "spiffs" "esp_netif" "driver" "vfs"
PRIV_REQUIRES "driver" "esp_netif" "esp_vfs_console" "nvs_flash" "vfs" "spiffs"
LDFRAGMENTS "nodemcu.lf"
)
41 changes: 11 additions & 30 deletions components/base_nodemcu/user_main.c
Original file line number Diff line number Diff line change
@@ -14,8 +14,12 @@
#include "sdkconfig.h"
#include "esp_system.h"
#include "esp_event.h"
#include "esp_spiffs.h"
#include "esp_netif.h"
#include "esp_vfs_dev.h"
#include "esp_vfs_cdcacm.h"
#include "esp_vfs_usb_serial_jtag.h"
#include "driver/uart_vfs.h"
#include "driver/usb_serial_jtag.h"
#include "nvs_flash.h"

#include "task/task.h"
@@ -24,6 +28,10 @@
#include "freertos/FreeRTOS.h"
#include "freertos/semphr.h"

#ifndef CONFIG_NODEMCU_AUTO_FORMAT_ON_BOOT
# define CONFIG_NODEMCU_AUTO_FORMAT_ON_BOOT 0
#endif


// We don't get argument size data from the esp_event dispatch, so it's
// not possible to copy and forward events from the default event queue
@@ -94,42 +102,15 @@ static void start_lua ()

static void nodemcu_init(void)
{
NODE_ERR("\n");
// Initialize platform first for lua modules.
if( platform_init() != PLATFORM_OK )
{
// This should never happen
NODE_DBG("Can not init platform for modules.\n");
return;
}
const char *label = CONFIG_NODEMCU_DEFAULT_SPIFFS_LABEL;

esp_vfs_spiffs_conf_t spiffs_cfg = {
.base_path = "",
.partition_label = (label && label[0]) ? label : NULL,
.max_files = CONFIG_NODEMCU_MAX_OPEN_FILES,
.format_if_mount_failed = true,
};
const char *reason = NULL;
switch(esp_vfs_spiffs_register(&spiffs_cfg))
{
case ESP_OK: break;
case ESP_ERR_NO_MEM:
reason = "out of memory";
break;
case ESP_ERR_INVALID_STATE:
reason = "already mounted, or encrypted";
break;
case ESP_ERR_NOT_FOUND:
reason = "no SPIFFS partition found";
break;
case ESP_FAIL:
reason = "failed to mount or format partition";
break;
default:
reason = "unknown";
break;
}
const char *reason =
platform_remount_default_fs(CONFIG_NODEMCU_AUTO_FORMAT_ON_BOOT);
if (reason)
printf("Failed to mount SPIFFS partition: %s\n", reason);
}
14 changes: 13 additions & 1 deletion components/modules/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
# Modules common to all chips
set(extra_requires
)
set(wifi_modules
"espnow.c"
"wifi.c"
@@ -64,6 +66,9 @@ if(IDF_TARGET STREQUAL "esp32")
"touch.c"
${wifi_modules}
)
list(APPEND extra_requires
"driver_can"
)
elseif(IDF_TARGET STREQUAL "esp32s2")
list(APPEND module_srcs
"dac.c"
@@ -81,6 +86,12 @@ elseif(IDF_TARGET STREQUAL "esp32c3")
list(APPEND module_srcs
${wifi_modules}
)
elseif(IDF_TARGET STREQUAL "esp32c5")
list(APPEND module_srcs
"i2s.c"
"pulsecnt.c"
${wifi_modules}
)
elseif(IDF_TARGET STREQUAL "esp32c6")
list(APPEND module_srcs
"dac.c"
@@ -99,11 +110,11 @@ idf_component_register(
"app_update"
"base_nodemcu"
"bt"
"driver_can"
"esp_eth"
"esp_http_client"
"esp_http_server"
"esp_hw_support"
"esp_vfs_console"
"fatfs"
"libsodium"
"lua"
@@ -118,6 +129,7 @@ idf_component_register(
"u8g2"
"ucg"
"vfs"
${extra_requires}
)

# Match up all the module source files with their corresponding Kconfig
12 changes: 12 additions & 0 deletions components/modules/Kconfig
Original file line number Diff line number Diff line change
@@ -329,6 +329,18 @@ menu "NodeMCU modules"
help
Includes the WiFi module (recommended).

config NODEMCU_CMODULE_WIFI_STARTUP_DELAY
depends on NODEMCU_CMODULE_WIFI
depends on ESP_CONSOLE_USB_CDC
int "WiFi start-up delay (ms)"
default 500
help
For some unknown reason there is an issue with allowing the
WiFi stack to initialise immediately when using a USB CDC
console (at least on the ESP32-S2). The workaround is to
delay the initialisation sequence by enough that whatever
else is needing to run gets to run first.

config NODEMCU_CMODULE_WS2812
bool "WS2812 module"
default "n"
14 changes: 8 additions & 6 deletions components/modules/console.c
Original file line number Diff line number Diff line change
@@ -8,7 +8,9 @@
#include "esp_vfs_dev.h"
#include "esp_vfs_cdcacm.h"
#include "esp_vfs_usb_serial_jtag.h"
#include "driver/uart_vfs.h"
#include "driver/usb_serial_jtag.h"
#include "driver/usb_serial_jtag_vfs.h"
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"

@@ -111,9 +113,9 @@ static void console_init(void)
#if CONFIG_ESP_CONSOLE_UART_DEFAULT || CONFIG_ESP_CONSOLE_UART_CUSTOM
/* Based on console/advanced example */

esp_vfs_dev_uart_port_set_rx_line_endings(
uart_vfs_dev_port_set_rx_line_endings(
CONFIG_ESP_CONSOLE_UART_NUM, RX_LINE_ENDINGS_CFG);
esp_vfs_dev_uart_port_set_tx_line_endings(
uart_vfs_dev_port_set_tx_line_endings(
CONFIG_ESP_CONSOLE_UART_NUM, TX_LINE_ENDINGS_CFG);

/* Configure UART. Note that REF_TICK is used so that the baud rate remains
@@ -135,20 +137,20 @@ static void console_init(void)
uart_param_config(CONFIG_ESP_CONSOLE_UART_NUM, &uart_config);

/* Tell VFS to use UART driver */
esp_vfs_dev_uart_use_driver(CONFIG_ESP_CONSOLE_UART_NUM);
uart_vfs_dev_use_driver(CONFIG_ESP_CONSOLE_UART_NUM);

#elif CONFIG_ESP_CONSOLE_USB_SERIAL_JTAG
/* Based on @pjsg's work */

esp_vfs_dev_usb_serial_jtag_set_rx_line_endings(RX_LINE_ENDINGS_CFG);
esp_vfs_dev_usb_serial_jtag_set_tx_line_endings(TX_LINE_ENDINGS_CFG);
usb_serial_jtag_vfs_set_rx_line_endings(RX_LINE_ENDINGS_CFG);
usb_serial_jtag_vfs_set_tx_line_endings(TX_LINE_ENDINGS_CFG);

usb_serial_jtag_driver_config_t usb_serial_jtag_config =
USB_SERIAL_JTAG_DRIVER_CONFIG_DEFAULT();
/* Install USB-SERIAL-JTAG driver for interrupt-driven reads and write */
usb_serial_jtag_driver_install(&usb_serial_jtag_config);

esp_vfs_usb_serial_jtag_use_driver();
usb_serial_jtag_vfs_use_driver();
#elif CONFIG_ESP_CONSOLE_USB_CDC
/* Based on console/advanced_usb_cdc */

4 changes: 2 additions & 2 deletions components/modules/eth.c
Original file line number Diff line number Diff line change
@@ -274,9 +274,9 @@ static int leth_init( lua_State *L )

eth_esp32_emac_config_t emac_cfg = ETH_ESP32_EMAC_DEFAULT_CONFIG();

emac_cfg.smi_mdc_gpio_num =
emac_cfg.smi_gpio.mdc_num =
opt_checkint_range( L, "mdc", -1, GPIO_NUM_0, GPIO_NUM_MAX-1 );
emac_cfg.smi_mdio_gpio_num =
emac_cfg.smi_gpio.mdio_num =
opt_checkint_range( L, "mdio", -1, GPIO_NUM_0, GPIO_NUM_MAX-1 );

eth_mac_config_t mac_cfg = ETH_MAC_DEFAULT_CONFIG();
5 changes: 5 additions & 0 deletions components/modules/file.c
Original file line number Diff line number Diff line change
@@ -31,6 +31,11 @@ static int file_format( lua_State* L )
else{
NODE_ERR( "format done.\n" );
}

const char *err = platform_remount_default_fs(false);
if (err)
return luaL_error(L, err);

return 0;
}

2 changes: 1 addition & 1 deletion components/modules/heaptrace.c
Original file line number Diff line number Diff line change
@@ -16,7 +16,7 @@ static int lht_init(lua_State *L)

heap_trace_stop();
free(buffer);
buffer = calloc(sizeof(heap_trace_record_t), records);
buffer = calloc(records, sizeof(heap_trace_record_t));
if (!buffer)
return luaL_error(L, "out of memory");

14 changes: 14 additions & 0 deletions components/modules/i2s.c
Original file line number Diff line number Diff line change
@@ -161,9 +161,13 @@ static int node_i2s_start( lua_State *L )
pin_config.data_out_num = opt_checkint(L, "data_out_pin", I2S_PIN_NO_CHANGE);
pin_config.data_in_num = opt_checkint(L, "data_in_pin", I2S_PIN_NO_CHANGE);
//
#ifdef SOC_I2S_SUPPORTS_DAC
i2s_dac_mode_t dac_mode = opt_checkint_range(L, "dac_mode", I2S_DAC_CHANNEL_DISABLE, 0, I2S_DAC_CHANNEL_MAX-1);
#endif
//
#ifdef SOC_I2S_SUPPORTS_ADC
adc1_channel_t adc1_channel = opt_checkint_range(L, "adc1_channel", ADC1_CHANNEL_MAX, ADC1_CHANNEL_0, ADC1_CHANNEL_MAX);
#endif

// handle optional callback functions TX and RX
lua_settop( L, top );
@@ -183,14 +187,18 @@ static int node_i2s_start( lua_State *L )
if (err != ESP_OK)
luaL_error( L, "i2s can not start" );

#ifdef SOC_I2S_SUPPORTS_DAC
if (dac_mode != I2S_DAC_CHANNEL_DISABLE) {
if (i2s_set_dac_mode( dac_mode ) != ESP_OK)
luaL_error( L, "error setting dac mode" );
}
#endif
#ifdef SOC_I2S_SUPPORTS_ADC
if (adc1_channel != ADC1_CHANNEL_MAX) {
if (i2s_set_adc_mode( ADC_UNIT_1, adc1_channel ) != ESP_OK)
luaL_error( L, "error setting adc1 mode" );
}
#endif

if (i2s_set_pin(i2s_id, &pin_config) != ESP_OK)
luaL_error( L, "error setting pins" );
@@ -331,14 +339,20 @@ LROT_BEGIN(i2s, NULL, 0)
LROT_NUMENTRY( MODE_SLAVE, I2S_MODE_SLAVE )
LROT_NUMENTRY( MODE_TX, I2S_MODE_TX )
LROT_NUMENTRY( MODE_RX, I2S_MODE_RX )
#ifdef SOC_I2S_SUPPORTS_DAC
LROT_NUMENTRY( MODE_DAC_BUILT_IN, I2S_MODE_DAC_BUILT_IN )
#endif
#ifdef SOC_I2S_SUPPORTS_ADC
LROT_NUMENTRY( MODE_ADC_BUILT_IN, I2S_MODE_ADC_BUILT_IN )
#endif
LROT_NUMENTRY( MODE_PDM, I2S_MODE_PDM )

#ifdef SOC_I2S_SUPPORTS_DAC
LROT_NUMENTRY( DAC_CHANNEL_DISABLE, I2S_DAC_CHANNEL_DISABLE )
LROT_NUMENTRY( DAC_CHANNEL_RIGHT, I2S_DAC_CHANNEL_RIGHT_EN )
LROT_NUMENTRY( DAC_CHANNEL_LEFT, I2S_DAC_CHANNEL_LEFT_EN )
LROT_NUMENTRY( DAC_CHANNEL_BOTH, I2S_DAC_CHANNEL_BOTH_EN )
#endif
LROT_END(i2s, NULL, 0)

int luaopen_i2s( lua_State *L ) {
17 changes: 10 additions & 7 deletions components/modules/node.c
Original file line number Diff line number Diff line change
@@ -113,16 +113,19 @@ static int node_bootreason( lua_State *L)
#if defined(CONFIG_IDF_TARGET_ESP32) || defined(CONFIG_IDF_TARGET_ESP32C6)
case SDIO_RESET:
#endif
#if defined(CONFIG_IDF_TARGET_ESP32S2) || defined(CONFIG_IDF_TARGET_ESP32S3) || defined(CONFIG_IDF_TARGET_ESP32C3) || defined(CONFIG_IDF_TARGET_ESP32H2)
#if defined(CONFIG_IDF_TARGET_ESP32S2) || defined(CONFIG_IDF_TARGET_ESP32S3) || defined(CONFIG_IDF_TARGET_ESP32C3)
case GLITCH_RTC_RESET:
#endif
#if defined(CONFIG_IDF_TARGET_ESP32S2) || defined(CONFIG_IDF_TARGET_ESP32S3) || defined(CONFIG_IDF_TARGET_ESP32C3) || defined(CONFIG_IDF_TARGET_ESP32C6) || defined(CONFIG_IDF_TARGET_ESP32H2)
#if defined(CONFIG_IDF_TARGET_ESP32S2) || defined(CONFIG_IDF_TARGET_ESP32S3) || defined(CONFIG_IDF_TARGET_ESP32C3) || defined(CONFIG_IDF_TARGET_ESP32C6) || defined(CONFIG_IDF_TARGET_ESP32H2) || defined(CONFIG_IDF_TARGET_ESP32C5)
case EFUSE_RESET:
#endif
#if defined(CONFIG_IDF_TARGET_ESP32C6)
#if defined(CONFIG_IDF_TARGET_ESP32C6) || defined(CONFIG_IDF_TARGET_ESP32C5)
case JTAG_RESET:
#endif
#if defined(CONFIG_IDF_TARGET_ESP32S3) || defined(CONFIG_IDF_TARGET_ESP32C3) || defined(CONFIG_IDF_TARGET_ESP32C6) || defined(CONFIG_IDF_TARGET_ESP32H2)
#if defined(CONFIG_IDF_TARGET_ESP32H2)
case JTAG_CPU_RESET:
#endif
#if defined(CONFIG_IDF_TARGET_ESP32S3) || defined(CONFIG_IDF_TARGET_ESP32C3) || defined(CONFIG_IDF_TARGET_ESP32C6) || defined(CONFIG_IDF_TARGET_ESP32H2) || defined(CONFIG_IDF_TARGET_ESP32C5)
case USB_UART_CHIP_RESET:
case USB_JTAG_CHIP_RESET:
#endif
@@ -131,7 +134,7 @@ static int node_bootreason( lua_State *L)
#endif
case TG0WDT_SYS_RESET:
case TG1WDT_SYS_RESET:
#if !defined(CONFIG_IDF_TARGET_ESP32C6)
#if !defined(CONFIG_IDF_TARGET_ESP32C6) && !defined(CONFIG_IDF_TARGET_ESP32C5) && !defined(CONFIG_IDF_TARGET_ESP32H2)
case INTRUSION_RESET:
#endif
case RTCWDT_BROWN_OUT_RESET:
@@ -281,7 +284,7 @@ static int node_sleep (lua_State *L)
esp_sleep_enable_timer_wakeup(usecs);
}

#if !defined(CONFIG_IDF_TARGET_ESP32C3) && !defined(CONFIG_IDF_TARGET_ESP32C6) && !defined(CONFIG_IDF_TARGET_ESP32H2)
#if !defined(CONFIG_IDF_TARGET_ESP32C3) && !defined(CONFIG_IDF_TARGET_ESP32C6) && !defined(CONFIG_IDF_TARGET_ESP32H2) && !defined(CONFIG_IDF_TARGET_ESP32C5)
// touch option: boolean
if (opt_checkbool(L, "touch", false)) {
int err = esp_sleep_enable_touchpad_wakeup();
@@ -354,7 +357,7 @@ static int node_dsleep (lua_State *L)
}
}

#if !defined(CONFIG_IDF_TARGET_ESP32C3) && !defined(CONFIG_IDF_TARGET_ESP32C6) && !defined(CONFIG_IDF_TARGET_ESP32H2)
#if !defined(CONFIG_IDF_TARGET_ESP32C3) && !defined(CONFIG_IDF_TARGET_ESP32C6) && !defined(CONFIG_IDF_TARGET_ESP32H2) && !defined(CONFIG_IDF_TARGET_ESP32C5)
bool pull = opt_checkbool(L, "pull", false);
if (opt_get(L, "isolate", LUA_TTABLE)) {
for (int i = 1; ; i++) {
29 changes: 9 additions & 20 deletions components/modules/wifi.c
Original file line number Diff line number Diff line change
@@ -93,22 +93,6 @@ static int wifi_stop (lua_State *L)
0 : luaL_error (L, "failed to stop wifi, code %d", err);
}

#if defined(CONFIG_ESP_CONSOLE_USB_CDC)
// For some unknown reason, on an S2 with USB CDC console enabled, if we allow
// the esp_wifi_init() to run during initial startup, something Bad(tm)
// happens and the S2 fails to enumerate on the USB bus. However, if we defer
// the wifi initialisation, it starts up fine. This is an ugly workaround, but
// I'm out of ideas at this point. If I use a UART console, I see no errors
// even with the immediate init.
static task_handle_t th;
#endif

static void do_esp_wifi_init(task_param_t p, task_prio_t)
{
wifi_init_config_t cfg = WIFI_INIT_CONFIG_DEFAULT();
ESP_ERROR_CHECK(esp_wifi_init (&cfg));
}

extern void wifi_ap_init (void);
extern void wifi_sta_init (void);
static int wifi_init (lua_State *L)
@@ -117,11 +101,16 @@ static int wifi_init (lua_State *L)
wifi_sta_init ();

#if defined(CONFIG_ESP_CONSOLE_USB_CDC)
th = task_get_id(do_esp_wifi_init);
task_post_low(th, 0);
#else
do_esp_wifi_init(0, 0);
// For some unknown reason, on an S2 with USB CDC console enabled, if we allow
// the esp_wifi_init() to run during initial startup, something Bad(tm)
// happens and the S2 fails to enumerate on the USB bus. However, if we defer
// it by half a second or so, everything works. This is an ugly workaround,
// but I'm out of ideas at this point.
vTaskDelay(CONFIG_NODEMCU_CMODULE_WIFI_STARTUP_DELAY / portTICK_PERIOD_MS);
#endif
wifi_init_config_t cfg = WIFI_INIT_CONFIG_DEFAULT();
ESP_ERROR_CHECK(esp_wifi_init (&cfg));

return 0;
}

1 change: 1 addition & 0 deletions components/platform/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -24,4 +24,5 @@ idf_component_register(
"esp_rom"
"lua"
"soc"
"spiffs"
)
15 changes: 15 additions & 0 deletions components/platform/Kconfig
Original file line number Diff line number Diff line change
@@ -37,6 +37,18 @@ menu "NodeMCU platform config"
opened. Raising this limit will incur some extra memory
overhead.

config NODEMCU_AUTO_FORMAT_ON_BOOT
bool "Auto-format SPIFFS on first boot"
default "y" if !ESP_CONSOLE_USB_CDC
default "n" if ESP_CONSOLE_USB_CDC
help
The traditional behavior of NodeMCU is to automatically format
the SPIFFS partition on first boot (or any other time the
filesystem is unmountable). When using USB CDC however, the
formatting can interfere with USB device enumeration, leading
to a failed boot. In that case, disable the auto-format and
use file.format() after startup instead.

config NODEMCU_EMBED_LFS
bool "Embed LFS as part of the NodeMCU firmware"
default "n"
@@ -72,13 +84,16 @@ menu "NodeMCU platform config"
default y if IDF_TARGET_ESP32S2
default y if IDF_TARGET_ESP32S3
default y if IDF_TARGET_ESP32C3
default y if IDF_TARGET_ESP32C5
default y if IDF_TARGET_ESP32C6
default y if IDF_TARGET_ESP32H2

config NODEMCU_UART_AT_LEAST_3
bool
default y if IDF_TARGET_ESP32
default y if IDF_TARGET_ESP32S3
default y if IDF_TARGET_ESP32C5
default y if IDF_TARGET_ESP32C6

config NODEMCU_UART_DRIVER_BUF_SIZE_RX0
int "RX buffer size for UART0"
6 changes: 6 additions & 0 deletions components/platform/include/platform.h
Original file line number Diff line number Diff line change
@@ -272,4 +272,10 @@ bool platform_partition_info (uint8_t idx, platform_partition_t *info);

void platform_print_deprecation_note( const char *msg, const char *time_frame);

/**
* Mount or remount the default SPIFFS filesystem.
* @returns An error message string if the operation failed.
*/
const char *platform_remount_default_fs(bool autoformat);

#endif
5 changes: 3 additions & 2 deletions components/platform/onewire.c
Original file line number Diff line number Diff line change
@@ -65,6 +65,7 @@ sample code bearing this copyright.
#include "driver/gpio.h"
#include "rom/gpio.h" // for gpio_matrix_out()
#include "soc/gpio_periph.h"
#include "hal/gpio_ll.h"
#include "esp_log.h"

#define TRUE (1==1)
@@ -197,7 +198,7 @@ static int onewire_rmt_attach_pin( uint8_t gpio_num )
return PLATFORM_ERR;

if (gpio_num != ow_rmt.gpio) {
#if !defined(CONFIG_IDF_TARGET_ESP32C3) && !defined(CONFIG_IDF_TARGET_ESP32C6) && !defined(CONFIG_IDF_TARGET_ESP32H2)
#if !defined(CONFIG_IDF_TARGET_ESP32C3) && !defined(CONFIG_IDF_TARGET_ESP32C6) && !defined(CONFIG_IDF_TARGET_ESP32H2) && !defined(CONFIG_IDF_TARGET_ESP32C5)
// attach GPIO to previous pin
if (gpio_num < 32) {
GPIO.enable_w1ts = (0x1 << gpio_num);
@@ -217,7 +218,7 @@ static int onewire_rmt_attach_pin( uint8_t gpio_num )
rmt_set_gpio( ow_rmt.rx, RMT_MODE_RX, gpio_num, false );
rmt_set_gpio( ow_rmt.tx, RMT_MODE_TX, gpio_num, false );
// force pin direction to input to enable path to RX channel
PIN_INPUT_ENABLE(GPIO_PIN_MUX_REG[gpio_num]);
gpio_ll_input_enable(&GPIO, gpio_num);

ow_rmt.gpio = gpio_num;
}
38 changes: 37 additions & 1 deletion components/platform/platform.c
Original file line number Diff line number Diff line change
@@ -11,6 +11,7 @@
#include "lua.h"
#include "rom/uart.h"
#include "esp_log.h"
#include "esp_spiffs.h"
#include "task/task.h"
#include "linput.h"

@@ -211,7 +212,7 @@ uint32_t platform_uart_setup( unsigned id, uint32_t baud, int databits, int pari
uart_config_t cfg = {
.baud_rate = baud,
.flow_ctrl = flow_control,
.rx_flow_ctrl_thresh = UART_FIFO_LEN - 16,
.rx_flow_ctrl_thresh = UART_HW_FIFO_LEN(id) - 16,
.source_clk = UART_SCLK_DEFAULT,
};

@@ -672,3 +673,38 @@ void platform_print_deprecation_note( const char *msg, const char *time_frame)
printf( "Warning, deprecated API! %s. It will be removed %s. See documentation for details.\n", msg, time_frame );
}


const char *platform_remount_default_fs(bool autoformat)
{
const char *label = CONFIG_NODEMCU_DEFAULT_SPIFFS_LABEL;

if (esp_spiffs_mounted(label))
esp_vfs_spiffs_unregister(label);

esp_vfs_spiffs_conf_t spiffs_cfg = {
.base_path = "",
.partition_label = (label && label[0]) ? label : NULL,
.max_files = CONFIG_NODEMCU_MAX_OPEN_FILES,
.format_if_mount_failed = autoformat,
};
const char *reason = NULL;
switch(esp_vfs_spiffs_register(&spiffs_cfg))
{
case ESP_OK:
case ESP_ERR_INVALID_STATE: // already mounted (or encrypted)
break;
case ESP_ERR_NO_MEM:
reason = "out of memory";
break;
case ESP_ERR_NOT_FOUND:
reason = "no SPIFFS partition found";
break;
case ESP_FAIL:
reason = "failed to mount partition, use file.format() to reformat";
break;
default:
reason = "unknown";
break;
}
return reason;
}
2 changes: 1 addition & 1 deletion docs/modules/node.md
Original file line number Diff line number Diff line change
@@ -205,7 +205,7 @@ Returns information about hardware, software version and build configuration.
If a `group` is given the return value will be a table containing the following elements:

- for `group` = `"hw"`
- `chip_model` (string) one of "ESP32", "ESP32S2", "ESP32S3", "ESP32C3", "ESP32C2", "ESP32C6", "ESP32H2"
- `chip_model` (string) one of "ESP32", "ESP32S2", "ESP32S3", "ESP32C3", "ESP32C2", "ESP32C5", "ESP32C6", "ESP32H2"
- `chip_features` (number) bit mask of chip feature flags
- BIT(0), Chip has embedded flash memory
- BIT(1), Chip has 2.4GHz WiFi
2 changes: 1 addition & 1 deletion sdk/esp32-esp-idf
Submodule esp32-esp-idf updated 13870 files
7 changes: 7 additions & 0 deletions sdkconfig.ci.esp32c3
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
CONFIG_USJ_ENABLE_USB_SERIAL_JTAG=y
# CONFIG_ESP_CONSOLE_UART_DEFAULT is not set
CONFIG_ESP_CONSOLE_USB_SERIAL_JTAG=y
# CONFIG_ESP_CONSOLE_UART_CUSTOM is not set
# CONFIG_ESP_CONSOLE_NONE is not set
CONFIG_ESP_CONSOLE_SECONDARY_NONE=y
CONFIG_ESP_CONSOLE_USB_SERIAL_JTAG_ENABLED=y
6 changes: 6 additions & 0 deletions sdkconfig.ci.esp32s2
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
# CONFIG_ESP_CONSOLE_UART_DEFAULT is not set
CONFIG_ESP_CONSOLE_USB_CDC=y
# CONFIG_ESP_CONSOLE_UART_CUSTOM is not set
# CONFIG_ESP_CONSOLE_NONE is not set
CONFIG_ESP_CONSOLE_USB_CDC_RX_BUF_SIZE=512