Unverified Commit eaac369d authored by Johny Mattsson's avatar Johny Mattsson Committed by GitHub
Browse files

LFS support for ESP32 NodeMCU (#2801)

* Port LFS from ESP8266 to ESP32
parent 7cb61a27
......@@ -678,47 +678,42 @@ static int pulsecnt_unregister(lua_State* L){
return 0;
}
static const LUA_REG_TYPE pulsecnt_dyn_map[] =
{
{ LSTRKEY( "getCnt" ), LFUNCVAL( pulsecnt_getCnt )},
{ LSTRKEY( "clear" ), LFUNCVAL( pulsecnt_clear )},
{ LSTRKEY( "testCb" ), LFUNCVAL( pulsecnt_testCb )},
{ LSTRKEY( "chan0Config" ), LFUNCVAL( pulsecnt_channel0_config )},
{ LSTRKEY( "chan1Config" ), LFUNCVAL( pulsecnt_channel1_config )},
{ LSTRKEY( "config" ), LFUNCVAL( pulsecnt_config )},
{ LSTRKEY( "setThres" ), LFUNCVAL( pulsecnt_set_thres )},
{ LSTRKEY( "setFilter" ), LFUNCVAL( pulsecnt_set_filter )},
{ LSTRKEY( "rawSetEventVal" ), LFUNCVAL( pulsecnt_set_event_value )},
{ LSTRKEY( "rawGetEventVal" ), LFUNCVAL( pulsecnt_get_event_value )},
// { LSTRKEY( "__tostring" ), LFUNCVAL( pulsecnt_tostring )},
{ LSTRKEY( "__gc" ), LFUNCVAL( pulsecnt_unregister ) },
{ LSTRKEY( "__index" ), LROVAL( pulsecnt_dyn_map ) },
{ LNILKEY, LNILVAL}
};
static const LUA_REG_TYPE pulsecnt_map[] =
{
{ LSTRKEY( "create" ), LFUNCVAL( pulsecnt_create )},
{ LSTRKEY( "PCNT_MODE_KEEP" ), LNUMVAL( 0 ) }, /*pcnt_ctrl_mode_t.PCNT_MODE_KEEP*/
{ LSTRKEY( "PCNT_MODE_REVERSE" ), LNUMVAL( 1 ) }, /*pcnt_ctrl_mode_t.PCNT_MODE_REVERSE*/
{ LSTRKEY( "PCNT_MODE_DISABLE" ), LNUMVAL( 2 ) }, /*pcnt_ctrl_mode_t.PCNT_MODE_DISABLE*/
{ LSTRKEY( "PCNT_COUNT_DIS" ), LNUMVAL( 0 ) }, /*pcnt_count_mode_t.PCNT_COUNT_DIS*/
{ LSTRKEY( "PCNT_COUNT_INC" ), LNUMVAL( 1 ) }, /*pcnt_count_mode_t.PCNT_COUNT_INC*/
{ LSTRKEY( "PCNT_COUNT_DEC" ), LNUMVAL( 2 ) }, /*pcnt_count_mode_t.PCNT_COUNT_DEC*/
// { LSTRKEY( "PCNT_COUNT_MAX " ), LNUMVAL( pcnt_count_mode_t.PCNT_COUNT_MAX ) },
{ LSTRKEY( "PCNT_H_LIM_VAL" ), LNUMVAL( 32767 ) },
{ LSTRKEY( "PCNT_L_LIM_VAL" ), LNUMVAL( -32768 ) },
{ LSTRKEY( "PCNT_EVT_L_LIM" ), LNUMVAL( 0 ) },
{ LSTRKEY( "PCNT_EVT_H_LIM" ), LNUMVAL( 1 ) },
{ LSTRKEY( "PCNT_EVT_THRES_0" ), LNUMVAL( 2 ) },
{ LSTRKEY( "PCNT_EVT_THRES_1" ), LNUMVAL( 3 ) },
{ LSTRKEY( "PCNT_EVT_ZERO" ), LNUMVAL( 4 ) },
{ LSTRKEY( "PCNT_PIN_NOT_USED" ), LNUMVAL( -1 ) }, /*PCNT_PIN_NOT_USED*/
{ LNILKEY, LNILVAL}
};
LROT_BEGIN(pulsecnt_dyn)
LROT_FUNCENTRY( getCnt, pulsecnt_getCnt )
LROT_FUNCENTRY( clear, pulsecnt_clear )
LROT_FUNCENTRY( testCb, pulsecnt_testCb )
LROT_FUNCENTRY( chan0Config, pulsecnt_channel0_config )
LROT_FUNCENTRY( chan1Config, pulsecnt_channel1_config )
LROT_FUNCENTRY( config, pulsecnt_config )
LROT_FUNCENTRY( setThres, pulsecnt_set_thres )
LROT_FUNCENTRY( setFilter, pulsecnt_set_filter )
LROT_FUNCENTRY( rawSetEventVal, pulsecnt_set_event_value )
LROT_FUNCENTRY( rawGetEventVal, pulsecnt_get_event_value )
// LROT_FUNCENTRY( __tostring, pulsecnt_tostring )
LROT_FUNCENTRY( __gc, pulsecnt_unregister )
LROT_TABENTRY ( __index, pulsecnt_dyn )
LROT_END(pulsecnt_dyn, NULL, 0)
LROT_BEGIN(pulsecnt)
LROT_FUNCENTRY( create, pulsecnt_create )
LROT_NUMENTRY ( PCNT_MODE_KEEP, 0 ) /*pcnt_ctrl_mode_t.PCNT_MODE_KEEP*/
LROT_NUMENTRY ( PCNT_MODE_REVERSE, 1 ) /*pcnt_ctrl_mode_t.PCNT_MODE_REVERSE*/
LROT_NUMENTRY ( PCNT_MODE_DISABLE, 2 ) /*pcnt_ctrl_mode_t.PCNT_MODE_DISABLE*/
LROT_NUMENTRY ( PCNT_COUNT_DIS, 0 ) /*pcnt_count_mode_t.PCNT_COUNT_DIS*/
LROT_NUMENTRY ( PCNT_COUNT_INC, 1 ) /*pcnt_count_mode_t.PCNT_COUNT_INC*/
LROT_NUMENTRY ( PCNT_COUNT_DEC, 2 ) /*pcnt_count_mode_t.PCNT_COUNT_DEC*/
// LROT_NUMENTRY ( PCNT_COUNT_MAX , pcnt_count_mode_t.PCNT_COUNT_MAX )
LROT_NUMENTRY ( PCNT_H_LIM_VAL, 32767 )
LROT_NUMENTRY ( PCNT_L_LIM_VAL, -32768 )
LROT_NUMENTRY ( PCNT_EVT_L_LIM, 0 )
LROT_NUMENTRY ( PCNT_EVT_H_LIM, 1 )
LROT_NUMENTRY ( PCNT_EVT_THRES_0, 2 )
LROT_NUMENTRY ( PCNT_EVT_THRES_1, 3 )
LROT_NUMENTRY ( PCNT_EVT_ZERO, 4 )
LROT_NUMENTRY ( PCNT_PIN_NOT_USED, -1 ) /*PCNT_PIN_NOT_USED*/
LROT_END(pulsecnt, NULL, 0)
int luaopen_pulsecnt(lua_State *L) {
......@@ -729,4 +724,4 @@ int luaopen_pulsecnt(lua_State *L) {
return 0;
}
NODEMCU_MODULE(PULSECNT, "pulsecnt", pulsecnt_map, luaopen_pulsecnt);
NODEMCU_MODULE(PULSECNT, "pulsecnt", pulsecnt, luaopen_pulsecnt);
......@@ -56,16 +56,15 @@ static int getPixel(lua_State *L)
return 1;
}
static const LUA_REG_TYPE qrcodegen_map[] = {
{ LSTRKEY("encodeText"), LFUNCVAL(encodeText) },
{ LSTRKEY("getSize"), LFUNCVAL(getSize) },
{ LSTRKEY("getPixel"), LFUNCVAL(getPixel) },
{ LSTRKEY("LOW"), LNUMVAL(qrcodegen_Ecc_LOW) },
{ LSTRKEY("MEDIUM"), LNUMVAL(qrcodegen_Ecc_MEDIUM) },
{ LSTRKEY("QUARTILE"), LNUMVAL(qrcodegen_Ecc_QUARTILE) },
{ LSTRKEY("HIGH"), LNUMVAL(qrcodegen_Ecc_HIGH) },
{ LSTRKEY("AUTO"), LNUMVAL(qrcodegen_Mask_AUTO) },
{ LNILKEY, LNILVAL }
};
LROT_BEGIN(qrcodegen)
LROT_FUNCENTRY(encodeText, encodeText)
LROT_FUNCENTRY(getSize, getSize)
LROT_FUNCENTRY(getPixel, getPixel)
LROT_NUMENTRY(LOW, qrcodegen_Ecc_LOW)
LROT_NUMENTRY(MEDIUM, qrcodegen_Ecc_MEDIUM)
LROT_NUMENTRY(QUARTILE, qrcodegen_Ecc_QUARTILE)
LROT_NUMENTRY(HIGH, qrcodegen_Ecc_HIGH)
LROT_NUMENTRY(AUTO, qrcodegen_Mask_AUTO)
LROT_END(qrcodegen, NULL, 0)
NODEMCU_MODULE(QRCODEGEN, "qrcodegen", qrcodegen_map, NULL);
NODEMCU_MODULE(QRCODEGEN, "qrcodegen", qrcodegen, NULL);
......@@ -327,30 +327,28 @@ static int lsdmmc_umount( lua_State *L )
return luaL_error( L, err_msg );
}
static const LUA_REG_TYPE sdmmc_card_map[] = {
{ LSTRKEY( "read" ), LFUNCVAL( lsdmmc_read ) },
{ LSTRKEY( "write" ), LFUNCVAL( lsdmmc_write ) },
{ LSTRKEY( "get_info" ), LFUNCVAL( lsdmmc_get_info ) },
{ LSTRKEY( "mount" ), LFUNCVAL( lsdmmc_mount ) },
{ LSTRKEY( "umount" ), LFUNCVAL( lsdmmc_umount ) },
{ LSTRKEY( "__index" ), LROVAL( sdmmc_card_map ) },
{ LNILKEY, LNILVAL }
};
static const LUA_REG_TYPE sdmmc_map[] = {
{ LSTRKEY( "init" ), LFUNCVAL( lsdmmc_init ) },
{ LSTRKEY( "HS1" ), LNUMVAL( SDMMC_HOST_SLOT_0 ) },
{ LSTRKEY( "HS2" ), LNUMVAL( SDMMC_HOST_SLOT_1 ) },
{ LSTRKEY( "HSPI" ), LNUMVAL( LSDMMC_HOST_HSPI ) },
{ LSTRKEY( "VSPI" ), LNUMVAL( LSDMMC_HOST_VSPI ) },
{ LSTRKEY( "W1BIT" ), LNUMVAL( SDMMC_HOST_FLAG_1BIT ) },
{ LSTRKEY( "W4BIT" ), LNUMVAL( SDMMC_HOST_FLAG_1BIT |
SDMMC_HOST_FLAG_4BIT ) },
{ LSTRKEY( "W8BIT" ), LNUMVAL( SDMMC_HOST_FLAG_1BIT |
SDMMC_HOST_FLAG_4BIT |
SDMMC_HOST_FLAG_8BIT ) },
{ LNILKEY, LNILVAL }
};
LROT_BEGIN(sdmmc_card)
LROT_FUNCENTRY( read, lsdmmc_read )
LROT_FUNCENTRY( write, lsdmmc_write )
LROT_FUNCENTRY( get_info, lsdmmc_get_info )
LROT_FUNCENTRY( mount, lsdmmc_mount )
LROT_FUNCENTRY( umount, lsdmmc_umount )
LROT_TABENTRY( __index, sdmmc_card )
LROT_END(sdmmc_card, NULL, 0)
LROT_BEGIN(sdmmc)
LROT_FUNCENTRY( init, lsdmmc_init )
LROT_NUMENTRY( HS1, SDMMC_HOST_SLOT_0 )
LROT_NUMENTRY( HS2, SDMMC_HOST_SLOT_1 )
LROT_NUMENTRY( HSPI, LSDMMC_HOST_HSPI )
LROT_NUMENTRY( VSPI, LSDMMC_HOST_VSPI )
LROT_NUMENTRY( W1BIT, SDMMC_HOST_FLAG_1BIT )
LROT_NUMENTRY( W4BIT, SDMMC_HOST_FLAG_1BIT |
SDMMC_HOST_FLAG_4BIT )
LROT_NUMENTRY( W8BIT, SDMMC_HOST_FLAG_1BIT |
SDMMC_HOST_FLAG_4BIT |
SDMMC_HOST_FLAG_8BIT )
LROT_END(sdmmc, NULL, 0)
static int luaopen_sdmmc( lua_State *L )
{
......@@ -364,4 +362,4 @@ static int luaopen_sdmmc( lua_State *L )
return 0;
}
NODEMCU_MODULE(SDMMC, "sdmmc", sdmmc_map, luaopen_sdmmc);
NODEMCU_MODULE(SDMMC, "sdmmc", sdmmc, luaopen_sdmmc);
......@@ -77,14 +77,12 @@ static int sigma_delta_setduty( lua_State *L )
// Module function map
static const LUA_REG_TYPE sigma_delta_map[] =
{
{ LSTRKEY( "setup" ), LFUNCVAL( sigma_delta_setup ) },
{ LSTRKEY( "close" ), LFUNCVAL( sigma_delta_close ) },
//{ LSTRKEY( "setpwmduty" ), LFUNCVAL( sigma_delta_setpwmduty ) },
{ LSTRKEY( "setprescale" ), LFUNCVAL( sigma_delta_setprescale ) },
{ LSTRKEY( "setduty" ), LFUNCVAL( sigma_delta_setduty ) },
{ LNILKEY, LNILVAL }
};
NODEMCU_MODULE(SIGMA_DELTA, "sigma_delta", sigma_delta_map, NULL);
LROT_BEGIN(sigma_delta)
LROT_FUNCENTRY( setup, sigma_delta_setup )
LROT_FUNCENTRY( close, sigma_delta_close )
//LROT_FUNCENTRY( setpwmduty, sigma_delta_setpwmduty )
LROT_FUNCENTRY( setprescale, sigma_delta_setprescale )
LROT_FUNCENTRY( setduty, sigma_delta_setduty )
LROT_END(sigma_delta, NULL, 0)
NODEMCU_MODULE(SIGMA_DELTA, "sigma_delta", sigma_delta, NULL);
......@@ -1014,29 +1014,26 @@ static const luaL_Reg sjsonlib[] = {
{NULL, NULL}
};
#else
static const LUA_REG_TYPE sjson_encoder_map[] = {
{ LSTRKEY( "read" ), LFUNCVAL( sjson_encoder_read ) },
{ LSTRKEY( "__gc" ), LFUNCVAL( sjson_encoder_destructor ) },
{ LSTRKEY( "__index" ), LROVAL( sjson_encoder_map ) },
{ LNILKEY, LNILVAL }
};
static const LUA_REG_TYPE sjson_decoder_map[] = {
{ LSTRKEY( "write" ), LFUNCVAL( sjson_decoder_write ) },
{ LSTRKEY( "result" ), LFUNCVAL( sjson_decoder_result ) },
{ LSTRKEY( "__gc" ), LFUNCVAL( sjson_decoder_destructor ) },
{ LSTRKEY( "__index" ), LROVAL( sjson_decoder_map ) },
{ LNILKEY, LNILVAL }
};
static const LUA_REG_TYPE sjson_map[] = {
{ LSTRKEY( "encode" ), LFUNCVAL( sjson_encode ) },
{ LSTRKEY( "decode" ), LFUNCVAL( sjson_decode ) },
{ LSTRKEY( "encoder" ), LFUNCVAL( sjson_encoder ) },
{ LSTRKEY( "decoder" ), LFUNCVAL( sjson_decoder ) },
{ LSTRKEY( "NULL" ), LUDATA( 0 ) },
{ LNILKEY, LNILVAL }
};
LROT_BEGIN(sjson_encoder)
LROT_FUNCENTRY( read, sjson_encoder_read )
LROT_FUNCENTRY( __gc, sjson_encoder_destructor )
LROT_TABENTRY ( __index, sjson_encoder )
LROT_END(sjson_encoder, NULL, 0)
LROT_BEGIN(sjson_decoder)
LROT_FUNCENTRY( write, sjson_decoder_write )
LROT_FUNCENTRY( result, sjson_decoder_result )
LROT_FUNCENTRY( __gc, sjson_decoder_destructor )
LROT_TABENTRY ( __index, sjson_decoder )
LROT_END(sjson_decoder, NULL, 0)
LROT_BEGIN(sjson)
LROT_FUNCENTRY( encode, sjson_encode )
LROT_FUNCENTRY( decode, sjson_decode )
LROT_FUNCENTRY( encoder, sjson_encoder )
LROT_FUNCENTRY( decoder, sjson_decoder )
LROT_LUDENTRY ( NULL, 0 )
LROT_END(sjson, NULL, 0)
#endif
LUALIB_API int luaopen_sjson (lua_State *L) {
......@@ -1054,12 +1051,12 @@ LUALIB_API int luaopen_sjson (lua_State *L) {
luaL_register(L, NULL, sjson_decoder_map);
lua_setfield(L, -1, "__index");
#else
luaL_rometatable(L, "sjson.decoder", (void *)sjson_decoder_map);
luaL_rometatable(L, "sjson.encoder", (void *)sjson_encoder_map);
luaL_rometatable(L, "sjson.decoder", (void *)sjson_decoder_map);
luaL_rometatable(L, "sjson.encoder", (void *)sjson_encoder_map);
#endif
return 1;
}
#ifndef LOCAL_LUA
NODEMCU_MODULE(SJSON, "sjson", sjson_map, luaopen_sjson);
#endif
\ No newline at end of file
NODEMCU_MODULE(SJSON, "sjson", sjson, luaopen_sjson);
#endif
......@@ -129,24 +129,21 @@ static int l_crypto_box_seal_open(lua_State *L)
return 1;
}
static const LUA_REG_TYPE random_map[] = {
{ LSTRKEY("random"), LFUNCVAL(l_randombytes_random) },
{ LSTRKEY("uniform"), LFUNCVAL(l_randombytes_uniform) },
{ LSTRKEY("buf"), LFUNCVAL(l_randombytes_buf) },
{ LNILKEY, LNILVAL }
};
static const LUA_REG_TYPE crypto_box_map[] = {
{ LSTRKEY("keypair"), LFUNCVAL(l_crypto_box_keypair) },
{ LSTRKEY("seal"), LFUNCVAL(l_crypto_box_seal) },
{ LSTRKEY("seal_open"), LFUNCVAL(l_crypto_box_seal_open) },
{ LNILKEY, LNILVAL }
};
static const LUA_REG_TYPE sodium_map[] = {
{ LSTRKEY("random"), LROVAL(random_map) },
{ LSTRKEY("crypto_box"), LROVAL(crypto_box_map) },
{ LNILKEY, LNILVAL }
};
NODEMCU_MODULE(SODIUM, "sodium", sodium_map, NULL);
LROT_BEGIN(random)
LROT_FUNCENTRY(random, l_randombytes_random)
LROT_FUNCENTRY(uniform, l_randombytes_uniform)
LROT_FUNCENTRY(buf, l_randombytes_buf)
LROT_END(random, NULL, 0)
LROT_BEGIN(crypto_box)
LROT_FUNCENTRY(keypair, l_crypto_box_keypair)
LROT_FUNCENTRY(seal, l_crypto_box_seal)
LROT_FUNCENTRY(seal_open, l_crypto_box_seal_open)
LROT_END(crypto_box, NULL, 0)
LROT_BEGIN(sodium)
LROT_TABENTRY(random, random)
LROT_TABENTRY(crypto_box, crypto_box)
LROT_END(sodium, NULL, 0)
NODEMCU_MODULE(SODIUM, "sodium", sodium, NULL);
......@@ -7,18 +7,17 @@
#include "driver/spi_common.h"
static const LUA_REG_TYPE lspi_map[] = {
{ LSTRKEY( "master" ), LFUNCVAL( lspi_master ) },
// { LSTRKEY( "slave" ), LFUNCVAL( lspi_slave ) },
{ LSTRKEY( "SPI" ), LNUMVAL( SPI_HOST ) },
{ LSTRKEY( "HSPI" ), LNUMVAL( HSPI_HOST ) },
{ LSTRKEY( "VSPI" ), LNUMVAL( VSPI_HOST ) },
{LNILKEY, LNILVAL}
};
LROT_BEGIN(lspi)
LROT_FUNCENTRY( master, lspi_master )
// LROT_FUNCENTRY( slave, lspi_slave )
LROT_NUMENTRY( SPI, SPI_HOST )
LROT_NUMENTRY( HSPI, HSPI_HOST )
LROT_NUMENTRY( VSPI, VSPI_HOST )
LROT_END(lspi, NULL, 0)
int luaopen_spi( lua_State *L ) {
luaopen_spi_master( L );
return 0;
}
NODEMCU_MODULE(SPI, "spi", lspi_map, luaopen_spi);
NODEMCU_MODULE(SPI, "spi", lspi, luaopen_spi);
......@@ -177,13 +177,12 @@ free_mem:
}
static const LUA_REG_TYPE lspi_device_map[] = {
{ LSTRKEY( "transfer" ), LFUNCVAL( lspi_device_transfer ) },
{ LSTRKEY( "remove" ), LFUNCVAL( lspi_device_free ) },
{ LSTRKEY( "__gc" ), LFUNCVAL( lspi_device_free ) },
{ LSTRKEY( "__index" ), LROVAL( lspi_device_map ) },
{LNILKEY, LNILVAL}
};
LROT_BEGIN(lspi_device)
LROT_FUNCENTRY( transfer, lspi_device_transfer )
LROT_FUNCENTRY( remove, lspi_device_free )
LROT_FUNCENTRY( __gc, lspi_device_free )
LROT_TABENTRY( __index, lspi_device )
LROT_END(lspi_device, NULL, 0)
// ****************************************************************************
......@@ -321,13 +320,12 @@ static int lspi_host_device( lua_State *L )
}
static const LUA_REG_TYPE lspi_master_map[] = {
{ LSTRKEY( "device" ), LFUNCVAL( lspi_host_device ) },
{ LSTRKEY( "close" ), LFUNCVAL( lspi_host_free ) },
{ LSTRKEY( "__gc" ), LFUNCVAL( lspi_host_free ) },
{ LSTRKEY( "__index" ), LROVAL( lspi_master_map ) },
{LNILKEY, LNILVAL}
};
LROT_BEGIN(lspi_master)
LROT_FUNCENTRY( device, lspi_host_device )
LROT_FUNCENTRY( close, lspi_host_free )
LROT_FUNCENTRY( __gc, lspi_host_free )
LROT_TABENTRY( __index, lspi_master )
LROT_END(lspi_master, NULL, 0)
// ****************************************************************************
......
......@@ -392,12 +392,11 @@ static int b_size (lua_State *L) {
static const LUA_REG_TYPE thislib[] = {
{LSTRKEY("pack"), LFUNCVAL(b_pack)},
{LSTRKEY("unpack"), LFUNCVAL(b_unpack)},
{LSTRKEY("size"), LFUNCVAL(b_size)},
{LNILKEY, LNILVAL}
};
LROT_BEGIN(thislib)
LROT_FUNCENTRY(pack, b_pack)
LROT_FUNCENTRY(unpack, b_unpack)
LROT_FUNCENTRY(size, b_size)
LROT_END(thislib, NULL, 0)
NODEMCU_MODULE(STRUCT, "struct", thislib, NULL);
......
......@@ -143,17 +143,16 @@ static int time_cal2epoc(lua_State *L)
return 1;
}
static const LUA_REG_TYPE time_map[] = {
{ LSTRKEY("set"), LFUNCVAL(time_set) },
{ LSTRKEY("get"), LFUNCVAL(time_get) },
{ LSTRKEY("getlocal"), LFUNCVAL(time_getLocal) },
{ LSTRKEY("settimezone"), LFUNCVAL(time_setTimezone) },
{ LSTRKEY("initntp"), LFUNCVAL(time_initNTP) },
{ LSTRKEY("ntpenabled"), LFUNCVAL(time_ntpEnabled) },
{ LSTRKEY("ntpstop"), LFUNCVAL(time_ntpStop) },
{ LSTRKEY("epoch2cal"), LFUNCVAL(time_epoch2cal) },
{ LSTRKEY("cal2epoch"), LFUNCVAL(time_cal2epoc) },
{ LNILKEY, LNILVAL }
};
NODEMCU_MODULE(TIME, "time", time_map, NULL);
LROT_BEGIN(time)
LROT_FUNCENTRY(set, time_set)
LROT_FUNCENTRY(get, time_get)
LROT_FUNCENTRY(getlocal, time_getLocal)
LROT_FUNCENTRY(settimezone, time_setTimezone)
LROT_FUNCENTRY(initntp, time_initNTP)
LROT_FUNCENTRY(ntpenabled, time_ntpEnabled)
LROT_FUNCENTRY(ntpstop, time_ntpStop)
LROT_FUNCENTRY(epoch2cal, time_epoch2cal)
LROT_FUNCENTRY(cal2epoch, time_cal2epoc)
LROT_END(time, NULL, 0)
NODEMCU_MODULE(TIME, "time", time, NULL);
......@@ -235,26 +235,24 @@ static int tmr_create( lua_State *L ) {
// Module function map
static const LUA_REG_TYPE tmr_dyn_map[] = {
{ LSTRKEY( "register" ), LFUNCVAL( tmr_register ) },
{ LSTRKEY( "alarm" ), LFUNCVAL( tmr_alarm ) },
{ LSTRKEY( "start" ), LFUNCVAL( tmr_start ) },
{ LSTRKEY( "stop" ), LFUNCVAL( tmr_stop ) },
{ LSTRKEY( "unregister" ), LFUNCVAL( tmr_unregister ) },
{ LSTRKEY( "interval" ), LFUNCVAL( tmr_interval) },
{ LSTRKEY( "state" ), LFUNCVAL( tmr_state ) },
{ LSTRKEY( "__gc" ), LFUNCVAL( tmr_unregister ) },
{ LSTRKEY( "__index" ), LROVAL( tmr_dyn_map ) },
{ LNILKEY, LNILVAL }
};
static const LUA_REG_TYPE tmr_map[] = {
{ LSTRKEY( "create" ), LFUNCVAL( tmr_create ) },
{ LSTRKEY( "ALARM_SINGLE" ), LNUMVAL( TIMER_MODE_SINGLE ) },
{ LSTRKEY( "ALARM_SEMI" ), LNUMVAL( TIMER_MODE_SEMI ) },
{ LSTRKEY( "ALARM_AUTO" ), LNUMVAL( TIMER_MODE_AUTO ) },
{ LNILKEY, LNILVAL }
};
LROT_BEGIN(tmr_dyn)
LROT_FUNCENTRY( register, tmr_register )
LROT_FUNCENTRY( alarm, tmr_alarm )
LROT_FUNCENTRY( start, tmr_start )
LROT_FUNCENTRY( stop, tmr_stop )
LROT_FUNCENTRY( unregister, tmr_unregister )
LROT_FUNCENTRY( interval, tmr_interval)
LROT_FUNCENTRY( state, tmr_state )
LROT_FUNCENTRY( __gc, tmr_unregister )
LROT_TABENTRY ( __index, tmr_dyn )
LROT_END(tmr_dyn, NULL, 0)
LROT_BEGIN(tmr)
LROT_FUNCENTRY( create, tmr_create )
LROT_NUMENTRY ( ALARM_SINGLE, TIMER_MODE_SINGLE )
LROT_NUMENTRY ( ALARM_SEMI, TIMER_MODE_SEMI )
LROT_NUMENTRY ( ALARM_AUTO, TIMER_MODE_AUTO )
LROT_END(tmr, NULL, 0)
static int luaopen_tmr( lua_State *L ){
luaL_rometatable(L, "tmr.timer", (void *)tmr_dyn_map);
......@@ -264,4 +262,4 @@ static int luaopen_tmr( lua_State *L ){
return 0;
}
NODEMCU_MODULE(TMR, "tmr", tmr_map, luaopen_tmr);
NODEMCU_MODULE(TMR, "tmr", tmr, luaopen_tmr);
......@@ -560,52 +560,51 @@ static int lu8g2_updateDisplayArea( lua_State *L )
}
static const LUA_REG_TYPE lu8g2_display_map[] = {
{ LSTRKEY( "clearBuffer" ), LFUNCVAL( lu8g2_clearBuffer ) },
{ LSTRKEY( "drawBox" ), LFUNCVAL( lu8g2_drawBox ) },
{ LSTRKEY( "drawCircle" ), LFUNCVAL( lu8g2_drawCircle ) },
{ LSTRKEY( "drawDisc" ), LFUNCVAL( lu8g2_drawDisc ) },
{ LSTRKEY( "drawEllipse" ), LFUNCVAL( lu8g2_drawEllipse ) },
{ LSTRKEY( "drawFilledEllipse" ), LFUNCVAL( lu8g2_drawFilledEllipse ) },
{ LSTRKEY( "drawFrame" ), LFUNCVAL( lu8g2_drawFrame ) },
{ LSTRKEY( "drawGlyph" ), LFUNCVAL( lu8g2_drawGlyph ) },
{ LSTRKEY( "drawHLine" ), LFUNCVAL( lu8g2_drawHLine ) },
{ LSTRKEY( "drawLine" ), LFUNCVAL( lu8g2_drawLine ) },
{ LSTRKEY( "drawPixel" ), LFUNCVAL( lu8g2_drawPixel ) },
{ LSTRKEY( "drawRBox" ), LFUNCVAL( lu8g2_drawRBox ) },
{ LSTRKEY( "drawRFrame" ), LFUNCVAL( lu8g2_drawRFrame ) },
{ LSTRKEY( "drawStr" ), LFUNCVAL( lu8g2_drawStr ) },
{ LSTRKEY( "drawTriangle" ), LFUNCVAL( lu8g2_drawTriangle ) },
{ LSTRKEY( "drawUTF8" ), LFUNCVAL( lu8g2_drawUTF8 ) },
{ LSTRKEY( "drawVLine" ), LFUNCVAL( lu8g2_drawVLine ) },
{ LSTRKEY( "drawXBM" ), LFUNCVAL( lu8g2_drawXBM ) },
{ LSTRKEY( "getAscent" ), LFUNCVAL( lu8g2_getAscent ) },
{ LSTRKEY( "getDescent" ), LFUNCVAL( lu8g2_getDescent ) },
{ LSTRKEY( "getStrWidth" ), LFUNCVAL( lu8g2_getStrWidth ) },
{ LSTRKEY( "getUTF8Width" ), LFUNCVAL( lu8g2_getUTF8Width ) },
{ LSTRKEY( "sendBuffer" ), LFUNCVAL( lu8g2_sendBuffer ) },
{ LSTRKEY( "setBitmapMode" ), LFUNCVAL( lu8g2_setBitmapMode ) },
{ LSTRKEY( "setContrast" ), LFUNCVAL( lu8g2_setContrast ) },
{ LSTRKEY( "setDisplayRotation" ), LFUNCVAL( lu8g2_setDisplayRotation ) },
{ LSTRKEY( "setDrawColor" ), LFUNCVAL( lu8g2_setDrawColor ) },
{ LSTRKEY( "setFlipMode" ), LFUNCVAL( lu8g2_setFlipMode ) },
{ LSTRKEY( "setFont" ), LFUNCVAL( lu8g2_setFont ) },
{ LSTRKEY( "setFontDirection" ), LFUNCVAL( lu8g2_setFontDirection ) },
{ LSTRKEY( "setFontMode" ), LFUNCVAL( lu8g2_setFontMode ) },
{ LSTRKEY( "setFontPosBaseline" ), LFUNCVAL( lu8g2_setFontPosBaseline ) },
{ LSTRKEY( "setFontPosBottom" ), LFUNCVAL( lu8g2_setFontPosBottom ) },
{ LSTRKEY( "setFontPosTop" ), LFUNCVAL( lu8g2_setFontPosTop ) },
{ LSTRKEY( "setFontPosCenter" ), LFUNCVAL( lu8g2_setFontPosCenter ) },
{ LSTRKEY( "setFontRefHeightAll" ), LFUNCVAL( lu8g2_setFontRefHeightAll ) },
{ LSTRKEY( "setFontRefHeightExtendedText" ), LFUNCVAL( lu8g2_setFontRefHeightExtendedText ) },
{ LSTRKEY( "setFontRefHeightText" ), LFUNCVAL( lu8g2_setFontRefHeightText ) },
{ LSTRKEY( "setPowerSave" ), LFUNCVAL( lu8g2_setPowerSave ) },
{ LSTRKEY( "updateDispla" ), LFUNCVAL( lu8g2_updateDisplay ) },
{ LSTRKEY( "updateDisplayArea" ), LFUNCVAL( lu8g2_updateDisplayArea ) },
//{ LSTRKEY( "__gc" ), LFUNCVAL( lu8g2_display_free ) },
{ LSTRKEY( "__index" ), LROVAL( lu8g2_display_map ) },
{LNILKEY, LNILVAL}
};
LROT_BEGIN(lu8g2_display)
LROT_FUNCENTRY( clearBuffer, lu8g2_clearBuffer )
LROT_FUNCENTRY( drawBox, lu8g2_drawBox )
LROT_FUNCENTRY( drawCircle, lu8g2_drawCircle )
LROT_FUNCENTRY( drawDisc, lu8g2_drawDisc )
LROT_FUNCENTRY( drawEllipse, lu8g2_drawEllipse )
LROT_FUNCENTRY( drawFilledEllipse, lu8g2_drawFilledEllipse )
LROT_FUNCENTRY( drawFrame, lu8g2_drawFrame )
LROT_FUNCENTRY( drawGlyph, lu8g2_drawGlyph )
LROT_FUNCENTRY( drawHLine, lu8g2_drawHLine )
LROT_FUNCENTRY( drawLine, lu8g2_drawLine )
LROT_FUNCENTRY( drawPixel, lu8g2_drawPixel )
LROT_FUNCENTRY( drawRBox, lu8g2_drawRBox )
LROT_FUNCENTRY( drawRFrame, lu8g2_drawRFrame )
LROT_FUNCENTRY( drawStr, lu8g2_drawStr )
LROT_FUNCENTRY( drawTriangle, lu8g2_drawTriangle )
LROT_FUNCENTRY( drawUTF8, lu8g2_drawUTF8 )
LROT_FUNCENTRY( drawVLine, lu8g2_drawVLine )
LROT_FUNCENTRY( drawXBM, lu8g2_drawXBM )
LROT_FUNCENTRY( getAscent, lu8g2_getAscent )
LROT_FUNCENTRY( getDescent, lu8g2_getDescent )
LROT_FUNCENTRY( getStrWidth, lu8g2_getStrWidth )
LROT_FUNCENTRY( getUTF8Width, lu8g2_getUTF8Width )
LROT_FUNCENTRY( sendBuffer, lu8g2_sendBuffer )
LROT_FUNCENTRY( setBitmapMode, lu8g2_setBitmapMode )
LROT_FUNCENTRY( setContrast, lu8g2_setContrast )
LROT_FUNCENTRY( setDisplayRotation, lu8g2_setDisplayRotation )
LROT_FUNCENTRY( setDrawColor, lu8g2_setDrawColor )
LROT_FUNCENTRY( setFlipMode, lu8g2_setFlipMode )
LROT_FUNCENTRY( setFont, lu8g2_setFont )
LROT_FUNCENTRY( setFontDirection, lu8g2_setFontDirection )
LROT_FUNCENTRY( setFontMode, lu8g2_setFontMode )
LROT_FUNCENTRY( setFontPosBaseline, lu8g2_setFontPosBaseline )
LROT_FUNCENTRY( setFontPosBottom, lu8g2_setFontPosBottom )
LROT_FUNCENTRY( setFontPosTop, lu8g2_setFontPosTop )
LROT_FUNCENTRY( setFontPosCenter, lu8g2_setFontPosCenter )
LROT_FUNCENTRY( setFontRefHeightAll, lu8g2_setFontRefHeightAll )
LROT_FUNCENTRY( setFontRefHeightExtendedText, lu8g2_setFontRefHeightExtendedText )
LROT_FUNCENTRY( setFontRefHeightText, lu8g2_setFontRefHeightText )
LROT_FUNCENTRY( setPowerSave, lu8g2_setPowerSave )
LROT_FUNCENTRY( updateDispla, lu8g2_updateDisplay )
LROT_FUNCENTRY( updateDisplayArea, lu8g2_updateDisplayArea )
//LROT_FUNCENTRY( __gc, lu8g2_display_free )
LROT_TABENTRY( __index, lu8g2_display )
LROT_END(lu8g2_display, NULL, 0)
uint8_t u8x8_d_overlay(u8x8_t *u8x8, uint8_t msg, uint8_t arg_int, void *arg_ptr);
......@@ -803,33 +802,32 @@ U8G2_DISPLAY_TABLE_SPI
#undef U8G2_FONT_TABLE_ENTRY
#undef U8G2_DISPLAY_TABLE_ENTRY
#define U8G2_DISPLAY_TABLE_ENTRY(function, binding) \
{ LSTRKEY( #binding ), LFUNCVAL( l ## binding ) },
LROT_FUNCENTRY( #binding, l ## binding )
static const LUA_REG_TYPE lu8g2_map[] = {
LROT_BEGIN(lu8g2)
U8G2_DISPLAY_TABLE_I2C
U8G2_DISPLAY_TABLE_SPI
//
// Register fonts
#define U8G2_FONT_TABLE_ENTRY(font) \
{ LSTRKEY( #font ), LUDATA( (void *)(u8g2_ ## font) ) },
LROT_LUDENTRY( #font, (void *)(u8g2_ ## font) )
U8G2_FONT_TABLE
//
{ LSTRKEY( "DRAW_UPPER_RIGHT" ), LNUMVAL( U8G2_DRAW_UPPER_RIGHT ) },
{ LSTRKEY( "DRAW_UPPER_LEFT" ), LNUMVAL( U8G2_DRAW_UPPER_LEFT ) },
{ LSTRKEY( "DRAW_LOWER_RIGHT" ), LNUMVAL( U8G2_DRAW_LOWER_RIGHT ) },
{ LSTRKEY( "DRAW_LOWER_LEFT" ), LNUMVAL( U8G2_DRAW_LOWER_LEFT ) },
{ LSTRKEY( "DRAW_ALL" ), LNUMVAL( U8G2_DRAW_ALL ) },
{ LSTRKEY( "R0" ), LUDATA( (void *)U8G2_R0 ) },
{ LSTRKEY( "R1" ), LUDATA( (void *)U8G2_R1 ) },
{ LSTRKEY( "R2" ), LUDATA( (void *)U8G2_R2 ) },
{ LSTRKEY( "R3" ), LUDATA( (void *)U8G2_R3 ) },
{ LSTRKEY( "MIRROR" ), LUDATA( (void *)U8G2_MIRROR ) },
{LNILKEY, LNILVAL}
};
LROT_NUMENTRY( DRAW_UPPER_RIGHT, U8G2_DRAW_UPPER_RIGHT )
LROT_NUMENTRY( DRAW_UPPER_LEFT, U8G2_DRAW_UPPER_LEFT )
LROT_NUMENTRY( DRAW_LOWER_RIGHT, U8G2_DRAW_LOWER_RIGHT )
LROT_NUMENTRY( DRAW_LOWER_LEFT, U8G2_DRAW_LOWER_LEFT )
LROT_NUMENTRY( DRAW_ALL, U8G2_DRAW_ALL )
LROT_LUDENTRY( R0, (void *)U8G2_R0 )
LROT_LUDENTRY( R1, (void *)U8G2_R1 )
LROT_LUDENTRY( R2, (void *)U8G2_R2 )
LROT_LUDENTRY( R3, (void *)U8G2_R3 )
LROT_LUDENTRY( MIRROR, (void *)U8G2_MIRROR )
LROT_END(lu8g2, NULL, 0)
int luaopen_u8g2( lua_State *L ) {
luaL_rometatable(L, "u8g2.display", (void *)lu8g2_display_map);
return 0;
}
NODEMCU_MODULE(U8G2, "u8g2", lu8g2_map, luaopen_u8g2);
NODEMCU_MODULE(U8G2, "u8g2", lu8g2, luaopen_u8g2);
......@@ -684,82 +684,77 @@ UCG_DISPLAY_TABLE
// Module function map
static const LUA_REG_TYPE lucg_display_map[] =
{
{ LSTRKEY( "begin" ), LFUNCVAL( lucg_begin ) },
{ LSTRKEY( "clearScreen" ), LFUNCVAL( lucg_clearScreen ) },
{ LSTRKEY( "draw90Line" ), LFUNCVAL( lucg_draw90Line ) },
{ LSTRKEY( "drawBox" ), LFUNCVAL( lucg_drawBox ) },
{ LSTRKEY( "drawCircle" ), LFUNCVAL( lucg_drawCircle ) },
{ LSTRKEY( "drawDisc" ), LFUNCVAL( lucg_drawDisc ) },
{ LSTRKEY( "drawFrame" ), LFUNCVAL( lucg_drawFrame ) },
{ LSTRKEY( "drawGlyph" ), LFUNCVAL( lucg_drawGlyph ) },
{ LSTRKEY( "drawGradientBox" ), LFUNCVAL( lucg_drawGradientBox ) },
{ LSTRKEY( "drawGradientLine" ), LFUNCVAL( lucg_drawGradientLine ) },
{ LSTRKEY( "drawHLine" ), LFUNCVAL( lucg_drawHLine ) },
{ LSTRKEY( "drawLine" ), LFUNCVAL( lucg_drawLine ) },
{ LSTRKEY( "drawPixel" ), LFUNCVAL( lucg_drawPixel ) },
{ LSTRKEY( "drawRBox" ), LFUNCVAL( lucg_drawRBox ) },
{ LSTRKEY( "drawRFrame" ), LFUNCVAL( lucg_drawRFrame ) },
{ LSTRKEY( "drawString" ), LFUNCVAL( lucg_drawString ) },
{ LSTRKEY( "drawTetragon" ), LFUNCVAL( lucg_drawTetragon ) },
{ LSTRKEY( "drawTriangle" ), LFUNCVAL( lucg_drawTriangle ) },
{ LSTRKEY( "drawVLine" ), LFUNCVAL( lucg_drawVLine ) },
{ LSTRKEY( "getFontAscent" ), LFUNCVAL( lucg_getFontAscent ) },
{ LSTRKEY( "getFontDescent" ), LFUNCVAL( lucg_getFontDescent ) },
{ LSTRKEY( "getHeight" ), LFUNCVAL( lucg_getHeight ) },
{ LSTRKEY( "getStrWidth" ), LFUNCVAL( lucg_getStrWidth ) },
{ LSTRKEY( "getWidth" ), LFUNCVAL( lucg_getWidth ) },
{ LSTRKEY( "print" ), LFUNCVAL( lucg_print ) },
{ LSTRKEY( "setClipRange" ), LFUNCVAL( lucg_setClipRange ) },
{ LSTRKEY( "setColor" ), LFUNCVAL( lucg_setColor ) },
{ LSTRKEY( "setFont" ), LFUNCVAL( lucg_setFont ) },
{ LSTRKEY( "setFontMode" ), LFUNCVAL( lucg_setFontMode ) },
{ LSTRKEY( "setFontPosBaseline" ), LFUNCVAL( lucg_setFontPosBaseline ) },
{ LSTRKEY( "setFontPosBottom" ), LFUNCVAL( lucg_setFontPosBottom ) },
{ LSTRKEY( "setFontPosCenter" ), LFUNCVAL( lucg_setFontPosCenter ) },
{ LSTRKEY( "setFontPosTop" ), LFUNCVAL( lucg_setFontPosTop ) },
{ LSTRKEY( "setMaxClipRange" ), LFUNCVAL( lucg_setMaxClipRange ) },
{ LSTRKEY( "setPrintDir" ), LFUNCVAL( lucg_setPrintDir ) },
{ LSTRKEY( "setPrintPos" ), LFUNCVAL( lucg_setPrintPos ) },
{ LSTRKEY( "setRotate90" ), LFUNCVAL( lucg_setRotate90 ) },
{ LSTRKEY( "setRotate180" ), LFUNCVAL( lucg_setRotate180 ) },
{ LSTRKEY( "setRotate270" ), LFUNCVAL( lucg_setRotate270 ) },
{ LSTRKEY( "setScale2x2" ), LFUNCVAL( lucg_setScale2x2 ) },
{ LSTRKEY( "undoClipRange" ), LFUNCVAL( lucg_setMaxClipRange ) },
{ LSTRKEY( "undoRotate" ), LFUNCVAL( lucg_undoRotate ) },
{ LSTRKEY( "undoScale" ), LFUNCVAL( lucg_undoScale ) },
{ LSTRKEY( "__gc" ), LFUNCVAL( lucg_close_display ) },
{ LSTRKEY( "__index" ), LROVAL ( lucg_display_map ) },
{ LNILKEY, LNILVAL }
};
static const LUA_REG_TYPE lucg_map[] =
{
LROT_BEGIN(lucg_display)
LROT_FUNCENTRY( begin, lucg_begin )
LROT_FUNCENTRY( clearScreen, lucg_clearScreen )
LROT_FUNCENTRY( draw90Line, lucg_draw90Line )
LROT_FUNCENTRY( drawBox, lucg_drawBox )
LROT_FUNCENTRY( drawCircle, lucg_drawCircle )
LROT_FUNCENTRY( drawDisc, lucg_drawDisc )
LROT_FUNCENTRY( drawFrame, lucg_drawFrame )
LROT_FUNCENTRY( drawGlyph, lucg_drawGlyph )
LROT_FUNCENTRY( drawGradientBox, lucg_drawGradientBox )
LROT_FUNCENTRY( drawGradientLine, lucg_drawGradientLine )
LROT_FUNCENTRY( drawHLine, lucg_drawHLine )
LROT_FUNCENTRY( drawLine, lucg_drawLine )
LROT_FUNCENTRY( drawPixel, lucg_drawPixel )
LROT_FUNCENTRY( drawRBox, lucg_drawRBox )
LROT_FUNCENTRY( drawRFrame, lucg_drawRFrame )
LROT_FUNCENTRY( drawString, lucg_drawString )
LROT_FUNCENTRY( drawTetragon, lucg_drawTetragon )
LROT_FUNCENTRY( drawTriangle, lucg_drawTriangle )
LROT_FUNCENTRY( drawVLine, lucg_drawVLine )
LROT_FUNCENTRY( getFontAscent, lucg_getFontAscent )
LROT_FUNCENTRY( getFontDescent, lucg_getFontDescent )
LROT_FUNCENTRY( getHeight, lucg_getHeight )
LROT_FUNCENTRY( getStrWidth, lucg_getStrWidth )
LROT_FUNCENTRY( getWidth, lucg_getWidth )
LROT_FUNCENTRY( print, lucg_print )
LROT_FUNCENTRY( setClipRange, lucg_setClipRange )
LROT_FUNCENTRY( setColor, lucg_setColor )
LROT_FUNCENTRY( setFont, lucg_setFont )
LROT_FUNCENTRY( setFontMode, lucg_setFontMode )
LROT_FUNCENTRY( setFontPosBaseline, lucg_setFontPosBaseline )
LROT_FUNCENTRY( setFontPosBottom, lucg_setFontPosBottom )
LROT_FUNCENTRY( setFontPosCenter, lucg_setFontPosCenter )
LROT_FUNCENTRY( setFontPosTop, lucg_setFontPosTop )
LROT_FUNCENTRY( setMaxClipRange, lucg_setMaxClipRange )
LROT_FUNCENTRY( setPrintDir, lucg_setPrintDir )
LROT_FUNCENTRY( setPrintPos, lucg_setPrintPos )
LROT_FUNCENTRY( setRotate90, lucg_setRotate90 )
LROT_FUNCENTRY( setRotate180, lucg_setRotate180 )
LROT_FUNCENTRY( setRotate270, lucg_setRotate270 )
LROT_FUNCENTRY( setScale2x2, lucg_setScale2x2 )
LROT_FUNCENTRY( undoClipRange, lucg_setMaxClipRange )
LROT_FUNCENTRY( undoRotate, lucg_undoRotate )
LROT_FUNCENTRY( undoScale, lucg_undoScale )
LROT_FUNCENTRY( __gc, lucg_close_display )
LROT_TABENTRY( __index, lucg_display )
LROT_END(lucg_display, NULL, 0)
LROT_BEGIN(lucg)
#undef UCG_DISPLAY_TABLE_ENTRY
#define UCG_DISPLAY_TABLE_ENTRY(binding, device, extension) { LSTRKEY( #binding ), LFUNCVAL ( l ## binding ) },
#define UCG_DISPLAY_TABLE_ENTRY(binding, device, extension) LROT_FUNCENTRY( #binding, l ## binding )
UCG_DISPLAY_TABLE
// Register fonts
#undef UCG_FONT_TABLE_ENTRY
#define UCG_FONT_TABLE_ENTRY(font) { LSTRKEY( #font ), LUDATA( (void *)(ucg_ ## font) ) },
#define UCG_FONT_TABLE_ENTRY(font) LROT_LUDENTRY( #font, (void *)(ucg_ ## font) )
UCG_FONT_TABLE
// Font modes
{ LSTRKEY( "FONT_MODE_TRANSPARENT" ), LNUMVAL( UCG_FONT_MODE_TRANSPARENT ) },
{ LSTRKEY( "FONT_MODE_SOLID" ), LNUMVAL( UCG_FONT_MODE_SOLID ) },
LROT_NUMENTRY( FONT_MODE_TRANSPARENT, UCG_FONT_MODE_TRANSPARENT )
LROT_NUMENTRY( FONT_MODE_SOLID, UCG_FONT_MODE_SOLID )
// Options for circle/ disc drawing
{ LSTRKEY( "DRAW_UPPER_RIGHT" ), LNUMVAL( UCG_DRAW_UPPER_RIGHT ) },
{ LSTRKEY( "DRAW_UPPER_LEFT" ), LNUMVAL( UCG_DRAW_UPPER_LEFT ) },
{ LSTRKEY( "DRAW_LOWER_RIGHT" ), LNUMVAL( UCG_DRAW_LOWER_RIGHT ) },
{ LSTRKEY( "DRAW_LOWER_LEFT" ), LNUMVAL( UCG_DRAW_LOWER_LEFT ) },
{ LSTRKEY( "DRAW_ALL" ), LNUMVAL( UCG_DRAW_ALL ) },
LROT_NUMENTRY( DRAW_UPPER_RIGHT, UCG_DRAW_UPPER_RIGHT )
LROT_NUMENTRY( DRAW_UPPER_LEFT, UCG_DRAW_UPPER_LEFT )
LROT_NUMENTRY( DRAW_LOWER_RIGHT, UCG_DRAW_LOWER_RIGHT )
LROT_NUMENTRY( DRAW_LOWER_LEFT, UCG_DRAW_LOWER_LEFT )
LROT_NUMENTRY( DRAW_ALL, UCG_DRAW_ALL )
{ LSTRKEY( "__metatable" ), LROVAL( lucg_map ) },
{ LNILKEY, LNILVAL }
};
LROT_TABENTRY( __metatable, lucg )
LROT_END(lucg, NULL, 0)
int luaopen_ucg( lua_State *L )
{
......@@ -767,4 +762,4 @@ int luaopen_ucg( lua_State *L )
return 0;
}
NODEMCU_MODULE(UCG, "ucg", lucg_map, luaopen_ucg);
NODEMCU_MODULE(UCG, "ucg", lucg, luaopen_ucg);
......@@ -108,37 +108,34 @@ static int wifi_init (lua_State *L)
}
extern const LUA_REG_TYPE wifi_sta_map[];
extern const LUA_REG_TYPE wifi_ap_map[];
LROT_EXTERN(wifi_sta);
LROT_EXTERN(wifi_ap);
static const LUA_REG_TYPE wifi_map[] =
{
{ LSTRKEY( "getchannel"), LFUNCVAL( wifi_getchannel ) },
{ LSTRKEY( "getmode" ), LFUNCVAL( wifi_getmode ) },
{ LSTRKEY( "mode" ), LFUNCVAL( wifi_mode ) },
{ LSTRKEY( "start" ), LFUNCVAL( wifi_start ) },
{ LSTRKEY( "stop" ), LFUNCVAL( wifi_stop ) },
{ LSTRKEY( "sta" ), LROVAL( wifi_sta_map ) },
{ LSTRKEY( "ap" ), LROVAL( wifi_ap_map ) },
LROT_BEGIN(wifi)
LROT_FUNCENTRY( getchannel, wifi_getchannel )
LROT_FUNCENTRY( getmode, wifi_getmode )
LROT_FUNCENTRY( mode, wifi_mode )
LROT_FUNCENTRY( start, wifi_start )
LROT_FUNCENTRY( stop, wifi_stop )
LROT_TABENTRY ( sta, wifi_sta )
LROT_TABENTRY ( ap, wifi_ap )
{ LSTRKEY( "NULLMODE" ), LNUMVAL( WIFI_MODE_NULL ) },
{ LSTRKEY( "STATION" ), LNUMVAL( WIFI_MODE_STA ) },
{ LSTRKEY( "SOFTAP" ), LNUMVAL( WIFI_MODE_AP ) },
{ LSTRKEY( "STATIONAP" ), LNUMVAL( WIFI_MODE_APSTA ) },
{ LSTRKEY( "AUTH_OPEN" ), LNUMVAL( WIFI_AUTH_OPEN ) },
{ LSTRKEY( "AUTH_WEP" ), LNUMVAL( WIFI_AUTH_WEP ) },
{ LSTRKEY( "AUTH_WPA_PSK" ), LNUMVAL( WIFI_AUTH_WPA_PSK ) },
{ LSTRKEY( "AUTH_WPA2_PSK" ), LNUMVAL( WIFI_AUTH_WPA2_PSK ) },
{ LSTRKEY( "AUTH_WPA_WPA2_PSK" ), LNUMVAL( WIFI_AUTH_WPA_WPA2_PSK ) },
LROT_NUMENTRY ( NULLMODE, WIFI_MODE_NULL )
LROT_NUMENTRY ( STATION, WIFI_MODE_STA )
LROT_NUMENTRY ( SOFTAP, WIFI_MODE_AP )
LROT_NUMENTRY ( STATIONAP, WIFI_MODE_APSTA )
{ LSTRKEY( STR_WIFI_SECOND_CHAN_NONE ), LNUMVAL( WIFI_SECOND_CHAN_NONE ) },
{ LSTRKEY( STR_WIFI_SECOND_CHAN_ABOVE ), LNUMVAL( WIFI_SECOND_CHAN_ABOVE ) },
{ LSTRKEY( STR_WIFI_SECOND_CHAN_BELOW ), LNUMVAL( WIFI_SECOND_CHAN_BELOW ) },
LROT_NUMENTRY ( AUTH_OPEN, WIFI_AUTH_OPEN )
LROT_NUMENTRY ( AUTH_WEP, WIFI_AUTH_WEP )
LROT_NUMENTRY ( AUTH_WPA_PSK, WIFI_AUTH_WPA_PSK )
LROT_NUMENTRY ( AUTH_WPA2_PSK, WIFI_AUTH_WPA2_PSK )
LROT_NUMENTRY ( AUTH_WPA_WPA2_PSK, WIFI_AUTH_WPA_WPA2_PSK )
{ LNILKEY, LNILVAL }
};
LROT_NUMENTRY ( STR_WIFI_SECOND_CHAN_NONE, WIFI_SECOND_CHAN_NONE )
LROT_NUMENTRY ( STR_WIFI_SECOND_CHAN_ABOVE, WIFI_SECOND_CHAN_ABOVE )
LROT_NUMENTRY ( STR_WIFI_SECOND_CHAN_BELOW, WIFI_SECOND_CHAN_BELOW )
LROT_END(wifi, NULL, 0)
NODEMCU_MODULE(WIFI, "wifi", wifi_map, wifi_init);
NODEMCU_MODULE(WIFI, "wifi", wifi, wifi_init);
......@@ -170,11 +170,9 @@ static int wifi_ap_setip(lua_State *L)
str = luaL_optlstring(L, -1, "", &len);
if(ipaddr_aton(str, &dns))
{
opt = 1;
dhcps_dns_setserver(&dns);
tcpip_adapter_dhcps_option(TCPIP_ADAPTER_OP_SET, DOMAIN_NAME_SERVER, &opt, sizeof(opt));
}
ESP_ERROR_CHECK(tcpip_adapter_dhcps_start(TCPIP_ADAPTER_IF_AP));
......@@ -237,7 +235,7 @@ static int wifi_ap_config (lua_State *L)
lua_getfield (L, 1, "beacon");
cfg.ap.beacon_interval = luaL_optint (L, -1, DEFAULT_AP_BEACON);
SET_SAVE_MODE(save);
esp_err_t err = esp_wifi_set_config (WIFI_IF_AP, &cfg);
return (err == ESP_OK) ?
......@@ -255,13 +253,10 @@ static int wifi_ap_on (lua_State *L)
}
const LUA_REG_TYPE wifi_ap_map[] =
{
{ LSTRKEY( "setip" ), LFUNCVAL( wifi_ap_setip ) },
{ LSTRKEY( "sethostname" ), LFUNCVAL( wifi_ap_sethostname ) },
{ LSTRKEY( "config" ), LFUNCVAL( wifi_ap_config ) },
{ LSTRKEY( "on" ), LFUNCVAL( wifi_ap_on ) },
{ LSTRKEY( "getmac" ), LFUNCVAL( wifi_ap_getmac ) },
{ LNILKEY, LNILVAL }
};
LROT_PUBLIC_BEGIN(wifi_ap)
LROT_FUNCENTRY( setip, wifi_ap_setip )
LROT_FUNCENTRY( sethostname, wifi_ap_sethostname )
LROT_FUNCENTRY( config, wifi_ap_config )
LROT_FUNCENTRY( on, wifi_ap_on )
LROT_FUNCENTRY( getmac, wifi_ap_getmac )
LROT_END(wifi_ap, NULL, 0)
......@@ -169,14 +169,14 @@ static int wifi_sta_setip(lua_State *L)
tcpip_adapter_dns_info_t dnsinfo;
size_t len;
const char *str;
ip_addr_t ipAddr;
ipAddr.type = IPADDR_TYPE_V4;
luaL_checkanytable (L, 1);
//memset(&ipInfo, 0, sizeof(tcpip_adapter_ip_info_t));
lua_getfield (L, 1, "ip");
str = luaL_checklstring (L, -1, &len);
if(!ipaddr_aton(str, &ipAddr))
......@@ -184,7 +184,7 @@ static int wifi_sta_setip(lua_State *L)
return luaL_error(L, "Could not parse IP address, aborting");
}
ipInfo.ip = ipAddr.u_addr.ip4;
lua_getfield (L, 1, "netmask");
str = luaL_checklstring (L, -1, &len);
if(!ipaddr_aton(str, &ipAddr))
......@@ -192,7 +192,7 @@ static int wifi_sta_setip(lua_State *L)
return luaL_error(L, "Could not parse Netmask, aborting");
}
ipInfo.netmask = ipAddr.u_addr.ip4;
lua_getfield (L, 1, "gateway");
str = luaL_checklstring (L, -1, &len);
if(!ipaddr_aton(str, &ipAddr))
......@@ -200,18 +200,18 @@ static int wifi_sta_setip(lua_State *L)
return luaL_error(L, "Could not parse Gateway address, aborting");
}
ipInfo.gw = ipAddr.u_addr.ip4;
lua_getfield (L, 1, "dns");
str = luaL_optlstring(L, -1, str, &len);
if(!ipaddr_aton(str, &dnsinfo.ip))
{
return luaL_error(L, "Could not parse DNS address, aborting");
}
ESP_ERROR_CHECK(tcpip_adapter_dhcpc_stop(TCPIP_ADAPTER_IF_STA));
tcpip_adapter_set_ip_info(TCPIP_ADAPTER_IF_STA, &ipInfo);
tcpip_adapter_set_dns_info(TCPIP_ADAPTER_IF_STA, TCPIP_ADAPTER_DNS_MAIN, &dnsinfo);
return 0;
}
......@@ -453,19 +453,17 @@ static int wifi_sta_scan (lua_State *L)
}
const LUA_REG_TYPE wifi_sta_map[] = {
{ LSTRKEY( "setip" ), LFUNCVAL( wifi_sta_setip ) },
{ LSTRKEY( "sethostname" ), LFUNCVAL( wifi_sta_sethostname )},
{ LSTRKEY( "config" ), LFUNCVAL( wifi_sta_config ) },
{ LSTRKEY( "connect" ), LFUNCVAL( wifi_sta_connect ) },
{ LSTRKEY( "disconnect" ), LFUNCVAL( wifi_sta_disconnect ) },
{ LSTRKEY( "getconfig" ), LFUNCVAL( wifi_sta_getconfig ) },
{ LSTRKEY( "getmac" ), LFUNCVAL( wifi_sta_getmac ) },
{ LSTRKEY( "on" ), LFUNCVAL( wifi_sta_on ) },
{ LSTRKEY( "scan" ), LFUNCVAL( wifi_sta_scan ) },
{ LNILKEY, LNILVAL }
};
LROT_PUBLIC_BEGIN(wifi_sta)
LROT_FUNCENTRY( setip, wifi_sta_setip )
LROT_FUNCENTRY( sethostname, wifi_sta_sethostname )
LROT_FUNCENTRY( config, wifi_sta_config )
LROT_FUNCENTRY( connect, wifi_sta_connect )
LROT_FUNCENTRY( disconnect, wifi_sta_disconnect )
LROT_FUNCENTRY( getconfig, wifi_sta_getconfig )
LROT_FUNCENTRY( getmac, wifi_sta_getmac )
LROT_FUNCENTRY( on, wifi_sta_on )
LROT_FUNCENTRY( scan, wifi_sta_scan )
LROT_END(wifi_sta, NULL, 0)
// Currently no auto-connect, so do that in response to events
......
......@@ -497,35 +497,31 @@ static int ws2812_buffer_tostring(lua_State* L) {
return 1;
}
static const LUA_REG_TYPE ws2812_buffer_map[] =
{
{ LSTRKEY( "dump" ), LFUNCVAL( ws2812_buffer_dump )},
{ LSTRKEY( "fade" ), LFUNCVAL( ws2812_buffer_fade )},
{ LSTRKEY( "fill" ), LFUNCVAL( ws2812_buffer_fill )},
{ LSTRKEY( "get" ), LFUNCVAL( ws2812_buffer_get )},
{ LSTRKEY( "replace" ), LFUNCVAL( ws2812_buffer_replace )},
{ LSTRKEY( "mix" ), LFUNCVAL( ws2812_buffer_mix )},
{ LSTRKEY( "power" ), LFUNCVAL( ws2812_buffer_power )},
{ LSTRKEY( "set" ), LFUNCVAL( ws2812_buffer_set )},
{ LSTRKEY( "shift" ), LFUNCVAL( ws2812_buffer_shift )},
{ LSTRKEY( "size" ), LFUNCVAL( ws2812_buffer_size )},
{ LSTRKEY( "sub" ), LFUNCVAL( ws2812_buffer_sub )},
{ LSTRKEY( "__concat" ),LFUNCVAL( ws2812_buffer_concat )},
{ LSTRKEY( "__index" ), LROVAL( ws2812_buffer_map )},
{ LSTRKEY( "__tostring" ), LFUNCVAL( ws2812_buffer_tostring )},
{ LNILKEY, LNILVAL}
};
static const LUA_REG_TYPE ws2812_map[] =
{
{ LSTRKEY( "newBuffer" ), LFUNCVAL( ws2812_new_buffer )},
{ LSTRKEY( "write" ), LFUNCVAL( ws2812_write )},
{ LSTRKEY( "FADE_IN" ), LNUMVAL( FADE_IN ) },
{ LSTRKEY( "FADE_OUT" ), LNUMVAL( FADE_OUT ) },
{ LSTRKEY( "SHIFT_LOGICAL" ), LNUMVAL( SHIFT_LOGICAL ) },
{ LSTRKEY( "SHIFT_CIRCULAR" ), LNUMVAL( SHIFT_CIRCULAR ) },
{ LNILKEY, LNILVAL}
};
LROT_BEGIN(ws2812_buffer)
LROT_FUNCENTRY( dump, ws2812_buffer_dump )
LROT_FUNCENTRY( fade, ws2812_buffer_fade )
LROT_FUNCENTRY( fill, ws2812_buffer_fill )
LROT_FUNCENTRY( get, ws2812_buffer_get )
LROT_FUNCENTRY( replace, ws2812_buffer_replace )
LROT_FUNCENTRY( mix, ws2812_buffer_mix )
LROT_FUNCENTRY( power, ws2812_buffer_power )
LROT_FUNCENTRY( set, ws2812_buffer_set )
LROT_FUNCENTRY( shift, ws2812_buffer_shift )
LROT_FUNCENTRY( size, ws2812_buffer_size )
LROT_FUNCENTRY( sub, ws2812_buffer_sub )
LROT_FUNCENTRY( __concat, ws2812_buffer_concat )
LROT_TABENTRY ( __index, ws2812_buffer )
LROT_FUNCENTRY( __tostring, ws2812_buffer_tostring )
LROT_END(ws2812_buffer, NULL, 0)
LROT_BEGIN(ws2812)
LROT_FUNCENTRY( newBuffer, ws2812_new_buffer )
LROT_FUNCENTRY( write, ws2812_write )
LROT_NUMENTRY ( FADE_IN, FADE_IN )
LROT_NUMENTRY ( FADE_OUT, FADE_OUT )
LROT_NUMENTRY ( SHIFT_LOGICAL, SHIFT_LOGICAL )
LROT_NUMENTRY ( SHIFT_CIRCULAR, SHIFT_CIRCULAR )
LROT_END(ws2812, NULL, 0)
int luaopen_ws2812(lua_State *L) {
// TODO: Make sure that the GPIO system is initialized
......@@ -533,4 +529,4 @@ int luaopen_ws2812(lua_State *L) {
return 0;
}
NODEMCU_MODULE(WS2812, "ws2812", ws2812_map, luaopen_ws2812);
NODEMCU_MODULE(WS2812, "ws2812", ws2812, luaopen_ws2812);
......@@ -108,6 +108,32 @@ config BUILD_SPIFFS
bool
default "y"
config LUA_EMBED_LFS
bool "Embed LFS as part of the NodeMCU firmware"
default "n"
help
The LFS (Lua Flash Store) normally has its own partition entry, and can
can be replaced at will. Optionally, the LFS can instead be permanently
embedded into the NodeMCU firmware image itself. This can be useful for
scenarios where over-the-air firmware upgrades are needed to also
bundle Lua code. The major downside is that once embedded, the LFS can
no longer be changed, as doing so would break the firmware checksums
and signatures and leave the system unable to boot.
The default option is to not embed the LFS, in which case LFS is
looked for in a partition of type 0xC2 and subtype 0x01.
To embed LFS data into firmware, use:
./tools/embed_lfs.sh /path/to/file1.lua /path/to/file2.lua ...
config LUA_EMBEDDED_FLASH_STORE
hex "Embedded LUA Flash Store size"
default 0x0
depends on LUA_EMBED_LFS
help
Embedded LUA Flash Store size. Set to zero to use an LFS partition instead
of embedding the LFS within the NodeMCU firmware itself.
config BUILD_FATFS
bool "Support for FAT filesystems"
default "n"
......
......@@ -2,6 +2,7 @@
#define _CPU_ESP32_H_
#include "sdkconfig.h"
#include "esp_spi_flash.h"
#define NUM_UART 3
......
......@@ -246,6 +246,7 @@ int platform_flash_erase_sector( uint32_t sector_id );
#define PLATFORM_PARTITION_SUBTYPE_DATA_WIFI 0x02
#define PLATFORM_PARTITION_SUBTYPE_NODEMCU_SPIFFS 0x00
#define PLATFORM_PARTITION_SUBTYPE_NODEMCU_LFS 0x01
typedef struct {
uint8_t label[16];
......
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