From 8f21bb733c59e4affe6a65739c51d897a17350ed Mon Sep 17 00:00:00 2001 From: penglei <1624952103@qq.com> Date: Thu, 31 Oct 2024 21:20:30 +0800 Subject: [PATCH] =?utf8?q?=E4=BC=98=E5=8C=96=E8=80=81=E5=8C=96=E6=B5=8B?= =?utf8?q?=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../factorytest_protocol.c | 57 ++++++++++++++----- 1 file changed, 42 insertions(+), 15 deletions(-) diff --git a/code/sdk/application/wearable/service/factorytest_service/factorytest_protocol.c b/code/sdk/application/wearable/service/factorytest_service/factorytest_protocol.c index ad332921c..fddefc009 100644 --- a/code/sdk/application/wearable/service/factorytest_service/factorytest_protocol.c +++ b/code/sdk/application/wearable/service/factorytest_service/factorytest_protocol.c @@ -2,7 +2,7 @@ * @Author: penglei 1624952103@qq.com * @Date: 2024-06-17 14:31:08 * @LastEditors: penglei 1624952103@qq.com - * @LastEditTime: 2024-10-30 18:37:04 + * @LastEditTime: 2024-10-31 21:19:20 * @FilePath: /FD230/code/sdk/application/wearable/service/factorytest_service/factorytest_protocol.c * @Description: * @@ -56,7 +56,7 @@ typedef struct factorytest_cmd_header_t typedef struct { - uint32_t flag; //老化测试状态 (完成 - 0xfdfd0000, 停止 - 0xfdfd0001, 开始-0xfdfd0002, 结束-0xfdfd0003) + uint32_t flag; //老化测试状态 (未开始 - 0, 已开始 - 1, 停止 - 2,完成 - 3) uint32_t target_time; //目标时间 uint32_t left_time; //剩余时间 uint32_t executions_num;//执行次数 @@ -168,14 +168,15 @@ void ble_acc_check_timer_callback(void) void aging_task(void) { errcode_t ret = 0; - uint32_t enter_age_time = 0; - uint32_t exit_age_time = 0; + uint32_t enter_aging_time = 0; + uint32_t current_aging_time = 0; int cmd = 0; - while(aging_t.flag == 0xfdfd0002) + uapi_get_timestampe_ss(&enter_aging_time); + while(aging_t.flag == 1) //while(aging_t.flag == 0xfdfd0002) { - uapi_get_timestampe_ss(&enter_age_time); + aging_t.left_time = aging_time; PRINT("老化目标时间 : %d \r\n",aging_t.target_time); PRINT("老化剩余时间 : %d \r\n",aging_t.left_time); @@ -204,6 +205,8 @@ void aging_task(void) do_custom_cmd_service_check_msg(CUSTOM_CMD_MSG_TYPE_LCD_TEST,&cmd,sizeof(cmd)); for(int i = 1; i < 120 ; i++) { + if(aging_t.flag != 1) + return; do_custom_cmd_service_check_msg(CUSTOM_CMD_MSG_TYPE_LCD_COLOR_TEST,&cmd,sizeof(cmd)); cmd ++; cmd = cmd % 5; @@ -253,6 +256,8 @@ void aging_task(void) uapi_get_timestampe_ss(&enter_time); do { + if(aging_t.flag != 1) + return; uapi_get_timestampe_ss(¤t_time); // uapi_get_timestampe_ss(&enter_time); custom_VibratorFunc_int(4); @@ -280,6 +285,8 @@ void aging_task(void) uapi_get_timestampe_ss(&enter_time); do { + if(aging_t.flag != 1) + return; uapi_get_timestampe_ss(¤t_time); uapi_check_spk(1); LOS_Msleep(2000); @@ -296,6 +303,8 @@ void aging_task(void) uapi_get_timestampe_ss(&enter_time); do { + if(aging_t.flag != 1) + return; uapi_get_timestampe_ss(¤t_time); send_ppg_cmd_msg(PPG_SERVICE_CMD_TYPE_DO_SINGLE_CHECK_MODE_TEST); LOS_Msleep(200); @@ -327,6 +336,8 @@ void aging_task(void) uapi_get_timestampe_ss(&enter_time); do { + if(aging_t.flag != 1) + return; uapi_get_timestampe_ss(¤t_time); get_gsonsen_xyz(&g); if(g.x == 0 && g.y == 0 && g.z == 0) @@ -348,6 +359,8 @@ void aging_task(void) uapi_get_timestampe_ss(&enter_time); do { + if(aging_t.flag != 1) + return; uapi_get_timestampe_ss(¤t_time); mmc5603_getdata(&fAzimuth,&fPitch,&fRoll); if(fAzimuth < 0) @@ -361,11 +374,12 @@ void aging_task(void) PRINT("磁力计失败次数 : %d \r\n",aging_t.mag_error); - uapi_get_timestampe_ss(&exit_age_time); - aging_time -= (exit_age_time - enter_age_time); - if(aging_time <= 0 || aging_time > 2 * 60 * 60) + uapi_get_timestampe_ss(¤t_aging_time); + aging_time = aging_t.target_time - (current_aging_time - enter_aging_time); + PRINT("aging_time : %d \r\n",aging_time); + if(current_aging_time - enter_aging_time > aging_t.target_time) { - aging_t.flag = 0xfdfd0000; + aging_t.flag = 3; return; } } @@ -389,7 +403,7 @@ errcode_t aging_test_init(void) } - aging_t.flag = 0xfdfd0002; + aging_t.flag = 1; return ERRCODE_SUCC; } @@ -415,6 +429,9 @@ void factorytest_protocol_common_decode(uint8_t submode,uint8_t testitem,uint8_t ChargerEventPublish(TOPIC_EVENT_CHARGE_UNPLUG,0); //进入产测模式 关闭充电弹窗 uapi_dev_runtime_set_factory_test_status(1); //设置产测模式runtime svr_ble_adv_factory_test_start_param(); //设置蓝牙广播 避免出现连接问题 + uapi_hfp_connect_(); + LOS_Msleep(500); + uapi_a2dp_snk_connect_(); factorytest_protocol_replymsg(BLE_TEST_CMD_MODE_COMMON, BLE_TEST_CMD_COMMON_SUB_MODE_SWITCH_MODE, 0x01, @@ -886,7 +903,7 @@ void factorytest_protocol_soft_test_decode(uint8_t submode,uint8_t testitem,uint //停止老化 uint8_t send_data = 0x00; - aging_t.flag = 0xfdfd0001; + aging_t.flag = 2; factorytest_protocol_replymsg(BLE_TEST_CMD_MODE_SOFT_TEST, BLE_TEST_CMD_SOFT_TEST_SUB_MODE_AGING_TEST, @@ -913,13 +930,21 @@ void factorytest_protocol_soft_test_decode(uint8_t submode,uint8_t testitem,uint } else if(testitem == 0x04) { //查询老化结果 + + uint8_t *databuf = malloc(sizeof(ble_aging_t)); + uint8_t *ptr = (uint8_t *)&aging_t; + for(int i = 0; i < sizeof(ble_aging_t); i++) + { + *databuf++ = ptr[i]; + } + factorytest_protocol_replymsg(BLE_TEST_CMD_MODE_SOFT_TEST, BLE_TEST_CMD_SOFT_TEST_SUB_MODE_AGING_TEST, 0x04, - &aging_t, - sizeof(aging_t)); - + databuf, + sizeof(ble_aging_t)); + free(databuf); } else if(testitem == 0x05) { //清除老化结果 @@ -1815,6 +1840,8 @@ void factorytest_protocol_soft_test_decode(uint8_t submode,uint8_t testitem,uint { uint8_t send_data = 0x00; uapi_hfp_connect_(); + LOS_Msleep(500); + uapi_a2dp_snk_connect_(); factorytest_protocol_replymsg(BLE_TEST_CMD_MODE_SOFT_TEST, BLE_TEST_CMD_SOFT_TEST_SUB_MODE_SPEAKER, 0x03, -- 2.17.1