summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--locale/circuitpython.pot2
-rw-r--r--ports/atmel-samd/common-hal/time/__init__.c9
-rw-r--r--ports/cxd56/common-hal/time/__init__.c8
-rw-r--r--ports/mimxrt10xx/common-hal/time/__init__.c10
-rw-r--r--ports/nrf/common-hal/time/__init__.c8
-rw-r--r--ports/stm32f4/common-hal/time/__init__.c8
-rw-r--r--shared-bindings/time/__init__.c2
-rw-r--r--shared-bindings/time/__init__.h1
8 files changed, 46 insertions, 2 deletions
diff --git a/locale/circuitpython.pot b/locale/circuitpython.pot
index 6069bdd97..3e4413068 100644
--- a/locale/circuitpython.pot
+++ b/locale/circuitpython.pot
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-02-05 15:55-0800\n"
+"POT-Creation-Date: 2020-02-07 10:02-0500\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
diff --git a/ports/atmel-samd/common-hal/time/__init__.c b/ports/atmel-samd/common-hal/time/__init__.c
index 2d82b3d1a..149996452 100644
--- a/ports/atmel-samd/common-hal/time/__init__.c
+++ b/ports/atmel-samd/common-hal/time/__init__.c
@@ -29,11 +29,20 @@
#include "shared-bindings/time/__init__.h"
#include "supervisor/shared/tick.h"
+#include "tick.h"
inline uint64_t common_hal_time_monotonic() {
return supervisor_ticks_ms64();
}
+uint64_t common_hal_time_monotonic_ns() {
+ uint64_t ms;
+ uint32_t us_until_ms;
+ current_tick(&ms, &us_until_ms);
+ // us counts down.
+ return 1000 * (ms * 1000 + (1000 - us_until_ms));
+}
+
void common_hal_time_delay_ms(uint32_t delay) {
mp_hal_delay_ms(delay);
}
diff --git a/ports/cxd56/common-hal/time/__init__.c b/ports/cxd56/common-hal/time/__init__.c
index 6f5eedd41..fa915782d 100644
--- a/ports/cxd56/common-hal/time/__init__.c
+++ b/ports/cxd56/common-hal/time/__init__.c
@@ -24,6 +24,8 @@
* THE SOFTWARE.
*/
+#include <sys/time.h>
+
#include "py/mphal.h"
#include "supervisor/shared/tick.h"
@@ -32,6 +34,12 @@ uint64_t common_hal_time_monotonic(void) {
return supervisor_ticks_ms64();
}
+uint64_t common_hal_time_monotonic_ns() {
+ struct timeval tv;
+ gettimeofday(&tv, NULL);
+ return 1000 * ((uint64_t) tv.tv_sec * 1000000 + (uint64_t) tv.tv_usec);
+}
+
void common_hal_time_delay_ms(uint32_t delay) {
mp_hal_delay_ms(delay);
}
diff --git a/ports/mimxrt10xx/common-hal/time/__init__.c b/ports/mimxrt10xx/common-hal/time/__init__.c
index 2d82b3d1a..4497d8e86 100644
--- a/ports/mimxrt10xx/common-hal/time/__init__.c
+++ b/ports/mimxrt10xx/common-hal/time/__init__.c
@@ -30,10 +30,20 @@
#include "supervisor/shared/tick.h"
+#include "tick.h"
+
inline uint64_t common_hal_time_monotonic() {
return supervisor_ticks_ms64();
}
+uint64_t common_hal_time_monotonic_ns() {
+ uint64_t ms;
+ uint32_t us_until_ms;
+ current_tick(&ms, &us_until_ms);
+ // us counts down.
+ return 1000 * (ms * 1000 + (1000 - us_until_ms));
+}
+
void common_hal_time_delay_ms(uint32_t delay) {
mp_hal_delay_ms(delay);
}
diff --git a/ports/nrf/common-hal/time/__init__.c b/ports/nrf/common-hal/time/__init__.c
index 976f519db..dcfe55eca 100644
--- a/ports/nrf/common-hal/time/__init__.c
+++ b/ports/nrf/common-hal/time/__init__.c
@@ -32,6 +32,14 @@ uint64_t common_hal_time_monotonic(void) {
return supervisor_ticks_ms64();
}
+uint64_t common_hal_time_monotonic_ns() {
+ uint64_t ms;
+ uint32_t us_until_ms;
+ current_tick(&ms, &us_until_ms);
+ // us counts down.
+ return 1000 * (ms * 1000 + (1000 - us_until_ms));
+}
+
void common_hal_time_delay_ms(uint32_t delay) {
mp_hal_delay_ms(delay);
}
diff --git a/ports/stm32f4/common-hal/time/__init__.c b/ports/stm32f4/common-hal/time/__init__.c
index 976f519db..dcfe55eca 100644
--- a/ports/stm32f4/common-hal/time/__init__.c
+++ b/ports/stm32f4/common-hal/time/__init__.c
@@ -32,6 +32,14 @@ uint64_t common_hal_time_monotonic(void) {
return supervisor_ticks_ms64();
}
+uint64_t common_hal_time_monotonic_ns() {
+ uint64_t ms;
+ uint32_t us_until_ms;
+ current_tick(&ms, &us_until_ms);
+ // us counts down.
+ return 1000 * (ms * 1000 + (1000 - us_until_ms));
+}
+
void common_hal_time_delay_ms(uint32_t delay) {
mp_hal_delay_ms(delay);
}
diff --git a/shared-bindings/time/__init__.c b/shared-bindings/time/__init__.c
index b3e4604b5..2c1aebc2e 100644
--- a/shared-bindings/time/__init__.c
+++ b/shared-bindings/time/__init__.c
@@ -216,7 +216,7 @@ MP_DEFINE_CONST_FUN_OBJ_0(time_time_obj, time_time);
//| :rtype: int
//|
STATIC mp_obj_t time_monotonic_ns(void) {
- uint64_t time64 = common_hal_time_monotonic() * 1000000llu;
+ uint64_t time64 = common_hal_time_monotonic_ns();
return mp_obj_new_int_from_ll((long long) time64);
}
MP_DEFINE_CONST_FUN_OBJ_0(time_monotonic_ns_obj, time_monotonic_ns);
diff --git a/shared-bindings/time/__init__.h b/shared-bindings/time/__init__.h
index c5a0b47fc..ec96aea24 100644
--- a/shared-bindings/time/__init__.h
+++ b/shared-bindings/time/__init__.h
@@ -36,6 +36,7 @@ extern mp_obj_t struct_time_from_tm(timeutils_struct_time_t *tm);
extern void struct_time_to_tm(mp_obj_t t, timeutils_struct_time_t *tm);
extern uint64_t common_hal_time_monotonic(void);
+extern uint64_t common_hal_time_monotonic_ns(void);
extern void common_hal_time_delay_ms(uint32_t);
#endif // MICROPY_INCLUDED_SHARED_BINDINGS_TIME___INIT___H