Skip to content

Commit 9d39f23

Browse files
authored
Merge pull request #8257 from mprse/sleep_test_nrf52_dk_fix
tests-mbed_hal-sleep: finish UART transmission before sleep test
2 parents f42aab7 + 1fced21 commit 9d39f23

File tree

1 file changed

+26
-7
lines changed

1 file changed

+26
-7
lines changed

TESTS/mbed_hal/sleep/main.cpp

Lines changed: 26 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,8 @@
4747

4848
using namespace utest::v1;
4949

50+
static char info[512] = {0};
51+
5052
/* The following ticker frequencies are possible:
5153
* high frequency ticker: 250 KHz (1 tick per 4 us) - 8 Mhz (1 tick per 1/8 us)
5254
* low power ticker: 8 KHz (1 tick per 125 us) - 64 KHz (1 tick per ~15.6 us)
@@ -140,14 +142,20 @@ void sleep_usticker_test()
140142

141143
const ticker_irq_handler_type us_ticker_irq_handler_org = set_us_ticker_irq_handler(us_ticker_isr);
142144

145+
/* Give some time Green Tea to finish UART transmission before entering
146+
* sleep mode.
147+
*/
148+
busy_wait_ms(SERIAL_FLUSH_TIME_MS);
149+
143150
/* Test only sleep functionality. */
144151
sleep_manager_lock_deep_sleep();
145152
TEST_ASSERT_FALSE_MESSAGE(sleep_manager_can_deep_sleep(), "deep sleep should be locked");
146153

147154
/* Testing wake-up time 10 us. */
148155
for (timestamp_t i = 100; i < 1000; i += 100) {
149156
/* note: us_ticker_read() operates on ticks. */
150-
const timestamp_t next_match_timestamp = overflow_protect(us_ticker_read() + us_to_ticks(i, ticker_freq),
157+
const timestamp_t start_timestamp = us_ticker_read();
158+
const timestamp_t next_match_timestamp = overflow_protect(start_timestamp + us_to_ticks(i, ticker_freq),
151159
ticker_width);
152160

153161
us_ticker_set_interrupt(next_match_timestamp);
@@ -156,9 +164,11 @@ void sleep_usticker_test()
156164

157165
const unsigned int wakeup_timestamp = us_ticker_read();
158166

159-
TEST_ASSERT(
160-
compare_timestamps(us_to_ticks(sleep_mode_delta_us, ticker_freq), ticker_width, next_match_timestamp,
161-
wakeup_timestamp));
167+
sprintf(info, "Delta ticks: %u, Ticker width: %u, Expected wake up tick: %d, Actual wake up tick: %d, delay ticks: %d, wake up after ticks: %d",
168+
us_to_ticks(sleep_mode_delta_us, ticker_freq), ticker_width, next_match_timestamp, wakeup_timestamp, us_to_ticks(i, ticker_freq) , wakeup_timestamp - start_timestamp);
169+
170+
TEST_ASSERT_MESSAGE(compare_timestamps(us_to_ticks(sleep_mode_delta_us, ticker_freq),
171+
ticker_width, next_match_timestamp, wakeup_timestamp), info);
162172
}
163173

164174
set_us_ticker_irq_handler(us_ticker_irq_handler_org);
@@ -189,15 +199,20 @@ void deepsleep_lpticker_test()
189199
/* Testing wake-up time 10 ms. */
190200
for (timestamp_t i = 20000; i < 200000; i += 20000) {
191201
/* note: lp_ticker_read() operates on ticks. */
192-
const timestamp_t next_match_timestamp = overflow_protect(lp_ticker_read() + us_to_ticks(i, ticker_freq), ticker_width);
202+
const timestamp_t start_timestamp = lp_ticker_read();
203+
const timestamp_t next_match_timestamp = overflow_protect(start_timestamp + us_to_ticks(i, ticker_freq), ticker_width);
193204

194205
lp_ticker_set_interrupt(next_match_timestamp);
195206

196207
sleep();
197208

198209
const timestamp_t wakeup_timestamp = lp_ticker_read();
199210

200-
TEST_ASSERT(compare_timestamps(us_to_ticks(deepsleep_mode_delta_us, ticker_freq), ticker_width, next_match_timestamp, wakeup_timestamp));
211+
sprintf(info, "Delta ticks: %u, Ticker width: %u, Expected wake up tick: %d, Actual wake up tick: %d, delay ticks: %d, wake up after ticks: %d",
212+
us_to_ticks(deepsleep_mode_delta_us, ticker_freq), ticker_width, next_match_timestamp, wakeup_timestamp, us_to_ticks(i, ticker_freq) , wakeup_timestamp - start_timestamp);
213+
214+
TEST_ASSERT_MESSAGE(compare_timestamps(us_to_ticks(deepsleep_mode_delta_us, ticker_freq), ticker_width,
215+
next_match_timestamp, wakeup_timestamp), info);
201216
}
202217

203218
set_lp_ticker_irq_handler(lp_ticker_irq_handler_org);
@@ -240,8 +255,12 @@ void deepsleep_high_speed_clocks_turned_off_test()
240255

241256
TEST_ASSERT_UINT32_WITHIN(1000, 0, ticks_to_us(us_ticks_diff, us_ticker_freq));
242257

258+
sprintf(info, "Delta ticks: %u, Ticker width: %u, Expected wake up tick: %d, Actual wake up tick: %d",
259+
us_to_ticks(deepsleep_mode_delta_us, lp_ticker_freq), lp_ticker_width, wakeup_time, lp_ticks_after_sleep);
260+
243261
/* Check if we have woken-up after expected time. */
244-
TEST_ASSERT(compare_timestamps(us_to_ticks(deepsleep_mode_delta_us, lp_ticker_freq), lp_ticker_width, wakeup_time, lp_ticks_after_sleep));
262+
TEST_ASSERT_MESSAGE(compare_timestamps(us_to_ticks(deepsleep_mode_delta_us, lp_ticker_freq), lp_ticker_width,
263+
wakeup_time, lp_ticks_after_sleep), info);
245264
}
246265

247266
#endif

0 commit comments

Comments
 (0)