Skip to content

Commit

Permalink
Waiting before call to deepsleep to allow buffers to flush
Browse files Browse the repository at this point in the history
  • Loading branch information
bridadan committed Oct 13, 2016
1 parent 69c1319 commit 9a4aeec
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 9a4aeec

Please sign in to comment.