| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192 |
- # SPDX-FileCopyrightText: 2021-2023 Espressif Systems (Shanghai) CO LTD
- # SPDX-License-Identifier: Apache-2.0
- import random
- import string
- from typing import Tuple
- import pexpect
- import pytest
- from pytest_embedded import Dut
- def run_phy_tsens_test(dut: Tuple[Dut, Dut]) -> None:
- ap_dut = dut[0]
- sta_dut = dut[1]
- ap_dut.write('tsens_init')
- sta_dut.write('tsens_init')
- ap_dut.expect('Enable temperature sensor')
- sta_dut.expect('Enable temperature sensor')
- ap_dut.write('wifi_init')
- sta_dut.write('wifi_init')
- ap_dut.expect('initialize_wifi DONE')
- sta_dut.expect('initialize_wifi DONE')
- # check tsens read after wifi_init
- for _dut in [ap_dut, sta_dut]:
- _dut.write('tsens_read')
- temp_val = _dut.expect(r'Temperature value ([\d.]+)[^\d.]')[1].decode()
- assert 0 < float(temp_val) < 70
- _dut.write('tsens_read')
- temp_val2 = _dut.expect(r'Temperature value ([\d.]+)[^\d.]')[1].decode()
- assert -5 < float(temp_val) - float(temp_val2) < 5
- # start tsens read background task
- for _dut in [ap_dut, sta_dut]:
- _dut.write('tsens_read -c 100 -i 1000') # 1000ms * 100
- temp_val = _dut.expect(r'Temperature value ([\d.]+)[^\d.]')[1].decode()
- assert 0 < float(temp_val) < 70
- # check wifi connect
- ssid = ''.join([random.choice(string.ascii_lowercase) for i in range(10)])
- password = ''.join([random.choice(string.ascii_lowercase) for i in range(10)])
- ap_dut.write(f'ap_set {ssid} {password}')
- ap_dut.expect('set ap config OK')
- sta_dut.write(f'sta_connect {ssid} {password}')
- sta_dut.expect('STA_GOT_IP')
- data = sta_dut.expect(pexpect.TIMEOUT, timeout=10).decode()
- assert 'DISCONNECT' not in data
- ap_dut.expect(pexpect.TIMEOUT, timeout=0.1) # clear data
- # check tsens read again after wifi connected
- for _dut in [ap_dut, sta_dut]:
- temp_val = _dut.expect(r'Temperature value ([\d.]+)[^\d.]')[1].decode()
- assert 0 < float(temp_val) < 70
- def run_phy_tsens_test_init_wifi_first(dut: Tuple[Dut, Dut]) -> None:
- ap_dut = dut[0]
- sta_dut = dut[1]
- ap_dut.write('tsens_init')
- sta_dut.write('tsens_init')
- ap_dut.expect('Enable temperature sensor')
- sta_dut.expect('Enable temperature sensor')
- ap_dut.write('wifi_init')
- sta_dut.write('wifi_init')
- ap_dut.expect('initialize_wifi DONE')
- sta_dut.expect('initialize_wifi DONE')
- # check tsens read after wifi_init
- for _dut in [ap_dut, sta_dut]:
- _dut.write('tsens_read')
- temp_val = _dut.expect(r'Temperature value ([\d.]+)[^\d.]')[1].decode()
- assert 0 < float(temp_val) < 70
- _dut.write('tsens_read')
- temp_val2 = _dut.expect(r'Temperature value ([\d.]+)[^\d.]')[1].decode()
- assert -5 < float(temp_val) - float(temp_val2) < 5
- # start tsens read background task
- for _dut in [ap_dut, sta_dut]:
- _dut.write('tsens_read -c 100 -i 1000') # 1000ms * 100
- temp_val = _dut.expect(r'Temperature value ([\d.]+)[^\d.]')[1].decode()
- assert 0 < float(temp_val) < 70
- # check wifi connect
- ssid = ''.join([random.choice(string.ascii_lowercase) for i in range(10)])
- password = ''.join([random.choice(string.ascii_lowercase) for i in range(10)])
- ap_dut.write(f'ap_set {ssid} {password}')
- ap_dut.expect('set ap config OK')
- sta_dut.write(f'sta_connect {ssid} {password}')
- sta_dut.expect('STA_GOT_IP')
- data = sta_dut.expect(pexpect.TIMEOUT, timeout=10).decode()
- assert 'DISCONNECT' not in data
- ap_dut.expect(pexpect.TIMEOUT, timeout=0.1) # clear data
- # check tsens read again after wifi connected
- for _dut in [ap_dut, sta_dut]:
- temp_val = _dut.expect(r'Temperature value ([\d.]+)[^\d.]')[1].decode()
- assert 0 < float(temp_val) < 70
- def run_phy_tsens_test_with_light_sleep(dut: Tuple[Dut, Dut]) -> None:
- ap_dut = dut[0]
- sta_dut = dut[1]
- ap_dut.write('wifi_init')
- sta_dut.write('wifi_init')
- ap_dut.expect('initialize_wifi DONE')
- sta_dut.expect('initialize_wifi DONE')
- ap_dut.write('tsens_init')
- sta_dut.write('tsens_init')
- ap_dut.expect('Enable temperature sensor')
- sta_dut.expect('Enable temperature sensor')
- # start tsens read background task
- for _dut in [ap_dut, sta_dut]:
- _dut.write('tsens_read -c 100 -i 1000') # 1000ms * 100
- temp_val = _dut.expect(r'Temperature value ([\d.]+)[^\d.]')[1].decode()
- assert 0 < float(temp_val) < 70
- # check wifi connect
- ssid = ''.join([random.choice(string.ascii_lowercase) for i in range(10)])
- password = ''.join([random.choice(string.ascii_lowercase) for i in range(10)])
- ap_dut.write(f'ap_set {ssid} {password}')
- ap_dut.expect('set ap config OK')
- sta_dut.write(f'sta_connect {ssid} {password}')
- sta_dut.expect('STA_GOT_IP')
- sta_dut.write('light_sleep enable')
- data = sta_dut.expect(pexpect.TIMEOUT, timeout=30).decode(errors='ignore')
- assert 'DISCONNECT' not in data
- assert 'LIGHT_SLEEP_ENABLED,OK' in data
- ap_dut.expect(pexpect.TIMEOUT, timeout=0.1) # clear data
- # check tsens read again after wifi connected
- for _dut in [ap_dut, sta_dut]:
- temp_val = _dut.expect(r'Temperature value ([\d.]+)[^\d.]')[1].decode()
- assert 0 < float(temp_val) < 70
- @pytest.mark.esp32c3
- @pytest.mark.esp32c6
- @pytest.mark.esp32s2
- @pytest.mark.esp32s3
- @pytest.mark.wifi_two_dut
- @pytest.mark.parametrize('count', [2], indirect=True)
- def test_phy_tsens_coexist(dut: Tuple[Dut, Dut]) -> None:
- for _dut in dut:
- _dut.expect('esp>')
- run_phy_tsens_test(dut)
- for _dut in dut:
- _dut.write('restart')
- _dut.expect('boot:')
- _dut.expect('esp>')
- run_phy_tsens_test_init_wifi_first(dut)
- for _dut in dut:
- _dut.write('restart')
- _dut.expect('boot:')
- _dut.expect('esp>')
- run_phy_tsens_test_with_light_sleep(dut)
- @pytest.mark.esp32c2
- @pytest.mark.wifi_two_dut
- @pytest.mark.xtal_26mhz
- @pytest.mark.parametrize(
- 'count, config, baud',
- [
- (2, 'c2_xtal26m', '74880'),
- ],
- indirect=True,
- )
- def test_phy_tsens_coexist_c2_xtal26m(dut: Tuple[Dut, Dut]) -> None:
- for _dut in dut:
- _dut.expect('esp>')
- run_phy_tsens_test(dut)
- for _dut in dut:
- _dut.write('restart')
- _dut.expect('boot:')
- _dut.expect('esp>')
- run_phy_tsens_test_init_wifi_first(dut)
- for _dut in dut:
- _dut.write('restart')
- _dut.expect('boot:')
- _dut.expect('esp>')
- run_phy_tsens_test_with_light_sleep(dut)
|