修改产测逻辑。循环进行测试,先进行wifi测试,再进行开关的测试。开关管测试循环进行
This commit is contained in:
@ -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"
|
||||
/* 设备软件版本号 */
|
||||
|
@ -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);
|
||||
|
@ -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); // 每秒检查一次
|
||||
}
|
||||
}
|
||||
|
||||
// 检查产测热点
|
||||
|
BIN
output/LPT262_hilink-SR_Switch-20250811-1.0.6.fwpkg
Normal file
BIN
output/LPT262_hilink-SR_Switch-20250811-1.0.6.fwpkg
Normal file
Binary file not shown.
BIN
output/package(SR_Switch-LPT262_hilink-20250811-1.0.6).zip
Normal file
BIN
output/package(SR_Switch-LPT262_hilink-20250811-1.0.6).zip
Normal file
Binary file not shown.
Reference in New Issue
Block a user