mirror of
				https://github.com/espressif/esp-idf.git
				synced 2025-11-04 09:01:40 +01:00 
			
		
		
		
	* Modify the example on ESP32-S2 to print same output pattern as ESP32 * Add example test verification that "fast booting" (skipping of verification) is working
		
			
				
	
	
		
			66 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			66 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
from __future__ import unicode_literals
 | 
						|
 | 
						|
import re
 | 
						|
import time
 | 
						|
 | 
						|
import ttfw_idf
 | 
						|
 | 
						|
touch_wake_up_support = ['esp32', 'esp32s2']
 | 
						|
 | 
						|
 | 
						|
@ttfw_idf.idf_example_test(env_tag='Example_GENERIC', target=['esp32', 'esp32s2', 'esp32c3'])
 | 
						|
def test_examples_deep_sleep(env, extra_data):
 | 
						|
 | 
						|
    dut = env.get_dut('deep_sleep', 'examples/system/deep_sleep')
 | 
						|
    dut.start_app()
 | 
						|
 | 
						|
    def expect_enable_deep_sleep_touch():
 | 
						|
        # different targets configure different wake pin(s)
 | 
						|
        wake_pads = {
 | 
						|
            'esp32': [8,9],
 | 
						|
            'esp32s2': [9],
 | 
						|
        }[dut.TARGET]
 | 
						|
 | 
						|
        print('Expecting to see wakeup configured on pad(s): {}'.format(wake_pads))
 | 
						|
 | 
						|
        expect_items = ['Enabling timer wakeup, 20s']
 | 
						|
        for pad in wake_pads:
 | 
						|
            expect_items += [re.compile(r'Touch pad #{} average: \d+, wakeup threshold set to \d+.'.format(pad))]
 | 
						|
        expect_items += ['Enabling touch pad wakeup',
 | 
						|
                         'Entering deep sleep']
 | 
						|
 | 
						|
        dut.expect_all(*expect_items, timeout=10)
 | 
						|
 | 
						|
    def expect_enable_deep_sleep_no_touch():
 | 
						|
        dut.expect_all('Enabling timer wakeup, 20s',
 | 
						|
                       'Entering deep sleep',
 | 
						|
                       timeout=10)
 | 
						|
 | 
						|
    if dut.TARGET in touch_wake_up_support:
 | 
						|
        expect_enable_deep_sleep = expect_enable_deep_sleep_touch
 | 
						|
    else:
 | 
						|
        expect_enable_deep_sleep = expect_enable_deep_sleep_no_touch
 | 
						|
 | 
						|
    dut.expect('Not a deep sleep reset', timeout=30)
 | 
						|
    expect_enable_deep_sleep()
 | 
						|
 | 
						|
    start_sleep = time.time()
 | 
						|
    print('Waiting for wakeup...')
 | 
						|
    dut.expect('boot: ESP-IDF', timeout=30)  # first output that's the same on all chips
 | 
						|
 | 
						|
    sleep_time = time.time() - start_sleep
 | 
						|
    print('Host measured sleep time at {:.2f}s'.format(sleep_time))
 | 
						|
    assert 19 < sleep_time < 22  # note: high tolerance as measuring time on the host may have some timing skew
 | 
						|
 | 
						|
    # This line indicates that the CONFIG_BOOTLOADER_SKIP_VALIDATE_IN_DEEP_SLEEP option set in sdkconfig.defaults
 | 
						|
    # has correctly allowed skipping verification on wakeup
 | 
						|
    dut.expect('boot: Fast booting app from partition', timeout=2)
 | 
						|
 | 
						|
    # Check that it measured 2xxxxms in deep sleep, i.e at least 20 seconds:
 | 
						|
    dut.expect(re.compile(r'Wake up from timer. Time spent in deep sleep: 2\d{4}ms'), timeout=2)
 | 
						|
    expect_enable_deep_sleep()
 | 
						|
 | 
						|
 | 
						|
if __name__ == '__main__':
 | 
						|
    test_examples_deep_sleep()
 |