mimxrt: Move calc_weekday helper function to timeutils.
This function may be useful for other ports as well so lets move it to timeutils so it can be reused. Signed-off-by: Krzysztof Adamski <k@japko.eu>
This commit is contained in:
parent
b51ae20c07
commit
6409bbcb72
@ -213,3 +213,10 @@ mp_uint_t timeutils_mktime_2000(mp_uint_t year, mp_int_t month, mp_int_t mday,
|
|||||||
}
|
}
|
||||||
return timeutils_seconds_since_2000(year, month, mday, hours, minutes, seconds);
|
return timeutils_seconds_since_2000(year, month, mday, hours, minutes, seconds);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Calculate the weekday from the date.
|
||||||
|
// The result is zero based with 0 = Monday.
|
||||||
|
// by Michael Keith and Tom Craver, 1990.
|
||||||
|
int timeutils_calc_weekday(int y, int m, int d) {
|
||||||
|
return ((d += m < 3 ? y-- : y - 2, 23 * m / 9 + d + 4 + y / 4 - y / 100 + y / 400) + 6) % 7;
|
||||||
|
}
|
||||||
|
@ -100,4 +100,6 @@ static inline int64_t timeutils_nanoseconds_since_epoch_to_nanoseconds_since_197
|
|||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
int timeutils_calc_weekday(int y, int m, int d);
|
||||||
|
|
||||||
#endif // MICROPY_INCLUDED_LIB_TIMEUTILS_TIMEUTILS_H
|
#endif // MICROPY_INCLUDED_LIB_TIMEUTILS_TIMEUTILS_H
|
||||||
|
@ -26,6 +26,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include "py/runtime.h"
|
#include "py/runtime.h"
|
||||||
|
#include "lib/timeutils/timeutils.h"
|
||||||
#include "modmachine.h"
|
#include "modmachine.h"
|
||||||
#include "ticks.h"
|
#include "ticks.h"
|
||||||
#include "fsl_snvs_lp.h"
|
#include "fsl_snvs_lp.h"
|
||||||
@ -39,13 +40,6 @@ typedef struct _machine_rtc_obj_t {
|
|||||||
STATIC const machine_rtc_obj_t machine_rtc_obj = {{&machine_rtc_type}};
|
STATIC const machine_rtc_obj_t machine_rtc_obj = {{&machine_rtc_type}};
|
||||||
uint32_t us_offset = 0;
|
uint32_t us_offset = 0;
|
||||||
|
|
||||||
// Calculate the weekday from the date.
|
|
||||||
// The result is zero based with 0 = Monday.
|
|
||||||
// by Michael Keith and Tom Craver, 1990.
|
|
||||||
int calc_weekday(int y, int m, int d) {
|
|
||||||
return ((d += m < 3 ? y-- : y - 2, 23 * m / 9 + d + 4 + y / 4 - y / 100 + y / 400) + 6) % 7;
|
|
||||||
}
|
|
||||||
|
|
||||||
STATIC mp_obj_t machine_rtc_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *args) {
|
STATIC mp_obj_t machine_rtc_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *args) {
|
||||||
// Check arguments.
|
// Check arguments.
|
||||||
mp_arg_check_num(n_args, n_kw, 0, 0, false);
|
mp_arg_check_num(n_args, n_kw, 0, 0, false);
|
||||||
@ -67,7 +61,7 @@ STATIC mp_obj_t machine_rtc_datetime_helper(size_t n_args, const mp_obj_t *args)
|
|||||||
mp_obj_new_int(srtc_date.year),
|
mp_obj_new_int(srtc_date.year),
|
||||||
mp_obj_new_int(srtc_date.month),
|
mp_obj_new_int(srtc_date.month),
|
||||||
mp_obj_new_int(srtc_date.day),
|
mp_obj_new_int(srtc_date.day),
|
||||||
mp_obj_new_int(calc_weekday(srtc_date.year, srtc_date.month, srtc_date.day)),
|
mp_obj_new_int(timeutils_calc_weekday(srtc_date.year, srtc_date.month, srtc_date.day)),
|
||||||
mp_obj_new_int(srtc_date.hour),
|
mp_obj_new_int(srtc_date.hour),
|
||||||
mp_obj_new_int(srtc_date.minute),
|
mp_obj_new_int(srtc_date.minute),
|
||||||
mp_obj_new_int(srtc_date.second),
|
mp_obj_new_int(srtc_date.second),
|
||||||
|
@ -30,8 +30,6 @@
|
|||||||
#include "extmod/utime_mphal.h"
|
#include "extmod/utime_mphal.h"
|
||||||
#include "fsl_snvs_lp.h"
|
#include "fsl_snvs_lp.h"
|
||||||
|
|
||||||
extern int calc_weekday(int y, int m, int d);
|
|
||||||
|
|
||||||
// localtime([secs])
|
// localtime([secs])
|
||||||
// Convert a time expressed in seconds since the Epoch into an 8-tuple which
|
// Convert a time expressed in seconds since the Epoch into an 8-tuple which
|
||||||
// contains: (year, month, mday, hour, minute, second, weekday, yearday)
|
// contains: (year, month, mday, hour, minute, second, weekday, yearday)
|
||||||
@ -48,7 +46,7 @@ STATIC mp_obj_t time_localtime(size_t n_args, const mp_obj_t *args) {
|
|||||||
mp_obj_new_int(t.hour),
|
mp_obj_new_int(t.hour),
|
||||||
mp_obj_new_int(t.minute),
|
mp_obj_new_int(t.minute),
|
||||||
mp_obj_new_int(t.second),
|
mp_obj_new_int(t.second),
|
||||||
mp_obj_new_int(calc_weekday(t.year, t.month, t.day)),
|
mp_obj_new_int(timeutils_calc_weekday(t.year, t.month, t.day)),
|
||||||
mp_obj_new_int(timeutils_year_day(t.year, t.month, t.day)),
|
mp_obj_new_int(timeutils_year_day(t.year, t.month, t.day)),
|
||||||
};
|
};
|
||||||
return mp_obj_new_tuple(8, tuple);
|
return mp_obj_new_tuple(8, tuple);
|
||||||
|
Loading…
Reference in New Issue
Block a user