修改gsensor为定时器模式 182/1 182/head
authorpenglei <1624952103@qq.com>
Sat, 25 May 2024 05:43:35 +0000 (13:43 +0800)
committerpenglei <1624952103@qq.com>
Sat, 25 May 2024 05:43:35 +0000 (13:43 +0800)
code/sdk/drivers/boards/brandy_evb/board_config/board_evb.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.c

index 3ed74a4..121d8d1 100755 (executable)
@@ -161,7 +161,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_DOWN, 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
@@ -291,7 +291,7 @@ const hal_gpio_config_t g_gpio_function_config[PIN_MAX_NUMBER] = {
 
 #ifdef ENABLE_CYWEE
     /**G sensor G_INT1 S_AGPIO_L11 G_INT2 S_AGPIO_L19   采用timer 时这些中断要屏蔽*/
-    {   S_AGPIO_L11, HAL_GPIO_DIRECTION_INPUT, NULL, GPIO_INTERRUPT_RISING_EDGE, cywee_int_callback },
+    //{   S_AGPIO_L11, HAL_GPIO_DIRECTION_INPUT, NULL, GPIO_INTERRUPT_RISING_EDGE, cywee_int_callback },
     //{   S_AGPIO_L19, HAL_GPIO_DIRECTION_INPUT, NULL, GPIO_INTERRUPT_DEDGE, cywee_int_callback },
 #endif   
     /**S_AGPIO_R1 GPO alipay默认resetpin*/
index 17e4b8f..bf48203 100644 (file)
@@ -47,7 +47,7 @@ typedef struct
  * 其他cmd在Header里定义,对外开放
  */
 
-#define CYWEE_CHECK_MS 40
+#define CYWEE_CHECK_MS 200
 
 osTimerId_t g_cywee_service_timer = NULL;
 static bool g_batter_service_initialled = false;
@@ -109,7 +109,7 @@ void cywee_msg_callback(uint8_t msg_type, uint8_t *msg_data, int32_t msg_datalen
         case SPORT_ACTIVE_MODE_FREE_TRAINING:
             PRINT("CYWEE_MSG_TYPE_FREE_TRAINING_UPDATE\r\n");
             memcpy(&c_activity_result_t, msg_data, sizeof(cywee_activity_result_t));
-            PRINT("activit_mode[%d], calories[%d], duration[%d], MHR_zone[%d],hrs[%d]\n",
+            PRINT("activit_mode[%d], calories[%d],hrs[%d]\n",
                   c_activity_result_t.activity_mode, c_activity_result_t.calories, c_activity_result_t.hrs);
             CustomEventPublish(TOPIC_EVENT_ACTIVITY_UPDATE, &c_activity_result_t, sizeof(cywee_activity_result_t));
             break;
@@ -136,7 +136,7 @@ void cywee_msg_callback(uint8_t msg_type, uint8_t *msg_data, int32_t msg_datalen
             memcpy(&c_inactivity_result_t, msg_data, sizeof(cywee_inactivity_result_t));
             PRINT("sedentary status[%d], stand freq[%d]\n",
                   c_inactivity_result_t.sedentary_status,c_inactivity_result_t.stand_freq);
-            CustomEventPublish(TOPIC_EVENT_INACTIVITY_UPDATE, &c_activity_result_t, sizeof(cywee_activity_result_t));
+            CustomEventPublish(TOPIC_EVENT_INACTIVITY_UPDATE, &c_inactivity_result_t, sizeof(cywee_inactivity_result_t));
             break;
 
         // 睡眠
@@ -147,7 +147,7 @@ void cywee_msg_callback(uint8_t msg_type, uint8_t *msg_data, int32_t msg_datalen
                   c_inactivity_result_t.month, c_inactivity_result_t.day,
                   c_inactivity_result_t.hour, c_inactivity_result_t.minute,
                   sizeof(cywee_inactivity_result_t));
-            CustomEventPublish(TOPIC_EVENT_INACTIVITY_UPDATE, &c_activity_result_t, sizeof(cywee_activity_result_t));
+            CustomEventPublish(TOPIC_EVENT_INACTIVITY_UPDATE, &c_inactivity_result_t, sizeof(cywee_inactivity_result_t));
             break;
 
         // 睡眠累计
@@ -157,7 +157,7 @@ void cywee_msg_callback(uint8_t msg_type, uint8_t *msg_data, int32_t msg_datalen
                   c_inactivity_result_t.total_sleep_time, c_inactivity_result_t.total_mild_sleep_time,
                   c_inactivity_result_t.total_deep_sleep_time, c_inactivity_result_t.total_wake_time, 
                   c_inactivity_result_t.total_rem_sleep_time,c_inactivity_result_t.stand_freq);
-            CustomEventPublish(TOPIC_EVENT_INACTIVITY_UPDATE, &c_activity_result_t, sizeof(cywee_activity_result_t));
+            CustomEventPublish(TOPIC_EVENT_INACTIVITY_UPDATE, &c_inactivity_result_t, sizeof(cywee_inactivity_result_t));
             break;
 
         // 小睡
@@ -166,7 +166,7 @@ void cywee_msg_callback(uint8_t msg_type, uint8_t *msg_data, int32_t msg_datalen
             PRINT("nap status[%d], month[%d], day[%d], hour[%d], min[%d]\n",
                   c_inactivity_result_t.nap_status, c_inactivity_result_t.month,
                   c_inactivity_result_t.day, c_inactivity_result_t.hour, c_inactivity_result_t.minute);
-            CustomEventPublish(TOPIC_EVENT_INACTIVITY_UPDATE, &c_activity_result_t, sizeof(cywee_activity_result_t));
+            CustomEventPublish(TOPIC_EVENT_INACTIVITY_UPDATE, &c_inactivity_result_t, sizeof(cywee_inactivity_result_t));
             break;
 
         // 小睡累计
@@ -176,7 +176,7 @@ void cywee_msg_callback(uint8_t msg_type, uint8_t *msg_data, int32_t msg_datalen
                   c_inactivity_result_t.total_nap_time, c_inactivity_result_t.total_mild_sleep_time,
                   c_inactivity_result_t.total_deep_sleep_time, c_inactivity_result_t.total_wake_time, 
                   c_inactivity_result_t.total_rem_sleep_time,c_inactivity_result_t.stand_freq);
-            CustomEventPublish(TOPIC_EVENT_INACTIVITY_UPDATE, &c_activity_result_t, sizeof(cywee_activity_result_t));
+            CustomEventPublish(TOPIC_EVENT_INACTIVITY_UPDATE, &c_inactivity_result_t, sizeof(cywee_inactivity_result_t));
             break;
         }
     }
@@ -273,9 +273,9 @@ static void cywee_service_check_task(void const *arg)
             break;
 
             case 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);
             break;
 
             case CYWEE_SERVICE_CMD_STOP_CHECK:
index dc21839..06eb709 100644 (file)
@@ -329,6 +329,7 @@ void CWM_AP_SensorListen(pSensorEVT_t sensorEVT) {
             //                                            sensorEVT->fData[1],
             //                                            sensorEVT->fData[2]
             //                                             );
+
             if(num_falg==25)
             {
                 left_falg++;
@@ -781,11 +782,11 @@ int cywee_main_dml(void)
     memset(&scl, 0, sizeof(scl));
     scl.iData[0] = 1;
     scl.iData[7] = 5;  //轴向配置
-#if 0
+#if 1
     scl.iData[3] = 2;
     scl.iData[4] = 2; //1 anytime 2 fifo
-    scl.iData[6] = 25; //先設定5
-    scl.iData[8] = 26; // for st sensor(52Hz)
+    scl.iData[6] = 15; //先設定5
+    scl.iData[8] = 13; // for st sensor(52Hz)
 #else
     scl.iData[3] = 2;
     scl.iData[4] = 1; //1 anytime 2 fifo
index 55dc43c..907034d 100644 (file)
@@ -43,7 +43,7 @@ int16_t gsen_fifo_x[64]={0};
 int16_t gsen_fifo_y[64]={0};\r
 int16_t gsen_fifo_z[64]={0};\r
 \r
-gsenson_t gsensordata[8];\r
+gsenson_t gsensordata[5];\r
 \r
 #ifdef SPO2_VECTOR\r
 #include "spo2_vec.h"\r
@@ -2765,28 +2765,20 @@ void hx3695_hrs_ppg_Int_handle(void)
     PRINT("*count : %d \r\n",*count);\r
     if(*count < 10)\r
     {\r
-      gsensor_get_n_data(8,gsensordata);\r
+      gsensor_get_n_data(5,gsensordata);\r
        for(ii=0; ii<*count; ii++)\r
        {\r
-          if(ii == 8)\r
-          {\r
-              gsen_fifo_x_send[ii] = gsen_fifo_x_send[ii - 1];\r
-              gsen_fifo_y_send[ii] = gsen_fifo_y_send[ii - 1];\r
-              gsen_fifo_z_send[ii] = gsen_fifo_z_send[ii - 1];\r
-          }\r
-          else\r
-          {\r
               // gsen_fifo_x_send[ii] = (gsensordata[ii*2].x + gsensordata[2*ii + 1].x)/2;\r
               // gsen_fifo_y_send[ii] = (gsensordata[ii*2].y + gsensordata[2*ii + 1].y)/2;\r
               // gsen_fifo_z_send[ii] = (gsensordata[ii*2].z + gsensordata[2*ii + 1].z)/2;\r
-              gsen_fifo_x_send[ii] = gsensordata[ii].x * 2048;\r
-              gsen_fifo_y_send[ii] = gsensordata[ii].y * 2048;\r
-              gsen_fifo_z_send[ii] = gsensordata[ii].z * 2048;\r
-          }\r
+              gsen_fifo_x_send[ii] = gsensordata[ii/2].x * 2048;\r
+              gsen_fifo_y_send[ii] = gsensordata[ii/2].y * 2048;\r
+              gsen_fifo_z_send[ii] = gsensordata[ii/2].z * 2048;\r
+\r
           //PRINT("hxdata:%d/%d %d %d %.3f %.3f %.3f %d\r\n" ,1+ii,*count,PPG_buf[ii],ir_buf[0],gsen_fifo_x_send[ii],gsen_fifo_y_send[ii],gsen_fifo_z_send[ii],ppg_s_data.green_cur);\r
           PRINT("hxdata:%d/%d %d %d %d %d %d %d\r\n" ,1+ii,*count,PPG_buf[ii],ir_buf[0],gsen_fifo_x_send[ii],gsen_fifo_y_send[ii],gsen_fifo_z_send[ii],ppg_s_data.green_cur);\r
+          \r
        }\r
-\r
       hrs_wear_status = hx3695_hrs_get_wear_status();\r
       PRINT("hrs_wear_status:    %d !!\r\n", hrs_wear_status);\r
     \r
@@ -3231,24 +3223,17 @@ void hx3695_spo2_ppg_Int_handle(void)
     PRINT("*count[%d] \r\n",*count);\r
     if(*count < 10)\r
     {\r
-        gsensor_get_n_data(8,gsensordata);\r
+        gsensor_get_n_data(5,gsensordata);\r
        for(ii=0; ii<*count; ii++)\r
        {\r
-          if(ii == 8)\r
-          {\r
-              gsen_fifo_x_send[ii] = gsen_fifo_x_send[ii - 1];\r
-              gsen_fifo_y_send[ii] = gsen_fifo_y_send[ii - 1];\r
-              gsen_fifo_z_send[ii] = gsen_fifo_z_send[ii - 1];\r
-          }\r
-          else\r
-          {\r
-              // gsen_fifo_x_send[ii] = (gsensordata[ii*2].x + gsensordata[2*ii + 1].x)/2;\r
-              // gsen_fifo_y_send[ii] = (gsensordata[ii*2].y + gsensordata[2*ii + 1].y)/2;\r
-              // gsen_fifo_z_send[ii] = (gsensordata[ii*2].z + gsensordata[2*ii + 1].z)/2;\r
-              gsen_fifo_x_send[ii] = gsensordata[ii].x * 2048;\r
-              gsen_fifo_y_send[ii] = gsensordata[ii].y * 2048;\r
-              gsen_fifo_z_send[ii] = gsensordata[ii].z * 2048;\r
-          }\r
+ \r
+          // gsen_fifo_x_send[ii] = (gsensordata[ii*2].x + gsensordata[2*ii + 1].x)/2;\r
+          // gsen_fifo_y_send[ii] = (gsensordata[ii*2].y + gsensordata[2*ii + 1].y)/2;\r
+          // gsen_fifo_z_send[ii] = (gsensordata[ii*2].z + gsensordata[2*ii + 1].z)/2;\r
+          gsen_fifo_x_send[ii] = gsensordata[ii/2].x * 2048;\r
+          gsen_fifo_y_send[ii] = gsensordata[ii/2].y * 2048;\r
+          gsen_fifo_z_send[ii] = gsensordata[ii/2].z * 2048;\r
+\r
           PRINT("hxdata:%d/%d %d %d %d %d %d %d\r\n",\r
             1+ii,*count,red_buf[ii],ir_buf[ii],green_buf[ii],gsen_fifo_x_send[ii],gsen_fifo_y_send[ii],gsen_fifo_z_send[ii]);\r
           //printf("FFF==>spo2  red_buf : %d,  %d,  %d,        %d \n", 1+ii, *count, red_buf[ii], ir_buf[0]);\r