char path[40] = {0};
uint16_t delay_time = 1500;
- if(factory_test_flag)
+ if(factory_test_flag == 1)
{
snprintf(path, 40, "/user/res/music/FactoryMode.mp3");
delay_time = 2000;
//snprintf(path, 40, "/user/res/music/PowerOn.mp3");
uapi_custom_set_uart_rx_enable_flag(false);
}
-
custom_play_audio(path,100);
LOS_Msleep(delay_time);
custom_stop_play_audio();
printf("key3_enter_ppp_testView_callback error, ret = %d\n", ret);
else
printf("key3_enter_ppp_testView_callback succed\n");
+
+
+ if(factory_test_flag == 2)
+ {
+ custom_aging_test_init();
+ }
+
#endif
}
"/user/app_store",//应用市场安装包文件
"/user/app",//应用文件解压文件
"/user/alipay",//支付宝文件
+ "/user/system/fac.bin", //产测标志
+ "user/userdata/aging_test.bin",//产测结果
};
#else
uint8_t custom_get_factory_test_flag(void)
{
return factory_test_flag;
-}
\ No newline at end of file
+}
+
+typedef struct
+{
+ uint32_t charge_error; //充电失败次数
+ uint32_t speaker_error; //spk失败次数
+ uint32_t mic_error; //mic失败次数
+ uint32_t motor_error; //马达失败次数
+ uint32_t mag_error; //磁力计失败次数
+ uint32_t ppg_error; //ppg失败次数
+ uint32_t gsensor_error; //gsensor失败次数
+ uint32_t crown_error; //表冠失败次数
+ uint32_t tp_error; //tp失败次数
+ uint32_t display_error; //LCD失败次数
+ uint32_t cat1_error; //CAT1失败次数
+ uint32_t fail_num; //总失败次数
+ uint32_t executions_num;//执行次数
+ uint32_t left_time; //剩余时间
+ uint32_t target_time; //目标时间
+ uint32_t flag; //老化测试状态 (未开始 - 0, 已开始 - 1, 停止 - 2,完成 - 3)
+} custom_aging_t;
+
+
+static void aging_task(void)
+{
+
+ custom_aging_t aging_t = {0};
+
+ aging_t.flag = 1;
+
+ aging_t.target_time = 8 * 60 * 60;
+
+ int aging_time = 0;
+ errcode_t ret = 0;
+ uint32_t enter_aging_time = 0;
+ uint32_t current_aging_time = 0;
+ int cmd = 0;
+ uapi_get_timestampe_ss(&enter_aging_time);
+
+ uint8_t cnt = pm_veto_get_id_cnt(PM_ID_P_TEST);
+ if (cnt == 0)
+ {
+ uapi_pm_add_sleep_veto(PM_ID_P_TEST);
+ }
+
+ uapi_delete_files("user/userdata/aging_test.bin");
+
+ PRINT("aging_t.flag : %d \n",aging_t.flag);
+ while(aging_t.flag == 1)
+ //while(aging_t.flag == 0xfdfd0002)
+ {
+ aging_t.left_time = aging_time;
+ printf("fac:老化目标时间 : %d \r\n",aging_t.target_time);
+ printf("fac:老化剩余时间 : %d \r\n",aging_t.left_time);
+
+ aging_t.executions_num++;
+ printf("fac:老化执行次数 : %d \r\n",aging_t.executions_num);
+ printf("fac:总失败次数 : %d \r\n",aging_t.fail_num);
+
+/*********************LCD 老化测试*****************************/
+ //单色屏测试 2min
+ uint32_t total_time = 2 * 60;
+ uint32_t enter_time = 0;
+ uint32_t age_time = 0;
+ uint32_t current_time = 0;
+ uapi_get_timestampe_ss(¤t_time);
+ uapi_get_timestampe_ss(&enter_time);
+ int i = 0;
+ uapi_set_screen_on_api();
+ ScreenAlwaysOnCtr(1);
+ #ifdef BOARD_LEINIAO
+ start_lcd_test_view();
+ printf("fac:LCDTEST ATCMD Enter LCD test interface (LcdTestView)\n");
+ printf("fac:Use AT^LCDTEST=3-8 to change colors: 3=Green, 4=Blue, 5=Yellow, 6=Red, 7=White, 8=Black\n");
+ do
+ {
+ if(aging_t.flag != 1)
+ {
+ uapi_save_file_data("user/userdata/aging_test.bin",&aging_t,sizeof(custom_aging_t),"wb");
+ return;
+ }
+ uapi_get_timestampe_ss(¤t_time);
+ // uapi_get_timestampe_ss(&enter_time);
+ set_lcd_test_color(i);
+ i++;
+ i = i%5;
+ LOS_Msleep(2000);
+ // uapi_get_timestampe_ss(&age_time);
+ // PRINT("current_time - enter_time[%d]\n",current_time - enter_time);
+ }while(current_time - enter_time <= 2 * 60);
+ // for(int i = 0; i < 5; i++)
+ // {
+ // LOS_Msleep(2000);
+ // set_lcd_test_color(i);
+ // }
+ #else
+ uint8_t lcd_cmd = 1;
+ do_custom_cmd_service_check_msg(CUSTOM_CMD_MSG_TYPE_LCD_TEST, &lcd_cmd, sizeof(lcd_cmd));
+ printf("fac:LCDTEST ATCMD Enter LCD test interface\n");
+
+ for(int i = 1; i < 6; i++)
+ {
+ LOS_Msleep(2000);
+ do_custom_cmd_service_check_msg(CUSTOM_CMD_MSG_TYPE_LCD_COLOR_TEST, &i, 1);
+ }
+ #endif
+
+ ScreenAlwaysOnCtr(0);
+ // 退出LCD测试界面
+#ifdef BOARD_LEINIAO
+ stop_lcd_test_view();
+ printf("fac:LCDTEST ATCMD Exit LCD test interface (LcdTestView)\n");
+#else
+ // 其他板:使用原有的消息机制
+ lcd_cmd = 0;
+ do_custom_cmd_service_check_msg(CUSTOM_CMD_MSG_TYPE_LCD_TEST, &lcd_cmd, sizeof(lcd_cmd));
+ printf("fac:LCDTEST ATCMD Exit LCD test interface\n");
+#endif
+
+/*********************充电 老化测试*****************************/
+ // if(!get_charge_stat())
+ // {
+ // aging_t.charge_error++;
+ // aging_t.fail_num++;
+ // }
+ float vol = 0.0;
+ uint8 per = 0;
+ per = batteryservice_get_voltage(&vol);
+ printf("fac:电压:%.3f 电量:%d \r\n",vol,per);
+ if(vol < 3.3 || vol > 4.3 || per < 0 || per > 100)
+ {
+ aging_t.charge_error++;
+ aging_t.fail_num++;
+ }
+ printf("fac:电池自检 失败次数 : %d \r\n",aging_t.charge_error);
+
+
+/********************* 马达 老化测试*****************************/
+ total_time = 2 * 60;
+ enter_time = 0;
+ age_time = 0;
+ current_time = 0;
+ uapi_get_timestampe_ss(¤t_time);
+ uapi_get_timestampe_ss(&enter_time);
+ do
+ {
+ if(aging_t.flag != 1)
+ {
+ uapi_save_file_data("user/userdata/aging_test.bin",&aging_t,sizeof(custom_aging_t),"wb");
+ return;
+ }
+ uapi_get_timestampe_ss(¤t_time);
+ // uapi_get_timestampe_ss(&enter_time);
+ custom_VibratorFunc_int(0);
+ LOS_Msleep(2000);
+ // uapi_get_timestampe_ss(&age_time);
+ // PRINT("current_time - enter_time[%d]\n",current_time - enter_time);
+ }while(current_time - enter_time <= 2 * 60);
+ printf("fac:马达失败次数 : %d \r\n",aging_t.motor_error);
+
+/********************* mic 老化测试*****************************/
+// ret = uapi_microhone_switch(1);
+// LOS_Msleep(2000 * 60);
+// ret = uapi_microhone_switch(0);
+// if(ret != 0)
+// {
+// aging_t.mic_error++;
+// aging_t.fail_num++;
+// }
+// PRINT("mic失败次数 : %d \r\n",aging_t.mic_error);
+// uapi_delete_files("/user/userdata/microphone.mp3");
+// /********************* spk 老化测试*****************************/
+// total_time = 2 * 60;
+// enter_time = 0;
+// age_time = 0;
+// uapi_get_timestampe_ss(&enter_time);
+// do
+// {
+// if(aging_t.flag != 1)
+// {
+// uapi_save_file_data("user/userdata/aging_test.bin",&aging_t,sizeof(custom_aging_t),"wb");
+// return;
+// }
+// uapi_get_timestampe_ss(¤t_time);
+// uapi_check_spk(1);
+// LOS_Msleep(2000);
+// uapi_check_spk(0);
+// aging_t.speaker_error = 0;
+// // PRINT("current_time - enter_time[%d]\n",current_time - enter_time);
+// }while(current_time - enter_time <= 2 * 60);
+// PRINT("spk失败次数 : %d \r\n",aging_t.speaker_error);
+ total_time = 2 * 60;
+ enter_time = 0;
+ age_time = 0;
+ uapi_get_timestampe_ss(¤t_time);
+ uapi_get_timestampe_ss(&enter_time);
+ do
+ {
+ if(aging_t.flag != 1)
+ {
+ uapi_save_file_data("user/userdata/aging_test.bin",&aging_t,sizeof(custom_aging_t),"wb");
+ return;
+ }
+ uapi_get_timestampe_ss(¤t_time);
+
+ int32_t ret = custom_play_audio("/user/res/music/1khz.mp3",100);
+ if (ret != 0)
+ {
+ aging_t.speaker_error++;
+ aging_t.fail_num++;
+
+ }
+
+ const char *defaultArgs[6] = {"01", "mp3", "16000", "1", "16", "user/userdata/1.mp3"};
+
+ ret = AudioCaptureSample(6, defaultArgs);
+ if (ret != 0)
+ {
+ aging_t.mic_error++;
+ aging_t.fail_num++;
+ }
+
+ LOS_Msleep(3000);
+
+ int32_t argc = 1;
+ uint8_t *argv = (uint8_t*)"stop";
+ AudioCaptureSample(argc, (const char **)&argv);
+ LOS_Msleep(500);
+ custom_stop_play_audio();
+
+ LOS_Msleep(1000);
+
+ ret = custom_play_audio("user/userdata/1.mp3",100);
+ if (ret != 0)
+ {
+ aging_t.speaker_error++;
+ aging_t.fail_num++;
+ }
+
+ LOS_Msleep(3000);
+
+ custom_stop_play_audio();
+
+ uapi_delete_files("user/userdata/1.mp3");
+ LOS_Msleep(1000);
+
+ }while(current_time - enter_time <= 2 * 60);
+ printf("fac:spk 失败次数 : %d \r\n",aging_t.speaker_error);
+ printf("fac:mic 失败次数 : %d \r\n",aging_t.mic_error);
+
+/*********************gsensor 老化测试*****************************/
+ // total_time = 2 * 60;
+ // enter_time = 0;
+ // age_time = 0;
+ // uapi_get_timestampe_ss(¤t_time);
+ // uapi_get_timestampe_ss(&enter_time);
+ // do
+ // {
+ // if(aging_t.flag != 1)
+ // {
+ // uapi_save_file_data("user/userdata/aging_test.bin",&aging_t,sizeof(custom_aging_t),"wb");
+ // return;
+ // }
+ // uapi_get_timestampe_ss(¤t_time);
+
+ uint8_t id;
+#ifdef SUPPORT_CYWEE_SERVICE
+ uapi_cywee_get_id(&id);
+#endif
+ printf("fac:gsensor id : 0x%x\n",id);
+ if(id != 0x13)
+ {
+ aging_t.gsensor_error++;
+ aging_t.fail_num++;
+ }
+ // LOS_Msleep(1000);
+ // PRINT("current_time - enter_time[%d]\n",current_time - enter_time);
+ // }while(current_time - enter_time <= 2 * 60);
+ printf("fac:gsensor失败次数 : %d \r\n",aging_t.gsensor_error);
+
+/*********************4g 老化测试*****************************/
+ total_time = 2 * 60;
+ enter_time = 0;
+ age_time = 0;
+ uapi_get_timestampe_ss(¤t_time);
+ uapi_get_timestampe_ss(&enter_time);
+ do
+ {
+ if(aging_t.flag != 1)
+ {
+ uapi_save_file_data("user/userdata/aging_test.bin",&aging_t,sizeof(custom_aging_t),"wb");
+ return;
+ }
+ uapi_get_timestampe_ss(¤t_time);
+
+ uint8_t sig;
+#ifdef SUPPORT_CAT1_SERVICE
+ uapi_set4GCapability(false);
+ LOS_Msleep(2000);
+ uapi_set4GCapability(true);
+ LOS_Msleep(5000);
+ cat1_getsignal();
+ LOS_Msleep(5000);
+ sig = uapi_dev_runtime_get_cat1_signal();
+#endif
+ printf("fac:4g-sig : %d\n",sig);
+
+ if(sig < 25 || sig == 99)
+ {
+ aging_t.cat1_error++;
+ aging_t.fail_num++;
+ }
+
+ LOS_Msleep(1000);
+ // PRINT("current_time - enter_time[%d]\n",current_time - enter_time);
+ }while(current_time - enter_time <= 2 * 60);
+ printf("fac:4g失败次数 : %d \r\n",aging_t.gsensor_error);
+
+ uapi_get_timestampe_ss(¤t_aging_time);
+
+ if(current_aging_time - enter_aging_time > aging_t.target_time)
+ {
+ aging_t.flag = 3;
+ aging_time = 0;
+ aging_t.left_time = 0;
+ printf("fac:老化完成\n");
+
+ uapi_save_file_data("user/userdata/aging_test.bin",&aging_t,sizeof(custom_aging_t),"wb");
+
+ printf("fac:老化结果:\n");
+ printf("fac:老化时间:%d 小时\n",aging_t.target_time/3600);
+ printf("fac:老化轮数: %d \r\n",aging_t.executions_num);
+ printf("fac:总失败次数: %d \r\n",aging_t.fail_num);
+ printf("fac:mic失败次数: %d\r\n",aging_t.mic_error);
+ printf("fac:spk失败次数: %d\r\n",aging_t.speaker_error);
+ printf("fac:gsensor自检失败次数: %d\r\n",aging_t.gsensor_error);
+ printf("fac:电池自检失败次数: %d\r\n",aging_t.charge_error);
+ printf("fac:4g自检失败次数: %d\r\n",aging_t.cat1_error);
+
+ return;
+ }
+ aging_time = aging_t.target_time - (current_aging_time - enter_aging_time);
+ printf("fac:aging_time : %d flag : %d\r\n",aging_time,aging_t.flag);
+ uapi_save_file_data("user/userdata/aging_test.bin",&aging_t,sizeof(custom_aging_t),"wb");
+
+ }
+}
+
+void custom_get_aging_result(void)
+{
+ custom_aging_t aging_t = {0};
+ uint16_t len = 0;
+ uapi_get_file_data("user/userdata/aging_test.bin",&aging_t,&len);
+
+ printf("fac:老化结果:\n");
+ printf("fac:老化时间:%d 小时\n",aging_t.target_time/3600);
+ printf("fac:老化轮数: %d \r\n",aging_t.executions_num);
+ printf("fac:总失败次数: %d \r\n",aging_t.fail_num);
+ printf("fac:mic失败次数: %d\r\n",aging_t.mic_error);
+ printf("fac:spk失败次数: %d\r\n",aging_t.speaker_error);
+ printf("fac:gsensor自检失败次数: %d\r\n",aging_t.gsensor_error);
+ printf("fac:电池自检失败次数: %d\r\n",aging_t.charge_error);
+ printf("fac:4g自检失败次数: %d\r\n",aging_t.cat1_error);
+}
+
+errcode_t custom_aging_test_init(void)
+{
+ app_task_definition_t taskcfg={0};
+ taskcfg.create_queue_handle = NULL;
+ taskcfg.attr.name="aging_test_service";
+ taskcfg.attr.priority = TASK_PRIORITY_CMD;
+ taskcfg.attr.stack_size = 1024*8;
+ taskcfg.func = aging_task;
+ taskcfg.use_mem = USE_EXTEND_MEM;
+
+ errcode_t ret=uapi_create_osThread_custom(&taskcfg);
+ if(ret != ERRCODE_SUCC)
+ {
+ PRINT("create ppg_service failed %d!\r\n",ret);
+ return ERRCODE_FAIL;
+ }
+
+ return ERRCODE_SUCC;
+}