Commit 16ef39e2 authored by Johny Mattsson's avatar Johny Mattsson
Browse files

idf4: overhaul to new build system, part 1 of 3

Yet to come:
  - part 2: dealing with deprecated and removed APIs
  - part 3: making it actually work again
parent 8e0e0cb3
menu "NodeMCU modules" menu "NodeMCU modules"
menu "Core Lua modules" config NODEMCU_CMODULE_ADC
bool "ADC module"
config LUA_BUILTIN_STRING default "n"
bool "String module" help
default "y" Includes the adc module. This module provides access to the
help adc1 hardware.
Includes the string module (recommended).
config NODEMCU_CMODULE_BIT
config LUA_BUILTIN_TABLE bool "Bit module"
bool "Table module" default "n"
default "y" help
help Includes the bit module. This module provide bit manipulation
Includes the table module (recommended). functions on Lua numbers.
config LUA_BUILTIN_COROUTINE config NODEMCU_CMODULE_BTHCI
bool "Coroutine module" bool "BlueTooth HCI interface module"
default "y" default "n"
help select BT_ENABLED
Includes the coroutine module (recommended). help
Includes the simple BlueTooth HCI module.
config LUA_BUILTIN_MATH
bool "Math module" config NODEMCU_CMODULE_CAN
default "y" bool "CAN module"
help default "n"
Includes the math module (recommended). help
Includes the can module.
config LUA_BUILTIN_DEBUG
bool "Debug module" config NODEMCU_CMODULE_CRYPTO
default "n" bool "Crypto module"
help default "n"
Includes the debug module. help
Includes the crypto module.
config LUA_BUILTIN_DEBUG_EXTENDED
depends on LUA_BUILTIN_DEBUG config NODEMCU_CMODULE_DAC
bool "Extended debug support" bool "DAC module"
default "n" default "n"
help help
Includes the full debug module, rather than just getregistry and traceback. Includes the dac module.
config LUA_BUILTIN_DEBUG_MINIMAL config NODEMCU_CMODULE_DHT
depends on LUA_BUILTIN_DEBUG bool "DHT11/21/22/AM2301/AM2302 module"
bool default "n"
default !LUA_BUILTIN_DEBUG_EXTENDED help
Includes the dht module.
endmenu
config NODEMCU_CMODULE_ENCODER
bool "Encoder module"
config NODEMCU_CMODULE_ADC default "n"
bool "ADC module" help
default "n" Includes the encoder module. This provides hex and base64 encoding
help and decoding functionality.
Includes the adc module. This module provides access to the
adc1 hardware. config NODEMCU_CMODULE_ETH
bool "Ethernet module"
config NODEMCU_CMODULE_BIT default "n"
bool "Bit module" help
default "n" Includes the ethernet module.
help
Includes the bit module. This module provide bit manipulation functions config NODEMCU_CMODULE_FILE
on Lua numbers. bool "File module"
default "y"
config NODEMCU_CMODULE_BTHCI help
bool "BlueTooth HCI interface module" Includes the file module (recommended).
default "n"
select BT_ENABLED config NODEMCU_CMODULE_GPIO
help bool "GPIO module"
Includes the simple BlueTooth HCI module. default "y"
help
config NODEMCU_CMODULE_CAN Includes the GPIO module (recommended).
bool "CAN module"
default "n" config NODEMCU_CMODULE_HTTP
help bool "HTTP module"
Includes the can module. default "y"
help
config NODEMCU_CMODULE_CRYPTO Includes the HTTP module (recommended).
bool "Crypto module"
default "n" config NODEMCU_CMODULE_I2C
help bool "I2C module"
Includes the crypto module. default "y"
help
config NODEMCU_CMODULE_DAC Includes the I2C module (recommended).
bool "DAC module"
default "n" config NODEMCU_CMODULE_I2S
help bool "I2S module"
Includes the dac module. default "n"
help
config NODEMCU_CMODULE_DHT Includes the I2S module.
bool "DHT11/21/22/AM2301/AM2302 module"
default "n" config NODEMCU_CMODULE_LEDC
help bool "LEDC module"
Includes the dht module. default "n"
help
config NODEMCU_CMODULE_ENCODER Includes the LEDC module.
bool "Encoder module"
default "n" config NODEMCU_CMODULE_MQTT
help bool "MQTT module"
Includes the encoder module. This provides hex and base64 encoding and default "n"
decoding functionality. help
Includes the MQTT module.
config NODEMCU_CMODULE_ETH
bool "Ethernet module" config NODEMCU_CMODULE_NET
default "n" bool "Net module"
help default "y"
Includes the ethernet module. help
Includes the net module (recommended).
config NODEMCU_CMODULE_FILE
bool "File module" config NODEMCU_CMODULE_NODE
default "y" bool "Node module"
help default "y"
Includes the file module (recommended). help
Includes the node module (recommended).
config NODEMCU_CMODULE_GPIO
bool "GPIO module" config NODEMCU_CMODULE_OW
default "y" bool "1-Wire module"
help default "y"
Includes the GPIO module (recommended). help
Includes the 1-Wire (ow) module (recommended).
config NODEMCU_CMODULE_HTTP
bool "HTTP module" config NODEMCU_CMODULE_OTAUPGRADE
default "y" bool "Over-The-Air upgrade module"
help default "n"
Includes the HTTP module (recommended). help
Includes the over-the-air firmware upgrade module. Use of this
config NODEMCU_CMODULE_I2C requires a partition table with at least two OTA partitions, plus
bool "I2C module" the OTA data partition. See the IDF documentation for details.
default "y"
help config NODEMCU_CMODULE_PULSECNT
Includes the I2C module (recommended). bool "Pulse counter module"
default "n"
config NODEMCU_CMODULE_I2S help
bool "I2S module" Includes the pulse counter module to use ESP32's built-in pulse
default "n" counting hardware.
help
Includes the I2S module. config NODEMCU_CMODULE_QRCODEGEN
bool "QR Code Generator module"
config NODEMCU_CMODULE_LEDC default "n"
bool "LEDC module" help
default "n" Includes the QR Code Generator from
help https://www.nayuki.io/page/qr-code-generator-library
Includes the LEDC module.
config NODEMCU_CMODULE_SDMMC
config NODEMCU_CMODULE_MQTT bool "SD-MMC module"
bool "MQTT module" default "n"
default "n" help
help Includes the sdmmc module.
Includes the MQTT module.
config NODEMCU_CMODULE_SIGMA_DELTA
config NODEMCU_CMODULE_NET bool "Sigma-Delta module"
bool "Net module" default "n"
default "y" help
help Includes the sigma_delta module. This module provides access to
Includes the net module (recommended). the sigma-delta hardware.
config NODEMCU_CMODULE_NODE config NODEMCU_CMODULE_SJSON
bool "Node module" bool "SJSON module"
default "y" default "n"
help help
Includes the node module (recommended). Includes the sjson module.
config NODEMCU_CMODULE_OW config NODEMCU_CMODULE_SODIUM
bool "1-Wire module" bool "Sodium module"
default "y" default "n"
help help
Includes the 1-Wire (ow) module (recommended). Includes the libsodium crypto module.
config NODEMCU_CMODULE_OTAUPGRADE config NODEMCU_CMODULE_SPI
bool "Over-The-Air upgrade module" bool "SPI module"
default "n" default "n"
help help
Includes the over-the-air firmware upgrade module. Use of this requires Includes the spi module.
a partition table with at least two OTA partitions, plus the OTA data
partition. See the IDF documentation for details. config NODEMCU_CMODULE_STRUCT
bool "Struct module"
config NODEMCU_CMODULE_PULSECNT default "n"
bool "Pulse counter module" help
default "n" Includes the struct module. This module provides [un]packing of
help raw byte strings into Lua values and vice versa.
Includes the pulse counter module to use ESP32's built-in pulse counting hardware.
config NODEMCU_CMODULE_TMR
config NODEMCU_CMODULE_QRCODEGEN bool "Timer module"
bool "QR Code Generator module" default "y"
default "n" help
help Includes the timer module (recommended).
Includes the QR Code Generator from
https://www.nayuki.io/page/qr-code-generator-library config NODEMCU_CMODULE_TOUCH
bool "Touch module"
config NODEMCU_CMODULE_SDMMC default "n"
bool "SD-MMC module" help
default "n" Includes the touch module to use ESP32's built-in touch sensor
help hardware.
Includes the sdmmc module.
config NODEMCU_CMODULE_U8G2
config NODEMCU_CMODULE_SIGMA_DELTA bool "U8G2 module"
bool "Sigma-Delta module" default "n"
default "n" help
help Includes the u8g2 module.
Includes the sigma_delta module. This module provides access to the
sigma-delta hardware. rsource "../u8g2/Kconfig.u8g2"
config NODEMCU_CMODULE_SJSON config NODEMCU_CMODULE_UCG
bool "SJSON module" bool "UCG module"
default "n" default "n"
help select NODEMCU_CMODULE_SPI
Includes the sjson module. help
Includes the ucg module.
config NODEMCU_CMODULE_SODIUM
bool "Sodium module" rsource "../ucg/Kconfig.ucg"
default "n"
help config NODEMCU_CMODULE_WIFI
Includes the libsodium crypto module. bool "WiFi module"
default "y"
config NODEMCU_CMODULE_SPI help
bool "SPI module" Includes the WiFi module (recommended).
default "n"
help config NODEMCU_CMODULE_WS2812
Includes the spi module. bool "WS2812 module"
default "n"
config NODEMCU_CMODULE_STRUCT help
bool "Struct module" Includes the ws2812 module.
default "n"
help config NODEMCU_CMODULE_TIME
Includes the struct module. This module provides [un]packing of raw bool "Time module"
byte strings into Lua values and vice versa. default "n"
help
config NODEMCU_CMODULE_TMR Includes the time module.
bool "Timer module"
default "y"
help
Includes the timer module (recommended).
config NODEMCU_CMODULE_TOUCH
bool "Touch module"
default "n"
help
Includes the touch module to use ESP32's built-in touch sensor hardware.
config NODEMCU_CMODULE_U8G2
bool "U8G2 module"
default "n"
help
Includes the u8g2 module.
source "$PROJECT_PATH/components/u8g2/u8g2.kconfig"
config NODEMCU_CMODULE_UCG
bool "UCG module"
default "n"
select NODEMCU_CMODULE_SPI
help
Includes the ucg module.
source "$PROJECT_PATH/components/ucg/ucg.kconfig"
config NODEMCU_CMODULE_WIFI
bool "WiFi module"
default "y"
help
Includes the WiFi module (recommended).
config NODEMCU_CMODULE_WS2812
bool "WS2812 module"
default "n"
help
Includes the ws2812 module.
config NODEMCU_CMODULE_TIME
bool "Time module"
default "n"
help
Includes the time module.
endmenu endmenu
# Match up all the module source files with their corresponding Kconfig
# option in the form NODEMCU_CMODULE_<modname> and if enabled, add a
# "-u <modname>_module_selected1" option to force the linker to include
# the module. See components/core/include/module.h for further details on
# how this works.
-include $(PROJECT_PATH)/build/include/config/auto.conf
include $(PROJECT_PATH)/components/modules/uppercase.mk
ifneq (4.0, $(firstword $(sort $(MAKE_VERSION) 4.0)))
# make versions below 4.0 will fail on the uppercase function used in
# the exapnsion of MODULE_NAMES.
$(error GNU make version 4.0 or above required)
endif
MODULE_NAMES:=$(call uppercase,$(patsubst $(COMPONENT_PATH)/%.c,%,$(wildcard $(COMPONENT_PATH)/*.c)))
FORCE_LINK:=$(foreach mod,$(MODULE_NAMES),$(if $(CONFIG_NODEMCU_CMODULE_$(mod)), -u $(mod)_module_selected1))
COMPONENT_ADD_LDFLAGS=$(FORCE_LINK) -lmodules $(if $(CONFIG_NODEMCU_CMODULE_BTHCI),-lbtdm_app)
# These are disabled by default in the IDF, so switch them back on
CFLAGS += \
-Werror=unused-function \
-Werror=unused-but-set-variable \
-Werror=unused-variable \
COMPONENT_EXTRA_CLEAN := u8g2_fonts.h u8g2_displays.h ucg_config.h
u8g2.o: u8g2_fonts.h u8g2_displays.h
u8g2_fonts.h: $(BUILD_DIR_BASE)/include/sdkconfig.h
perl -w $(PROJECT_PATH)/tools/u8g2_config_fonts.pl < $^ > $@
u8g2_displays.h: $(BUILD_DIR_BASE)/include/sdkconfig.h
perl -w $(PROJECT_PATH)/tools/u8g2_config_displays.pl < $^ > $@
ucg.o: ucg_config.h
ucg_config.h: $(BUILD_DIR_BASE)/include/sdkconfig.h
perl -w $(PROJECT_PATH)/tools/ucg_config.pl < $^ > $@
...@@ -147,7 +147,7 @@ static int file_obj_free( lua_State *L ) ...@@ -147,7 +147,7 @@ static int file_obj_free( lua_State *L )
return 0; return 0;
} }
#ifdef CONFIG_BUILD_SPIFFS #ifdef CONFIG_NODEMCU_BUILD_SPIFFS
// Lua: format() // Lua: format()
static int file_format( lua_State* L ) static int file_format( lua_State* L )
{ {
...@@ -187,7 +187,7 @@ static int file_open( lua_State* L ) ...@@ -187,7 +187,7 @@ static int file_open( lua_State* L )
const char *fname = luaL_checklstring( L, 1, &len ); const char *fname = luaL_checklstring( L, 1, &len );
const char *basename = vfs_basename( fname ); const char *basename = vfs_basename( fname );
luaL_argcheck(L, strlen(basename) <= CONFIG_FS_OBJ_NAME_LEN && strlen(fname) == len, 1, "filename invalid"); luaL_argcheck(L, strlen(basename) <= CONFIG_NODEMCU_FS_OBJ_NAME_LEN && strlen(fname) == len, 1, "filename invalid");
const char *mode = luaL_optstring(L, 2, "r"); const char *mode = luaL_optstring(L, 2, "r");
...@@ -265,7 +265,7 @@ static int file_exists( lua_State* L ) ...@@ -265,7 +265,7 @@ static int file_exists( lua_State* L )
size_t len; size_t len;
const char *fname = luaL_checklstring( L, 1, &len ); const char *fname = luaL_checklstring( L, 1, &len );
const char *basename = vfs_basename( fname ); const char *basename = vfs_basename( fname );
luaL_argcheck(L, strlen(basename) <= CONFIG_FS_OBJ_NAME_LEN && strlen(fname) == len, 1, "filename invalid"); luaL_argcheck(L, strlen(basename) <= CONFIG_NODEMCU_FS_OBJ_NAME_LEN && strlen(fname) == len, 1, "filename invalid");
struct vfs_stat stat; struct vfs_stat stat;
lua_pushboolean(L, vfs_stat((char *)fname, &stat) == VFS_RES_OK ? 1 : 0); lua_pushboolean(L, vfs_stat((char *)fname, &stat) == VFS_RES_OK ? 1 : 0);
...@@ -279,7 +279,7 @@ static int file_remove( lua_State* L ) ...@@ -279,7 +279,7 @@ static int file_remove( lua_State* L )
size_t len; size_t len;
const char *fname = luaL_checklstring( L, 1, &len ); const char *fname = luaL_checklstring( L, 1, &len );
const char *basename = vfs_basename( fname ); const char *basename = vfs_basename( fname );
luaL_argcheck(L, strlen(basename) <= CONFIG_FS_OBJ_NAME_LEN && strlen(fname) == len, 1, "filename invalid"); luaL_argcheck(L, strlen(basename) <= CONFIG_NODEMCU_FS_OBJ_NAME_LEN && strlen(fname) == len, 1, "filename invalid");
vfs_remove((char *)fname); vfs_remove((char *)fname);
return 0; return 0;
} }
...@@ -305,11 +305,11 @@ static int file_rename( lua_State* L ) ...@@ -305,11 +305,11 @@ static int file_rename( lua_State* L )
const char *oldname = luaL_checklstring( L, 1, &len ); const char *oldname = luaL_checklstring( L, 1, &len );
const char *basename = vfs_basename( oldname ); const char *basename = vfs_basename( oldname );
luaL_argcheck(L, strlen(basename) <= CONFIG_FS_OBJ_NAME_LEN && strlen(oldname) == len, 1, "filename invalid"); luaL_argcheck(L, strlen(basename) <= CONFIG_NODEMCU_FS_OBJ_NAME_LEN && strlen(oldname) == len, 1, "filename invalid");
const char *newname = luaL_checklstring( L, 2, &len ); const char *newname = luaL_checklstring( L, 2, &len );
basename = vfs_basename( newname ); basename = vfs_basename( newname );
luaL_argcheck(L, strlen(basename) <= CONFIG_FS_OBJ_NAME_LEN && strlen(newname) == len, 2, "filename invalid"); luaL_argcheck(L, strlen(basename) <= CONFIG_NODEMCU_FS_OBJ_NAME_LEN && strlen(newname) == len, 2, "filename invalid");
if(0 <= vfs_rename( oldname, newname )){ if(0 <= vfs_rename( oldname, newname )){
lua_pushboolean(L, 1); lua_pushboolean(L, 1);
...@@ -324,7 +324,7 @@ static int file_stat( lua_State* L ) ...@@ -324,7 +324,7 @@ static int file_stat( lua_State* L )
{ {
size_t len; size_t len;
const char *fname = luaL_checklstring( L, 1, &len ); const char *fname = luaL_checklstring( L, 1, &len );
luaL_argcheck( L, strlen(fname) <= CONFIG_FS_OBJ_NAME_LEN && strlen(fname) == len, 1, "filename invalid" ); luaL_argcheck( L, strlen(fname) <= CONFIG_NODEMCU_FS_OBJ_NAME_LEN && strlen(fname) == len, 1, "filename invalid" );
struct vfs_stat stat; struct vfs_stat stat;
if (vfs_stat( (char *)fname, &stat ) != VFS_RES_OK) { if (vfs_stat( (char *)fname, &stat ) != VFS_RES_OK) {
...@@ -539,7 +539,7 @@ typedef struct { ...@@ -539,7 +539,7 @@ typedef struct {
vfs_vol *vol; vfs_vol *vol;
} volume_type; } volume_type;
#ifdef CONFIG_BUILD_FATFS #ifdef CONFIG_NODEMCU_BUILD_FATFS
// Lua: success = file.chdir("/SD0/") // Lua: success = file.chdir("/SD0/")
static int file_chdir( lua_State *L ) static int file_chdir( lua_State *L )
{ {
...@@ -571,7 +571,7 @@ LROT_BEGIN(file) ...@@ -571,7 +571,7 @@ LROT_BEGIN(file)
LROT_FUNCENTRY( writeline, file_writeline ) LROT_FUNCENTRY( writeline, file_writeline )
LROT_FUNCENTRY( read, file_read ) LROT_FUNCENTRY( read, file_read )
LROT_FUNCENTRY( readline, file_readline ) LROT_FUNCENTRY( readline, file_readline )
#ifdef CONFIG_BUILD_SPIFFS #ifdef CONFIG_NODEMCU_BUILD_SPIFFS
LROT_FUNCENTRY( format, file_format ) LROT_FUNCENTRY( format, file_format )
LROT_FUNCENTRY( fscfg, file_fscfg ) LROT_FUNCENTRY( fscfg, file_fscfg )
#endif #endif
...@@ -583,7 +583,7 @@ LROT_BEGIN(file) ...@@ -583,7 +583,7 @@ LROT_BEGIN(file)
LROT_FUNCENTRY( fsinfo, file_fsinfo ) LROT_FUNCENTRY( fsinfo, file_fsinfo )
LROT_FUNCENTRY( on, file_on ) LROT_FUNCENTRY( on, file_on )
LROT_FUNCENTRY( stat, file_stat ) LROT_FUNCENTRY( stat, file_stat )
#ifdef CONFIG_BUILD_FATFS #ifdef CONFIG_NODEMCU_BUILD_FATFS
LROT_FUNCENTRY( chdir, file_chdir ) LROT_FUNCENTRY( chdir, file_chdir )
#endif #endif
LROT_END(file, NULL, 0) LROT_END(file, NULL, 0)
......
...@@ -198,8 +198,8 @@ static int node_i2s_start( lua_State *L ) ...@@ -198,8 +198,8 @@ static int node_i2s_start( lua_State *L )
if (i2s_config.mode & I2S_MODE_TX) { if (i2s_config.mode & I2S_MODE_TX) {
// prepare TX task // prepare TX task
char pcName[8]; char pcName[20];
snprintf( pcName, 8, "I2S_tx_%d", i2s_id ); snprintf( pcName, sizeof(pcName), "I2S_tx_%d", i2s_id );
pcName[7] = '\0'; pcName[7] = '\0';
if ((is->tx.queue = xQueueCreate( 2, sizeof( i2s_tx_data_t ) )) == NULL) if ((is->tx.queue = xQueueCreate( 2, sizeof( i2s_tx_data_t ) )) == NULL)
return luaL_error( L, "cannot create queue" ); return luaL_error( L, "cannot create queue" );
...@@ -208,8 +208,8 @@ static int node_i2s_start( lua_State *L ) ...@@ -208,8 +208,8 @@ static int node_i2s_start( lua_State *L )
if (i2s_config.mode & I2S_MODE_RX) { if (i2s_config.mode & I2S_MODE_RX) {
// prepare RX task // prepare RX task
char pcName[8]; char pcName[20];
snprintf( pcName, 8, "I2S_rx_%d", i2s_id ); snprintf( pcName, sizeof(pcName), "I2S_rx_%d", i2s_id );
pcName[7] = '\0'; pcName[7] = '\0';
xTaskCreate(task_I2S_rx, pcName, 1024, (void *)i2s_id, ESP_TASK_MAIN_PRIO + 1, &is->rx.taskHandle); xTaskCreate(task_I2S_rx, pcName, 1024, (void *)i2s_id, ESP_TASK_MAIN_PRIO + 1, &is->rx.taskHandle);
} }
......
...@@ -150,8 +150,6 @@ typedef struct lnet_userdata { ...@@ -150,8 +150,6 @@ typedef struct lnet_userdata {
int cb_sent_ref; int cb_sent_ref;
// Only for TCP: // Only for TCP:
bool connecting; bool connecting;
int hold;
size_t num_held;
size_t num_send; size_t num_send;
int cb_connect_ref; int cb_connect_ref;
int cb_disconnect_ref; int cb_disconnect_ref;
...@@ -250,8 +248,6 @@ lnet_userdata *net_create( lua_State *L, enum net_type type ) { ...@@ -250,8 +248,6 @@ lnet_userdata *net_create( lua_State *L, enum net_type type ) {
ud->client.cb_connect_ref = LUA_NOREF; ud->client.cb_connect_ref = LUA_NOREF;
ud->client.cb_reconnect_ref = LUA_NOREF; ud->client.cb_reconnect_ref = LUA_NOREF;
ud->client.cb_disconnect_ref = LUA_NOREF; ud->client.cb_disconnect_ref = LUA_NOREF;
ud->client.hold = 0;
ud->client.num_held = 0;
ud->client.connecting = false; ud->client.connecting = false;
case TYPE_UDP_SOCKET: case TYPE_UDP_SOCKET:
ud->client.wait_dns = 0; ud->client.wait_dns = 0;
...@@ -497,7 +493,6 @@ static int net_listen( lua_State *L ) { ...@@ -497,7 +493,6 @@ static int net_listen( lua_State *L ) {
if (!ud->netconn) if (!ud->netconn)
return luaL_error(L, "cannot allocate netconn"); return luaL_error(L, "cannot allocate netconn");
netconn_set_nonblocking(ud->netconn, 1); netconn_set_nonblocking(ud->netconn, 1);
netconn_set_noautorecved(ud->netconn, 1);
err = netconn_bind(ud->netconn, &addr, port); err = netconn_bind(ud->netconn, &addr, port);
if (err == ERR_OK) { if (err == ERR_OK) {
...@@ -509,7 +504,6 @@ static int net_listen( lua_State *L ) { ...@@ -509,7 +504,6 @@ static int net_listen( lua_State *L ) {
if (!ud->netconn) if (!ud->netconn)
return luaL_error(L, "cannot allocate netconn"); return luaL_error(L, "cannot allocate netconn");
netconn_set_nonblocking(ud->netconn, 1); netconn_set_nonblocking(ud->netconn, 1);
netconn_set_noautorecved(ud->netconn, 1);
err = netconn_bind(ud->netconn, &addr, port); err = netconn_bind(ud->netconn, &addr, port);
break; break;
...@@ -557,7 +551,6 @@ static int net_connect( lua_State *L ) { ...@@ -557,7 +551,6 @@ static int net_connect( lua_State *L ) {
if (!ud->netconn) if (!ud->netconn)
return luaL_error(L, "cannot allocate netconn"); return luaL_error(L, "cannot allocate netconn");
netconn_set_nonblocking(ud->netconn, 1); netconn_set_nonblocking(ud->netconn, 1);
netconn_set_noautorecved(ud->netconn, 1);
ud->port = port; ud->port = port;
return lnet_socket_resolve_dns(L, ud, domain, true); return lnet_socket_resolve_dns(L, ud, domain, true);
...@@ -680,39 +673,6 @@ static int net_send( lua_State *L ) { ...@@ -680,39 +673,6 @@ static int net_send( lua_State *L ) {
return lwip_lua_checkerr(L, err); return lwip_lua_checkerr(L, err);
} }
// Lua: client:hold()
static int net_hold( lua_State *L ) {
lnet_userdata *ud = net_get_udata(L);
if (!ud || ud->type != TYPE_TCP_CLIENT)
return luaL_error(L, "invalid user data");
if (!ud->client.hold && ud->netconn)
{
if (ud->client.hold == 0)
{
ud->client.hold = 1;
ud->client.num_held = 0;
}
}
return 0;
}
// Lua: client:unhold()
static int net_unhold( lua_State *L ) {
lnet_userdata *ud = net_get_udata(L);
if (!ud || ud->type != TYPE_TCP_CLIENT)
return luaL_error(L, "invalid user data");
if (ud->client.hold && ud->netconn)
{
if (ud->client.hold != 0)
{
ud->client.hold = 0;
netconn_recved(ud->netconn, ud->client.num_held);
ud->client.num_held = 0;
}
}
return 0;
}
// Lua: client/socket:dns(domain, callback(socket, addr)) // Lua: client/socket:dns(domain, callback(socket, addr))
static int net_dns( lua_State *L ) { static int net_dns( lua_State *L ) {
lnet_userdata *ud = net_get_udata(L); lnet_userdata *ud = net_get_udata(L);
...@@ -1082,17 +1042,8 @@ static void lrecv_cb (lua_State *L, lnet_userdata *ud) { ...@@ -1082,17 +1042,8 @@ static void lrecv_cb (lua_State *L, lnet_userdata *ud) {
} }
} while (netbuf_next(p) != -1); } while (netbuf_next(p) != -1);
if (p) { if (p)
netbuf_delete(p); netbuf_delete(p);
if (ud->type == TYPE_TCP_CLIENT) {
if (ud->client.hold) {
ud->client.num_held += len;
} else {
netconn_recved(ud->netconn, len);
}
}
}
} }
...@@ -1110,7 +1061,6 @@ static void laccept_cb (lua_State *L, lnet_userdata *ud) { ...@@ -1110,7 +1061,6 @@ static void laccept_cb (lua_State *L, lnet_userdata *ud) {
if (err == ERR_OK) { if (err == ERR_OK) {
nud->netconn = newconn; nud->netconn = newconn;
netconn_set_nonblocking(nud->netconn, 1); netconn_set_nonblocking(nud->netconn, 1);
netconn_set_noautorecved(nud->netconn, 1);
nud->netconn->pcb.tcp->so_options |= SOF_KEEPALIVE; nud->netconn->pcb.tcp->so_options |= SOF_KEEPALIVE;
nud->netconn->pcb.tcp->keep_idle = ud->server.timeout * 1000; nud->netconn->pcb.tcp->keep_idle = ud->server.timeout * 1000;
nud->netconn->pcb.tcp->keep_cnt = 1; nud->netconn->pcb.tcp->keep_cnt = 1;
...@@ -1168,8 +1118,6 @@ LROT_BEGIN(net_tcpsocket) ...@@ -1168,8 +1118,6 @@ LROT_BEGIN(net_tcpsocket)
LROT_FUNCENTRY( close, net_close ) LROT_FUNCENTRY( close, net_close )
LROT_FUNCENTRY( on, net_on ) LROT_FUNCENTRY( on, net_on )
LROT_FUNCENTRY( send, net_send ) LROT_FUNCENTRY( send, net_send )
LROT_FUNCENTRY( hold, net_hold )
LROT_FUNCENTRY( unhold, net_unhold )
LROT_FUNCENTRY( dns, net_dns ) LROT_FUNCENTRY( dns, net_dns )
LROT_FUNCENTRY( getpeer, net_getpeer ) LROT_FUNCENTRY( getpeer, net_getpeer )
LROT_FUNCENTRY( getaddr, net_getaddr ) LROT_FUNCENTRY( getaddr, net_getaddr )
......
...@@ -560,7 +560,7 @@ static int node_compile( lua_State* L ) ...@@ -560,7 +560,7 @@ static int node_compile( lua_State* L )
size_t len; size_t len;
const char *fname = luaL_checklstring( L, 1, &len ); const char *fname = luaL_checklstring( L, 1, &len );
const char *basename = vfs_basename( fname ); const char *basename = vfs_basename( fname );
luaL_argcheck(L, strlen(basename) <= CONFIG_FS_OBJ_NAME_LEN && strlen(fname) == len, 1, "filename invalid"); luaL_argcheck(L, strlen(basename) <= CONFIG_NODEMCU_FS_OBJ_NAME_LEN && strlen(fname) == len, 1, "filename invalid");
char *output = luaM_malloc( L, len+1 ); char *output = luaM_malloc( L, len+1 );
strcpy(output, fname); strcpy(output, fname);
......
...@@ -13,7 +13,7 @@ ...@@ -13,7 +13,7 @@
lua_pushinteger (L, val); \ lua_pushinteger (L, val); \
lua_setfield (L, -2, key); lua_setfield (L, -2, key);
void inline time_tmToTable(lua_State *L, struct tm *date) static void inline time_tmToTable(lua_State *L, struct tm *date)
{ {
lua_createtable (L, 0, 9); lua_createtable (L, 0, 9);
......
...@@ -27,7 +27,7 @@ CONDITIONS OF ANY KIND, either express or implied. ...@@ -27,7 +27,7 @@ CONDITIONS OF ANY KIND, either express or implied.
#include "esp_log.h" #include "esp_log.h"
#include "lextra.h" #include "lextra.h"
#include "soc/rtc_periph.h" #include "soc/rtc_periph.h"
#include "soc/touch_channel.h" #include "soc/touch_sensor_periph.h"
#include <string.h> #include <string.h>
......
idf_component_register(
SRCS "dht.c" "flash_api.c" "flash_fs.c" "onewire.c" "platform.c"
"platform_flash.c" "platform_partition.c" "platform_rmt.c"
"u8x8_nodemcu_hal.c" "ucg_nodemcu_hal.c" "vfs.c" "wdt.c" "ws2812.c"
INCLUDE_DIRS "include"
REQUIRES "spiffs" "u8g2" "ucg" "driver_i2c"
PRIV_REQUIRES "bootloader_support" "driver_console" "lua" "esp32"
)
menu "Platform config" menu "NodeMCU platform config"
choice CONSOLE_BIT_RATE choice NODEMCU_CONSOLE_BIT_RATE
prompt "UART console default bit rate" prompt "UART console default bit rate"
default CONSOLE_BIT_RATE_115200 default NODEMCU_CONSOLE_BIT_RATE_115200
help help
Configure the default bit rate for the UART console. Configure the default bit rate for the UART console.
The resulting UART setting will be xxx-8N1, where xxx represents the The resulting UART setting will be xxx-8N1, where xxx represents
chosen bit rate. the chosen bit rate.
config CONSOLE_BIT_RATE_300 config NODEMCU_CONSOLE_BIT_RATE_300
bool "300" bool "300"
config CONSOLE_BIT_RATE_600 config NODEMCU_CONSOLE_BIT_RATE_600
bool "600" bool "600"
config CONSOLE_BIT_RATE_1200 config NODEMCU_CONSOLE_BIT_RATE_1200
bool "1200" bool "1200"
config CONSOLE_BIT_RATE_2400 config NODEMCU_CONSOLE_BIT_RATE_2400
bool "2400" bool "2400"
config CONSOLE_BIT_RATE_4800 config NODEMCU_CONSOLE_BIT_RATE_4800
bool "4800" bool "4800"
config CONSOLE_BIT_RATE_9600 config NODEMCU_CONSOLE_BIT_RATE_9600
bool "9600" bool "9600"
config CONSOLE_BIT_RATE_19200 config NODEMCU_CONSOLE_BIT_RATE_19200
bool "19200" bool "19200"
config CONSOLE_BIT_RATE_38400 config NODEMCU_CONSOLE_BIT_RATE_38400
bool "38400" bool "38400"
config CONSOLE_BIT_RATE_57600 config NODEMCU_CONSOLE_BIT_RATE_57600
bool "57600" bool "57600"
config CONSOLE_BIT_RATE_74880 config NODEMCU_CONSOLE_BIT_RATE_74880
bool "74880" bool "74880"
config CONSOLE_BIT_RATE_115200 config NODEMCU_CONSOLE_BIT_RATE_115200
bool "115200" bool "115200"
config CONSOLE_BIT_RATE_230400 config NODEMCU_CONSOLE_BIT_RATE_230400
bool "230400" bool "230400"
config CONSOLE_BIT_RATE_460800 config NODEMCU_CONSOLE_BIT_RATE_460800
bool "460800" bool "460800"
config CONSOLE_BIT_RATE_921600 config NODEMCU_CONSOLE_BIT_RATE_921600
bool "921600" bool "921600"
config CONSOLE_BIT_RATE_1843200 config NODEMCU_CONSOLE_BIT_RATE_1843200
bool "1843200" bool "1843200"
config CONSOLE_BIT_RATE_3683400 config NODEMCU_CONSOLE_BIT_RATE_3683400
bool "3683400" bool "3683400"
endchoice endchoice
config CONSOLE_BIT_RATE config NODEMCU_CONSOLE_BIT_RATE
int int
default 300 if CONSOLE_BIT_RATE_300 default 300 if NODEMCU_CONSOLE_BIT_RATE_300
default 600 if CONSOLE_BIT_RATE_600 default 600 if NODEMCU_CONSOLE_BIT_RATE_600
default 1200 if CONSOLE_BIT_RATE_1200 default 1200 if NODEMCU_CONSOLE_BIT_RATE_1200
default 2400 if CONSOLE_BIT_RATE_2400 default 2400 if NODEMCU_CONSOLE_BIT_RATE_2400
default 4800 if CONSOLE_BIT_RATE_4800 default 4800 if NODEMCU_CONSOLE_BIT_RATE_4800
default 9600 if CONSOLE_BIT_RATE_9600 default 9600 if NODEMCU_CONSOLE_BIT_RATE_9600
default 19200 if CONSOLE_BIT_RATE_19200 default 19200 if NODEMCU_CONSOLE_BIT_RATE_19200
default 38400 if CONSOLE_BIT_RATE_38400 default 38400 if NODEMCU_CONSOLE_BIT_RATE_38400
default 57600 if CONSOLE_BIT_RATE_57600 default 57600 if NODEMCU_CONSOLE_BIT_RATE_57600
default 74880 if CONSOLE_BIT_RATE_74880 default 74880 if NODEMCU_CONSOLE_BIT_RATE_74880
default 115200 if CONSOLE_BIT_RATE_115200 default 115200 if NODEMCU_CONSOLE_BIT_RATE_115200
default 230400 if CONSOLE_BIT_RATE_230400 default 230400 if NODEMCU_CONSOLE_BIT_RATE_230400
default 460800 if CONSOLE_BIT_RATE_460800 default 460800 if NODEMCU_CONSOLE_BIT_RATE_460800
default 921600 if CONSOLE_BIT_RATE_921600 default 921600 if NODEMCU_CONSOLE_BIT_RATE_921600
default 1843200 if CONSOLE_BIT_RATE_1843200 default 1843200 if NODEMCU_CONSOLE_BIT_RATE_1843200
default 3683400 if CONSOLE_BIT_RATE_3683400 default 3683400 if NODEMCU_CONSOLE_BIT_RATE_3683400
config CONSOLE_BIT_RATE_AUTO config NODEMCU_CONSOLE_BIT_RATE_AUTO
bool "UART console auto-baud detection" bool "UART console auto-baud detection"
default "y" default "y"
help help
Enables auto-baud detection for the UART console. Enables auto-baud detection for the UART console.
By typing a few characters into the console shortly after boot, By typing a few characters into the console shortly after boot,
NodeMCU can automatically detect your terminal settings and NodeMCU can automatically detect your terminal settings and
adjust accordingly. adjust accordingly.
If you are doing advanced things with the console, you may want If you are doing advanced things with the console, you may want
to disable this feature. to disable this feature.
config NODE_DEBUG config NODEMCU_NODE_DEBUG
bool "Enable NODE_DBG() output" bool "Enable NODE_DBG() output"
default "n" default "n"
help help
Enable debugging output via NODE_DBG(). This is VERY chatty. Enable debugging output via NODE_DBG(). This is VERY chatty.
For development/debugging use only. For development/debugging use only.
config NODE_ERR config NODEMCU_NODE_ERR
bool "Enable NODE_ERR() output" bool "Enable NODE_ERR() output"
default "y" default "y"
help help
Enable error reporting via NODE_ERR(). Enable error reporting via NODE_ERR().
It is recommended to leave this enabled - if it ever produces output, It is recommended to leave this enabled - if it ever produces
something has gone seriously wrong and you probably want to know about output, something has gone seriously wrong and you probably want
it. to know about it.
config FS_OBJ_NAME_LEN config NODEMCU_FS_OBJ_NAME_LEN
int "Make filesystem object name length" int "Make filesystem object name length"
default 31 default 31
help help
Maximum name of filesystem objects (files, directories). Maximum name of filesystem objects (files, directories).
config SPIFFS_MAX_OPEN_FILES config NODEMCU_SPIFFS_MAX_OPEN_FILES
int "Maximum number of open files for SPIFFS" int "Maximum number of open files for SPIFFS"
default 4 default 4
help help
Maximum number of open files for SPIFFS Maximum number of open files for SPIFFS
# I don't think we can deal without SPIFFS at this point, so always on for now config NODEMCU_BUILD_SPIFFS
config BUILD_SPIFFS bool
bool default "y"
default "y" # I don't think we can deal without SPIFFS at this point, so always on for now
config LUA_EMBED_LFS config NODEMCU_BUILD_FATFS
bool "Embed LFS as part of the NodeMCU firmware" bool "Support for FAT filesystems"
default "n" default "n"
help select NODEMCU_CMODULE_SDMMC
The LFS (Lua Flash Store) normally has its own partition entry, and can help
can be replaced at will. Optionally, the LFS can instead be permanently Include support for accessing FAT filesystems on SD cards.
embedded into the NodeMCU firmware image itself. This can be useful for
scenarios where over-the-air firmware upgrades are needed to also config NODEMCU_EMBED_LFS
bundle Lua code. The major downside is that once embedded, the LFS can bool "Embed LFS as part of the NodeMCU firmware"
no longer be changed, as doing so would break the firmware checksums default "n"
and signatures and leave the system unable to boot. help
The LFS (Lua Flash Store) normally has its own partition entry,
The default option is to not embed the LFS, in which case LFS is and can can be replaced at will. Optionally, the LFS can instead
looked for in a partition of type 0xC2 and subtype 0x01. be permanently embedded into the NodeMCU firmware image itself.
This can be useful for scenarios where over-the-air firmware
To embed LFS data into firmware, use: upgrades are needed to also bundle Lua code. The major downside
./tools/embed_lfs.sh /path/to/file1.lua /path/to/file2.lua ... is that once embedded, the LFS can no longer be changed, as
doing so would break the firmware checksums and signatures and
config LUA_EMBEDDED_FLASH_STORE leave the system unable to boot.
hex "Embedded LUA Flash Store size"
default 0x0 The default option is to not embed the LFS, in which case LFS is
depends on LUA_EMBED_LFS looked for in a partition of type 0xC2 and subtype 0x01.
help
Embedded LUA Flash Store size. Set to zero to use an LFS partition instead To embed LFS data into firmware, use:
of embedding the LFS within the NodeMCU firmware itself. ./tools/embed_lfs.sh /path/to/file1.lua /path/to/file2.lua ...
config BUILD_FATFS config NODEMCU_EMBEDDED_LFS_SIZE
bool "Support for FAT filesystems" hex "Embedded LUA Flash Store size"
default "n" default 0x0
select NODEMCU_CMODULE_SDMMC depends on NODEMCU_EMBED_LFS
help help
Include support for accessing FAT filesystems on SD cards. Embedded LUA Flash Store size. Set to zero to use an LFS partition
instead of embedding the LFS within the NodeMCU firmware itself.
endmenu endmenu
COMPONENT_ADD_INCLUDEDIRS:=include
# for u8x8
CPPFLAGS+=-DU8X8_USE_PINS -DU8X8_WITH_USER_PTR
# for ucg
CPPFLAGS+=-DUSE_PIN_LIST
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
#include <stdio.h> #include <stdio.h>
#include <string.h> #include <string.h>
#include <stdlib.h> #include <stdlib.h>
#include "rom/spi_flash.h" #include "esp32/rom/spi_flash.h"
#include "platform_wdt.h" #include "platform_wdt.h"
......
...@@ -23,13 +23,13 @@ enum ...@@ -23,13 +23,13 @@ enum
}; };
#if CONFIG_NODE_DEBUG #if CONFIG_NODEMCU_NODE_DEBUG
# define NODE_DBG printf # define NODE_DBG printf
#else #else
# define NODE_DBG(...) do{}while(0) # define NODE_DBG(...) do{}while(0)
#endif #endif
#if CONFIG_NODE_ERR #if CONFIG_NODEMCU_NODE_ERR
# define NODE_ERR printf # define NODE_ERR printf
#else #else
# define NODE_ERR(...) do{}while(0) # define NODE_ERR(...) do{}while(0)
......
...@@ -18,7 +18,7 @@ ...@@ -18,7 +18,7 @@
// vfs_close - close file descriptor and free memory // vfs_close - close file descriptor and free memory
// fd: file descriptor // fd: file descriptor
// Returns: VFS_RES_OK or negative value in case of error // Returns: VFS_RES_OK or negative value in case of error
inline int32_t vfs_close( int fd ) { static inline int32_t vfs_close( int fd ) {
vfs_file *f = (vfs_file *)fd; vfs_file *f = (vfs_file *)fd;
return f ? f->fns->close( f ) : VFS_RES_ERR; return f ? f->fns->close( f ) : VFS_RES_ERR;
} }
...@@ -28,7 +28,7 @@ inline int32_t vfs_close( int fd ) { ...@@ -28,7 +28,7 @@ inline int32_t vfs_close( int fd ) {
// ptr: destination data buffer // ptr: destination data buffer
// len: requested length // len: requested length
// Returns: Number of bytes read, or VFS_RES_ERR in case of error // Returns: Number of bytes read, or VFS_RES_ERR in case of error
inline int32_t vfs_read( int fd, void *ptr, size_t len ) { static inline int32_t vfs_read( int fd, void *ptr, size_t len ) {
vfs_file *f = (vfs_file *)fd; vfs_file *f = (vfs_file *)fd;
return f ? f->fns->read( f, ptr, len ) : VFS_RES_ERR; return f ? f->fns->read( f, ptr, len ) : VFS_RES_ERR;
} }
...@@ -38,7 +38,7 @@ inline int32_t vfs_read( int fd, void *ptr, size_t len ) { ...@@ -38,7 +38,7 @@ inline int32_t vfs_read( int fd, void *ptr, size_t len ) {
// ptr: source data buffer // ptr: source data buffer
// len: requested length // len: requested length
// Returns: Number of bytes written, or VFS_RES_ERR in case of error // Returns: Number of bytes written, or VFS_RES_ERR in case of error
inline int32_t vfs_write( int fd, const void *ptr, size_t len ) { static inline int32_t vfs_write( int fd, const void *ptr, size_t len ) {
vfs_file *f = (vfs_file *)fd; vfs_file *f = (vfs_file *)fd;
return f ? f->fns->write( f, ptr, len ) : VFS_RES_ERR; return f ? f->fns->write( f, ptr, len ) : VFS_RES_ERR;
} }
...@@ -54,7 +54,7 @@ int vfs_ungetc( int c, int fd ); ...@@ -54,7 +54,7 @@ int vfs_ungetc( int c, int fd );
// VFS_SEEK_CUR - set pointer to current position + off // VFS_SEEK_CUR - set pointer to current position + off
// VFS_SEEK_END - set pointer to end of file + off // VFS_SEEK_END - set pointer to end of file + off
// Returns: New position, or VFS_RES_ERR in case of error // Returns: New position, or VFS_RES_ERR in case of error
inline int32_t vfs_lseek( int fd, int32_t off, int whence ) { static inline int32_t vfs_lseek( int fd, int32_t off, int whence ) {
vfs_file *f = (vfs_file *)fd; vfs_file *f = (vfs_file *)fd;
return f ? f->fns->lseek( f, off, whence ) : VFS_RES_ERR; return f ? f->fns->lseek( f, off, whence ) : VFS_RES_ERR;
} }
...@@ -62,7 +62,7 @@ inline int32_t vfs_lseek( int fd, int32_t off, int whence ) { ...@@ -62,7 +62,7 @@ inline int32_t vfs_lseek( int fd, int32_t off, int whence ) {
// vfs_eof - test for end-of-file // vfs_eof - test for end-of-file
// fd: file descriptor // fd: file descriptor
// Returns: 0 if not at end, != 0 if end of file // Returns: 0 if not at end, != 0 if end of file
inline int32_t vfs_eof( int fd ) { static inline int32_t vfs_eof( int fd ) {
vfs_file *f = (vfs_file *)fd; vfs_file *f = (vfs_file *)fd;
return f ? f->fns->eof( f ) : VFS_RES_ERR; return f ? f->fns->eof( f ) : VFS_RES_ERR;
} }
...@@ -70,7 +70,7 @@ inline int32_t vfs_eof( int fd ) { ...@@ -70,7 +70,7 @@ inline int32_t vfs_eof( int fd ) {
// vfs_tell - get read/write position // vfs_tell - get read/write position
// fd: file descriptor // fd: file descriptor
// Returns: Current position // Returns: Current position
inline int32_t vfs_tell( int fd ) { static inline int32_t vfs_tell( int fd ) {
vfs_file *f = (vfs_file *)fd; vfs_file *f = (vfs_file *)fd;
return f ? f->fns->tell( f ) : VFS_RES_ERR; return f ? f->fns->tell( f ) : VFS_RES_ERR;
} }
...@@ -78,7 +78,7 @@ inline int32_t vfs_tell( int fd ) { ...@@ -78,7 +78,7 @@ inline int32_t vfs_tell( int fd ) {
// vfs_flush - flush write cache to file // vfs_flush - flush write cache to file
// fd: file descriptor // fd: file descriptor
// Returns: VFS_RES_OK, or VFS_RES_ERR in case of error // Returns: VFS_RES_OK, or VFS_RES_ERR in case of error
inline int32_t vfs_flush( int fd ) { static inline int32_t vfs_flush( int fd ) {
vfs_file *f = (vfs_file *)fd; vfs_file *f = (vfs_file *)fd;
return f ? f->fns->flush( f ) : VFS_RES_ERR; return f ? f->fns->flush( f ) : VFS_RES_ERR;
} }
...@@ -86,7 +86,7 @@ inline int32_t vfs_flush( int fd ) { ...@@ -86,7 +86,7 @@ inline int32_t vfs_flush( int fd ) {
// vfs_size - get current file size // vfs_size - get current file size
// fd: file descriptor // fd: file descriptor
// Returns: File size // Returns: File size
inline uint32_t vfs_size( int fd ) { static inline uint32_t vfs_size( int fd ) {
vfs_file *f = (vfs_file *)fd; vfs_file *f = (vfs_file *)fd;
return f ? f->fns->size( f ) : 0; return f ? f->fns->size( f ) : 0;
} }
...@@ -103,13 +103,13 @@ int32_t vfs_ferrno( int fd ); ...@@ -103,13 +103,13 @@ int32_t vfs_ferrno( int fd );
// vfs_closedir - close directory descriptor and free memory // vfs_closedir - close directory descriptor and free memory
// dd: dir descriptor // dd: dir descriptor
// Returns: VFS_RES_OK, or VFS_RES_ERR in case of error // Returns: VFS_RES_OK, or VFS_RES_ERR in case of error
inline int32_t vfs_closedir( vfs_dir *dd ) { return dd->fns->close( dd ); } static inline int32_t vfs_closedir( vfs_dir *dd ) { return dd->fns->close( dd ); }
// vfs_readdir - read next directory item // vfs_readdir - read next directory item
// dd: dir descriptor // dd: dir descriptor
// buf: pre-allocated stat structure to be filled in // buf: pre-allocated stat structure to be filled in
// Returns: VFS_RES_OK if next item found, otherwise VFS_RES_ERR // Returns: VFS_RES_OK if next item found, otherwise VFS_RES_ERR
inline int32_t vfs_readdir( vfs_dir *dd, struct vfs_stat *buf ) { return dd->fns->readdir( dd, buf ); } static inline int32_t vfs_readdir( vfs_dir *dd, struct vfs_stat *buf ) { return dd->fns->readdir( dd, buf ); }
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
// volume functions // volume functions
...@@ -118,7 +118,7 @@ inline int32_t vfs_readdir( vfs_dir *dd, struct vfs_stat *buf ) { return dd->fns ...@@ -118,7 +118,7 @@ inline int32_t vfs_readdir( vfs_dir *dd, struct vfs_stat *buf ) { return dd->fns
// vfs_umount - unmount logical drive and free memory // vfs_umount - unmount logical drive and free memory
// vol: volume object // vol: volume object
// Returns: VFS_RES_OK, or VFS_RES_ERR in case of error // Returns: VFS_RES_OK, or VFS_RES_ERR in case of error
inline int32_t vfs_umount( vfs_vol *vol ) { return vol->fns->umount( vol ); } static inline int32_t vfs_umount( vfs_vol *vol ) { return vol->fns->umount( vol ); }
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
// file system functions // file system functions
......
...@@ -50,7 +50,7 @@ typedef const struct vfs_file vfs_file; ...@@ -50,7 +50,7 @@ typedef const struct vfs_file vfs_file;
// stat data // stat data
struct vfs_stat { struct vfs_stat {
uint32_t size; uint32_t size;
char name[CONFIG_FS_OBJ_NAME_LEN+1]; char name[CONFIG_NODEMCU_FS_OBJ_NAME_LEN+1];
struct vfs_time tm; struct vfs_time tm;
uint8_t tm_valid; uint8_t tm_valid;
uint8_t is_dir; uint8_t is_dir;
......
...@@ -248,10 +248,10 @@ uint32_t platform_uart_setup( unsigned id, uint32_t baud, int databits, int pari ...@@ -248,10 +248,10 @@ uint32_t platform_uart_setup( unsigned id, uint32_t baud, int databits, int pari
} }
uart_param_config(id, &cfg); uart_param_config(id, &cfg);
uart_set_pin(id, pins->tx_pin, pins->rx_pin, pins->rts_pin, pins->cts_pin); uart_set_pin(id, pins->tx_pin, pins->rx_pin, pins->rts_pin, pins->cts_pin);
uart_set_line_inverse(id, (pins->tx_inverse? UART_INVERSE_TXD : UART_INVERSE_DISABLE) uart_set_line_inverse(id, (pins->tx_inverse? UART_TXD_INV_M : 0)
| (pins->rx_inverse? UART_INVERSE_RXD : UART_INVERSE_DISABLE) | (pins->rx_inverse? UART_RXD_INV_M : 0)
| (pins->rts_inverse? UART_INVERSE_RTS : UART_INVERSE_DISABLE) | (pins->rts_inverse? UART_RTS_INV_M : 0)
| (pins->cts_inverse? UART_INVERSE_CTS : UART_INVERSE_DISABLE) | (pins->cts_inverse? UART_CTS_INV_M : 0)
); );
if(uart_event_task_id == 0) uart_event_task_id = task_get_id( uart_event_task ); if(uart_event_task_id == 0) uart_event_task_id = task_get_id( uart_event_task );
......
...@@ -35,7 +35,6 @@ ...@@ -35,7 +35,6 @@
#include <string.h> #include <string.h>
#include <stdlib.h> #include <stdlib.h>
#include "esp_flash_data_types.h"
#include "esp_flash_partitions.h" #include "esp_flash_partitions.h"
#include "esp_spi_flash.h" #include "esp_spi_flash.h"
......
if(DEFINED ENV{BUILD_DATE})
idf_build_set_property(COMPILE_OPTIONS -DBUILD_DATE="$ENV{BUILD_DATE}" APPEND)
endif()
#include <string.h> #include <string.h>
#include "rom/ets_sys.h" #include "esp32/rom/ets_sys.h"
#include "driver/gpio.h" #include "driver/gpio.h"
#include "driver/i2c.h" #include "driver/i2c.h"
......
...@@ -76,13 +76,13 @@ vfs_vol *vfs_mount( const char *name, int num ) ...@@ -76,13 +76,13 @@ vfs_vol *vfs_mount( const char *name, int num )
const char *normname = normalize_path( name ); const char *normname = normalize_path( name );
char *outname; char *outname;
#ifdef CONFIG_BUILD_SPIFFS #ifdef CONFIG_NODEMCU_BUILD_SPIFFS
if ((fs_fns = myspiffs_realm( normname, &outname, false ))) { if ((fs_fns = myspiffs_realm( normname, &outname, false ))) {
return fs_fns->mount( outname, num ); return fs_fns->mount( outname, num );
} }
#endif #endif
#ifdef CONFIG_BUILD_FATFS #ifdef CONFIG_NODEMCU_BUILD_FATFS
if ((fs_fns = myfatfs_realm( normname, &outname, false ))) { if ((fs_fns = myfatfs_realm( normname, &outname, false ))) {
vfs_vol *r = fs_fns->mount( outname, num ); vfs_vol *r = fs_fns->mount( outname, num );
free( outname ); free( outname );
...@@ -99,13 +99,13 @@ int vfs_open( const char *name, const char *mode ) ...@@ -99,13 +99,13 @@ int vfs_open( const char *name, const char *mode )
const char *normname = normalize_path( name ); const char *normname = normalize_path( name );
char *outname; char *outname;
#ifdef CONFIG_BUILD_SPIFFS #ifdef CONFIG_NODEMCU_BUILD_SPIFFS
if ((fs_fns = myspiffs_realm( normname, &outname, false ))) { if ((fs_fns = myspiffs_realm( normname, &outname, false ))) {
return (int)fs_fns->open( outname, mode ); return (int)fs_fns->open( outname, mode );
} }
#endif #endif
#ifdef CONFIG_BUILD_FATFS #ifdef CONFIG_NODEMCU_BUILD_FATFS
if ((fs_fns = myfatfs_realm( normname, &outname, false ))) { if ((fs_fns = myfatfs_realm( normname, &outname, false ))) {
int r = (int)fs_fns->open( outname, mode ); int r = (int)fs_fns->open( outname, mode );
free( outname ); free( outname );
...@@ -122,13 +122,13 @@ vfs_dir *vfs_opendir( const char *name ) ...@@ -122,13 +122,13 @@ vfs_dir *vfs_opendir( const char *name )
const char *normname = normalize_path( name ); const char *normname = normalize_path( name );
char *outname; char *outname;
#ifdef CONFIG_BUILD_SPIFFS #ifdef CONFIG_NODEMCU_BUILD_SPIFFS
if ((fs_fns = myspiffs_realm( normname, &outname, false ))) { if ((fs_fns = myspiffs_realm( normname, &outname, false ))) {
return fs_fns->opendir( outname ); return fs_fns->opendir( outname );
} }
#endif #endif
#ifdef CONFIG_BUILD_FATFS #ifdef CONFIG_NODEMCU_BUILD_FATFS
if ((fs_fns = myfatfs_realm( normname, &outname, false ))) { if ((fs_fns = myfatfs_realm( normname, &outname, false ))) {
vfs_dir *r = fs_fns->opendir( outname ); vfs_dir *r = fs_fns->opendir( outname );
free( outname ); free( outname );
...@@ -145,13 +145,13 @@ int32_t vfs_stat( const char *name, struct vfs_stat *buf ) ...@@ -145,13 +145,13 @@ int32_t vfs_stat( const char *name, struct vfs_stat *buf )
const char *normname = normalize_path( name ); const char *normname = normalize_path( name );
char *outname; char *outname;
#ifdef CONFIG_BUILD_SPIFFS #ifdef CONFIG_NODEMCU_BUILD_SPIFFS
if ((fs_fns = myspiffs_realm( normname, &outname, false ))) { if ((fs_fns = myspiffs_realm( normname, &outname, false ))) {
return fs_fns->stat( outname, buf ); return fs_fns->stat( outname, buf );
} }
#endif #endif
#ifdef CONFIG_BUILD_FATFS #ifdef CONFIG_NODEMCU_BUILD_FATFS
if ((fs_fns = myfatfs_realm( normname, &outname, false ))) { if ((fs_fns = myfatfs_realm( normname, &outname, false ))) {
int32_t r = fs_fns->stat( outname, buf ); int32_t r = fs_fns->stat( outname, buf );
free( outname ); free( outname );
...@@ -168,13 +168,13 @@ int32_t vfs_remove( const char *name ) ...@@ -168,13 +168,13 @@ int32_t vfs_remove( const char *name )
const char *normname = normalize_path( name ); const char *normname = normalize_path( name );
char *outname; char *outname;
#ifdef CONFIG_BUILD_SPIFFS #ifdef CONFIG_NODEMCU_BUILD_SPIFFS
if ((fs_fns = myspiffs_realm( normname, &outname, false ))) { if ((fs_fns = myspiffs_realm( normname, &outname, false ))) {
return fs_fns->remove( outname ); return fs_fns->remove( outname );
} }
#endif #endif
#ifdef CONFIG_BUILD_FATFS #ifdef CONFIG_NODEMCU_BUILD_FATFS
if ((fs_fns = myfatfs_realm( normname, &outname, false ))) { if ((fs_fns = myfatfs_realm( normname, &outname, false ))) {
int32_t r = fs_fns->remove( outname ); int32_t r = fs_fns->remove( outname );
free( outname ); free( outname );
...@@ -192,7 +192,7 @@ int32_t vfs_rename( const char *oldname, const char *newname ) ...@@ -192,7 +192,7 @@ int32_t vfs_rename( const char *oldname, const char *newname )
const char *normnewname = normalize_path( newname ); const char *normnewname = normalize_path( newname );
char *oldoutname, *newoutname; char *oldoutname, *newoutname;
#ifdef CONFIG_BUILD_SPIFFS #ifdef CONFIG_NODEMCU_BUILD_SPIFFS
if (myspiffs_realm( normoldname, &oldoutname, false )) { if (myspiffs_realm( normoldname, &oldoutname, false )) {
if ((fs_fns = myspiffs_realm( normnewname, &newoutname, false ))) { if ((fs_fns = myspiffs_realm( normnewname, &newoutname, false ))) {
return fs_fns->rename( oldoutname, newoutname ); return fs_fns->rename( oldoutname, newoutname );
...@@ -200,7 +200,7 @@ int32_t vfs_rename( const char *oldname, const char *newname ) ...@@ -200,7 +200,7 @@ int32_t vfs_rename( const char *oldname, const char *newname )
} }
#endif #endif
#ifdef CONFIG_BUILD_FATFS #ifdef CONFIG_NODEMCU_BUILD_FATFS
if (myfatfs_realm( normoldname, &oldoutname, false )) { if (myfatfs_realm( normoldname, &oldoutname, false )) {
if ((fs_fns = myfatfs_realm( normnewname, &newoutname, false ))) { if ((fs_fns = myfatfs_realm( normnewname, &newoutname, false ))) {
int32_t r = fs_fns->rename( oldoutname, newoutname ); int32_t r = fs_fns->rename( oldoutname, newoutname );
...@@ -219,12 +219,12 @@ int32_t vfs_mkdir( const char *name ) ...@@ -219,12 +219,12 @@ int32_t vfs_mkdir( const char *name )
{ {
vfs_fs_fns *fs_fns; vfs_fs_fns *fs_fns;
#ifdef CONFIG_BUILD_SPIFFS #ifdef CONFIG_NODEMCU_BUILD_SPIFFS
// not supported // not supported
(void)fs_fns; (void)fs_fns;
#endif #endif
#ifdef CONFIG_BUILD_FATFS #ifdef CONFIG_NODEMCU_BUILD_FATFS
const char *normname = normalize_path( name ); const char *normname = normalize_path( name );
char *outname; char *outname;
if ((fs_fns = myfatfs_realm( normname, &outname, false ))) { if ((fs_fns = myfatfs_realm( normname, &outname, false ))) {
...@@ -246,13 +246,13 @@ int32_t vfs_fsinfo( const char *name, uint32_t *total, uint32_t *used ) ...@@ -246,13 +246,13 @@ int32_t vfs_fsinfo( const char *name, uint32_t *total, uint32_t *used )
const char *normname = normalize_path( name ); const char *normname = normalize_path( name );
#ifdef CONFIG_BUILD_SPIFFS #ifdef CONFIG_NODEMCU_BUILD_SPIFFS
if ((fs_fns = myspiffs_realm( normname, &outname, false ))) { if ((fs_fns = myspiffs_realm( normname, &outname, false ))) {
return fs_fns->fsinfo( total, used ); return fs_fns->fsinfo( total, used );
} }
#endif #endif
#ifdef CONFIG_BUILD_FATFS #ifdef CONFIG_NODEMCU_BUILD_FATFS
if ((fs_fns = myfatfs_realm( normname, &outname, false ))) { if ((fs_fns = myfatfs_realm( normname, &outname, false ))) {
free( outname ); free( outname );
return fs_fns->fsinfo( total, used ); return fs_fns->fsinfo( total, used );
...@@ -267,13 +267,13 @@ int32_t vfs_fscfg( const char *name, uint32_t *phys_addr, uint32_t *phys_size) ...@@ -267,13 +267,13 @@ int32_t vfs_fscfg( const char *name, uint32_t *phys_addr, uint32_t *phys_size)
vfs_fs_fns *fs_fns; vfs_fs_fns *fs_fns;
char *outname; char *outname;
#ifdef CONFIG_BUILD_SPIFFS #ifdef CONFIG_NODEMCU_BUILD_SPIFFS
if ((fs_fns = myspiffs_realm( "/FLASH", &outname, false ))) { if ((fs_fns = myspiffs_realm( "/FLASH", &outname, false ))) {
return fs_fns->fscfg( phys_addr, phys_size ); return fs_fns->fscfg( phys_addr, phys_size );
} }
#endif #endif
#ifdef CONFIG_BUILD_FATFS #ifdef CONFIG_NODEMCU_BUILD_FATFS
// not supported // not supported
#endif #endif
...@@ -286,13 +286,13 @@ int32_t vfs_format( void ) ...@@ -286,13 +286,13 @@ int32_t vfs_format( void )
vfs_fs_fns *fs_fns; vfs_fs_fns *fs_fns;
char *outname; char *outname;
#ifdef CONFIG_BUILD_SPIFFS #ifdef CONFIG_NODEMCU_BUILD_SPIFFS
if ((fs_fns = myspiffs_realm( "/FLASH", &outname, false ))) { if ((fs_fns = myspiffs_realm( "/FLASH", &outname, false ))) {
return fs_fns->format(); return fs_fns->format();
} }
#endif #endif
#ifdef CONFIG_BUILD_FATFS #ifdef CONFIG_NODEMCU_BUILD_FATFS
// not supported // not supported
#endif #endif
...@@ -326,7 +326,7 @@ int32_t vfs_chdir( const char *path ) ...@@ -326,7 +326,7 @@ int32_t vfs_chdir( const char *path )
} }
#endif #endif
#ifdef CONFIG_BUILD_SPIFFS #ifdef CONFIG_NODEMCU_BUILD_SPIFFS
if ((fs_fns = myspiffs_realm( normpath, &outname, true ))) { if ((fs_fns = myspiffs_realm( normpath, &outname, true ))) {
// our SPIFFS integration doesn't support directories // our SPIFFS integration doesn't support directories
if (strlen( outname ) == 0) { if (strlen( outname ) == 0) {
...@@ -335,7 +335,7 @@ int32_t vfs_chdir( const char *path ) ...@@ -335,7 +335,7 @@ int32_t vfs_chdir( const char *path )
} }
#endif #endif
#ifdef CONFIG_BUILD_FATFS #ifdef CONFIG_NODEMCU_BUILD_FATFS
if ((fs_fns = myfatfs_realm( normpath, &outname, true ))) { if ((fs_fns = myfatfs_realm( normpath, &outname, true ))) {
if (strchr( outname, ':' )) { if (strchr( outname, ':' )) {
// need to set FatFS' default drive // need to set FatFS' default drive
...@@ -361,13 +361,13 @@ int32_t vfs_errno( const char *name ) ...@@ -361,13 +361,13 @@ int32_t vfs_errno( const char *name )
if (!name) name = ""; // current drive if (!name) name = ""; // current drive
#ifdef CONFIG_BUILD_SPIFFS #ifdef CONFIG_NODEMCU_BUILD_SPIFFS
if ((fs_fns = myspiffs_realm( normname, &outname, false ))) { if ((fs_fns = myspiffs_realm( normname, &outname, false ))) {
return fs_fns->ferrno( ); return fs_fns->ferrno( );
} }
#endif #endif
#ifdef CONFIG_BUILD_FATFS #ifdef CONFIG_NODEMCU_BUILD_FATFS
if ((fs_fns = myfatfs_realm( normname, &outname, false ))) { if ((fs_fns = myfatfs_realm( normname, &outname, false ))) {
int32_t r = fs_fns->ferrno( ); int32_t r = fs_fns->ferrno( );
free( outname ); free( outname );
...@@ -389,13 +389,13 @@ int32_t vfs_ferrno( int fd ) ...@@ -389,13 +389,13 @@ int32_t vfs_ferrno( int fd )
const char *name = ""; // current drive const char *name = ""; // current drive
char *outname; char *outname;
#ifdef CONFIG_BUILD_SPIFFS #ifdef CONFIG_NODEMCU_BUILD_SPIFFS
if ((fs_fns = myspiffs_realm( name, &outname, false ))) { if ((fs_fns = myspiffs_realm( name, &outname, false ))) {
return fs_fns->ferrno( ); return fs_fns->ferrno( );
} }
#endif #endif
#ifdef CONFIG_BUILD_FATFS #ifdef CONFIG_NODEMCU_BUILD_FATFS
if ((fs_fns = myfatfs_realm( name, &outname, false ))) { if ((fs_fns = myfatfs_realm( name, &outname, false ))) {
int32_t r = fs_fns->ferrno( ); int32_t r = fs_fns->ferrno( );
free( outname ); free( outname );
...@@ -416,13 +416,13 @@ void vfs_clearerr( const char *name ) ...@@ -416,13 +416,13 @@ void vfs_clearerr( const char *name )
const char *normname = normalize_path( name ); const char *normname = normalize_path( name );
#ifdef CONFIG_BUILD_SPIFFS #ifdef CONFIG_NODEMCU_BUILD_SPIFFS
if ((fs_fns = myspiffs_realm( normname, &outname, false ))) { if ((fs_fns = myspiffs_realm( normname, &outname, false ))) {
fs_fns->clearerr( ); fs_fns->clearerr( );
} }
#endif #endif
#ifdef CONFIG_BUILD_FATFS #ifdef CONFIG_NODEMCU_BUILD_FATFS
if ((fs_fns = myfatfs_realm( normname, &outname, false ))) { if ((fs_fns = myfatfs_realm( normname, &outname, false ))) {
fs_fns->clearerr( ); fs_fns->clearerr( );
free( outname ); free( outname );
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment