1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- // Module for RTC user memory access
- #include "module.h"
- #include "lauxlib.h"
- #include "rtc/rtcaccess.h"
- static int rtcmem_read32 (lua_State *L)
- {
- int idx = luaL_checknumber (L, 1);
- int n = 1;
- if (lua_isnumber (L, 2))
- n = lua_tonumber (L, 2);
- if (!lua_checkstack (L, n))
- return 0;
- int ret = 0;
- while (n > 0 && idx >= 0 && idx < RTC_USER_MEM_NUM_DWORDS)
- {
- lua_pushinteger (L, rtc_mem_read (idx++));
- --n;
- ++ret;
- }
- return ret;
- }
- static int rtcmem_write32 (lua_State *L)
- {
- int idx = luaL_checknumber (L, 1);
- int n = lua_gettop (L) - 1;
- luaL_argcheck (
- L, idx + n <= RTC_USER_MEM_NUM_DWORDS, 1, "RTC mem would overrun");
- int src = 2;
- while (n-- > 0)
- {
- rtc_mem_write (idx++, lua_tonumber (L, src++));
- }
- return 0;
- }
- // Module function map
- static const LUA_REG_TYPE rtcmem_map[] = {
- { LSTRKEY("read32"), LFUNCVAL(rtcmem_read32) },
- { LSTRKEY("write32"), LFUNCVAL(rtcmem_write32) },
- { LNILKEY, LNILVAL }
- };
- NODEMCU_MODULE(RTCMEM, "rtcmem", rtcmem_map, NULL);
|