Merge #1933 into sdk602patch0911 from refs/changes/1933/head 1937/target/1
author彭磊 <1624952103@qq.com>
Mon, 7 Jul 2025 01:41:14 +0000 (01:41 +0000)
committer袁清梦 <3449750381@qq.com>
Mon, 7 Jul 2025 01:41:14 +0000 (01:41 +0000)
Code review from 彭磊

* refs/changes/1933/head: (8 commits squashed)

  - 优化血压测试流程(补)

  - Merge branch &#39;sdk602patch0911&#39; of https://codeup.aliyun.com/64191456b9581d62e8f81ac0/FD230 into sdk602patch0911

  - 优化血压测试流程补

  - 优化W9光电编码器响应

  - 优化4G开关

  - 优化4G开关(补)

  - 优化原像心率佩戴检测

  - Merge branch &#39;sdk602patch0911&#39; of https://codeup.aliyun.com/64191456b9581d62e8f81ac0/FD230 into sdk602patch0911

Signed-off-by: aliyun6865282430 <1624952103@qq.com>
Reviewed-by: Caisking <3449750381@qq.com>
Reviewed-by: 罗正 <1732036298@qq.com>
Reviewed-by: aliyun8003852482 <1224667075@qq.com>
Reviewed-by: snickersun@163.com <accounts_62b90f7fcf51ade33b6f628e@mail.teambition.com>
Reviewed-by: aliyun6865282430 <1624952103@qq.com>
Reviewed-by: 薛文强 <accounts_67aaf52ad497cd558d73ac32@mail.teambition.com>
Merged-by: Caisking <3449750381@qq.com>
link: https://codeup.aliyun.com/64191456b9581d62e8f81ac0/FD230/change/1933
code/sdk/drivers/peripheral/ppg/pah8009/sensor/pah800x_main.c
code/sdk/drivers/peripheral/rotary_encoder/mixo/mixo_hal.c
code/sdk/drivers/peripheral/rotary_encoder/mixo/mixo_ots_access.c
code/sdk/drivers/peripheral/rotary_encoder/mixo/mixo_ots_driver.c
code/sdk/drivers/peripheral/rotary_encoder/mixo/mixo_service.c
code/sdk/drivers/peripheral/utils/custom_utils.c

index b1225c6..e5d0679 100644 (file)
@@ -87,9 +87,7 @@ static osTimerId_t g_pah8009_timer = NULL;
 \r
 static uint8_t time_cnt = 0;\r
 \r
-static uint8_t history_wear_status = 2;\r
-\r
-static uint8_t cywee_wear_status = 0;\r
+static int history_wear_status = -1;\r
 \r
 //============================================================================\r
 // Private function\r
@@ -109,16 +107,6 @@ static void report_stress_data(const ppg_mems_data_t *ppg_mems_data_alg, uint8_t
 \r
 static void error_handle(void);\r
 \r
-static void pah8009_wearstatus_update(void)\r
-{\r
-    if(history_wear_status != cywee_wear_status)\r
-    {\r
-        history_wear_status = cywee_wear_status;\r
-#ifdef SUPPORT_CYWEE_SERVICE\r
-        do_cywee_service_check_msg(CYWEE_SERVICE_CMD_WEAR_STATUS_CHANGE,&cywee_wear_status);\r
-#endif\r
-    }\r
-}\r
 \r
 static void pah8009_unwearstatus_update(void)\r
 {\r
@@ -133,17 +121,24 @@ static void pah8009_unwearstatus_update(void)
         func(PPG_MSG_TYPE_WEARSTAT_UPDATE,&data,1);\r
         func(PPG_MSG_TYPE_WEARSTAT_UPDATE,&data,1);\r
     }\r
+#endif\r
+}   \r
 \r
-    if(uapi_dev_runtime_get_train_status())\r
+static void pah8009_wearstatus_update(int wear_status)\r
+{\r
+    if(history_wear_status != wear_status)\r
     {\r
-        cywee_wear_status = 0;\r
-        pah8009_wearstatus_update();\r
+        history_wear_status = wear_status;\r
 #ifdef SUPPORT_CYWEE_SERVICE\r
-        do_cywee_service_check_msg(CYWEE_SERVICE_CMD_HRS_CHANGE,&data);\r
+        do_cywee_service_check_msg(CYWEE_SERVICE_CMD_WEAR_STATUS_CHANGE,(uint8_t *)&history_wear_status);\r
 #endif\r
     }\r
-#endif\r
-}   \r
+\r
+    if(wear_status != 1)\r
+    {\r
+        pah8009_unwearstatus_update();\r
+    }\r
+}\r
 \r
 static void bubblesort(float *input,int count) \r
 {\r
@@ -1325,16 +1320,7 @@ static void process(uint64_t timestamp)
 \r
     // PRINT("touch_flag : %d\n",touch_flag);\r
 \r
-#ifdef SUPPORT_PPG_SERVICE\r
-    // ppg_msg_callback_t func =  ppg_get_send_msg_callback_func();\r
-\r
-    // if(func != NULL)\r
-    // {\r
-    //     uint8_t data = (uint8_t)touch_flag;\r
-    //     cywee_wear_status = data;\r
-    //     func(PPG_MSG_TYPE_WEARSTAT_UPDATE, &data, 1);\r
-    // }\r
-#endif\r
+    pah8009_wearstatus_update(touch_flag);\r
 \r
     if (_main.ppg_is_enabled)\r
     {\r
@@ -1688,7 +1674,7 @@ void pah8009_control(char *mode,uint8_t enable)
         pah_sensor_stop();\r
         if(uapi_dev_runtime_get_sleep_monitoring_status() && uapi_dev_runtime_get_hrs_passivity_flag())\r
         {\r
-            pah8009_wearstatus_update();   \r
+            pah8009_wearstatus_update(history_wear_status);   \r
             uapi_dev_runtime_set_hrs_passivity(0); \r
         }\r
     }\r
index 551e98e..e4d7dce 100644 (file)
@@ -24,7 +24,7 @@ void mixo_int_callback(pin_t pin, uintptr_t param)
 
 void mixo_check(void)
 {
-    if(mixo_get_check_mode() == TIMER_MODE)
+    // if(mixo_get_check_mode() == TIMER_MODE)
         mixo_ots_timer_callback();
     // else if(mixo_get_check_mode() == INT_MODE)
     // {
index 6078260..58955ad 100644 (file)
@@ -2,7 +2,7 @@
  * @Author: penglei 1624952103@qq.com
  * @Date: 2025-01-04 10:53:54
  * @LastEditors: penglei 1624952103@qq.com
- * @LastEditTime: 2025-01-04 16:38:46
+ * @LastEditTime: 2025-07-05 15:32:27
  * @FilePath: /sdk615/code/sdk/zhihui/drivers/rotary_encoder/mixo/src/mixo_ots_access.c
  * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
  */
@@ -37,7 +37,8 @@ int mixo_ots_reg_read(uint8_t regAddr, uint8_t* regData)
     *regData = 0x00;  // 清空数据
     // printf("<-%02X,%02X,%02X\r\n",slave_addr,regAddr,*regData);
     // return mixo_gpio_i2c_write_read(slave_addr, &regAddr, 1, regData, 1);
-    return custom_i2c_read_regs(slave_addr, regAddr, 1, regData, 1,MIXO_OTS_I2C_BUS);
+    custom_i2c_read_regs(slave_addr, regAddr, 1, regData, 1,MIXO_OTS_I2C_BUS);
+    return 0;
 }
 
 int mixo_ots_reg_consecutive_read(uint8_t regStartAddr,int len,uint8_t* regData)
@@ -57,6 +58,7 @@ int mixo_ots_reg_write(uint8_t regAddr, uint8_t regData)
     // uint8_t tmp[2] = {regAddr, regData};
     // printf("->%02X,%02X,%02X\r\n",slave_addr,regAddr,regData);
     // return mixo_gpio_i2c_write_read(slave_addr, tmp, 2, NULL, 0);
-    return custom_i2c_write_reg(slave_addr, regAddr, 1, &regData, 1,MIXO_OTS_I2C_BUS);
+    custom_i2c_write_reg(slave_addr, regAddr, 1, &regData, 1,MIXO_OTS_I2C_BUS);
+    return 0;
 }
 
index be7f699..844e511 100644 (file)
@@ -32,9 +32,9 @@ static void put_crown_result(int16_t x)
     {   
         return;
     }
-    if(abs(x)>=16 )
+    if(abs(x)>=8 )
     {
-        ots_result += x/16; //大于4的值除以4, 代表角度, 单位0.5°
+        ots_result += x/8; //大于4的值除以4, 代表角度, 单位0.5°
     }
     else
     {
@@ -52,12 +52,19 @@ static void put_crown_result(int16_t x)
         g_encoder_callback();
 }
 
+static void report_zero_data_for_start_stop_flag(void)
+{
+   ots_result = 0;
+
+   if (g_encoder_callback != NULL)
+        g_encoder_callback();
+}
 
 void mixo_ots_timer_callback(void)
 {
     uint8_t mot_status = 0x00;
     mixo_ots_get_mot_status(&mot_status);
-
+    // printf("mot_status:0x%x\n",mot_status);
     if ((mot_status & 0x80) == 0x80)
     {
         timer_cnt = 0;
@@ -71,11 +78,19 @@ void mixo_ots_timer_callback(void)
         // printf("%ld,%d,%d,%d,%d\r\n", timestamp, raw_data.dx, raw_data.dy, mot_status, dx_sum);
         // PRINT("%d,%d,%d,%d\r\n",raw_data.dx, raw_data.dy, mot_status, dx_sum);
 
-        put_crown_result(raw_data.dx);
+        // ots_result = raw_data.dx;
+
+        if (stand_still == 1) 
+        {
+            //上次是静止,上报状态改变
+            report_zero_data_for_start_stop_flag();
+        }
         stand_still = 0;
 
-        if (g_encoder_callback != NULL)
-            g_encoder_callback();
+        put_crown_result(raw_data.dx);
+
+        // if (g_encoder_callback != NULL)
+        //     g_encoder_callback();
 
     }
     else
@@ -92,6 +107,11 @@ void mixo_ots_timer_callback(void)
         //     mixo_ots_forced_clear_int();  // 强制拉高MOT脚
         //     int_mode = 1;
         // }
+        if (stand_still == 0) 
+        {
+            //上次是转动,上报状态改变
+            report_zero_data_for_start_stop_flag();
+        }
         stand_still = 1;
     }
 }
index f9225ce..ad62a5b 100644 (file)
@@ -19,7 +19,7 @@
 */
 #define MIXO_SERVICE_CMD_TIMER_CHECK 0x11
 
-#define MIXO_SERVICE_TIMER_CHECK_MS  30
+#define MIXO_SERVICE_TIMER_CHECK_MS  20
 
 static bool g_mixo_service_initialled = false;
 
@@ -53,7 +53,7 @@ void mixo_service_timer_stop(void)
     if(mixo_service_timer_running == true && g_mixo_service_timer)
     {
         mixo_suspend();
-        mixo_clean_result();
+        // mixo_clean_result();
         osTimerStop(g_mixo_service_timer);
         mixo_service_timer_running = false;
     }
@@ -118,7 +118,7 @@ void create_mixo_queue(void)
     }
 }
 
-#define MIXO_BOARD_TASK_SIZE   0x500
+#define MIXO_BOARD_TASK_SIZE   0x1000
 errcode_t uapi_mixo_service_init(void)
 {
     PRINT("uapi_mixo_service_init !\r\n");
@@ -134,7 +134,7 @@ errcode_t uapi_mixo_service_init(void)
     app_task_definition_t taskcfg={0};
     taskcfg.create_queue_handle = create_mixo_queue;
     taskcfg.attr.name="mixo_service";
-    taskcfg.attr.priority = osPriorityBelowNormal4;
+    taskcfg.attr.priority = osPriorityNormal1;
     taskcfg.attr.stack_size = MIXO_BOARD_TASK_SIZE;
     taskcfg.func = mixo_service_check_task;
     taskcfg.use_mem = USE_EXTEND_MEM;
@@ -146,7 +146,7 @@ errcode_t uapi_mixo_service_init(void)
         return ERRCODE_FAIL;
     }
 
-    mixo_init();
+    // mixo_init();
     
     g_mixo_service_timer = osTimerNew((osTimerFunc_t)mixo_service_timer_callback, osTimerPeriodic, NULL, NULL);
 
index 3fab3d0..81e180f 100644 (file)
@@ -1430,10 +1430,10 @@ int uapi_callVolumeGet(void)
 
 void power_on_cat1(void)
 {
-    #if defined(FD230) && !(defined(BOARD_W9) || defined(BOARD_N9))
+    #if defined(BOARD_FD230)
     uapi_cat1_power_on(1);    
     uapi_cat1_reset(0);
-    #else
+    #elif (defined(BOARD_W9) || defined(BOARD_N9))
     uapi_cat1_reset(0);
     uapi_cat1_power_on(1);  
     uapi_cat1_bat_on(1);
@@ -1445,10 +1445,10 @@ void power_on_cat1(void)
 
 void power_off_cat1(void)
 {
-    #if defined(FD230) && !(defined(BOARD_W9) || defined(BOARD_N9))
+    #if defined(BOARD_FD230)
     uapi_cat1_reset(1);
     uapi_cat1_power_on(0); 
-    #else
+    #elif (defined(BOARD_W9) || defined(BOARD_N9))
     uapi_cat1_bat_on(0);
     uapi_cat1_reset(1);
     uapi_cat1_power_on(1); 
@@ -1466,6 +1466,13 @@ void uapi_set4GCapability(bool isopen)
         {
             return;
         }
+        
+        uint8_t cnt = pm_veto_get_id_cnt(PM_ID_CAT1);
+        if (cnt == 0) 
+        {
+            uapi_pm_add_sleep_veto(PM_ID_CAT1);
+        }
+
         uapi_save_runtime_log(RUNTIME_LOG_CAT1_4G_OPEN);
         power_on_cat1();
         // if(!uapi_dev_runtime_get_saveele_status())
@@ -1487,6 +1494,12 @@ void uapi_set4GCapability(bool isopen)
             }
 
         #endif
+
+        cnt = pm_veto_get_id_cnt(PM_ID_CAT1);
+        if (cnt == 1) 
+        {
+            uapi_pm_remove_sleep_veto(PM_ID_CAT1);
+        }
     }
     else
     {
@@ -1503,12 +1516,6 @@ void uapi_set4GCapability(bool isopen)
         /*4G 开电有时有干扰进日志串口,因此关闭4G才开启日志串口*/
         // uapi_custom_set_uart_rx_enable_flag(true);
         
-        uint8_t cnt = pm_veto_get_id_cnt(PM_ID_CAT1);
-        if (cnt == 1) 
-        {
-            uapi_pm_remove_sleep_veto(PM_ID_CAT1);
-        }
-
         #ifdef SUPPORT_TCPIP
             tcp_thread_id = tcp_get_thread_id();
             if(tcp_thread_id != NULL)
@@ -1520,6 +1527,13 @@ void uapi_set4GCapability(bool isopen)
                     PRINT("tcpip_thread_suspend succed\n");
             }
         #endif
+
+        uint8_t cnt = pm_veto_get_id_cnt(PM_ID_CAT1);
+        if (cnt == 1) 
+        {
+            uapi_pm_remove_sleep_veto(PM_ID_CAT1);
+        }
+
     }
 }