|
|
@@ -0,0 +1,98 @@
|
|
|
+import os
|
|
|
+import time
|
|
|
+
|
|
|
+from TCAction import TCActionBase
|
|
|
+from TCAction import PerformanceTCBase
|
|
|
+from NativeLog import NativeLog
|
|
|
+
|
|
|
+
|
|
|
+SOFTAP_SSID = "SoftAPSSID4NVSCompatibleTest"
|
|
|
+SOFTAP_PASSWORD = "SoftAPPassword4NVSCompatibleTest"
|
|
|
+
|
|
|
+NVS_FILE_NAME = "nvs_wifi.bin"
|
|
|
+
|
|
|
+
|
|
|
+class TestCase(PerformanceTCBase.PerformanceTCBase):
|
|
|
+
|
|
|
+ def __init__(self, test_case, test_env, timeout=30, log_path=TCActionBase.LOG_PATH):
|
|
|
+ PerformanceTCBase.PerformanceTCBase.__init__(self, test_case, test_env, timeout=timeout, log_path=log_path)
|
|
|
+ self.nvs_path = ""
|
|
|
+ # load param from excel
|
|
|
+ cmd_set = test_case["cmd set"]
|
|
|
+ for i in range(1, len(cmd_set)):
|
|
|
+ if cmd_set[i][0] != "dummy":
|
|
|
+ cmd_string = "self." + cmd_set[i][0]
|
|
|
+ exec cmd_string
|
|
|
+
|
|
|
+ def get_nvs_bins(self):
|
|
|
+ if os.path.exists(self.nvs_path) is False:
|
|
|
+ NativeLog.add_trace_critical("NVS path is not correct")
|
|
|
+ files = []
|
|
|
+ else:
|
|
|
+ files = [os.path.join(self.nvs_path, x) for x in os.listdir(self.nvs_path)]
|
|
|
+ return filter(lambda f: NVS_FILE_NAME in f, files)
|
|
|
+
|
|
|
+ def check_nvs(self, nvs_bin):
|
|
|
+ branch_name = os.path.basename(nvs_bin)
|
|
|
+ branch_name.replace("___", "/")
|
|
|
+ result = True
|
|
|
+
|
|
|
+ ssc1_port = self.test_env.get_port_by_name("SSC1")
|
|
|
+ ap_ssid = self.get_parameter("ap_ssid")
|
|
|
+
|
|
|
+ self.flush_data("SSC1")
|
|
|
+
|
|
|
+ # first download
|
|
|
+ ssc1_port.flash_nvs(nvs_bin)
|
|
|
+ self.check_response("SSC1", "ready!!!")
|
|
|
+ # set to sta mode and join ap
|
|
|
+ if self.check_response("SSC1", "+JAP:CONNECTED,%s" % ap_ssid, timeout=15) is False:
|
|
|
+ NativeLog.add_trace_critical("Failed to join AP on: " + branch_name)
|
|
|
+ result = False
|
|
|
+
|
|
|
+ self.serial_write_line("SSC1", "op -Q")
|
|
|
+ if self.check_response("SSC1", "+CURMODE:3") is False:
|
|
|
+ NativeLog.add_trace_critical("Failed on verifying WIFI mode on: " + branch_name)
|
|
|
+ result = False
|
|
|
+
|
|
|
+ self.serial_write_line("SSC1", "ap -Q")
|
|
|
+ if self.check_response("SSC1", "+APCONFIG:%s,%s" % (SOFTAP_SSID, SOFTAP_PASSWORD)) is False:
|
|
|
+ NativeLog.add_trace_critical("Failed on verifying SoftAP config on: " + branch_name)
|
|
|
+ result = False
|
|
|
+ return result
|
|
|
+
|
|
|
+ def dump_nvs(self):
|
|
|
+ ssc1_port = self.test_env.get_port_by_name("SSC1")
|
|
|
+ ap_ssid = self.get_parameter("ap_ssid")
|
|
|
+ ap_password = self.get_parameter("ap_password")
|
|
|
+
|
|
|
+ # first erase NVS
|
|
|
+ ssc1_port.flash_nvs(None)
|
|
|
+
|
|
|
+ self.check_response("SSC1", "ready!!!")
|
|
|
+
|
|
|
+ self.serial_write_line("SSC1", "op -S -o 3")
|
|
|
+ self.check_response("SSC1", "+MODE:OK")
|
|
|
+ self.serial_write_line("SSC1", "sta -C -s %s -p %s" % (ap_ssid, ap_password))
|
|
|
+ self.check_response("SSC1", "+JAP:CONNECTED,%s" % ap_ssid, timeout=20)
|
|
|
+ self.serial_write_line("SSC1", "ap -S -s %s -p %s -t 3" % (SOFTAP_SSID, SOFTAP_PASSWORD))
|
|
|
+ self.check_response("SSC1", "+SAP:OK")
|
|
|
+ time.sleep(1)
|
|
|
+
|
|
|
+ idf_path = os.getenv("IDF_PATH")
|
|
|
+
|
|
|
+ ssc1_port.dump_nvs(os.path.join(idf_path, NVS_FILE_NAME))
|
|
|
+
|
|
|
+ def cleanup(self):
|
|
|
+ # make sure dump nvs will be executed
|
|
|
+ self.dump_nvs()
|
|
|
+
|
|
|
+ def process(self):
|
|
|
+ result = True
|
|
|
+ nvs_bins = self.get_nvs_bins()
|
|
|
+
|
|
|
+ for nvs_bin in nvs_bins:
|
|
|
+ result = result and self.check_nvs(nvs_bin)
|
|
|
+
|
|
|
+ if result is True:
|
|
|
+ self.set_result("Succeed")
|