Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

rtctime: try harder to speak in integers #3161

Merged
merged 1 commit into from
Jun 20, 2020
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 12 additions & 13 deletions app/modules/rtctime.c
Original file line number Diff line number Diff line change
Expand Up @@ -131,36 +131,35 @@ static int rtctime_set (lua_State *L)
if (!rtc_time_check_magic ())
rtc_time_prepare ();

uint32_t sec = luaL_checknumber (L, 1);
uint32_t sec = luaL_checkinteger (L, 1);
uint32_t usec = 0;
if (lua_isnumber (L, 2))
usec = lua_tonumber (L, 2);
usec = lua_tointeger (L, 2);

struct rtc_timeval tv = { sec, usec };
rtctime_settimeofday (&tv);

if (lua_isnumber(L, 3))
rtc_time_set_rate(lua_tonumber(L, 3));
rtc_time_set_rate(lua_tointeger(L, 3));
return 0;
}


// sec, usec = rtctime.get ()
static int rtctime_get (lua_State *L)
{
struct rtc_timeval tv;
rtctime_gettimeofday (&tv);
lua_pushnumber (L, tv.tv_sec);
lua_pushnumber (L, tv.tv_usec);
lua_pushnumber (L, rtc_time_get_rate());
lua_pushinteger (L, tv.tv_sec);
lua_pushinteger (L, tv.tv_usec);
lua_pushinteger (L, rtc_time_get_rate());
return 3;
}

static void do_sleep_opt (lua_State *L, int idx)
{
if (lua_isnumber (L, idx))
{
uint32_t opt = lua_tonumber (L, idx);
uint32_t opt = lua_tointeger (L, idx);
if (opt < 0 || opt > 4)
luaL_error (L, "unknown sleep option");
system_deep_sleep_set_option (opt);
Expand All @@ -170,16 +169,16 @@ static void do_sleep_opt (lua_State *L, int idx)
// rtctime.adjust_delta (usec)
static int rtctime_adjust_delta (lua_State *L)
{
uint32_t us = luaL_checknumber (L, 1);
lua_pushnumber(L, rtc_time_adjust_delta_by_rate(us));
uint32_t us = luaL_checkinteger (L, 1);
lua_pushinteger(L, rtc_time_adjust_delta_by_rate(us));
return 1;
}


// rtctime.dsleep (usec, option)
static int rtctime_dsleep (lua_State *L)
{
uint32_t us = luaL_checknumber (L, 1);
uint32_t us = luaL_checkinteger (L, 1);
do_sleep_opt (L, 2);
rtctime_deep_sleep_us (us); // does not return
return 0;
Expand All @@ -192,8 +191,8 @@ static int rtctime_dsleep_aligned (lua_State *L)
if (!rtctime_have_time ())
return luaL_error (L, "time not available, unable to align");

uint32_t align_us = luaL_checknumber (L, 1);
uint32_t min_us = luaL_checknumber (L, 2);
uint32_t align_us = luaL_checkinteger (L, 1);
uint32_t min_us = luaL_checkinteger (L, 2);
do_sleep_opt (L, 3);
rtctime_deep_sleep_until_aligned_us (align_us, min_us); // does not return
return 0;
Expand Down