mirror of https://github.com/ARMmbed/mbed-os.git
				
				
				
			Merge pull request #12519 from mprse/sleepmanaget_test_fix
tests-mbed_hal-sleep_manager: fix counter wraparound handlingpull/12526/head
						commit
						981691f95f
					
				| 
						 | 
				
			
			@ -141,7 +141,7 @@ void test_sleep_auto()
 | 
			
		|||
    const ticker_info_t *lp_ticker_info = get_lp_ticker_data()->interface->get_info();
 | 
			
		||||
    const unsigned lp_ticker_mask = ((1 << lp_ticker_info->bits) - 1);
 | 
			
		||||
    const ticker_irq_handler_type lp_ticker_irq_handler_org = set_lp_ticker_irq_handler(lp_ticker_isr);
 | 
			
		||||
    us_timestamp_t us_ts1, us_ts2, lp_ts1, lp_ts2, us_diff1, us_diff2, lp_diff1, lp_diff2;
 | 
			
		||||
    uint32_t us_ts1, us_ts2, lp_ts1, lp_ts2, us_diff1, us_diff2, lp_diff1, lp_diff2;
 | 
			
		||||
 | 
			
		||||
    /*  Let's avoid the Lp ticker wrap-around case */
 | 
			
		||||
    wraparound_lp_protect();
 | 
			
		||||
| 
						 | 
				
			
			@ -155,14 +155,16 @@ void test_sleep_auto()
 | 
			
		|||
 | 
			
		||||
    sleep_manager_lock_deep_sleep();
 | 
			
		||||
 | 
			
		||||
    us_ts1 = ticks_to_us(us_ticker_read(), us_ticker_info->frequency);
 | 
			
		||||
    lp_ts1 = ticks_to_us(lp_ticker_read(), lp_ticker_info->frequency);
 | 
			
		||||
    us_ts1 = us_ticker_read();
 | 
			
		||||
    lp_ts1 = lp_ticker_read();
 | 
			
		||||
 | 
			
		||||
    sleep_manager_sleep_auto();
 | 
			
		||||
    us_ts2 = ticks_to_us(us_ticker_read(), us_ticker_info->frequency);
 | 
			
		||||
    us_diff1 = (us_ts1 <= us_ts2) ? (us_ts2 - us_ts1) : (us_ticker_mask - us_ts1 + us_ts2 + 1);
 | 
			
		||||
    lp_ts2 = ticks_to_us(lp_ticker_read(), lp_ticker_info->frequency);
 | 
			
		||||
    lp_diff1 = (lp_ts1 <= lp_ts2) ? (lp_ts2 - lp_ts1) : (lp_ticker_mask - lp_ts1 + lp_ts2 + 1);
 | 
			
		||||
 | 
			
		||||
    us_ts2 = us_ticker_read();
 | 
			
		||||
    lp_ts2 = lp_ticker_read();
 | 
			
		||||
 | 
			
		||||
    us_diff1 = ticks_to_us((us_ts1 <= us_ts2) ? (us_ts2 - us_ts1) : (us_ticker_mask - us_ts1 + us_ts2 + 1), us_ticker_info->frequency);
 | 
			
		||||
    lp_diff1 = ticks_to_us((lp_ts1 <= lp_ts2) ? (lp_ts2 - lp_ts1) : (lp_ticker_mask - lp_ts1 + lp_ts2 + 1), lp_ticker_info->frequency);
 | 
			
		||||
 | 
			
		||||
    // Deep sleep locked -- ordinary sleep mode used:
 | 
			
		||||
    // * us_ticker powered ON,
 | 
			
		||||
| 
						 | 
				
			
			@ -190,15 +192,16 @@ void test_sleep_auto()
 | 
			
		|||
     * set and forbid deep_sleep during that period. Let this period pass  */
 | 
			
		||||
    TEST_ASSERT_TRUE(sleep_manager_can_deep_sleep_test_check());
 | 
			
		||||
 | 
			
		||||
    us_ts1 = ticks_to_us(us_ticker_read(), us_ticker_info->frequency);
 | 
			
		||||
    lp_ts1 = ticks_to_us(lp_ticker_read(), lp_ticker_info->frequency);
 | 
			
		||||
    us_ts1 = us_ticker_read();
 | 
			
		||||
    lp_ts1 = lp_ticker_read();
 | 
			
		||||
 | 
			
		||||
    sleep_manager_sleep_auto();
 | 
			
		||||
 | 
			
		||||
    us_ts2 = ticks_to_us(us_ticker_read(), us_ticker_info->frequency);
 | 
			
		||||
    us_diff2 = (us_ts1 <= us_ts2) ? (us_ts2 - us_ts1) : (us_ticker_mask - us_ts1 + us_ts2 + 1);
 | 
			
		||||
    lp_ts2 = ticks_to_us(lp_ticker_read(), lp_ticker_info->frequency);
 | 
			
		||||
    lp_diff2 = (lp_ts1 <= lp_ts2) ? (lp_ts2 - lp_ts1) : (lp_ticker_mask - lp_ts1 + lp_ts2 + 1);
 | 
			
		||||
    us_ts2 = us_ticker_read();
 | 
			
		||||
    lp_ts2 = lp_ticker_read();
 | 
			
		||||
 | 
			
		||||
    us_diff2 = ticks_to_us((us_ts1 <= us_ts2) ? (us_ts2 - us_ts1) : (us_ticker_mask - us_ts1 + us_ts2 + 1), us_ticker_info->frequency);
 | 
			
		||||
    lp_diff2 = ticks_to_us((lp_ts1 <= lp_ts2) ? (lp_ts2 - lp_ts1) : (lp_ticker_mask - lp_ts1 + lp_ts2 + 1), lp_ticker_info->frequency);
 | 
			
		||||
 | 
			
		||||
    // Deep sleep unlocked -- deep sleep mode used:
 | 
			
		||||
    // * us_ticker powered OFF,
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue