Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
fleur
firmware
Commits
ca7f19ba
Verified
Commit
ca7f19ba
authored
Jul 29, 2019
by
Rahix
Browse files
feat(utime): Add time() and mktime()
Signed-off-by:
Rahix
<
rahix@rahix.de
>
parent
a1567d59
Changes
2
Hide whitespace changes
Inline
Side-by-side
pycardium/modules/qstrdefs.h
View file @
ca7f19ba
...
...
@@ -22,6 +22,8 @@ Q(ticks_cpu)
Q
(
ticks_add
)
Q
(
ticks_diff
)
Q
(
localtime
)
Q
(
mktime
)
Q
(
time
)
/* vibra */
Q
(
vibra
)
...
...
pycardium/modules/utime.c
View file @
ca7f19ba
#include
"epicardium.h"
#include
"mxc_delay.h"
#include
"epicardium.h"
#include
"extmod/utime_mphal.h"
#include
"py/mpconfig.h"
#include
"py/obj.h"
#include
"py/runtime.h"
#include
"extmod/utime_mphal.h"
#include
<sys/time.h>
#include
<stdint.h>
// Needs to be after the stdint include ...
#include
"lib/timeutils/timeutils.h"
STATIC
mp_obj_t
time_localtime
(
size_t
n_args
,
const
mp_obj_t
*
args
)
static
mp_obj_t
time_time
(
void
)
{
mp_int_t
seconds
;
seconds
=
epic_rtc_get_seconds
()
-
946684800UL
;
return
mp_obj_new_int
(
seconds
);
}
MP_DEFINE_CONST_FUN_OBJ_0
(
time_time_obj
,
time_time
);
static
mp_obj_t
time_localtime
(
size_t
n_args
,
const
mp_obj_t
*
args
)
{
mp_int_t
seconds
;
...
...
@@ -34,12 +44,41 @@ STATIC mp_obj_t time_localtime(size_t n_args, const mp_obj_t *args)
};
return
mp_obj_new_tuple
(
8
,
tuple
);
}
static
MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN
(
time_localtime_obj
,
0
,
1
,
time_localtime
);
static
mp_obj_t
time_mktime
(
mp_obj_t
tuple
)
{
size_t
len
;
mp_obj_t
*
elem
;
mp_obj_get_array
(
tuple
,
&
len
,
&
elem
);
MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN
(
time_localtime_obj
,
0
,
1
,
time_localtime
);
/* localtime generates a tuple of len 8. CPython uses 9, so we accept both. */
if
(
len
<
8
||
len
>
9
)
{
nlr_raise
(
mp_obj_new_exception_msg_varg
(
&
mp_type_TypeError
,
"mktime needs a tuple of length 8 or 9 (%d given)"
,
len
)
);
}
return
mp_obj_new_int_from_uint
(
timeutils_mktime
(
mp_obj_get_int
(
elem
[
0
]),
mp_obj_get_int
(
elem
[
1
]),
mp_obj_get_int
(
elem
[
2
]),
mp_obj_get_int
(
elem
[
3
]),
mp_obj_get_int
(
elem
[
4
]),
mp_obj_get_int
(
elem
[
5
]))
);
}
static
MP_DEFINE_CONST_FUN_OBJ_1
(
time_mktime_obj
,
time_mktime
);
static
const
mp_rom_map_elem_t
time_module_globals_table
[]
=
{
{
MP_ROM_QSTR
(
MP_QSTR___name__
),
MP_ROM_QSTR
(
MP_QSTR_utime
)
},
{
MP_ROM_QSTR
(
MP_QSTR_time
),
MP_ROM_PTR
(
&
time_time_obj
)
},
{
MP_ROM_QSTR
(
MP_QSTR_localtime
),
MP_ROM_PTR
(
&
time_localtime_obj
)
},
{
MP_ROM_QSTR
(
MP_QSTR_mktime
),
MP_ROM_PTR
(
&
time_mktime_obj
)
},
{
MP_ROM_QSTR
(
MP_QSTR_sleep
),
MP_ROM_PTR
(
&
mp_utime_sleep_obj
)
},
{
MP_ROM_QSTR
(
MP_QSTR_sleep_ms
),
MP_ROM_PTR
(
&
mp_utime_sleep_ms_obj
)
},
{
MP_ROM_QSTR
(
MP_QSTR_sleep_us
),
MP_ROM_PTR
(
&
mp_utime_sleep_us_obj
)
},
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment