修复gsensor在视频表盘下停止的bug
authorpenglei <1624952103@qq.com>
Wed, 30 Oct 2024 10:39:32 +0000 (18:39 +0800)
committeraliyun:aliyun0384013184_1JeGs <3449750381@qq.com>
Thu, 31 Oct 2024 01:40:13 +0000 (01:40 +0000)
优化蓝牙产测老化测试
降低蓝牙通话音量 防止破音

code/sdk/application/audio/vendor/aw88166/config/aw88166/mono/16bit/aw_params.h
code/sdk/application/wearable/fd230app/nativeui/alarmclocktimerconfig/src/AlarmClockTimerConfig.cpp
code/sdk/application/wearable/fd230app/nativeui/producttest/src/testView.cpp
code/sdk/application/wearable/service/factorytest_service/factorytest_protocol.c
code/sdk/drivers/peripheral/utils/custom_utils.c

index e3f9f77..5666ae2 100755 (executable)
@@ -562,8 +562,8 @@ const unsigned char dev0_Receiver_dsp_cfg[] = {
 0x0d,0x0d,0x0d,0x0d,0x0c,0x0c,0x0b,0x0b,0x0a,0x0a,0x0a,0x0a,0xd5,0x00,0x03,0x00,\r
 0x03,0x00,0x00,0x55,0x06,0xce,0x00,0x00,0x04,0x8a,0x00,0x00,0xd5,0x00,0x00,0x00,\r
 0x02,0x80,0x00,0x00,0x06,0xce,0x00,0x00,0x06,0xce,0x00,0x00,0xd5,0x00,0x03,0x00,\r
-0x03,0x00,0x00,0x55,0x06,0xce,0x00,0x00,0x04,0x8a,0x00,0x00,0xd8,0x00,0x0b,0x00,\r
-0x06,0x00,0x00,0x4e,0x00,0xaf,0x00,0x00,0x01,0x5d,0x00,0x00,0x00,0x0c,0x00,0x00,\r
+0x03,0x00,0x00,0x55,0x06,0xce,0x00,0x00,0x04,0x8a,0x00,0x00,0xd8,0x00,0x0a,0x00,\r
+0x06,0x00,0x00,0x47,0x00,0xaf,0x00,0x00,0x01,0x5d,0x00,0x00,0x00,0x0c,0x00,0x00,\r
 0xfe,0xab,0x02,0x80,0xff,0xde,0xf5,0x00,0x00,0x3c,0x00,0x00,0x11,0x11,0x00,0x01,\r
 0x00,0x1e,0x00,0x00,0xee,0xef,0xff,0xfe,0x00,0x2d,0x00,0x00,0x00,0x00,0x00,0x00,\r
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0xc9,0x02,0xb8,0x02,0xa7,0x02,0x96,\r
@@ -580,8 +580,8 @@ const unsigned char dev0_Receiver_dsp_cfg[] = {
 0x3b,0x53,0x00,0x00,0xbb,0x3d,0x03,0xe0,0x57,0x78,0xfe,0x1e,0x58,0x36,0x01,0xfa,\r
 0x4f,0x94,0xfc,0x0b,0x58,0x36,0x01,0xfa,0xa0,0x6e,0x03,0xf4,0x3f,0x96,0xfe,0x0b,\r
 0x00,0x0a,0x00,0x1b,0x05,0xdc,0x00,0x00,0x00,0x0a,0x00,0x16,0x02,0xee,0x00,0x00,\r
-0x00,0x0f,0x00,0xc9,0x06,0x24,0x00,0x01,0x0f,0xac,0x00,0x00,0xf5,0xd0,0xc5,0x4a,\r
-0x32,0xe2,0xd3,0x45,\r
+0x00,0x0f,0x00,0xc9,0x06,0x24,0x00,0x01,0x0f,0xac,0x00,0x00,0xf5,0xd0,0x36,0x33,\r
+0x58,0xd5,0xb8,0x1c,\r
 };\r
 \r
 struct aw_prof_desc g_dev0_prof[] = {\r
index 74607af..b9306d0 100644 (file)
@@ -356,10 +356,15 @@ extern "C"
             return;\r
         }\r
 \r
-        if (curTime.tm_sec % 3 == 0) {\r
+        if (curTime.tm_sec % 3 == 0) \r
+        {\r
              do_custom_cmd_service_check_msg(CUSTOM_CMD_MSG_BLE_ADV_CHECK, nullptr, 0);\r
-             do_cywee_service_check_msg(CYWEE_SERVICE_CMD_CHECK_ACC,NULL); //检查gsensor是否停止\r
-          }\r
+        }\r
+\r
+        if(curTime.tm_sec % 60 == 0)\r
+        {\r
+            do_cywee_service_check_msg(CYWEE_SERVICE_CMD_CHECK_ACC,NULL); //一分钟检查一次gsensor是否停止\r
+        }\r
 \r
         if (g_alarmCtrA.state == ALARM_STATUS_RUNNING)\r
         {\r
index 91776c5..fc15f55 100644 (file)
@@ -6,7 +6,7 @@
 #include "cat1_ctl.h"\r
 #include "cat1_server_hal.h"\r
 #include "custom_utils.h"\r
-\r
+#include "custom_runtime.h"\r
 namespace OHOS\r
 {\r
 \r
@@ -805,7 +805,8 @@ namespace OHOS
          }  \r
         display_api->set_auto_timeout_function(false);\r
 \r
-        uapi_set4GCapability(true);\r
+        if(!uapi_dev_runtime_get_factory_test_status_flag())\r
+            uapi_set4GCapability(true);\r
 \r
         start_custom_ble_service();\r
     }\r
index ff4dab7..ad33292 100644 (file)
@@ -2,7 +2,7 @@
  * @Author: penglei 1624952103@qq.com\r
  * @Date: 2024-06-17 14:31:08\r
  * @LastEditors: penglei 1624952103@qq.com\r
- * @LastEditTime: 2024-10-30 10:48:57\r
+ * @LastEditTime: 2024-10-30 18:37:04\r
  * @FilePath: /FD230/code/sdk/application/wearable/service/factorytest_service/factorytest_protocol.c\r
  * @Description: \r
  * \r
@@ -63,6 +63,7 @@ typedef struct
     uint32_t fail_num;      //总失败次数\r
     uint32_t display_error; //LCD失败次数\r
     uint32_t tp_error;      //tp失败次数\r
+    uint32_t crown_error;   //表冠失败次数\r
     uint32_t gsensor_error;  //gsensor失败次数\r
     uint32_t ppg_error;     //ppg失败次数\r
     uint32_t mag_error;     //磁力计失败次数 \r
@@ -82,7 +83,7 @@ static osTimerId_t g_ble_vibrator_timer = NULL;
 \r
 static osTimerId_t g_ble_acc_timer = NULL;\r
 \r
-static uint32_t aging_time = 0;\r
+static int aging_time = 0;\r
 \r
 static uint8_t pwr_button_result = 0;\r
 static uint8_t func_button_result = 1;\r
@@ -170,11 +171,12 @@ void aging_task(void)
     uint32_t enter_age_time = 0;\r
     uint32_t exit_age_time = 0;\r
     int cmd = 0;\r
-    while(aging_t.flag == 0xfdfd0002 && aging_time)\r
+    while(aging_t.flag == 0xfdfd0002)\r
     //while(aging_t.flag == 0xfdfd0002)\r
     {\r
 \r
         uapi_get_timestampe_ss(&enter_age_time);\r
+        aging_t.left_time = aging_time;\r
         PRINT("老化目标时间 : %d \r\n",aging_t.target_time);\r
         PRINT("老化剩余时间 : %d \r\n",aging_t.left_time);\r
 \r
@@ -221,30 +223,43 @@ void aging_task(void)
         }\r
         PRINT("TP 失败次数 : %d \r\n",aging_t.tp_error);\r
 \r
+/*********************表冠 老化测试*****************************/\r
+        //读crown ID\r
+        PRINT("crown_read_reg : %X \n",crown_read_reg(0x00));\r
+        if(!(crown_read_reg(0x00) == 0x30))\r
+        {\r
+            aging_t.crown_error++;\r
+            aging_t.fail_num++;\r
+        }\r
+        PRINT("表冠 失败次数 : %d \r\n",aging_t.crown_error);\r
+\r
+\r
 /*********************充电 老化测试*****************************/\r
         bool state;\r
         state = uapi_get_charger_plug_status();\r
-        if(!state)\r
+        PRINT("充电 uapi_get_charger_plug_status() : %d \r\n",uapi_get_charger_plug_status());\r
+        if(!uapi_get_charger_plug_status())\r
         {\r
             aging_t.charge_error++;\r
             aging_t.fail_num++;\r
         }\r
-        PRINT("充电 失败次数 : %d \r\n",aging_t.tp_error);\r
+        PRINT("充电 失败次数 : %d \r\n",aging_t.charge_error);\r
 /********************* 马达 老化测试*****************************/\r
         //2min 震2s 停2s\r
         uint32_t total_time = 2 * 60;\r
         uint32_t enter_time = 0;\r
         uint32_t age_time = 0;\r
-        while(total_time)\r
+        uint32_t current_time = 0;\r
+        uapi_get_timestampe_ss(&enter_time);\r
+        do\r
         {\r
-            uapi_get_timestampe_ss(&enter_time);\r
+            uapi_get_timestampe_ss(&current_time);\r
+            // uapi_get_timestampe_ss(&enter_time);\r
             custom_VibratorFunc_int(4);\r
             LOS_Msleep(4000);\r
-            uapi_get_timestampe_ss(&age_time);\r
-            total_time -= (age_time - enter_time);\r
-            PRINT("total_time[%d]\n",total_time);\r
-        }\r
-        uapi_vibrator_test();\r
+            // uapi_get_timestampe_ss(&age_time);\r
+            PRINT("current_time -  enter_time[%d]\n",current_time -  enter_time);\r
+        }while(current_time - enter_time <= 2 * 60);\r
         PRINT("马达失败次数 : %d \r\n",aging_t.motor_error);\r
 \r
 /********************* mic 老化测试*****************************/\r
@@ -257,40 +272,45 @@ void aging_task(void)
             aging_t.fail_num++;\r
         }\r
         PRINT("mic失败次数 : %d \r\n",aging_t.mic_error);\r
+        uapi_delete_files("/user/userdata/microphone.mp3");\r
 /********************* spk 老化测试*****************************/\r
         total_time = 2 * 60;\r
         enter_time = 0;\r
         age_time = 0;\r
-        while(total_time)\r
+        uapi_get_timestampe_ss(&enter_time);\r
+        do\r
         {\r
-            uapi_get_timestampe_ss(&enter_time);\r
+            uapi_get_timestampe_ss(&current_time);\r
             uapi_check_spk(1);\r
             LOS_Msleep(2000);\r
             uapi_check_spk(0);\r
             aging_t.speaker_error = 0;\r
-            uapi_get_timestampe_ss(&age_time);\r
-            total_time -= (age_time - enter_time);\r
-            PRINT("total_time[%d]\n",total_time);\r
-        }\r
+            PRINT("current_time -  enter_time[%d]\n",current_time -  enter_time);\r
+        }while(current_time - enter_time <= 2 * 60);\r
         PRINT("spk失败次数 : %d \r\n",aging_t.speaker_error);\r
 /*********************ppg 老化测试*****************************/\r
 \r
         total_time = 2 * 60;\r
         enter_time = 0;\r
         age_time = 0;\r
-        while(total_time)\r
+        uapi_get_timestampe_ss(&enter_time);\r
+        do\r
         {\r
-            uapi_get_timestampe_ss(&enter_time);\r
+            uapi_get_timestampe_ss(&current_time);\r
             send_ppg_cmd_msg(PPG_SERVICE_CMD_TYPE_DO_SINGLE_CHECK_MODE_TEST);\r
             LOS_Msleep(200);\r
             FT_RESULTS_t ft_result = hx3695_factroy_test(SINGLE_CHECK_TEST);\r
             send_ppg_cmd_msg(PPG_SERVICE_CMD_TYPE_STOP_PPG_TEST);\r
             PRINT("ft_result.gr_data_final : %d , ft_result.red_data_final : %d , ft_result.ir_data_final : %d\r\n",ft_result.gr_data_final,ft_result.red_data_final,ft_result.ir_data_final);\r
-            uapi_get_timestampe_ss(&age_time);\r
-            total_time -= (age_time - enter_time);\r
-            PRINT("total_time[%d]\n",total_time);\r
-        }\r
+            if(!(ft_result.gr_data_final && ft_result.red_data_final && ft_result.ir_data_final))\r
+            {\r
+                aging_t.ppg_error++;\r
+                aging_t.fail_num++;\r
+            }\r
+            PRINT("current_time -  enter_time[%d]\n",current_time -  enter_time);\r
+        }while(current_time - enter_time <= 2 * 60);\r
 \r
+        PRINT("aging_t.ppg_error : %d \r\n",aging_t.ppg_error);\r
 \r
         // if(ft_result.gr_data_final > 5000 || ft_result.red_data_final > 5000 || ft_result.ir_data_final > 5000)\r
         // {\r
@@ -304,20 +324,19 @@ void aging_task(void)
         total_time = 2 * 60;\r
         enter_time = 0;\r
         age_time = 0;\r
-        while(total_time)\r
+        uapi_get_timestampe_ss(&enter_time);\r
+        do\r
         {\r
-            uapi_get_timestampe_ss(&enter_time);\r
+            uapi_get_timestampe_ss(&current_time);\r
             get_gsonsen_xyz(&g);\r
             if(g.x == 0 && g.y == 0 && g.z == 0)\r
             {\r
                 aging_t.gsensor_error++;\r
                 aging_t.fail_num++;\r
             }\r
-            uapi_get_timestampe_ss(&age_time);\r
-            total_time -= (age_time - enter_time);\r
-            PRINT("total_time[%d]\n",total_time);\r
             LOS_Msleep(1000);\r
-        }\r
+            PRINT("current_time -  enter_time[%d]\n",current_time -  enter_time);\r
+        }while(current_time - enter_time <= 2 * 60);\r
         PRINT("gsensor失败次数 : %d \r\n",aging_t.gsensor_error);\r
 \r
 /*********************磁力计 老化测试*****************************/\r
@@ -326,26 +345,25 @@ void aging_task(void)
         total_time = 2 * 60;\r
         enter_time = 0;\r
         age_time = 0;\r
-        while(total_time)\r
+        uapi_get_timestampe_ss(&enter_time);\r
+        do\r
         {\r
-            uapi_get_timestampe_ss(&enter_time);\r
+            uapi_get_timestampe_ss(&current_time);\r
             mmc5603_getdata(&fAzimuth,&fPitch,&fRoll);\r
             if(fAzimuth < 0)\r
             {\r
                 aging_t.mag_error++;\r
                 aging_t.fail_num++;\r
             }\r
-            uapi_get_timestampe_ss(&age_time);\r
-            total_time -= (age_time - enter_time);\r
-            PRINT("total_time[%d]\n",total_time);\r
             LOS_Msleep(1000);\r
-        }\r
+            PRINT("current_time -  enter_time[%d]\n",current_time -  enter_time);\r
+        }while(current_time - enter_time <= 2 * 60);\r
 \r
         PRINT("磁力计失败次数 : %d \r\n",aging_t.mag_error);\r
 \r
         uapi_get_timestampe_ss(&exit_age_time);\r
         aging_time -= (exit_age_time - enter_age_time);\r
-        if(aging_time == 0)\r
+        if(aging_time <= 0 || aging_time > 2 * 60 * 60)\r
         {\r
             aging_t.flag = 0xfdfd0000;\r
             return;\r
@@ -370,7 +388,7 @@ errcode_t aging_test_init(void)
         return ERRCODE_FAIL;\r
     }\r
 \r
-    memset(&aging_t, 0, sizeof(ble_aging_t));\r
+\r
     aging_t.flag = 0xfdfd0002;\r
     \r
     return ERRCODE_SUCC;\r
@@ -854,6 +872,7 @@ void factorytest_protocol_soft_test_decode(uint8_t submode,uint8_t testitem,uint
             {\r
                 //进入老化命令\r
                 uint8_t send_data = 0x00;\r
+                memset(&aging_t, 0, sizeof(ble_aging_t));\r
                 aging_t.target_time = 6 * 60 * 60; //老化时间6小时\r
                 aging_time = aging_t.target_time;\r
                 aging_test_init();\r
@@ -1872,7 +1891,7 @@ errcode_t factorytest_protocol_decode(uint8_t *buf, uint16_t event_size)
                 \r
             printf("crc16 0x%04X vs 0x%04X\n",crc16,crc16_2);\r
 \r
-            // if( crc16 == crc16_2) //校验通过,开始正式解析\r
+            if( crc16 == crc16_2) //校验通过,开始正式解析\r
             {\r
                 if(factorytest_mode_flag == 0 && header.submod != BLE_TEST_CMD_COMMON_SUB_MODE_SWITCH_MODE)\r
                     return ERRCODE_FAIL;\r
index 5eac7ab..93d3378 100644 (file)
@@ -2316,6 +2316,8 @@ errcode_t custom_i2c_read_regs(uint16_t slaveAddr, uint16_t reg, int regLength,
     data.receive_buf = readData;
     data.receive_len = readDataSize;
 
+    uint32_t irq_sts = osal_irq_lock();
+
     for (retry = 0; retry < CUSTOM_I2C_TIME_MAX; retry++) {
         ret = uapi_i2c_master_writeread(busIndex, slaveAddr, &data);
         if (ret == ERRCODE_SUCC) {
@@ -2326,6 +2328,7 @@ errcode_t custom_i2c_read_regs(uint16_t slaveAddr, uint16_t reg, int regLength,
         PRINT("i2cRead data read fail! busIndex %d, slaveAddr 0x%x, regaddr 0x%X,reglength %d, ret=0x%x\n",busIndex, slaveAddr,reg,regLength, ret);
     }
     osal_kfree(write_data);
+    osal_irq_restore(irq_sts);
 error:
 
     cnt = pm_veto_get_id_cnt(PM_ID_GSENSOR);
@@ -2379,6 +2382,9 @@ errcode_t custom_i2c_write_reg(uint16_t slaveAddr, uint16_t reg, int regLength,
     data.receive_buf = NULL;
     data.receive_len = 0;
 
+    
+    uint32_t irq_sts = osal_irq_lock();
+
     for (retry = 0; retry < CUSTOM_I2C_TIME_MAX; retry++) {
         ret = uapi_i2c_master_write(busIndex, slaveAddr, &data);
         if (ret == ERRCODE_SUCC) {
@@ -2388,6 +2394,8 @@ errcode_t custom_i2c_write_reg(uint16_t slaveAddr, uint16_t reg, int regLength,
     if (ret != ERRCODE_SUCC) {
         PRINT("i2cWrite cywee data write fail! ret=0x%x\n", ret);
     }
+
+    osal_irq_restore(irq_sts);
 free_mem:
     osal_kfree(write_data);
 error: