diff --git a/application/samples/wifi/ohos_connect/hilink_adapt/product/device_profile.h b/application/samples/wifi/ohos_connect/hilink_adapt/product/device_profile.h index 25b0278..98559d8 100755 --- a/application/samples/wifi/ohos_connect/hilink_adapt/product/device_profile.h +++ b/application/samples/wifi/ohos_connect/hilink_adapt/product/device_profile.h @@ -30,7 +30,7 @@ extern "C" { #define DEVICE_HIVERSION "1.0.0" /* 设备固件版本号 */ -#define FIRMWARE_VER "1.0.5" +#define FIRMWARE_VER "1.0.6" /* 设备硬件版本号 */ #define HARDWARE_VER "1.0.0" /* 设备软件版本号 */ diff --git a/application/ws63/user_main/switch_panel/switch_panel.h b/application/ws63/user_main/switch_panel/switch_panel.h index 40efd3e..0233180 100644 --- a/application/ws63/user_main/switch_panel/switch_panel.h +++ b/application/ws63/user_main/switch_panel/switch_panel.h @@ -284,6 +284,7 @@ void panel_led_blink(void); // 产测相关函数 void enter_factory_test_mode(void); +void exit_factory_test_mode(void); void factory_test_sequence(void); bool check_factory_test_wifi(int32_t rssi_threshold); int factory_test_monitor_task(void *arg); diff --git a/application/ws63/user_main/switch_panel/switch_panel_config.c b/application/ws63/user_main/switch_panel/switch_panel_config.c index a46bf67..7ca37f4 100644 --- a/application/ws63/user_main/switch_panel/switch_panel_config.c +++ b/application/ws63/user_main/switch_panel/switch_panel_config.c @@ -329,19 +329,25 @@ void enter_factory_test_mode(void) { g_factory_test_start_time = hfsys_get_time(); } -// 产测序列 -void factory_test_sequence(void) { - e_printf("开始产测序列\r\n"); +// 退出产测模式 +void exit_factory_test_mode(void) { + e_printf("退出产测模式\r\n"); - // 步骤1: 开始指示 - 交替闪烁白黄灯500ms - for (int i = 0; i < 6; i++) { - for (int j = 0; j < SWITCH_COUNT; j++) { - set_led_output(j, (i % 2) ? LED_WHITE : LED_YELLOW); - } - osal_msleep(500); - } + // 停止产测循环 + g_factory_test_running = false; - // 步骤2-5: 单个开关测试 (开1->4, 每个1.5秒) + // 更新设备模式 + set_device_mode(MODE_NORMAL); + + // 恢复设备默认状态 + sync_hardware_state(); + + e_printf("已退出产测模式\r\n"); +} + +// 单轮开关测试序列:开1->开2->开3->开4->全关->全开->全关 +static void switch_test_cycle(void) { + // 步骤1-4: 单个开关测试 (开1->4, 每个1.5秒) for (int switch_id = 0; switch_id < SWITCH_COUNT; switch_id++) { e_printf("测试开关%d\r\n", switch_id + 1); @@ -359,7 +365,7 @@ void factory_test_sequence(void) { osal_msleep(1500); } - // 步骤6: 全关 (1.5秒) + // 步骤5: 全关 (1.5秒) e_printf("测试全关\r\n"); for (int i = 0; i < SWITCH_COUNT; i++) { set_switch_output(i, false); @@ -367,7 +373,7 @@ void factory_test_sequence(void) { } osal_msleep(1500); - // 步骤7: 全开 (1.5秒) + // 步骤6: 全开 (1.5秒) e_printf("测试全开\r\n"); for (int i = 0; i < SWITCH_COUNT; i++) { set_switch_output(i, true); @@ -375,44 +381,79 @@ void factory_test_sequence(void) { } osal_msleep(1500); - // 步骤8: 再次全关 - e_printf("结束测试 - 全关\r\n"); + // 步骤7: 再次全关 (1.5秒) + e_printf("结束本轮测试 - 全关\r\n"); for (int i = 0; i < SWITCH_COUNT; i++) { set_switch_output(i, false); set_led_output(i, LED_YELLOW); } - osal_msleep(1500); - // 步骤9: 检查WiFi信号强度 - for (int i = 0; i < SWITCH_COUNT; i++) { - set_led_output(i, LED_WHITE); - } - bool wifi_test_pass = check_factory_test_wifi(FACTORY_TEST_RSSI_THRESHOLD); +} - // 显示最终结果 - if (wifi_test_pass) { - e_printf("产测全部通过\r\n"); - // 所有开关开启表示通过 - for (int i = 0; i < SWITCH_COUNT; i++) { - set_switch_output(i, false); - set_led_output(i, LED_YELLOW); - } - } else { - e_printf("产测失败\r\n"); - // 所有开关关闭表示失败 - for (int i = 0; i < SWITCH_COUNT; i++) { - set_led_output(i, LED_YELLOW); - } +// 产测序列 +void factory_test_sequence(void) { + e_printf("开始产测序列\r\n"); + + // 步骤1: 进入产测后所有指示灯全亮(白灯) + e_printf("步骤1: 进入产测模式,所有指示灯全亮\r\n"); + for (int i = 0; i < SWITCH_COUNT; i++) { + set_led_output(i, LED_WHITE); // 所有灯白灯表示进入产测模式 } - // 产测完成,返回正常模式 - g_factory_test_running = false; - set_device_mode(MODE_NORMAL); + // 步骤2: 校验WiFi信号强度 + e_printf("步骤2: 校验WiFi信号强度\r\n"); + bool wifi_test_pass = check_factory_test_wifi(FACTORY_TEST_RSSI_THRESHOLD); - // 恢复设备默认状态 - sync_hardware_state(); + if (!wifi_test_pass) { + e_printf("WiFi信号强度测试失败,指示灯保持全亮,停留在产测模式\r\n"); + // WiFi测试失败,指示灯保持全亮(白灯),停留在产测模式方便测试人员观察 + wifi_unregister_event_cb(&wifi_event_cb); + e_printf("产测序列完成(WiFi测试失败),停留在产测模式\r\n"); + + // 停留在产测模式,不退出,方便测试人员观察状态 + while (g_factory_test_running) { + osal_msleep(1000); // 每秒检查一次 + } + return; + } + + e_printf("WiFi信号强度测试通过,指示灯灭灯,开始开关老化测试\r\n"); + + // 步骤3: WiFi测试通过,所有指示灯灭灯(黄灯) + for (int i = 0; i < SWITCH_COUNT; i++) { + set_led_output(i, LED_YELLOW); // WiFi测试通过,指示灯灭灯(黄灯) + } + + // 步骤4: 直接开始循环进行开关测试,用于老化测试 + e_printf("开始循环开关老化测试...\r\n"); + uint32_t cycle_count = 0; + + while (g_factory_test_running) { + cycle_count++; + e_printf("=== 开关测试循环 第%d轮 ===\r\n", cycle_count); + + // 执行一轮开关测试 + switch_test_cycle(); + + // 每100轮输出一次统计信息 + if (cycle_count % 100 == 0) { + e_printf("已完成%d轮开关老化测试\r\n", cycle_count); + } + + // 防止过度消耗CPU,可以在这里添加短暂延时 + // osal_msleep(10); + } + + e_printf("开关老化测试结束,共完成%d轮\r\n", cycle_count); + + // 停留在产测模式,不退出,方便测试人员观察状态 wifi_unregister_event_cb(&wifi_event_cb); - e_printf("产测序列完成\r\n"); + e_printf("产测序列完成,停留在产测模式\r\n"); + + // 停留在产测模式,等待手动退出 + while (g_factory_test_running) { + osal_msleep(1000); // 每秒检查一次 + } } // 检查产测热点 diff --git a/output/LPT262_hilink-SR_Switch-20250811-1.0.6.fwpkg b/output/LPT262_hilink-SR_Switch-20250811-1.0.6.fwpkg new file mode 100644 index 0000000..b80345c Binary files /dev/null and b/output/LPT262_hilink-SR_Switch-20250811-1.0.6.fwpkg differ diff --git a/output/package(SR_Switch-LPT262_hilink-20250811-1.0.6).zip b/output/package(SR_Switch-LPT262_hilink-20250811-1.0.6).zip new file mode 100644 index 0000000..9f7ca1d Binary files /dev/null and b/output/package(SR_Switch-LPT262_hilink-20250811-1.0.6).zip differ