From b5de529ffc17dd02e24c3f2b14e230eefe42dc7a Mon Sep 17 00:00:00 2001 From: robert-hh Date: Sat, 28 Jan 2023 10:12:49 +0100 Subject: [PATCH 1/3] docs: Fix the quickref documentation of rtc.datetime(). Such that it matches the implementation and the documentation of the `machine.RTC` class. Signed-off-by: robert-hh --- docs/esp32/quickref.rst | 4 +++- docs/esp8266/quickref.rst | 4 +++- docs/mimxrt/quickref.rst | 4 +++- docs/pyboard/quickref.rst | 4 +++- docs/renesas-ra/quickref.rst | 5 +++-- docs/rp2/quickref.rst | 3 ++- 6 files changed, 17 insertions(+), 7 deletions(-) diff --git a/docs/esp32/quickref.rst b/docs/esp32/quickref.rst index 5cce96d687875..c5c2dfb38e570 100644 --- a/docs/esp32/quickref.rst +++ b/docs/esp32/quickref.rst @@ -577,7 +577,9 @@ See :ref:`machine.RTC ` :: from machine import RTC rtc = RTC() - rtc.datetime((2017, 8, 23, 1, 12, 48, 0, 0)) # set a specific date and time + rtc.datetime((2017, 8, 23, 0, 1, 12, 48, 0)) # set a specific date and + # time, eg. 2017/8/23 1:12:48 + # the day-of-week value is ignored rtc.datetime() # get date and time WDT (Watchdog timer) diff --git a/docs/esp8266/quickref.rst b/docs/esp8266/quickref.rst index 635f1f834bb60..e17b60f676105 100644 --- a/docs/esp8266/quickref.rst +++ b/docs/esp8266/quickref.rst @@ -284,7 +284,9 @@ See :ref:`machine.RTC ` :: from machine import RTC rtc = RTC() - rtc.datetime((2017, 8, 23, 1, 12, 48, 0, 0)) # set a specific date and time + rtc.datetime((2017, 8, 23, 0, 1, 12, 48, 0)) # set a specific date and + # time, eg. 2017/8/23 1:12:48 + # the day-of-week value is ignored rtc.datetime() # get date and time # synchronize with ntp diff --git a/docs/mimxrt/quickref.rst b/docs/mimxrt/quickref.rst index 34e0aa79f139f..49d7befc7452b 100644 --- a/docs/mimxrt/quickref.rst +++ b/docs/mimxrt/quickref.rst @@ -429,7 +429,9 @@ See :ref:`machine.RTC `:: from machine import RTC rtc = RTC() - rtc.datetime((2017, 8, 23, 1, 12, 48, 0, 0)) # set a specific date and time + rtc.datetime((2017, 8, 23, 0, 1, 12, 48, 0)) # set a specific date and + # time, eg. 2017/8/23 1:12:48 + # the day-of-week value is ignored rtc.datetime() # get date and time rtc.now() # return date and time in CPython format. diff --git a/docs/pyboard/quickref.rst b/docs/pyboard/quickref.rst index 62157bff0a472..52ddc29b19340 100644 --- a/docs/pyboard/quickref.rst +++ b/docs/pyboard/quickref.rst @@ -138,7 +138,9 @@ See :ref:`pyb.RTC ` :: from pyb import RTC rtc = RTC() - rtc.datetime((2017, 8, 23, 1, 12, 48, 0, 0)) # set a specific date and time + rtc.datetime((2017, 8, 23, 0, 1, 12, 48, 0)) # set a specific date and + # time, eg. 2017/8/23 1:12:48 + # the day-of-week value is ignored rtc.datetime() # get date and time PWM (pulse width modulation) diff --git a/docs/renesas-ra/quickref.rst b/docs/renesas-ra/quickref.rst index ea9a38db15fcb..b5283707fc8f0 100644 --- a/docs/renesas-ra/quickref.rst +++ b/docs/renesas-ra/quickref.rst @@ -206,8 +206,9 @@ See :ref:`machine.RTC ` :: from machine import RTC rtc = RTC() - rtc.datetime((2017, 8, 23, 1, 12, 48, 0, 0)) # set a specific date and time - # time, eg 2017/8/23 1:12:48 + rtc.datetime((2017, 8, 23, 0, 1, 12, 48, 0)) # set a specific date and + # time, eg. 2017/8/23 1:12:48 + # the day-of-week value is ignored rtc.datetime() # get date and time Following functions are not supported at the present:: diff --git a/docs/rp2/quickref.rst b/docs/rp2/quickref.rst index 9b82ea5dc6749..6be3180500746 100644 --- a/docs/rp2/quickref.rst +++ b/docs/rp2/quickref.rst @@ -310,8 +310,9 @@ See :ref:`machine.RTC ` :: from machine import RTC rtc = RTC() - rtc.datetime((2017, 8, 23, 2, 12, 48, 0, 0)) # set a specific date and + rtc.datetime((2017, 8, 23, 0, 1, 12, 48, 0)) # set a specific date and # time, eg. 2017/8/23 1:12:48 + # the day-of-week value is ignored rtc.datetime() # get date and time WDT (Watchdog timer) From 0302cd65e85cb255670cf6eb32d9e6cee241128c Mon Sep 17 00:00:00 2001 From: robert-hh Date: Sat, 28 Jan 2023 14:57:22 +0100 Subject: [PATCH 2/3] mimxrt/machine_rtc: Drop machine.RTC.now() method. This is not part of the common machine API. It's dropped on the mimxrt port and kept only on the cc3200 port for legacy. Also show the port availability of `RTC.now()` in the documentation. Signed-off-by: robert-hh --- docs/library/machine.RTC.rst | 2 ++ ports/mimxrt/machine_rtc.c | 20 -------------------- 2 files changed, 2 insertions(+), 20 deletions(-) diff --git a/docs/library/machine.RTC.rst b/docs/library/machine.RTC.rst index a457189037b51..ed93c5fff85f1 100644 --- a/docs/library/machine.RTC.rst +++ b/docs/library/machine.RTC.rst @@ -48,6 +48,8 @@ Methods Get get the current datetime tuple. + Availability: WiPy. + .. method:: RTC.deinit() Resets the RTC to the time of January 1, 2015 and starts running it again. diff --git a/ports/mimxrt/machine_rtc.c b/ports/mimxrt/machine_rtc.c index 0d6fc54c8b67c..91769ea33416b 100644 --- a/ports/mimxrt/machine_rtc.c +++ b/ports/mimxrt/machine_rtc.c @@ -230,25 +230,6 @@ static mp_obj_t machine_rtc_datetime(mp_uint_t n_args, const mp_obj_t *args) { } static MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(machine_rtc_datetime_obj, 1, 2, machine_rtc_datetime); -static mp_obj_t machine_rtc_now(mp_obj_t self_in) { - // Get date and time in CPython order. - snvs_lp_srtc_datetime_t srtc_date; - SNVS_LP_SRTC_GetDatetime(SNVS, &srtc_date); - - mp_obj_t tuple[8] = { - 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(srtc_date.hour), - mp_obj_new_int(srtc_date.minute), - mp_obj_new_int(srtc_date.second), - mp_obj_new_int(0), - mp_const_none, - }; - return mp_obj_new_tuple(8, tuple); -} -static MP_DEFINE_CONST_FUN_OBJ_1(machine_rtc_now_obj, machine_rtc_now); - static mp_obj_t machine_rtc_init(mp_obj_t self_in, mp_obj_t date) { mp_obj_t args[2] = {self_in, date}; machine_rtc_datetime_helper(2, args); @@ -389,7 +370,6 @@ static MP_DEFINE_CONST_FUN_OBJ_KW(machine_rtc_irq_obj, 1, machine_rtc_irq); static const mp_rom_map_elem_t machine_rtc_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_init), MP_ROM_PTR(&machine_rtc_init_obj) }, { MP_ROM_QSTR(MP_QSTR_datetime), MP_ROM_PTR(&machine_rtc_datetime_obj) }, - { MP_ROM_QSTR(MP_QSTR_now), MP_ROM_PTR(&machine_rtc_now_obj) }, { MP_ROM_QSTR(MP_QSTR_calibration), MP_ROM_PTR(&machine_rtc_calibration_obj) }, { MP_ROM_QSTR(MP_QSTR_alarm), MP_ROM_PTR(&machine_rtc_alarm_obj) }, { MP_ROM_QSTR(MP_QSTR_alarm_left), MP_ROM_PTR(&machine_rtc_alarm_left_obj) }, From f4e45995232ad52aeb4da270e6ca7571695e339b Mon Sep 17 00:00:00 2001 From: robert-hh Date: Sat, 28 Jan 2023 15:19:37 +0100 Subject: [PATCH 3/3] ports: Fix machine.RTC.init() method so argument order matches the docs. This commit makes the argument ordering of `machine.RTC.init()` the same for all the ports that implement arguments to this method: cc3200, esp32, mimxrt and samd. The cc3200 argument ordering is used, which matches the documentation. Also document the availability and the differing semantics for the stm32 and renesas-ra port. Signed-off-by: robert-hh --- docs/library/machine.RTC.rst | 9 ++++++++- ports/esp32/machine_rtc.c | 15 +++++++++++---- ports/mimxrt/machine_rtc.c | 12 ++++++------ ports/samd/machine_rtc.c | 12 ++++++------ 4 files changed, 31 insertions(+), 17 deletions(-) diff --git a/docs/library/machine.RTC.rst b/docs/library/machine.RTC.rst index ed93c5fff85f1..e2ddd728bde4c 100644 --- a/docs/library/machine.RTC.rst +++ b/docs/library/machine.RTC.rst @@ -42,7 +42,14 @@ Methods Initialise the RTC. Datetime is a tuple of the form: - ``(year, month, day[, hour[, minute[, second[, microsecond[, tzinfo]]]]])`` + ``(year, month, day, hour, minute, second, microsecond, tzinfo)`` + + All eight arguments must be present. The ``microsecond`` and ``tzinfo`` + values are currently ignored but might be used in the future. + + Availability: CC3200, ESP32, MIMXRT, SAMD. The rtc.init() method on + the stm32 and renesas-ra ports just (re-)starts the RTC and does not + accept arguments. .. method:: RTC.now() diff --git a/ports/esp32/machine_rtc.c b/ports/esp32/machine_rtc.c index 087ba9d69efe7..a2f4bb132d4ea 100644 --- a/ports/esp32/machine_rtc.c +++ b/ports/esp32/machine_rtc.c @@ -101,7 +101,7 @@ static mp_obj_t machine_rtc_make_new(const mp_obj_type_t *type, size_t n_args, s return (mp_obj_t)&machine_rtc_obj; } -static mp_obj_t machine_rtc_datetime_helper(mp_uint_t n_args, const mp_obj_t *args) { +static mp_obj_t machine_rtc_datetime_helper(mp_uint_t n_args, const mp_obj_t *args, int hour_index) { if (n_args == 1) { // Get time @@ -131,7 +131,14 @@ static mp_obj_t machine_rtc_datetime_helper(mp_uint_t n_args, const mp_obj_t *ar mp_obj_get_array_fixed_n(args[1], 8, &items); struct timeval tv = {0}; - tv.tv_sec = timeutils_seconds_since_epoch(mp_obj_get_int(items[0]), mp_obj_get_int(items[1]), mp_obj_get_int(items[2]), mp_obj_get_int(items[4]), mp_obj_get_int(items[5]), mp_obj_get_int(items[6])); + tv.tv_sec = timeutils_seconds_since_epoch( + mp_obj_get_int(items[0]), + mp_obj_get_int(items[1]), + mp_obj_get_int(items[2]), + mp_obj_get_int(items[hour_index]), + mp_obj_get_int(items[hour_index + 1]), + mp_obj_get_int(items[hour_index + 2]) + ); tv.tv_usec = mp_obj_get_int(items[7]); settimeofday(&tv, NULL); @@ -139,13 +146,13 @@ static mp_obj_t machine_rtc_datetime_helper(mp_uint_t n_args, const mp_obj_t *ar } } static mp_obj_t machine_rtc_datetime(size_t n_args, const mp_obj_t *args) { - return machine_rtc_datetime_helper(n_args, args); + return machine_rtc_datetime_helper(n_args, args, 4); } static MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(machine_rtc_datetime_obj, 1, 2, machine_rtc_datetime); static mp_obj_t machine_rtc_init(mp_obj_t self_in, mp_obj_t date) { mp_obj_t args[2] = {self_in, date}; - machine_rtc_datetime_helper(2, args); + machine_rtc_datetime_helper(2, args, 3); return mp_const_none; } diff --git a/ports/mimxrt/machine_rtc.c b/ports/mimxrt/machine_rtc.c index 91769ea33416b..5feeb0da096ae 100644 --- a/ports/mimxrt/machine_rtc.c +++ b/ports/mimxrt/machine_rtc.c @@ -185,7 +185,7 @@ static mp_obj_t machine_rtc_make_new(const mp_obj_type_t *type, size_t n_args, s return (mp_obj_t)&machine_rtc_obj; } -static mp_obj_t machine_rtc_datetime_helper(size_t n_args, const mp_obj_t *args) { +static mp_obj_t machine_rtc_datetime_helper(size_t n_args, const mp_obj_t *args, int hour_index) { if (n_args == 1) { // Get date and time. snvs_lp_srtc_datetime_t srtc_date; @@ -214,9 +214,9 @@ static mp_obj_t machine_rtc_datetime_helper(size_t n_args, const mp_obj_t *args) srtc_date.month = mp_obj_get_int(items[1]); srtc_date.day = mp_obj_get_int(items[2]); // Ignore weekday at items[3] - srtc_date.hour = mp_obj_get_int(items[4]); - srtc_date.minute = mp_obj_get_int(items[5]); - srtc_date.second = mp_obj_get_int(items[6]); + srtc_date.hour = mp_obj_get_int(items[hour_index]); + srtc_date.minute = mp_obj_get_int(items[hour_index + 1]); + srtc_date.second = mp_obj_get_int(items[hour_index + 2]); if (SNVS_LP_SRTC_SetDatetime(SNVS, &srtc_date) != kStatus_Success) { mp_raise_ValueError(NULL); } @@ -226,13 +226,13 @@ static mp_obj_t machine_rtc_datetime_helper(size_t n_args, const mp_obj_t *args) } static mp_obj_t machine_rtc_datetime(mp_uint_t n_args, const mp_obj_t *args) { - return machine_rtc_datetime_helper(n_args, args); + return machine_rtc_datetime_helper(n_args, args, 4); } static MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(machine_rtc_datetime_obj, 1, 2, machine_rtc_datetime); static mp_obj_t machine_rtc_init(mp_obj_t self_in, mp_obj_t date) { mp_obj_t args[2] = {self_in, date}; - machine_rtc_datetime_helper(2, args); + machine_rtc_datetime_helper(2, args, 3); return mp_const_none; } static MP_DEFINE_CONST_FUN_OBJ_2(machine_rtc_init_obj, machine_rtc_init); diff --git a/ports/samd/machine_rtc.c b/ports/samd/machine_rtc.c index a906f9176f9fe..74c2266d60926 100644 --- a/ports/samd/machine_rtc.c +++ b/ports/samd/machine_rtc.c @@ -93,7 +93,7 @@ static mp_obj_t machine_rtc_make_new(const mp_obj_type_t *type, size_t n_args, s return (mp_obj_t)&machine_rtc_obj; } -static mp_obj_t machine_rtc_datetime_helper(size_t n_args, const mp_obj_t *args) { +static mp_obj_t machine_rtc_datetime_helper(size_t n_args, const mp_obj_t *args, int hour_index) { // Rtc *rtc = RTC; if (n_args == 1) { // Get date and time. @@ -120,9 +120,9 @@ static mp_obj_t machine_rtc_datetime_helper(size_t n_args, const mp_obj_t *args) RTC_MODE2_CLOCK_YEAR(mp_obj_get_int(items[0]) % 100) | RTC_MODE2_CLOCK_MONTH(mp_obj_get_int(items[1])) | RTC_MODE2_CLOCK_DAY(mp_obj_get_int(items[2])) | - RTC_MODE2_CLOCK_HOUR(mp_obj_get_int(items[4])) | - RTC_MODE2_CLOCK_MINUTE(mp_obj_get_int(items[5])) | - RTC_MODE2_CLOCK_SECOND(mp_obj_get_int(items[6])); + RTC_MODE2_CLOCK_HOUR(mp_obj_get_int(items[hour_index])) | + RTC_MODE2_CLOCK_MINUTE(mp_obj_get_int(items[hour_index + 1])) | + RTC_MODE2_CLOCK_SECOND(mp_obj_get_int(items[hour_index + 2])); RTC->MODE2.CLOCK.reg = date; #if defined(MCU_SAMD21) @@ -138,13 +138,13 @@ static mp_obj_t machine_rtc_datetime_helper(size_t n_args, const mp_obj_t *args) } static mp_obj_t machine_rtc_datetime(mp_uint_t n_args, const mp_obj_t *args) { - return machine_rtc_datetime_helper(n_args, args); + return machine_rtc_datetime_helper(n_args, args, 4); } static MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(machine_rtc_datetime_obj, 1, 2, machine_rtc_datetime); static mp_obj_t machine_rtc_init(mp_obj_t self_in, mp_obj_t date) { mp_obj_t args[2] = {self_in, date}; - machine_rtc_datetime_helper(2, args); + machine_rtc_datetime_helper(2, args, 3); return mp_const_none; } static MP_DEFINE_CONST_FUN_OBJ_2(machine_rtc_init_obj, machine_rtc_init); pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy