bl_iot_sdk/customer_app/bl602_demo_wifi/tests/bl602_demo_wifi_sta_ap_tc_test.py
2020-10-26 20:35:25 +08:00

80 lines
2.8 KiB
Python

from __future__ import print_function
from __future__ import unicode_literals
import time
import re
import os
from tiny_test_fw import DUT, App, TinyFW
from ttfw_bl import BL602App, BL602DUT
@TinyFW.test_method(app=BL602App.BL602App, dut=BL602DUT.BL602TyMbDUT, test_suite_name='bl602_demo_wifi_sta_ap_tc')
def bl602_demo_wifi_sta_ap_tc(env, extra_data):
# first, flash dut
# then, test
dut = env.get_dut("port0", "fake app path")
print('Flashing app')
dut.flash_app(env.log_path, env.get_variable('flash'))
print('Starting app')
dut.start_app()
try:
dut.expect("Booting BL602 Chip...", timeout=0.5)
print('BL602 booted')
dut.expect('Init CLI with event Driven', timeout=0.5)
print('BL602 CLI init done')
time.sleep(0.1)
for i in range(2):
print('To reboot BL602')
dut.write('reboot')
dut.expect("Booting BL602 Chip...", timeout=0.5)
print('BL602 rebooted')
time.sleep(0.2)
dut.write('stack_wifi')
time.sleep(0.5)
dut.write('wifi_scan')
list_all = dut.expect(re.compile(r"cached scan list([\s\S]*?)-----"), timeout=20)
regexp_str = "channel (\d+)(.*)ppm(.*)SSID"
#channel 01, bssid B0:95:8E:D3:48:44, rssi -61, ppm abs:rel -4 : -4, auth WPA/WPA2-PSK SSID bl_test_011
bssid = os.getenv('TEST_ROUTER_SSID')
str_string = (regexp_str, bssid)
search_str = " ".join(str_string)
rst = re.search(search_str, list_all[0])
channel = rst.group(1)
#wifi_ap_start
if i == 0:
ap_cmd = ("wifi_ap_start", channel)
else:
if 11 - int(channel) >= 5:
ap_cmd = ("wifi_ap_start", "11")
print("set ap in channel 11")
else:
ap_cmd = ("wifi_ap_start", "1")
print("set ap in channel 1")
start_ap_cmd = ' '.join(ap_cmd)
dut.write(start_ap_cmd)
ap_ssid = dut.expect(re.compile(r"\[WF\]\[SM\] start AP with ssid (.+);"), timeout=2)
print('Started AP with SSID: {}'.format(ap_ssid[0]))
#wifi_sta_connect
bssid = os.getenv('TEST_ROUTER_SSID')
pwd = os.getenv('TEST_ROUTER_PASSWORD')
cmd = ("wifi_sta_connect", bssid, pwd)
cmd_wifi_connect = ' '.join(cmd)
dut.write(cmd_wifi_connect)
dut.expect("Entering wifiConnected_IPOK state", timeout=20)
time.sleep(30)
dut.write('wifi_state')
dut.expect("wifi state with ap connected ip got", timeout=1)
dut.halt()
except DUT.ExpectTimeout:
print('ENV_TEST_FAILURE: BL602 wifi test failed')
raise
if __name__ == '__main__':
bl602_demo_wifi_sta_ap_tc()