Skip to content

Commit 9416a32

Browse files
committed
Enlarge wait time for flushing serial buffer in Greentea test code
Original wait time is not enough for UART to flush out before deepsleep on some targets.
1 parent 443e37b commit 9416a32

File tree

1 file changed

+18
-2
lines changed

1 file changed

+18
-2
lines changed

TESTS/mbed_hal/sleep/main.cpp

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,22 @@
2828

2929
#define US_PER_S 1000000
3030

31+
/* Flush serial buffer before deep sleep
32+
*
33+
* Since deepsleep() may shut down the UART peripheral, we wait for some time
34+
* to allow for hardware serial buffers to completely flush.
35+
*
36+
* Take NUMAKER_PFM_NUC472 as an example:
37+
* Its UART peripheral has 16-byte Tx FIFO. With baud rate set to 9600, flush
38+
* Tx FIFO would take: 16 * 8 * 1000 / 9600 = 13.3 (ms). So set wait time to
39+
* 20ms here for safe.
40+
*
41+
* This should be replaced with a better function that checks if the
42+
* hardware buffers are empty. However, such an API does not exist now,
43+
* so we'll use the wait_ms() function for now.
44+
*/
45+
#define SERIAL_FLUSH_TIME_MS 20
46+
3147
using namespace utest::v1;
3248

3349
/* The following ticker frequencies are possible:
@@ -167,7 +183,7 @@ void deepsleep_lpticker_test()
167183
/* Give some time Green Tea to finish UART transmission before entering
168184
* deep-sleep mode.
169185
*/
170-
wait_ms(10);
186+
wait_ms(SERIAL_FLUSH_TIME_MS);
171187

172188
TEST_ASSERT_TRUE_MESSAGE(sleep_manager_can_deep_sleep(), "deep sleep should not be locked");
173189

@@ -202,7 +218,7 @@ void deepsleep_high_speed_clocks_turned_off_test()
202218
/* Give some time Green Tea to finish UART transmission before entering
203219
* deep-sleep mode.
204220
*/
205-
wait_ms(10);
221+
wait_ms(SERIAL_FLUSH_TIME_MS);
206222

207223
TEST_ASSERT_TRUE_MESSAGE(sleep_manager_can_deep_sleep(), "deep sleep should not be locked");
208224

0 commit comments

Comments
 (0)