summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--lib/timeutils/timeutils.c7
-rw-r--r--lib/timeutils/timeutils.h2
-rw-r--r--ports/mimxrt/machine_rtc.c10
-rw-r--r--ports/mimxrt/modutime.c4
4 files changed, 12 insertions, 11 deletions
diff --git a/lib/timeutils/timeutils.c b/lib/timeutils/timeutils.c
index af210d9943..7c74f5fc37 100644
--- a/lib/timeutils/timeutils.c
+++ b/lib/timeutils/timeutils.c
@@ -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);
}
+
+// 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;
+}
diff --git a/lib/timeutils/timeutils.h b/lib/timeutils/timeutils.h
index 2d40f773cc..66e2a77f13 100644
--- a/lib/timeutils/timeutils.h
+++ b/lib/timeutils/timeutils.h
@@ -100,4 +100,6 @@ static inline int64_t timeutils_nanoseconds_since_epoch_to_nanoseconds_since_197
#endif
+int timeutils_calc_weekday(int y, int m, int d);
+
#endif // MICROPY_INCLUDED_LIB_TIMEUTILS_TIMEUTILS_H
diff --git a/ports/mimxrt/machine_rtc.c b/ports/mimxrt/machine_rtc.c
index 76f414925e..d00d139f79 100644
--- a/ports/mimxrt/machine_rtc.c
+++ b/ports/mimxrt/machine_rtc.c
@@ -26,6 +26,7 @@
*/
#include "py/runtime.h"
+#include "lib/timeutils/timeutils.h"
#include "modmachine.h"
#include "ticks.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}};
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) {
// Check arguments.
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.month),
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.minute),
mp_obj_new_int(srtc_date.second),
diff --git a/ports/mimxrt/modutime.c b/ports/mimxrt/modutime.c
index a47bc073f2..2a88a4224b 100644
--- a/ports/mimxrt/modutime.c
+++ b/ports/mimxrt/modutime.c
@@ -30,8 +30,6 @@
#include "extmod/utime_mphal.h"
#include "fsl_snvs_lp.h"
-extern int calc_weekday(int y, int m, int d);
-
// localtime([secs])
// Convert a time expressed in seconds since the Epoch into an 8-tuple which
// 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.minute),
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)),
};
return mp_obj_new_tuple(8, tuple);