@@ -136,23 +136,35 @@ z_result_t z_sleep_s(size_t time) {
136
136
137
137
/* ------------------ Instant ------------------*/
138
138
z_clock_t z_clock_now (void ) {
139
- // Not supported by default
140
- return NULL ;
139
+ auto now = Kernel::Clock::now ();
140
+ auto duration = now.time_since_epoch ();
141
+ auto secs = std::chrono::duration_cast<std::chrono::seconds>(duration);
142
+ auto nanos = std::chrono::duration_cast<std::chrono::nanoseconds>(duration - secs);
143
+
144
+ z_clock_t ts;
145
+ ts.tv_sec = secs.count ();
146
+ ts.tv_nsec = nanos.count ();
147
+ return ts;
141
148
}
142
149
143
150
unsigned long z_clock_elapsed_us (z_clock_t *instant) {
144
- // Not supported by default
145
- return -1 ;
151
+ z_clock_t now = z_clock_now ();
152
+ unsigned long elapsed =
153
+ (unsigned long )(1000000 * (now.tv_sec - instant->tv_sec ) + (now.tv_nsec - instant->tv_nsec ) / 1000 );
154
+ return elapsed;
146
155
}
147
156
148
157
unsigned long z_clock_elapsed_ms (z_clock_t *instant) {
149
- // Not supported by default
150
- return -1 ;
158
+ z_clock_t now = z_clock_now ();
159
+ unsigned long elapsed =
160
+ (unsigned long )(1000 * (now.tv_sec - instant->tv_sec ) + (now.tv_nsec - instant->tv_nsec ) / 1000000 );
161
+ return elapsed;
151
162
}
152
163
153
164
unsigned long z_clock_elapsed_s (z_clock_t *instant) {
154
- // Not supported by default
155
- return -1 ;
165
+ z_clock_t now = z_clock_now ();
166
+ unsigned long elapsed = (unsigned long )(now.tv_sec - instant->tv_sec );
167
+ return elapsed;
156
168
}
157
169
158
170
/* ------------------ Time ------------------*/
0 commit comments