修改产测逻辑。循环进行测试,先进行wifi测试,再进行开关的测试。开关管测试循环进行

This commit is contained in:
2025-08-11 22:44:03 +08:00
parent 0a4e83dad7
commit e6fc092d3a
5 changed files with 84 additions and 42 deletions

View File

@ -30,7 +30,7 @@ extern "C" {
#define DEVICE_HIVERSION "1.0.0" #define DEVICE_HIVERSION "1.0.0"
/* 设备固件版本号 */ /* 设备固件版本号 */
#define FIRMWARE_VER "1.0.5" #define FIRMWARE_VER "1.0.6"
/* 设备硬件版本号 */ /* 设备硬件版本号 */
#define HARDWARE_VER "1.0.0" #define HARDWARE_VER "1.0.0"
/* 设备软件版本号 */ /* 设备软件版本号 */

View File

@ -284,6 +284,7 @@ void panel_led_blink(void);
// 产测相关函数 // 产测相关函数
void enter_factory_test_mode(void); void enter_factory_test_mode(void);
void exit_factory_test_mode(void);
void factory_test_sequence(void); void factory_test_sequence(void);
bool check_factory_test_wifi(int32_t rssi_threshold); bool check_factory_test_wifi(int32_t rssi_threshold);
int factory_test_monitor_task(void *arg); int factory_test_monitor_task(void *arg);

View File

@ -329,19 +329,25 @@ void enter_factory_test_mode(void) {
g_factory_test_start_time = hfsys_get_time(); g_factory_test_start_time = hfsys_get_time();
} }
// 产测序列 // 退出产测模式
void factory_test_sequence(void) { void exit_factory_test_mode(void) {
e_printf("开始产测序列\r\n"); e_printf("退出产测模式\r\n");
// 步骤1: 开始指示 - 交替闪烁白黄灯500ms // 停止产测循环
for (int i = 0; i < 6; i++) { g_factory_test_running = false;
for (int j = 0; j < SWITCH_COUNT; j++) {
set_led_output(j, (i % 2) ? LED_WHITE : LED_YELLOW);
}
osal_msleep(500);
}
// 步骤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++) { for (int switch_id = 0; switch_id < SWITCH_COUNT; switch_id++) {
e_printf("测试开关%d\r\n", switch_id + 1); e_printf("测试开关%d\r\n", switch_id + 1);
@ -359,7 +365,7 @@ void factory_test_sequence(void) {
osal_msleep(1500); osal_msleep(1500);
} }
// 步骤6: 全关 (1.5秒) // 步骤5: 全关 (1.5秒)
e_printf("测试全关\r\n"); e_printf("测试全关\r\n");
for (int i = 0; i < SWITCH_COUNT; i++) { for (int i = 0; i < SWITCH_COUNT; i++) {
set_switch_output(i, false); set_switch_output(i, false);
@ -367,7 +373,7 @@ void factory_test_sequence(void) {
} }
osal_msleep(1500); osal_msleep(1500);
// 步骤7: 全开 (1.5秒) // 步骤6: 全开 (1.5秒)
e_printf("测试全开\r\n"); e_printf("测试全开\r\n");
for (int i = 0; i < SWITCH_COUNT; i++) { for (int i = 0; i < SWITCH_COUNT; i++) {
set_switch_output(i, true); set_switch_output(i, true);
@ -375,44 +381,79 @@ void factory_test_sequence(void) {
} }
osal_msleep(1500); osal_msleep(1500);
// 步骤8: 再次全关 // 步骤7: 再次全关 (1.5秒)
e_printf("结束测试 - 全关\r\n"); e_printf("结束本轮测试 - 全关\r\n");
for (int i = 0; i < SWITCH_COUNT; i++) { for (int i = 0; i < SWITCH_COUNT; i++) {
set_switch_output(i, false); set_switch_output(i, false);
set_led_output(i, LED_YELLOW); set_led_output(i, LED_YELLOW);
} }
osal_msleep(1500); 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) { void factory_test_sequence(void) {
e_printf("产测全部通过\r\n"); e_printf("开始产测序列\r\n");
// 所有开关开启表示通过
for (int i = 0; i < SWITCH_COUNT; i++) { // 步骤1: 进入产测后所有指示灯全亮(白灯)
set_switch_output(i, false); e_printf("步骤1: 进入产测模式,所有指示灯全亮\r\n");
set_led_output(i, LED_YELLOW); for (int i = 0; i < SWITCH_COUNT; i++) {
} set_led_output(i, LED_WHITE); // 所有灯白灯表示进入产测模式
} else {
e_printf("产测失败\r\n");
// 所有开关关闭表示失败
for (int i = 0; i < SWITCH_COUNT; i++) {
set_led_output(i, LED_YELLOW);
}
} }
// 产测完成,返回正常模式 // 步骤2: 校验WiFi信号强度
g_factory_test_running = false; e_printf("步骤2: 校验WiFi信号强度\r\n");
set_device_mode(MODE_NORMAL); bool wifi_test_pass = check_factory_test_wifi(FACTORY_TEST_RSSI_THRESHOLD);
// 恢复设备默认状态 if (!wifi_test_pass) {
sync_hardware_state(); 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); wifi_unregister_event_cb(&wifi_event_cb);
e_printf("产测序列完成\r\n"); e_printf("产测序列完成,停留在产测模式\r\n");
// 停留在产测模式,等待手动退出
while (g_factory_test_running) {
osal_msleep(1000); // 每秒检查一次
}
} }
// 检查产测热点 // 检查产测热点

Binary file not shown.