return true;\r
}\r
\r
+uint32_t hx3695_wear_mode_timers_start(void)\r
+{\r
+ tyhx_timer_start(TYHX_TIMER_5000MS);\r
+ return 0;\r
+}\r
+uint32_t hx3695_wear_mode_timers_stop(void)\r
+{\r
+ tyhx_timer_stop(TYHX_TIMER_5000MS);\r
+ return 0;\r
+}\r
+\r
uint32_t hx3695_timers_start(void)\r
{\r
tyhx_timer_start(TYHX_TIMER_320MS);\r
}\r
}\r
\r
+void hx3695_5000ms_timer_cfg(bool en)\r
+{\r
+ if(en)\r
+ {\r
+ hx3695_wear_mode_timers_start();\r
+ }\r
+ else\r
+ {\r
+ PRINT("555\r\n");\r
+ hx3695_wear_mode_timers_stop();\r
+ }\r
+\r
+}\r
+\r
+\r
#if defined(INT_MODE)\r
/* 如采用中断模式, 如完成中断开启和关闭接口\r
void hx3695_ppg_Int_handle(void)\r
int32_t ir_data_final;\r
} ft_test_result_t;\r
\r
+void wear_mode_timeout_handler(void * p_context)\r
+{\r
+ if(work_mode_flag == WEAR_MODE)\r
+ {\r
+ #ifdef CHECK_TOUCH_LIB\r
+ hx3695_wear_ppg_Int_handle(); \r
+ #endif\r
+ }\r
+}\r
+\r
\r
void heart_rate_meas_timeout_handler(void * p_context)\r
{\r
#endif\r
break;\r
\r
- case WEAR_MODE:\r
-// PRINT("@@@@@@@@@ WEAR_MODE $$$$$$$$$\r\n");\r
-#ifdef CHECK_TOUCH_LIB\r
- hx3695_wear_ppg_Int_handle();\r
-#endif\r
- break;\r
-\r
case LIVING_MODE:\r
#ifdef CHECK_LIVING_LIB\r
hx3695_living_Int_handle();\r
void hx3695_wear_ppg_Int_handle(void)\r
{\r
// PRINT("hx3695_wear_ppg_Int_handle wearstatus = %d\r\n", hrsresult.wearstatus);\r
- \r
uint8_t *count = &(ppg_s_data.count);\r
int32_t *ir_buf = &(ppg_s_data.ir_data[0]);\r
hx3695_wear_msg_code_t hx3695_wear_status;\r
hx3695_check_touch_read(&ppg_s_data);\r
hx3695_wear_status = hx3695_check_touch_send_data(ir_buf,*count);\r
hrsresult.wearstatus = hx3695_wear_status;\r
+ PRINT("hx3695_wear_status : %d \r\n",hx3695_wear_status);\r
if(wear_mode_status != hx3695_wear_status)\r
{\r
wear_mode_status = hx3695_wear_status;\r
void hx3695_ppg_on(void); \r
void hx3695_320ms_timer_cfg(bool en);\r
void hx3695_40ms_timer_cfg(bool en);\r
+void hx3695_5000ms_timer_cfg(bool en);\r
void hx3695_gpioint_cfg(bool en);\r
bool hx3695_init(WORK_MODE_T mode);\r
void hx3695_agc_Int_handle(void); \r
hx3695_living_results_t hx3695_living_get_results(void);\r
void agc_timeout_handler(void * p_context);\r
void heart_rate_meas_timeout_handler(void * p_context);\r
+void wear_mode_timeout_handler(void * p_context);\r
void Efuse_Mode_Check(void);\r
\r
uint8_t hx3695_get_chip_id(void);\r
// AGC_LOG("hx3695 here!\r\n");\r
hx3695_delay_ms(100); \r
\r
- hx3695_320ms_timer_cfg(true);\r
+ hx3695_5000ms_timer_cfg(true);\r
\r
return SENSOR_OK;\r
}\r
* @Author: penglei 1624952103@qq.com
* @Date: 2024-03-13 15:08:38
* @LastEditors: penglei 1624952103@qq.com
- * @LastEditTime: 2024-04-13 17:22:50
- * @FilePath: /sdk/drivers/peripheral/ppg/hx3695/hx3695_hal.c
+ * @LastEditTime: 2024-04-22 10:37:39
+ * @FilePath: /FD230/code/sdk/drivers/peripheral/ppg/hx3695/hx3695_hal.c
* @Description:
*
* Copyright (c) 2024 by ${git_name_email}, All Rights Reserved.
{
#ifdef SPO2_ALG_LIB
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();
}
#if defined(TIMMER_MODE)\r
hx3695_320ms_timer_cfg(false);\r
hx3695_40ms_timer_cfg(false);\r
+ hx3695_5000ms_timer_cfg(false);\r
#elif defined(INT_MODE)\r
hx3695_gpioint_cfg(false);\r
#endif\r
#define BUTTON_APP_TIMER_INTERVAL 20
osTimerId_t g_timer40_timer = NULL;
osTimerId_t g_timer320_timer = NULL;
+osTimerId_t g_timer5000_timer = NULL;
static uint8_t g_hx3695_timer_installed = 0;
static void timer40_func(void)
send_ppg_cmd_msg(PPG_SERVICE_CMD_TYPE_DO_PPG_320TIMER_CALLBACK);
// heart_rate_meas_timeout_handler(NULL);
}
+
+static void timer5000_func(void)
+{
+ send_ppg_cmd_msg(PPG_SERVICE_CMD_TYPE_DO_WEAR_MODE_5000TIMER_CALLBACK);
+ // heart_rate_meas_timeout_handler(NULL);
+}
bool tyhx_timer_init(void)
{
if (g_hx3695_timer_installed == 1)
return true;
g_timer40_timer = osTimerNew((osTimerFunc_t)timer40_func, osTimerPeriodic, NULL, NULL);
g_timer320_timer = osTimerNew((osTimerFunc_t)timer320_func, osTimerPeriodic, NULL, NULL);
+ g_timer5000_timer = osTimerNew((osTimerFunc_t)timer5000_func, osTimerPeriodic, NULL, NULL);
g_hx3695_timer_installed = true;
return true;
}
{
if(osTimerIsRunning(g_timer320_timer)==0)
osTimerStart(g_timer320_timer, TYHX_TIMER_320MS);
+ }else if (ms == TYHX_TIMER_5000MS)
+ {
+ if(osTimerIsRunning(g_timer5000_timer)==0)
+ osTimerStart(g_timer5000_timer, TYHX_TIMER_5000MS);
}
+
return 1;
}
bool tyhx_timer_stop(uint32_t ms)
{
if(osTimerIsRunning(g_timer320_timer))
osTimerStop(g_timer320_timer);
+ }else if (ms == TYHX_TIMER_5000MS)
+ {
+ if(osTimerIsRunning(g_timer5000_timer))
+ osTimerStop(g_timer5000_timer);
}
return 1;
}
+/*
+ * @Author: penglei 1624952103@qq.com
+ * @Date: 2024-03-26 20:29:58
+ * @LastEditors: penglei 1624952103@qq.com
+ * @LastEditTime: 2024-04-22 09:28:45
+ * @FilePath: /FD230/code/sdk/drivers/peripheral/ppg/hx3695/tyhx_hrs_custom.h
+ * @Description:
+ *
+ * Copyright (c) 2024 by ${git_name_email}, All Rights Reserved.
+ */
#ifndef __TYHX_HRS_CUSTOM_H__
#define __TYHX_HRS_CUSTOM_H__
#define TYHX_TIMER_40MS 40
#define TYHX_TIMER_320MS 320
+#define TYHX_TIMER_5000MS 5000
bool tyhx_timer_start(uint32_t ms);
bool tyhx_timer_stop(uint32_t ms);
static bool ppg_service_running_stat = false;
static uint8_t wear_mode_state = 0;
-static uint8_t keep_in_wear_det_mod = 0; //持续坚持 佩戴检测模式
+static uint8_t keep_in_wear_det_mod = 1; //持续坚持 佩戴检测模式
void set_keep_in_wear_det_mode(uint8_t mod)
if (ret != OSAL_SUCCESS) {
continue;
}
-
if((wear_mode_state == 1) && (mail > 0x10) && mail != PPG_SERVICE_CMD_TYPE_STOP_WEAR_MODE_TEST)
{
wear_mode_state = 0;
}else if (mail == PPG_SERVICE_CMD_TYPE_DO_PPG_40TIMER_CALLBACK){
agc_timeout_handler(NULL);
continue;
+ }else if(mail == PPG_SERVICE_CMD_TYPE_DO_WEAR_MODE_5000TIMER_CALLBACK){
+ wear_mode_timeout_handler(NULL);
+ continue;
}else if (mail == PPG_SERVICE_CMD_TYPE_DO_PPG_TEST){
cmd = "hrs";
enable = 1;
/*
* @Author: penglei 1624952103@qq.com
* @Date: 2024-03-27 09:07:00
- * @LastEditors: SnickerSun snickersun@163.com
- * @LastEditTime: 2024-04-21 22:49:47
+ * @LastEditors: penglei 1624952103@qq.com
+ * @LastEditTime: 2024-04-22 10:43:36
* @FilePath: /FD230/code/sdk/drivers/peripheral/ppg/service/ppg_service.h
* @Description:
*
#include "stdint.h"
#include "errcode.h"
+#define PPG_SERVICE_CMD_TYPE_DO_WEAR_MODE_5000TIMER_CALLBACK 0x09
#define PPG_SERVICE_CMD_TYPE_DO_PPG_40TIMER_CALLBACK 0x0A
#define PPG_SERVICE_CMD_TYPE_DO_PPG_320TIMER_CALLBACK 0x10
#define PPG_SERVICE_CMD_TYPE_DO_PPG_TEST 0x11