Skip to content

Commit

Permalink
Merge pull request #3017 from bridadan/wait-before-deepsleep-test
Browse files Browse the repository at this point in the history
[tests] Waiting before call to deepsleep to allow buffers to flush
  • Loading branch information
sg- authored Oct 19, 2016
2 parents 2ae7177 + 9a4aeec commit 64c527e
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 4 deletions.
14 changes: 12 additions & 2 deletions TESTS/mbed_drivers/lp_timeout/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -43,8 +43,18 @@ void lp_timeout_1s_deepsleep(void)
{
complete = false;

/*
* We use here lp_ticker_read() instead of us_ticker_read() for start and
/*
* Since deepsleep() may shut down the UART peripheral, we wait for 10ms
* to allow for hardware serial buffers to completely flush.
* This should be replaced with a better function that checks if the
* hardware buffers are empty. However, such an API does not exist now,
* so we'll use the wait_ms() function for now.
*/
wait_ms(10);

/*
* We use here lp_ticker_read() instead of us_ticker_read() for start and
* end because the microseconds timer might be disable during deepsleep.
*/
timestamp_t start = lp_ticker_read();
Expand Down
14 changes: 12 additions & 2 deletions TESTS/mbed_hal/lp_ticker/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -65,12 +65,22 @@ void lp_ticker_1s_deepsleep()
complete = false;
uint32_t delay_ts;

/*
* Since deepsleep() may shut down the UART peripheral, we wait for 10ms
* to allow for hardware serial buffers to completely flush.
* This should be replaced with a better function that checks if the
* hardware buffers are empty. However, such an API does not exist now,
* so we'll use the wait_ms() function for now.
*/
wait_ms(10);

ticker_set_handler(lp_ticker_data, cb_done);
ticker_remove_event(lp_ticker_data, &delay_event);
delay_ts = lp_ticker_read() + 1000000;

/*
* We use here lp_ticker_read() instead of us_ticker_read() for start and
/*
* We use here lp_ticker_read() instead of us_ticker_read() for start and
* end because the microseconds timer might be disable during deepsleep.
*/
timestamp_t start = lp_ticker_read();
Expand Down

0 comments on commit 64c527e

Please sign in to comment.