Merge #1950 into sdk602patch0911 from refs/changes/1950/head 1960/target/1 1961/target/1
author彭磊 <1624952103@qq.com>
Mon, 14 Jul 2025 07:48:05 +0000 (07:48 +0000)
committer袁清梦 <3449750381@qq.com>
Mon, 14 Jul 2025 07:48:05 +0000 (07:48 +0000)
Code review from 彭磊

* refs/changes/1950/head: (15 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

  - 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>
Merged-by: Caisking <3449750381@qq.com>
link: https://codeup.aliyun.com/64191456b9581d62e8f81ac0/FD230/change/1950
15 files changed:
code/sdk/build/config/target_config/brandy/config.py
code/sdk/drivers/boards/brandy_evb/board_config/board_w9.h
code/sdk/drivers/peripheral/bp/bn02/bn02.c
code/sdk/drivers/peripheral/bp/service/bp_tcp_server.c
code/sdk/drivers/peripheral/bp/service/bp_tcp_server.h
code/sdk/drivers/peripheral/ppg/hal/ppg_hal.c
code/sdk/drivers/peripheral/ppg/hal/ppg_hal.h
code/sdk/drivers/peripheral/ppg/pah8009/CMakeLists.txt
code/sdk/drivers/peripheral/ppg/pah8009/algorithm/pah_hr/V303009/pxialg.h
code/sdk/drivers/peripheral/ppg/pah8009/algorithm/pah_hr/V303009/test_library_HRD.c
code/sdk/drivers/peripheral/ppg/pah8009/sensor/pah800x_main.c
code/sdk/drivers/peripheral/ppg/pah8009/sensor/pah800x_main.h
code/sdk/drivers/peripheral/ppg/service/ppg_service.cpp
code/sdk/drivers/peripheral/utils/custom_utils.c
code/sdk/drivers/peripheral/utils/custom_utils.h

index 58981c1..c99ad42 100755 (executable)
@@ -599,7 +599,7 @@ target = {
                     'DOWNLOAD_GNSS_SWITCH',
                     'TPTYPE_CST86XX',
                     'NANDFLASH_F35UQA',
-                    #'PPG_GH3X2X',
+                    'PPG_PAH8009',
                     'GYRO_SH5001',
                     'ROTARYENCODER_MIXO',
                     'ENABLE_GYRO',
index 92725bf..7921e4d 100644 (file)
@@ -336,10 +336,14 @@ const hal_gpio_config_t g_gpio_function_config[PIN_MAX_NUMBER] = {
      {   S_AGPIO_R3, HAL_GPIO_DIRECTION_INPUT, NULL, GPIO_INTERRUPT_RISING_EDGE, bp_int_callback },
 #endif
 #ifdef SUPPORT_PPG_SERVICE
+#ifdef PPG_GH3X2X
+    {   S_AGPIO_R6, HAL_GPIO_DIRECTION_INPUT, NULL, GPIO_INTERRUPT_RISING_EDGE,  ppg_int_callback},
+#elif defined PPG_PAH8009
     {   S_AGPIO_R6, HAL_GPIO_DIRECTION_INPUT, NULL, GPIO_INTERRUPT_FALLING_EDGE,  ppg_int_callback},
 #endif
+#endif
 #ifdef ROTARYENCODER_MIXO
-    // {   S_AGPIO_L0, HAL_GPIO_DIRECTION_INPUT, NULL, GPIO_INTERRUPT_DEDGE,  mixo_int_callback},
+    // {   S_AGPIO_L0, HAL_GPIO_DIRECTION_INPUT, NULL, GPIO_INTERRUPT_FALLING_EDGE,  mixo_int_callback},
 #endif
 };
 /**
index bebd4fc..3a85e45 100644 (file)
@@ -2,7 +2,7 @@
  * @Author: penglei 1624952103@qq.com\r
  * @Date: 2025-01-16 12:35:15\r
  * @LastEditors: penglei 1624952103@qq.com\r
- * @LastEditTime: 2025-07-04 17:18:32\r
+ * @LastEditTime: 2025-07-10 10:45:40\r
  * @FilePath: /sdk615/code/sdk/zhihui/drivers/bp/bn02/bn02.c\r
  * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE\r
  */\r
@@ -21,8 +21,8 @@
 #define BN02_I2C_BUS I2C_BUS_0\r
 #define I2C_ADDR_BN02_W      0x0a\r
 #define I2C_ADDR_BN02_R      0x0b\r
-#define P_EN          S_AGPIO_L19\r
-#define P_INT         S_AGPIO_R3\r
+#define BP_EN          S_AGPIO_L19\r
+#define BP_INT         S_AGPIO_R3\r
 \r
 #define POWER_EN      S_AGPIO_R0\r
 \r
@@ -119,17 +119,17 @@ void Bn02_Power_Ctrl(int onoff)
                uapi_gpio_set_dir(POWER_EN, GPIO_DIRECTION_OUTPUT);\r
                uapi_gpio_set_val(POWER_EN, GPIO_LEVEL_HIGH);\r
                LOS_Mdelay(1);\r
-               uapi_pin_set_mode(P_EN, (pin_mode_t)HAL_PIO_FUNC_GPIO);\r
-               uapi_gpio_set_dir(P_EN, GPIO_DIRECTION_OUTPUT);\r
-               uapi_gpio_set_val(P_EN, GPIO_LEVEL_HIGH);\r
+               uapi_pin_set_mode(BP_EN, (pin_mode_t)HAL_PIO_FUNC_GPIO);\r
+               uapi_gpio_set_dir(BP_EN, GPIO_DIRECTION_OUTPUT);\r
+               uapi_gpio_set_val(BP_EN, GPIO_LEVEL_HIGH);\r
                // delay_ms(20);\r
                LOS_Mdelay(50);\r
        }\r
        else\r
        {\r
-               uapi_pin_set_mode(P_EN, (pin_mode_t)HAL_PIO_FUNC_GPIO);\r
-               uapi_gpio_set_dir(P_EN, GPIO_DIRECTION_OUTPUT);\r
-               uapi_gpio_set_val(P_EN, GPIO_LEVEL_LOW);\r
+               uapi_pin_set_mode(BP_EN, (pin_mode_t)HAL_PIO_FUNC_GPIO);\r
+               uapi_gpio_set_dir(BP_EN, GPIO_DIRECTION_OUTPUT);\r
+               uapi_gpio_set_val(BP_EN, GPIO_LEVEL_LOW);\r
                LOS_Mdelay(1);\r
                uapi_pin_set_mode(POWER_EN, (pin_mode_t)HAL_PIO_FUNC_GPIO);\r
                uapi_gpio_set_dir(POWER_EN, GPIO_DIRECTION_OUTPUT);\r
@@ -140,12 +140,12 @@ void Bn02_Power_Ctrl(int onoff)
 \r
 void bn02_int_init(void)\r
 {\r
-       uapi_pin_set_ie(P_INT,HAL_PIO_IE_ENBALE);\r
+       uapi_pin_set_ie(BP_INT,HAL_PIO_IE_ENBALE);\r
 }\r
 \r
 void bn02_int_deinit(void)\r
 {\r
-       uapi_pin_set_ie(P_INT,HAL_PIO_IE_DISABLE);\r
+       uapi_pin_set_ie(BP_INT,HAL_PIO_IE_DISABLE);\r
 }\r
 \r
 void bn02_int_handle(void)\r
@@ -169,7 +169,8 @@ void bn02_int_handle(void)
                // printf("0x%x 0x%x 0x%x 0x%x\n",i,bn02_buf[i],bn02_buf[i+1],bn02_buf[i+2],reply_data[cnt]);\r
        }\r
 \r
-       do_bp_tcp_server_send_data(BP_TCP_SERVICE_CMD_DATA_UPLOAD,(void *)reply_data,cnt);\r
+       if(uapi_cat1_get_power_stat())\r
+               do_bp_tcp_server_send_data(BP_TCP_SERVICE_CMD_DATA_UPLOAD,(void *)reply_data,cnt);\r
 \r
        if(bn02_data && fp)\r
        {\r
index 38d3442..020db01 100644 (file)
 
 
 
-#define MAX_CNT 16 * 5 * 60
+// #define MAX_CNT 16 * 5 * 60
+#define MAX_CNT 16 * 5 * 50
+
+
 static unsigned long g_app_queue= 0xFFFFFFFF;
 
 static int *tcp_data = NULL;
@@ -58,11 +61,7 @@ static int g_listen_sock = -1;
 static uint8_t LK_STATUS = 0;
 static uint8_t BP_GET_STATUS = 0;
 
-static int bp_sbp = 0;
-static int bp_dbp = 0;
-static int bp_pressure = 0;
-static int bp_fatigue = 0;
-static int bp_emo = 0;
+static bp_data_t bp_data = {0};
 
 static char *imei = NULL;
 
@@ -84,8 +83,8 @@ struct bp_ipaddr_t
 
 void bp_set_adjust_data(int sbp,int dbp)
 {
-    bp_sbp = sbp;
-    bp_dbp = dbp;
+    bp_data.sbp = sbp;
+    bp_data.dbp = dbp;
 }
 
 void bp_set_measure_type(uint8_t type)
@@ -93,14 +92,12 @@ void bp_set_measure_type(uint8_t type)
     bp_measure_type = type;
 }
 
-void bp_get_data(int *sbp,int *dbp)
+void bp_get_data(bp_data_t *data)
 {
-    if(sbp == NULL || dbp == NULL)
+    if(data == NULL)
         return;
-    *sbp = bp_sbp;
-    *dbp = bp_dbp;
-    bp_sbp = 0;
-    bp_dbp = 0;
+
+    memcpy_s(data,sizeof(bp_data_t),&bp_data,sizeof(bp_data_t));
 }
 
 static void bp_save_request_code(char *reqeust_code,int len)
@@ -511,19 +508,19 @@ void tcp_recv_data_handler(const char *input, int input_len)
             if (sbp && dbp && emo && pressure && fatigue) 
             {
                 printf("sbp: %d\n", sbp->valueint);
-                bp_sbp = sbp->valueint;
+                bp_data.sbp = sbp->valueint;
 
                 printf("dbp: %d\n", dbp->valueint);
-                bp_dbp = dbp->valueint;
+                bp_data.dbp = dbp->valueint;
 
-                printf("emo: %d\n", emo->valueint);
-                bp_emo = emo->valueint;
+                printf("emo: %s\n", emo->valuestring);
+                memcpy_s(bp_data.emo,sizeof(bp_data.emo),emo->valuestring,strlen(emo->valuestring));
 
                 printf("pressure: %d\n", pressure->valueint);
-                bp_pressure = pressure->valueint;
+                bp_data.pressure = pressure->valueint;
 
                 printf("fatigue: %d\n", fatigue->valueint);
-                bp_fatigue = fatigue->valueint;
+                bp_data.fatigue = fatigue->valueint;
 
                 BP_GET_STATUS = 1;
 
@@ -1312,14 +1309,21 @@ FAILED:
         }
     }
 
-       temp_len += snprintf(json_data + temp_len, json_len - temp_len,"\"ppg_fs\":\"%d\"}", 81);
+       // temp_len += snprintf(json_data + temp_len, json_len - temp_len,"\"ppg_fs\":\"%d\"}", 81);
 
     
     // if(bp_measure_type == BP_ADJUST)
     // {
-    //     temp_len += snprintf(json_data + temp_len, json_len - temp_len, "\"cal_value\":[%d,%d],", 120,80);
-    //     bp_sbp = 0;
-    //     bp_dbp = 0;
+    //     
+    if(bp_measure_type == BP_ADJUST)
+    {
+        temp_len += snprintf(json_data + temp_len, json_len - temp_len,"\"ppg_fs\":\"%d\",", 81);
+        temp_len += snprintf(json_data + temp_len, json_len - temp_len, "\"cal_value\":[%d,%d]\"}",120,80);
+    }
+    else
+    {
+        temp_len += snprintf(json_data + temp_len, json_len - temp_len,"\"ppg_fs\":\"%d\"}", 81);
+    }
     // }
 
 
@@ -1409,9 +1413,9 @@ FAILED:
     //     goto FAILED;
     // }
 
-    for(int i = 0; i < send_len; i += 512) 
+    for(int i = 0; i < send_len; i += 1024) 
     {
-        int chunk_size = (send_len - i > 512) ? 512 : send_len - i; 
+        int chunk_size = (send_len - i > 1024) ? 1024 : send_len - i; 
         
         ret = tcp_send(g_listen_sock, send_str + i, chunk_size);
         if(ret != 0) 
@@ -1892,6 +1896,7 @@ void bp_check_active_code(char *active_code)
 
 void bp_tcp_data_clean(void)
 {
+    memset(&bp_data,0,sizeof(bp_data));
     if(tcp_data != NULL)
     {
         free(tcp_data);
index 7f39ed8..e5ce290 100644 (file)
@@ -2,7 +2,7 @@
  * @Author: penglei 1624952103@qq.com
  * @Date: 2025-02-14 10:30:32
  * @LastEditors: penglei 1624952103@qq.com
- * @LastEditTime: 2025-07-02 14:04:37
+ * @LastEditTime: 2025-07-07 16:10:14
  * @FilePath: /sdk615/code/sdk/zhihui/drivers/bp/service/bp_ble_service.h
  * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
  */
@@ -26,6 +26,18 @@ typedef struct {
     uint32_t len;
 } bp_tcp_data_mail_t;
 
+
+#pragma pack(1)
+typedef struct 
+{
+    int sbp;
+    int dbp;
+    int pressure; //压力
+    int fatigue;  //疲劳度
+    char emo[20];      //情绪
+}bp_data_t;
+#pragma pack()
+
 #define BP_TCP_SERVICE_CMD_DATA_UPLOAD 0x1
 #define BP_TCP_SERVICE_CMD_SERVER_INIT 0x2
 #define BP_TCP_SERVICE_CMD_SERVER_DEINIT 0x3
@@ -38,7 +50,7 @@ int get_active_code(void);
 int tcp_sign_up(void);
 int bp_tcp_login(void);
 void bp_activate_algorithm(void);
-void bp_get_data(int *sbp,int *dbp);
+void bp_get_data(bp_data_t *data);
 void bp_set_measure_type(uint8_t type);
 
 void bp_set_adjust_data(int sbp,int dbp);
index a523acf..65b7e20 100644 (file)
@@ -2,7 +2,7 @@
  * @Author: penglei 1624952103@qq.com
  * @Date: 2024-03-13 15:08:38
  * @LastEditors: penglei 1624952103@qq.com
- * @LastEditTime: 2025-06-25 15:10:29
+ * @LastEditTime: 2025-07-10 17:18:40
  * @FilePath: /FD230/code/sdk/drivers/peripheral/ppg/hx3695/hx3695_hal.c
  * @Description: 
  * 
@@ -113,7 +113,7 @@ uint16_t ppg_get_chip_id(void)
 #elif defined PPG_GH3X2X
     // chip_id = GH3X2X_AFE_GetChipId();
 #endif
-        ppg_power_off();
+    ppg_power_off();
     return chip_id;
 }
 
index 8cda8ad..e2b9ebc 100644 (file)
@@ -2,7 +2,7 @@
  * @Author: penglei 1624952103@qq.com
  * @Date: 2024-06-07 11:18:26
  * @LastEditors: penglei 1624952103@qq.com
- * @LastEditTime: 2025-06-09 11:26:55
+ * @LastEditTime: 2025-07-09 16:12:34
  * @FilePath: /FD230/code/sdk/drivers/peripheral/ppg/ppg/ppg_hal.h
  * @Description: 
  * 
@@ -17,7 +17,7 @@ extern "C" {
 #endif /* __cplusplus */
 
 #include "stdint.h"
-#include "tyhx_hrs_custom.h"
+
 
 #define AGC_TIMER_MODE 0
 #define HRS_TIMER_MODE 1
@@ -28,7 +28,7 @@ extern "C" {
 #elif defined PPG_PAH8009
 #define PPG_CHIP_ID 0x8008
 #elif defined PPG_GH3X2X
-#define PPG_CHIP_ID GH3X2X_CHIP_ID
+#define PPG_CHIP_ID 0x3
 #else
 #define PPG_CHIP_ID 0
 #endif
index ad98053..6f44d7e 100644 (file)
@@ -26,7 +26,7 @@ set(PRIVATE_DEFINES
 )
 
 set(PUBLIC_DEFINES
-    PPG_PAH8009
+
 )
 
 # use this when you want to add ccflags like -include xxx
@@ -44,10 +44,14 @@ set(MAIN_COMPONENT
     false
 )
 
+if("PPG_PAH8009" IN_LIST DEFINES)
+
 find_library(LIB_PATH_SPO2 algorithm/pah_spo2/V703/libv703_0_1.a ${CMAKE_CURRENT_SOURCE_DIR})
 find_library(LIB_PATH_HR algorithm/pah_hr/V303009/libv307009_4.a ${CMAKE_CURRENT_SOURCE_DIR})
 
 target_link_libraries(${TARGET_NAME} PRIVATE -Wl,--whole-archive ${LIB_PATH_HR} ${LIB_PATH_SPO2} PRIVATE -Wl,--whole-archive)
 
+endif()
+
 build_component()
 
index ac2b98c..bada56b 100644 (file)
@@ -689,8 +689,8 @@ PXIALG_API uint8_t PxiAlg_DecodeProcess(uint32_t data, int touch_flag, float tim
 PXIALG_API uint8_t  PxiAlg_Entrance_0(pah8series_data_t *pah8series_data);\r
 PXIALG_API uint8_t  PxiAlg_Entrance(pah8series_data_t *pah8series_data);\r
 PXIALG_API uint8_t  PxiAlg_EntranceD(pah8series_data_t *pah8series_data);\r
-PXIALG_API uint32_t PxiAlg_Query_Mem_Size();\r
-PXIALG_API uint8_t PxiAlg_GetHrUpdateFlag();\r
+PXIALG_API uint32_t PxiAlg_Query_Mem_Size(void);\r
+PXIALG_API uint8_t PxiAlg_GetHrUpdateFlag(void);\r
 \r
 PXIALG_API void PxiAlg_SetData_Seg(pah8series_data_t *pah8series_data);\r
 PXIALG_API uint8_t PxiAlg_Process_Seg(uint8_t *is_finished);\r
index 4cecb6b..204d613 100644 (file)
@@ -5,12 +5,12 @@
 #include "pah800x_main.h"\r
 #include "pah800x_bsp.h"\r
 #include <math.h>  \r
+#include "pxialg.h"\r
+#include "pxivar.h"\r
+\r
 //#include "nrf_delay.h"\r
 #define array_szie(arr) (sizeof(arr) / sizeof(arr[0]))\r
 \r
-\r
-\r
-\r
 void test_library_HRD(void)\r
 {\r
        int i               = 0;\r
@@ -110,3 +110,8 @@ void test_library_HRD(void)
 \r
     return;\r
 }\r
+\r
+void log_printf(char *s, float f)\r
+{\r
+    printf("%s: %f\n", s, f);\r
+}
\ No newline at end of file
index e5d0679..2229772 100644 (file)
@@ -347,8 +347,15 @@ void pah_sensor_stop(void)
     {\r
         touch_sensor_disable();\r
     }\r
-    pah_800x_deinit(&_main.pah_800x);      \r
-      \r
+\r
+    if(work_mode == 1)\r
+        hr_algorithm_disable();\r
+    else if(work_mode == 2)\r
+        spo2_algorithm_disable();\r
+\r
+    pah_800x_deinit(&_main.pah_800x);   \r
+\r
+    hr = 0;   \r
 }\r
 \r
 void ppg_interrupt_handle(void)\r
@@ -1697,7 +1704,7 @@ void pah8009_control(char *mode,uint8_t enable)
         } else if (strcmp(mode, "spo2") == 0) {\r
             // md = SPO2_MODE;\r
             pah_sensor_init(diw_4mm_ir_r_ir_spo2);\r
-            auto_mode_sensor_start();\r
+            ppg_only_sensor_start();\r
             work_mode = 2;\r
         } else if (strcmp(mode, "leaklight") == 0) {\r
             // md = FT_LEAK_LIGHT_MODE;\r
index 2e51b95..8445abe 100644 (file)
@@ -9,13 +9,13 @@
 \r
 \r
 //static hr algotirhm\r
-// #include "pxialg.h"\r
+#include "pxialg.h"\r
 \r
 // spo2 algorithm\r
-// #include "pxialg_spo2.h"\r
+#include "pxialg_spo2.h"\r
 \r
 // Stress algorithm\r
-// #include "pxialg_hrv.h"\r
+#include "pxialg_hrv.h"\r
 #ifdef PPG_MEMS_Synchronize\r
 //MEMS-INT\r
 #include "pxi_interp.h"\r
index b855bda..1d934b1 100644 (file)
@@ -390,22 +390,17 @@ errcode_t uapi_ppg_service_init(void)
 {
     PRINT("uapi_ppg_service_init !\r\n");
 
-    ppg_power_on();
-
     if (ppg_get_chip_id() != PPG_CHIP_ID)
     {
-        ppg_power_off();
         LOS_Mdelay(10);
-        ppg_power_on();
 
         if (ppg_get_chip_id() != PPG_CHIP_ID)
         {
             PRINT("ppg not exist!\r\n");
-            ppg_power_off();
             return ERRCODE_FAIL;
         }
     }
-    ppg_power_off();
+
     ppg_register_msg_callback(ppg_msg_callback);//注册驱动回调
     // ppg_send_cmd_to_driver("wear",0);
 
index 81e180f..f31e212 100644 (file)
@@ -551,6 +551,9 @@ void startup_post_init_task(void)
         CustomEventPublish(TOPIC_EVENT_NEXTDAY_UPDATE, NULL , 0);
         //do_cywee_service_check_msg(CYWEE_SERVICE_CMD_RESET_DAILY_DATA,NULL);
     }
+
+    // LOS_Msleep(1000);
+    // uapi_set4GCapability(true);
 #ifdef A5133_DEMO_SERVER
     uapi_button_register_event_cb(a5133_demo_msg_unbind_callback, BUTTON_PWR_CLICKUP_2);
     a5133_demo_msg_change_callback();
@@ -2657,32 +2660,30 @@ error:
     return (ret>0) ? ret*-1: ret;
 }
 
-
-errcode_t custom_i2c_transfer(uint16_t slaveAddr, uint16_t reg, int regLength, uint8_t *writeData, int writeDataSize, uint8_t *readData, int readDataSize, int busIndex)
+errcode_t custom_i2c_transfer(uint16_t slaveAddr,uint8_t *writeData, int writeDataSize, uint8_t *readData, int readDataSize, int busIndex)
 {
+
+    uint8_t cnt = pm_veto_get_id_cnt(PM_ID_GSENSOR);
+    if (cnt == 0) 
+    {
+        uapi_pm_add_sleep_veto(PM_ID_GSENSOR);
+    }
+
     errcode_t ret;
     uint32_t retry;
     i2c_data_t data;
     uint8_t *write_data = NULL;
     int16_t write_len = 0;
 
-    //custom_i2c_init();
-    write_len = regLength + writeDataSize;
+    //custom_iic_init();
+    write_len = writeDataSize;
     write_data = (uint8_t *)osal_kmalloc(write_len, OSAL_GFP_KERNEL);
     if (write_data == NULL) {
         PRINT(" send buff malloc fail!");
         goto error;
     }
 
-    if( regLength == 2)
-    {
-        write_data[0] = ((uint8_t*)&reg)[0];
-        write_data[1] = ((uint8_t*)&reg)[1];
-    }else{
-        write_data[0] = (uint8_t)reg;
-    }
-
-    ret = (uint32_t)memcpy_s(write_data + regLength, writeDataSize, writeData, writeDataSize);
+    ret = (uint32_t)memcpy_s(write_data, writeDataSize, writeData, writeDataSize);
     if (ret != EOK) {
         PRINT("send_buf content copy fail! ret=0x%x\n", ret);
         goto free_mem;
@@ -2699,12 +2700,19 @@ errcode_t custom_i2c_transfer(uint16_t slaveAddr, uint16_t reg, int regLength, u
         }
     }
     if (ret != ERRCODE_SUCC) {
-        PRINT("data read fail! ret=0x%x\n", ret);
+        PRINT("data read fail! ret=0x%x slaveAddr : 0x%x\n", ret,slaveAddr);
     }
 
 free_mem:
     osal_kfree(write_data);
 error:
+
+    cnt = pm_veto_get_id_cnt(PM_ID_GSENSOR);
+    if (cnt == 1) 
+    {
+        uapi_pm_remove_sleep_veto(PM_ID_GSENSOR);
+    }
+
     return (ret>0) ? ret*-1: ret;
 }
 
index db7c88e..288ce83 100644 (file)
@@ -324,7 +324,7 @@ void uapi_restore_factory_setting(void);
 void custom_i2c_reset(uint8_t i2cbus, uint16_t i2c_clock);
 errcode_t custom_i2c_write_reg(uint16_t slaveAddr, uint16_t reg, int regLength, uint8_t *writeData, int writeDataSize, int busIndex);
 errcode_t custom_i2c_read_regs(uint16_t slaveAddr, uint16_t reg, int regLength, uint8_t *readData, int readDataSize, int busIndex);
-errcode_t custom_i2c_transfer(uint16_t slaveAddr, uint16_t reg, int regLength, uint8_t *writeData, int writeDataSize, uint8_t *readData, int readDataSize, int busIndex);
+errcode_t custom_i2c_transfer(uint16_t slaveAddr,uint8_t *writeData, int writeDataSize, uint8_t *readData, int readDataSize, int busIndex);
 errcode_t custom_i2c_test(void);
 
 uint32_t custom_i2c_suspend(void);