Skip to content

Commit ea73207

Browse files
author
Cruz Monrreal
authored
Merge pull request #7288 from OpenNuvoton/nuvoton_fix_greentea_wakeup
Fix Greentea test code with wakeup from deepsleep
2 parents 443e37b + 9416a32 commit ea73207

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)