添加cywee中断模式读取数据(暂时不可用) 68/1 68/head
authorpenglei <1624952103@qq.com>
Mon, 22 Apr 2024 13:06:24 +0000 (21:06 +0800)
committerpenglei <1624952103@qq.com>
Mon, 22 Apr 2024 13:06:24 +0000 (21:06 +0800)
code/sdk/drivers/boards/brandy_evb/board_config/board_evb.h
code/sdk/drivers/peripheral/cywee/Inc/cywee_service.h
code/sdk/drivers/peripheral/cywee/service/cywee_service.c
code/sdk/drivers/peripheral/cywee/src/main_dml.c
code/sdk/drivers/peripheral/ppg/hx3695/hx3695_hal.c
code/sdk/drivers/peripheral/utils/custom_utils.c
code/sdk/drivers/peripheral/utils/custom_utils.h

index 1490239..cf64342 100755 (executable)
@@ -10,6 +10,7 @@
 #include "pinctrl_porting.h"
 #include "gpio_porting.h"
 #include "platform_types.h"
+#include "cywee_service.h"
 #ifdef SUPPORT_CAT1_SERVICE
 #include "cat1_ctl.h"
 #endif
@@ -156,7 +157,7 @@ const hal_pio_config_t g_pio_function_config[PIN_MAX_NUMBER] = {
     { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE },    // S_AGPIO_L9 dsp uart   TP35
     { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE },    // S_AGPIO_L10 dsp uart   TP36
 #endif
-    { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE },    // S_AGPIO_L11 G_INT1
+    { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE },    // S_AGPIO_L11 G_INT1
 
     { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE },    // S_AGPIO_L12 i2c data HX3507_SDIO
     { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE },   // S_AGPIO_L13 i2c CLK HX3507_SCLK
@@ -167,7 +168,7 @@ const hal_pio_config_t g_pio_function_config[PIN_MAX_NUMBER] = {
     
     { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE },    // S_AGPIO_L17 HX3507_INT   not use
     { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE },    // S_AGPIO_L18  VDDEN  //暂时无用,采用VDDIO 默认开启 EXt V3.0 EXt V1.8
-    { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE },  // S_AGPIO_L19  G_INT2
+    { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_ENBALE },  // S_AGPIO_L19  G_INT2  //暂时不用 
 
     { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_L20  0.2C_CHRG
     { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE },    // S_AGPIO_L21  NTC_VDD_ON 给低打开 NTC上拉电源
@@ -285,15 +286,15 @@ const hal_gpio_config_t g_gpio_function_config[PIN_MAX_NUMBER] = {
 
 
     /**G sensor G_INT1 S_AGPIO_L11 G_INT2 S_AGPIO_L19*/
-    {   S_AGPIO_L11, HAL_GPIO_DIRECTION_INPUT, HAL_GPIO_LEVEL_HIGH, 0, NULL },
-    {   S_AGPIO_L19, HAL_GPIO_DIRECTION_INPUT, HAL_GPIO_LEVEL_HIGH, 0, NULL },
+    //{   S_AGPIO_L11, HAL_GPIO_DIRECTION_INPUT, HAL_GPIO_LEVEL_LOW, GPIO_INTERRUPT_RISING_EDGE, cywee_int1_callback },
+    {   S_AGPIO_L19, HAL_GPIO_DIRECTION_INPUT, HAL_GPIO_LEVEL_LOW, GPIO_INTERRUPT_RISING_EDGE, cywee_int1_callback },
+    // {   S_AGPIO_L19, HAL_GPIO_DIRECTION_INPUT, HAL_GPIO_LEVEL_LOW, 0, NULL },
     /**S_AGPIO_R1 GPO alipay默认resetpin*/
     {   S_AGPIO_R1, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_HIGH, 0, NULL },
 #ifdef SUPPORT_CAT1_SERVICE
     /**cat1 ring input key*/
     {   S_AGPIO_L31, HAL_GPIO_DIRECTION_INPUT, HAL_GPIO_LEVEL_LOW, GPIO_INTERRUPT_DEDGE,  cat1_ring_isr_callback},
 #endif
-    
 };
 /**
  * @}
index d8cb511..4704837 100644 (file)
@@ -2,7 +2,7 @@
  * @Author: penglei 1624952103@qq.com
  * @Date: 2024-03-26 20:29:58
  * @LastEditors: penglei 1624952103@qq.com
- * @LastEditTime: 2024-04-19 18:00:31
+ * @LastEditTime: 2024-04-22 21:02:15
  * @FilePath: /FD230/code/sdk/drivers/peripheral/cywee/Inc/cywee_service.h
  * @Description: 
  * 
@@ -26,6 +26,7 @@ extern "C" {
 
 #include "stdint.h"
 #include "errcode.h"
+#include "platform_core.h"
 
 // #define CYWEE_SERVICE_CMD_TYPE_DO_PPG_40TIMER_CALLBACK 0x0A
 // #define PPG_SERVICE_CMD_TYPE_DO_PPG_320TIMER_CALLBACK 0x10
@@ -73,7 +74,7 @@ void uapi_cywee_service_deinit(void);
  * 测试指令 参数cmd 选项: ACC_SERVICE_CMD_START_CHECK,ACC_SERVICE_CMD_STOP_CHECK
 */
 void do_cywee_service_check_msg(int cmd, int data[2]);
-
+void cywee_int1_callback(pin_t pin, uintptr_t param);
 
 #ifdef __cplusplus
 }
index e7c4ce3..f2c3aff 100644 (file)
@@ -36,6 +36,7 @@
 #include "broadcast_feature.h"
 
 #include "ppg_service.h"
+#include "platform_core.h"
 
 typedef struct
 {
@@ -46,7 +47,7 @@ typedef struct
  * 其他cmd在Header里定义,对外开放
  */
 
-#define CYWEE_CHECK_MS 40
+#define CYWEE_CHECK_MS 60000
 
 osTimerId_t g_cywee_service_timer = NULL;
 static bool g_batter_service_initialled = false;
@@ -279,9 +280,9 @@ static void cywee_service_check_task(void const *arg)
         }
         else if (mail.cmd == CYWEE_SERVICE_CMD_START_CHECK)
         {
-            cywee_service_running_stat = true;
+            //cywee_service_running_stat = true;
             cywee_main_dml();
-            cywee_service_timer_start_check(CYWEE_CHECK_MS);
+            //cywee_service_timer_start_check(CYWEE_CHECK_MS);
         }
         else if (mail.cmd == CYWEE_SERVICE_CMD_STOP_CHECK)
         {
@@ -398,6 +399,13 @@ errcode_t uapi_cywee_service_init(void)
     return ERRCODE_SUCC;
 }
 
+void cywee_int1_callback(pin_t pin, uintptr_t param)
+{
+    PRINT("cywee_int1_callback %d 0x%X\n",pin,param);
+    do_cywee_service_check_msg(CYWEE_SERVICE_CMD_TIMER_CHECK, NULL);
+}
+
+
 // void cywee_service_service_resume(void)
 // {
 //     PRINT("cywee_service_service resume!\r\n");
index 80ac1e8..8795eb6 100644 (file)
@@ -41,6 +41,10 @@ static uint8_t hrs = 0;
 
 uint8_t hrs_mode_state = 0;
 
+static float s_data[25][3] = {0};
+
+static int i = 0;
+
 void hand_updown_switch(int cmd)
 {
     if(cmd == 1)
@@ -129,8 +133,6 @@ void cywee_wearstatus_update(int wearstatus)
     CWM_CustomSensorInput(&csd);
 }
 
-
-
 //0:resume , 1:pause
 void activity_mode_setstatus(int cmd)
 {
@@ -305,30 +307,40 @@ void CWM_AP_SensorListen(pSensorEVT_t sensorEVT) {
         case IDX_ACCEL:
 
         #if 1  
-
-        if(num_falg==8)
-        {
-            left_falg++;
-            right_falg++;
-            right_falg=right_falg%8;
-            left_falg=left_falg%8;
-            gxyz_t_queue[right_falg].x= sensorEVT->fData[0];
-            gxyz_t_queue[right_falg].y= sensorEVT->fData[1];
-            gxyz_t_queue[right_falg].z= sensorEVT->fData[2];
-        }    
-        else 
-        {
-            //left_falg++;
-            right_falg++;
-            right_falg=right_falg%8;
-            //left_falg=left_falg%16;
-            num_falg++;
-            gxyz_t_queue[right_falg].x= sensorEVT->fData[0];
-            gxyz_t_queue[right_falg].y= sensorEVT->fData[1];
-            gxyz_t_queue[right_falg].z= sensorEVT->fData[2];
-            //CWM_OS_dbgPrintf("write: x=%d, y=%d, z=%d\n", gxyz_t_queue[right_falg].x ,gxyz_t_queue[right_falg].y ,gxyz_t_queue[right_falg].z);
+        CWM_OS_dbgPrintf("acc: x=%.3f, y=%.3f, z=%.3f\n",
+                                                       sensorEVT->fData[0],
+                                                       sensorEVT->fData[1],
+                                                       sensorEVT->fData[2]
+                                                        );
+            s_data[i][0] = sensorEVT->fData[0];
+            s_data[i][1] = sensorEVT->fData[1];
+            s_data[i][2] = sensorEVT->fData[2];
+            i++;
+            if(i == 24)
+                i = 0;
+        // if(num_falg==8)
+        // {
+        //     left_falg++;
+        //     right_falg++;
+        //     right_falg=right_falg%8;
+        //     left_falg=left_falg%8;
+        //     gxyz_t_queue[right_falg].x= sensorEVT->fData[0];
+        //     gxyz_t_queue[right_falg].y= sensorEVT->fData[1];
+        //     gxyz_t_queue[right_falg].z= sensorEVT->fData[2];
+        // }    
+        // else 
+        // {
+        //     //left_falg++;
+        //     right_falg++;
+        //     right_falg=right_falg%8;
+        //     //left_falg=left_falg%16;
+        //     num_falg++;
+        //     gxyz_t_queue[right_falg].x= sensorEVT->fData[0];
+        //     gxyz_t_queue[right_falg].y= sensorEVT->fData[1];
+        //     gxyz_t_queue[right_falg].z= sensorEVT->fData[2];
+        //     //CWM_OS_dbgPrintf("write: x=%d, y=%d, z=%d\n", gxyz_t_queue[right_falg].x ,gxyz_t_queue[right_falg].y ,gxyz_t_queue[right_falg].z);
         
-        }
+        // }
 
         #endif
             break;
@@ -705,6 +717,7 @@ int cywee_main_dml(void)
     
     //get chip information
 
+
     char chipInfo[64];
 
     memset(&scl, 0, sizeof(scl));
@@ -755,12 +768,18 @@ int cywee_main_dml(void)
 #else
     scl.iData[3] = 2;
     scl.iData[4] = 2; //1 anytime 2 fifo
-    scl.iData[6] = 5; //fifocount 先設定5
+    scl.iData[6] = 25; //fifocount 先設定5    [1~25]
     scl.iData[8] = 25; // for st sensor(52Hz)
+
+    //scl.iData[11] = 1; // G_INT_1
+    scl.iData[12] = 1; // G_INT_1
 #endif
     CWM_SettingControl(SCL_DML_DRV_AG_CONFIG, &scl);
     //CWM_OS_dbgPrintf("[DBG] %s %d\n", __func__,__LINE__);
 
+    CWM_CustomSensorInput_Fifo_Init(25);
+
+
     //设定搜寻哪种型号的传感器,以及要搜寻的属性
     memset(&scl, 0, sizeof(scl));
     scl.iData[0] = 1;
@@ -848,21 +867,21 @@ int cywee_main_dml(void)
     // //CWM_OS_dbgPrintf("[DBG] %s %d\n", __func__,__LINE__);
     
     CWM_Sensor_Enable(IDX_ALGO_ACTIVITY_OUTPUT);
-    CWM_Sensor_Enable(IDX_ALGO_INACTIVITY_OUTPUT);
-    CWM_Sensor_Enable(IDX_ALGO_SEDENTARY);
-    CWM_Sensor_Enable(IDX_ALGO_SLEEP);
+    //CWM_Sensor_Enable(IDX_ALGO_INACTIVITY_OUTPUT);
+    //CWM_Sensor_Enable(IDX_ALGO_SEDENTARY);
+    //CWM_Sensor_Enable(IDX_ALGO_SLEEP);
     CWM_Sensor_Enable(IDX_ACCEL);
     //CWM_OS_dbgPrintf("[DBG] %s %d\n", __func__,__LINE__);
     // CWM_Sensor_Enable(IDX_GYRO);
-    CWM_Sensor_Enable(IDX_ALGO_NO_MOTION);
+    //CWM_Sensor_Enable(IDX_ALGO_NO_MOTION);
     //CWM_OS_dbgPrintf("[DBG] %s %d\n", __func__,__LINE__);
     // CWM_Sensor_Enable(IDX_ALGO_ANY_MOTIOIN);
-    CWM_Sensor_Enable(IDX_ALGO_ABSOLUTE_STATIC);
+    //CWM_Sensor_Enable(IDX_ALGO_ABSOLUTE_STATIC);
     //CWM_OS_dbgPrintf("[DBG] %s %d\n", __func__,__LINE__);
 
     cyw_activity_mode_change(SPORT_ACTIVE_MODE_NORMAL);
     
-    cyw_inactivity_mode_change(INACTIVITY_MODE_SEDENTARY);
+    //cyw_inactivity_mode_change(INACTIVITY_MODE_SEDENTARY);
 
     send_ppg_cmd_msg(PPG_SERVICE_CMD_TYPE_DO_WEAR_MODE_TEST);
     // cyw_activity_mode_change(cmd);
@@ -882,5 +901,24 @@ int cywee_main_dml(void)
 
 void cywee_int_handler(void)
 {
-    CWM_Dml_process();
+    uint64_t ts_ns =CWM_OS_GetTimeNs();
+    
+    int ret = CWM_CustomSensorInput_Fifo_Start(CUSTOM_ACC, ts_ns , 40*1e6);
+    CWM_OS_dbgPrintf("cywee_int_handler ts_seconds %d ,  CWM_CustomSensorInput_Fifo_Start ret 0x%X \r\n",ts_ns,ret);
+    if (ret == 0 )
+    {
+        for (int i = 0; i < 25; i ++) 
+        {
+            memset(&csd, 0, sizeof(CustomSensorData));
+            csd.sensorType = CUSTOM_ACC;
+            csd.fData[0] = s_data[i][0];
+            csd.fData[1] = s_data[i][1];
+            csd.fData[2] = s_data[i][2];
+            CWM_CustomSensorInput(&csd);
+        }
+        
+    }
+    CWM_CustomSensorInput_Fifo_End(CUSTOM_ACC);
+
+    ret = CWM_Dml_process();
 }
index e55579d..79acd5f 100644 (file)
@@ -2,7 +2,7 @@
  * @Author: penglei 1624952103@qq.com
  * @Date: 2024-03-13 15:08:38
  * @LastEditors: penglei 1624952103@qq.com
- * @LastEditTime: 2024-04-22 10:37:39
+ * @LastEditTime: 2024-04-22 21:03:16
  * @FilePath: /FD230/code/sdk/drivers/peripheral/ppg/hx3695/hx3695_hal.c
  * @Description: 
  * 
@@ -86,11 +86,11 @@ void ppg_send_cmd_to_driver(char* mode, uint8_t enable)
             hx3695_spo2_disable();
 #endif
         }
-//        else{
-// #ifdef HRS_ALG_LIB   
-//             hx3695_hrs_disable();
-// #endif
-//         }
+       else{
+#ifdef HRS_ALG_LIB   
+            hx3695_hrs_disable();
+#endif
+        }
         uapi_pm_control(PM_APP_WAKE_NONEED);
         tyhx_poweroff();
     } 
index 7290d67..0e5085f 100644 (file)
@@ -1169,20 +1169,20 @@ uint32_t secondsSinceEpoch(int year,int month,int day,int hour,int min,int sec)
     return seconds;
 }
 
-void get_rtc(uint32_t *msc)
+void get_rtc(uint32_t *seconds)
 {
 
     time_t rawtime;
     struct tm* timeinfo;
     time(&rawtime);
     timeinfo = localtime(&rawtime);
-    *msc = secondsSinceEpoch(timeinfo->tm_year + 1900,
+    *seconds = secondsSinceEpoch(timeinfo->tm_year + 1900,
                             timeinfo->tm_mon + 1,
                             timeinfo->tm_mday,
                             timeinfo->tm_hour,
                             timeinfo->tm_min,
                             timeinfo->tm_sec);
-    PRINT("msc : %d \r\n",*msc);
+    PRINT("msc : %d \r\n",*seconds);
 }
 
 //#include "lis2doc_reg.h"
index 48a041d..fb0c5ca 100644 (file)
@@ -110,7 +110,7 @@ void battery_getvolpower(uint8_t *power);
 void flash_getid(uint32_t *id);
 void flash_erase(void);
 
-void get_rtc(uint32_t *msc);
+void get_rtc(uint32_t *seconds);
 
 //进入recovery
 int enter_recovery(void);