Waiting before call to deepsleep to allow buffers to flush

pull/3017/head
Brian Daniels 2016-10-13 13:50:16 -05:00
parent 69c1319068
commit 9a4aeec1b2
2 changed files with 24 additions and 4 deletions

View File

@ -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();

View File

@ -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();