#include "custom_utils.h"
+#include "cywee_service.h"
+
bool batteryservice_get_voltage_by_channel(float *voltage, uint8_t channel);
battery_info_t *get_current_battery_info(void);
static bool g_batter_service_initialled = false;
static uint8_t g_check_count = 0;
+static int oncharging_status = 0;
+
static void battery_check_timer_callback(void* data);
errcode_t charger_plug_event_notify(uint8_t plugged);
errcode_t charger_plug_event_ui_sendmsg_toUI(uint8_t plugged);
uint8_t percent = batteryservice_get_voltage(&voltage);
//获取电池温度
batteryservice_get_battery_temp(&bat_temp);
-
- if(get_charge_stat() == 1){
+
+ int status = get_charge_stat();
+ if(oncharging_status != status)
+ {
+ oncharging_status = status;
+ do_cywee_service_check_msg(CYWEE_SERVICE_CMD_ONCHARGING_CHANGE,&status);
+ }
+
+ if(status == 1){
PRINT("charging enable charge ! bat-temp %.2f Vs highest temp value %.2f !\n",bat_temp,BATTERY_DISABLE_CHARGE_HI_TEMP_VALUE);
/**
#include "displaybrightness/include/DisplayBrightnessModel.h"
#include "power_display_service.h"
#include "custom_utils.h"
+#include "cywee_service.h"
extern "C" errcode_t uapi_get_timestampe_ms(uint64_t *tm);
#define BLOODKEYABLE 0
uint8_t md = PPG_SERVICE_CMD_TYPE_STOP_SPO2_TEST;
send_ppg_cmd_msg(md);
startspo2 = true;
+ do_cywee_service_check_msg(CYWEE_SERVICE_CMD_NORMAL_MODE,NULL);
}
}
if (BloodOxygenModel::GetInstance()->GetBloodCheckViewStatus() == false)
BloodCheckView::GetInstance()->UpShowBloodText(); // 更新检测界面
if (startspo2 == true)
{
+ do_cywee_service_check_msg(CYWEE_SERVICE_CMD_EXIT,NULL);
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "GetCheckStatus : true");
uint8_t md = PPG_SERVICE_CMD_TYPE_DO_SPO2_TEST;
send_ppg_cmd_msg(md);
#include "heartrate/include/HeartCheckView.h"
#include "heartrate/include/HeartBandoffView.h"
#include "health_service.h"
+#include "cywee_service.h"
#define HEARTKEYABLE 0
uint8_t md = PPG_SERVICE_CMD_TYPE_STOP_PPG_TEST;
send_ppg_cmd_msg(md);
startheart = true;
+ do_cywee_service_check_msg(CYWEE_SERVICE_CMD_NORMAL_MODE,NULL);
}
}
HeartCheckView::GetInstance()->UpShowHeartText(); // 更新检测界面
if (startheart == true)
{
+ do_cywee_service_check_msg(CYWEE_SERVICE_CMD_EXIT,NULL);
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "GetCheckStatus : true");
uint8_t md = PPG_SERVICE_CMD_TYPE_DO_PPG_TEST;
send_ppg_cmd_msg(md);
#include <iomanip>\r
#include <sstream>\r
\r
-extern "C" void do_cywee_service_check_msg(int cmd);\r
+extern "C" void do_cywee_service_check_msg(int cmd,int data[]);\r
\r
extern "C"\r
{\r
{\r
// 根据不同的运动项目进行不同的运动\r
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TraingCardPresenter::OpenSensor!!");\r
- do_cywee_service_check_msg(CYWEE_SERVICE_CMD_EXIT);\r
+ do_cywee_service_check_msg(CYWEE_SERVICE_CMD_EXIT,NULL);\r
switch (type)\r
{\r
case ExerciseClass::NORMAL:\r
- do_cywee_service_check_msg(CYWEE_SERVICE_CMD_NORMAL_MODE);\r
+ do_cywee_service_check_msg(CYWEE_SERVICE_CMD_NORMAL_MODE,NULL);\r
break;\r
case ExerciseClass::TREADMILL:\r
- do_cywee_service_check_msg(CYWEE_SERVICE_CMD_TREADMILL_MODE);\r
+ do_cywee_service_check_msg(CYWEE_SERVICE_CMD_TREADMILL_MODE,NULL);\r
break;\r
case ExerciseClass::OUTDOOR:\r
- do_cywee_service_check_msg(CYWEE_SERVICE_CMD_OUTDOOR_RUNNING_MODE);\r
+ do_cywee_service_check_msg(CYWEE_SERVICE_CMD_OUTDOOR_RUNNING_MODE,NULL);\r
break;\r
case ExerciseClass::INDOOR:\r
- do_cywee_service_check_msg(CYWEE_SERVICE_CMD_INDOOR_RUNNING_MODE);\r
+ do_cywee_service_check_msg(CYWEE_SERVICE_CMD_INDOOR_RUNNING_MODE,NULL);\r
break;\r
case ExerciseClass::FITNESS_PEDOMETER:\r
- do_cywee_service_check_msg(CYWEE_SERVICE_CMD_FITNESS_PEDOMETER_MODE);\r
+ do_cywee_service_check_msg(CYWEE_SERVICE_CMD_FITNESS_PEDOMETER_MODE,NULL);\r
break;\r
case ExerciseClass::FREE_TRAINING:\r
- do_cywee_service_check_msg(CYWEE_SERVICE_CMD_FREE_TRAINING_MODE);\r
+ do_cywee_service_check_msg(CYWEE_SERVICE_CMD_FREE_TRAINING_MODE,NULL);\r
break;\r
default:\r
break;\r
OpenSensor(ExerciseClass::NORMAL);\r
break;\r
case ExerciseState::Pause:\r
- do_cywee_service_check_msg(CYWEE_SERVICE_CMD_PAUSE);\r
+ do_cywee_service_check_msg(CYWEE_SERVICE_CMD_PAUSE,0);\r
break;\r
case ExerciseState::Continue:\r
- do_cywee_service_check_msg(CYWEE_SERVICE_CMD_RESUME);\r
+ do_cywee_service_check_msg(CYWEE_SERVICE_CMD_RESUME,0);\r
break;\r
default:\r
break;\r
uint32_t cywee_register_msg_callback(cywee_msg_callback_t func);
cywee_msg_callback_t cywee_get_send_msg_callback_func(void);
-void activity_setstatus(int cmd);
-void activity_exit(void);
+void activity_mode_setstatus(int cmd);
+void activity_mode_exit(void);
+void cywee_oncharging_update(int oncharging_status);
+void cywee_wearstatus_update(int wearstatus);
+void cywee_hrs_wearstatus_update(int hrs_data,int wearstatus);
+
+
+extern uint8_t hrs_mode_state;
#pragma pack()
* @Author: penglei 1624952103@qq.com
* @Date: 2024-03-26 20:29:58
* @LastEditors: penglei 1624952103@qq.com
- * @LastEditTime: 2024-04-11 19:01:22
+ * @LastEditTime: 2024-04-16 15:50:32
* @FilePath: /FD230/code/sdk/drivers/peripheral/cywee/Inc/cywee_service.h
* @Description:
*
#define CYWEE_SERVICE_CMD_EXIT 0x1E
+#define CYWEE_SERVICE_CMD_WEAR_STATUS_CHANGE 0x1F
+#define CYWEE_SERVICE_CMD_ONCHARGING_CHANGE 0x20
+#define CYWEE_SERVICE_CMD_HRS_WEARSTATUS_CHANGE 0x21
+
errcode_t uapi_cywee_service_init(void);
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);
+void do_cywee_service_check_msg(int cmd,int data[]);
#ifdef __cplusplus
if (strcmp(mode, "start") == 0) {
PRINT("cywee start\n");
- do_cywee_service_check_msg(CYWEE_SERVICE_CMD_START_CHECK);
+ do_cywee_service_check_msg(CYWEE_SERVICE_CMD_START_CHECK,NULL);
} else if (strcmp(mode, "stop") == 0) {
PRINT("cywee stop\n");
- do_cywee_service_check_msg(CYWEE_SERVICE_CMD_STOP_CHECK);
+ do_cywee_service_check_msg(CYWEE_SERVICE_CMD_STOP_CHECK,NULL);
} else if (strcmp(mode, "test") == 0) {
PRINT("cywee test\n");
- do_cywee_service_check_msg(CYWEE_SERVICE_CMD_TEST);
+ do_cywee_service_check_msg(CYWEE_SERVICE_CMD_TEST,NULL);
} else if (strcmp(mode, "normal") == 0) {
PRINT("cywee normal mode\n");
- do_cywee_service_check_msg(CYWEE_SERVICE_CMD_NORMAL_MODE);
+ do_cywee_service_check_msg(CYWEE_SERVICE_CMD_NORMAL_MODE,NULL);
} else if (strcmp(mode, "treadmill") == 0) {
PRINT("cywee treadmill mode\n");
- do_cywee_service_check_msg(CYWEE_SERVICE_CMD_TREADMILL_MODE);
+ do_cywee_service_check_msg(CYWEE_SERVICE_CMD_TREADMILL_MODE,NULL);
} else if (strcmp(mode, "outdoor") == 0) {
PRINT("cywee outdoor running mode\n");
- do_cywee_service_check_msg(CYWEE_SERVICE_CMD_OUTDOOR_RUNNING_MODE);
+ do_cywee_service_check_msg(CYWEE_SERVICE_CMD_OUTDOOR_RUNNING_MODE,NULL);
} else if (strcmp(mode, "indoor") == 0) {
PRINT("cywee indoor running mode\n");
- do_cywee_service_check_msg(CYWEE_SERVICE_CMD_INDOOR_RUNNING_MODE);
+ do_cywee_service_check_msg(CYWEE_SERVICE_CMD_INDOOR_RUNNING_MODE,NULL);
} else if (strcmp(mode, "pedometer") == 0) {
PRINT("cywee fitness pedometer mode\n");
- do_cywee_service_check_msg(CYWEE_SERVICE_CMD_FITNESS_PEDOMETER_MODE);
+ do_cywee_service_check_msg(CYWEE_SERVICE_CMD_FITNESS_PEDOMETER_MODE,NULL);
} else if (strcmp(mode, "free") == 0) {
PRINT("cywee free training mode\n");
- do_cywee_service_check_msg(CYWEE_SERVICE_CMD_FREE_TRAINING_MODE);
+ do_cywee_service_check_msg(CYWEE_SERVICE_CMD_FREE_TRAINING_MODE,NULL);
} else if (strcmp(mode, "pause") == 0) {
PRINT("cywee pause\n");
- do_cywee_service_check_msg(CYWEE_SERVICE_CMD_PAUSE);
+ do_cywee_service_check_msg(CYWEE_SERVICE_CMD_PAUSE,NULL);
} else if (strcmp(mode, "resume") == 0) {
PRINT("cywee resume\n");
- do_cywee_service_check_msg(CYWEE_SERVICE_CMD_RESUME);
+ do_cywee_service_check_msg(CYWEE_SERVICE_CMD_RESUME,NULL);
} else if (strcmp(mode, "exit") == 0)
{
PRINT("cywee exit\n");
- do_cywee_service_check_msg(CYWEE_SERVICE_CMD_EXIT);
- }
+ do_cywee_service_check_msg(CYWEE_SERVICE_CMD_EXIT,NULL);
+ }
return ERRCODE_SUCC;
}
typedef struct
{
uint8_t cmd;
+ uint8_t data[2];
} cywee_cmd_t;
/***
* 其他cmd在Header里定义,对外开放
unused(data);
g_bat_timer_is_running = false;
if(cywee_service_running_stat == true){
- do_cywee_service_check_msg(CYWEE_SERVICE_CMD_TIMER_CHECK);
+ do_cywee_service_check_msg(CYWEE_SERVICE_CMD_TIMER_CHECK,NULL);
// cywee_service_timer_start_check(CYWEE_CHECK_MS);
}
}
-void do_cywee_service_check_msg(int cmd)
+void do_cywee_service_check_msg(int cmd,int data[])
{
int ret;
cywee_cmd_t mail = {0};
mail.cmd = cmd;
+ mail.data[0] = data[0];
+ mail.data[1] = data[1];
ret = osal_msg_queue_write_copy(g_cywee_queue, (void *)&mail, sizeof(cywee_cmd_t), 0);
if (ret != OSAL_SUCCESS) {
PRINT("Error cywee Check MSG 0x%02X send failed! err=0x%x! \r\n",cmd, ret);
cywee_main_dml(SPORT_ACTIVE_MODE_AR_ALERT);
cywee_service_timer_start_check(CYWEE_CHECK_MS);
}else if(mail.cmd == CYWEE_SERVICE_CMD_PAUSE){
- activity_setstatus(1);
+ activity_mode_setstatus(1);
}else if(mail.cmd == CYWEE_SERVICE_CMD_RESUME){
- activity_setstatus(0);
+ activity_mode_setstatus(0);
}else if(mail.cmd == CYWEE_SERVICE_CMD_EXIT){
cywee_service_running_stat = false;
if (g_cywee_service_timer != NULL) osTimerStop(g_cywee_service_timer);
- activity_exit();
+ activity_mode_exit();
+ }else if(mail.cmd == CYWEE_SERVICE_CMD_ONCHARGING_CHANGE)
+ {
+ cywee_oncharging_update(mail.data[0]);
+ }else if(mail.cmd == CYWEE_SERVICE_CMD_WEAR_STATUS_CHANGE)
+ {
+ cywee_wearstatus_update(mail.data[0]);
+ }else if(mail.cmd == CYWEE_SERVICE_CMD_HRS_WEARSTATUS_CHANGE)
+ {
+ cywee_hrs_wearstatus_update(mail.data[0],mail.data[1]);
}
}
}
g_cywee_service_timer = osTimerNew((osTimerFunc_t)cywee_service_check_timer_callback, osTimerPeriodic, NULL, NULL);
cywee_register_msg_callback(cywee_msg_callback);
- do_cywee_service_check_msg(CYWEE_SERVICE_CMD_START_CHECK);
+ do_cywee_service_check_msg(CYWEE_SERVICE_CMD_START_CHECK,NULL);
return ERRCODE_SUCC;
}
#define AP_ENABLE_DML_SDO_LISTEN
-int16_t gsensor_x[24] = {0};
-int16_t gsensor_y[24] = {0};
-int16_t gsensor_z[24] = {0};
#define GSENSON_MSG_COUNT 16
static gsenson_t gxyz_t;
cywee_inactivity_result_t c_inactivity_result_t;
static uint8_t cywee_installized = 0 ;
-static osTimerId_t g_cywee_hrs_timer;
-
-static osTimerId_t g_cywee_wearstatus_timer;
-
-static osTimerId_t g_cywee_oncharging_timer;
-
CustomSensorData csd;
-
-
static uint8_t hrs = 0;
-static uint8_t wearstatus = 0;
-static uint8_t wearstatus_tmp = 0;
-static uint8_t oncharging_tmp = 0;
-
-static unsigned long g_cywee_mode_init_queue;
-static uint8_t hrs_mode_state = 0;
+uint8_t hrs_mode_state = 0;
static uint8_t wear_mode_state = 0;
static uint8_t mail = 0;
CWM_SettingControl(SCL_DATE_TIME, &scl);
}
-void cywee_hrs_check_timer_callback(void)
+void cywee_hrs_wearstatus_update(int hrs_data,int wearstatus)
{
- get_hrs_wearstatus(&hrs,&wearstatus);
+ uint8_t wear_status = 0;
+ hrs = hrs_data;
+ wear_status = wearstatus;
CWM_OS_dbgPrintf("hrs : %d\r\n",hrs);
+ CWM_OS_dbgPrintf("wear_status : %d\r\n",wear_status);
+
memset(&csd, 0, sizeof(CUSTOM_HEARTRATE));
csd.sensorType = CUSTOM_HEARTRATE;
- csd.fData[0] = hrs + 15;
+ csd.fData[0] = hrs;
CWM_CustomSensorInput(&csd);
- if(wearstatus_tmp != wearstatus)
- {
- wearstatus_tmp = wearstatus;
- CWM_OS_dbgPrintf("222wearstatus : %d\r\n",wearstatus);
- //CWM_OS_dbgPrintf("tmp : %d \r\n",tmp);
- memset(&csd, 0, sizeof(CUSTOM_OFFBODY_DETECT));
- csd.sensorType = CUSTOM_OFFBODY_DETECT;
- csd.fData[0] = wearstatus;
- CWM_CustomSensorInput(&csd);
- }
+
+ memset(&csd, 0, sizeof(CUSTOM_OFFBODY_DETECT));
+ csd.sensorType = CUSTOM_OFFBODY_DETECT;
+ csd.fData[0] = wear_status;
+ CWM_CustomSensorInput(&csd);
+
}
-void cywee_oncharging_check_timer_callback(void)
+void cywee_oncharging_update(int oncharging_status)
{
- bool oncharging_status = uapi_get_charger_plug_status();
- if(oncharging_tmp != oncharging_status)
- {
- oncharging_tmp = oncharging_status;
- CWM_OS_dbgPrintf("oncharging_status : %d\r\n",oncharging_status);
- memset(&csd, 0, sizeof(CUSTOM_ON_CHARGING));
- csd.sensorType = CUSTOM_ON_CHARGING;
- csd.fData[0] = oncharging_status;
- CWM_CustomSensorInput(&csd);
- }
+ CWM_OS_dbgPrintf("oncharging : %d\r\n",oncharging_status);
+ memset(&csd, 0, sizeof(CUSTOM_ON_CHARGING));
+ csd.sensorType = CUSTOM_ON_CHARGING;
+ csd.fData[0] = oncharging_status;
+ CWM_CustomSensorInput(&csd);
}
-void cywee_wearstatus_check_timer_callback(void)
+void cywee_wearstatus_update(int wearstatus)
{
- get_wearstatus(&wearstatus);
- //CWM_OS_dbgPrintf("tmp : %d \r\n",tmp);
- if(wearstatus_tmp != wearstatus)
- {
- wearstatus_tmp = wearstatus;
- CWM_OS_dbgPrintf("111wearstatus : %d\r\n",wearstatus);
- //CWM_OS_dbgPrintf("tmp : %d \r\n",tmp);
- memset(&csd, 0, sizeof(CUSTOM_OFFBODY_DETECT));
- csd.sensorType = CUSTOM_OFFBODY_DETECT;
- csd.fData[0] = wearstatus;
- CWM_CustomSensorInput(&csd);
- }
+ CWM_OS_dbgPrintf("111wearstatus : %d\r\n",wearstatus);
+ memset(&csd, 0, sizeof(CUSTOM_OFFBODY_DETECT));
+ csd.sensorType = CUSTOM_OFFBODY_DETECT;
+ csd.fData[0] = wearstatus;
+ CWM_CustomSensorInput(&csd);
}
void activity_mode_task(void)
if(hrs_mode_state == 1)
{
ppg_send_cmd_to_driver("hrs",0);
- //osTimerStop(g_cywee_hrs_timer);
hrs_mode_state = 0;
}
if(wear_mode_state == 1)
{
ppg_send_cmd_to_driver("wear",0);
- osTimerStop(g_cywee_wearstatus_timer);
wear_mode_state = 0;
}
if(mail == 1 && hrs_mode_state == 0)
else if(mail == 2 && wear_mode_state == 0)
{
ppg_send_cmd_to_driver("wear",1);
- osTimerStart(g_cywee_wearstatus_timer,400);
wear_mode_state = 1;
}
}
void activity_mode_exit()
{
ppg_send_cmd_to_driver("wear",0);
- osTimerStop(g_cywee_wearstatus_timer);
wear_mode_state = 0;
}
-
errcode_t activity_mode_init(void)
{
app_task_definition_t taskcfg={0};
// CWM_OS_dbgPrintf("get_gsonsen_xyz_fail\n");
// return;
// }
- CWM_OS_dbgPrintf("x : %d , y : %d , z : %d\n", gxyz_t_queue[left_falg].x, gxyz_t_queue[left_falg].y, gxyz_t_queue[left_falg].z);
+ //CWM_OS_dbgPrintf("x : %d , y : %d , z : %d\n", gxyz_t_queue[left_falg].x, gxyz_t_queue[left_falg].y, gxyz_t_queue[left_falg].z);
t[i].x= gxyz_t_queue[left_falg].x;
t[i].y= gxyz_t_queue[left_falg].y;
t[i].z= gxyz_t_queue[left_falg].z;
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
{
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("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);
}
csd.sensorType = CUSTOM_OFFBODY_DETECT;
csd.fData[0] = 0;
CWM_CustomSensorInput(&csd);
- //if(mail == 2)
- //osTimerStart(g_cywee_wearstatus_timer,20);
- // else
- // osTimerStop(g_cywee_wearstatus_timer);
- }
- // else if((int)sensorEVT->fData[2] == 0)
- // osTimerStop(g_cywee_wearstatus_timer);
-
+ }
}
if((int)sensorEVT->fData[1] == CUSTOM_ON_CHARGING)
{
{
memset(&csd, 0, sizeof(CUSTOM_ON_CHARGING));
csd.sensorType = CUSTOM_ON_CHARGING;
- csd.fData[0] = 0;
+ csd.fData[0] = 1;
CWM_CustomSensorInput(&csd);
- osTimerStart(g_cywee_oncharging_timer,400);
}
- else
- osTimerStop(g_cywee_oncharging_timer);
-
}
if((int)sensorEVT->fData[1] == CUSTOM_HEARTRATE)
{
CWM_OS_dbgPrintf("CUSTOM_HEARTRATE !!! \r\n");
- if((int)sensorEVT->fData[2] == 1)
- osTimerStart(g_cywee_hrs_timer,400);
- else
- osTimerStop(g_cywee_hrs_timer);
}
break;
case IDX_ALGO_SHAKE:
// CWM_SettingControl(SCL_LOG, &scl);
- g_cywee_hrs_timer = osTimerNew((osTimerFunc_t)cywee_hrs_check_timer_callback, osTimerPeriodic, NULL, NULL);
- g_cywee_wearstatus_timer = osTimerNew((osTimerFunc_t)cywee_wearstatus_check_timer_callback, osTimerPeriodic, NULL, NULL);
- g_cywee_oncharging_timer = osTimerNew((osTimerFunc_t)cywee_oncharging_check_timer_callback, osTimerPeriodic, NULL, NULL);
+
//呼叫任一個CWM_Sensor_Enable 前呼叫此指令 设置手动或自动模式
memset(&scl, 0, sizeof(scl));
if(cmd == SPORT_ACTIVE_MODE_NORMAL)
{
cyw_inactivity_mode_change(INACTIVITY_MODE_SEDENTARY);
- CWM_Sensor_Enable(IDX_ALGO_INACTIVITY_OUTPUT);
}
// memset(&scl, 0, sizeof(scl));
// scl.iData[0] = 1;
// #include "app_task.h"\r
\r
#include "cywee_hal.h"\r
+#include "cywee_service.h"\r
\r
FT_CUSTOM_RESULTS_t hrsresult ={0};\r
\r
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[16];\r
\r
#ifdef SPO2_VECTOR\r
#include "spo2_vec.h"\r
//uint8_t alg_ram[10] = {0};\r
ppg_sensor_data_t ppg_s_data;\r
\r
-uint8_t free_trainning_hrs = 0;\r
-uint8_t free_trainning_wearstatus = 0;\r
+int hrs_data[2] = {0};\r
\r
-uint8_t wear_mode_status = 0;\r
+int wear_mode_status = 0;\r
\r
//////// spo2 para and switches\r
const uint8_t COUNT_BLOCK_NUM = 25; //delay the block of some single good signal after a series of bad signal\r
static int32_t cali_data_cnt = 0;\r
#endif\r
\r
-void get_hrs_wearstatus(uint8_t *hrs,uint8_t *wearstatus)\r
-{\r
- *hrs = free_trainning_hrs;\r
- *wearstatus = free_trainning_wearstatus;\r
-}\r
-\r
-void get_wearstatus(uint8_t *wearstatus)\r
-{\r
- *wearstatus = wear_mode_status;\r
-}\r
-\r
// us 延时函数, 客户需填写\r
void hx3695_delay_us(uint32_t us)\r
{\r
// result.gr_data_final = hrs_s_dat.green_data[0];\r
// result.ir_data_final = hrs_s_dat.ir_data[0];\r
// hx3695_factory_test_process(NULL, APP_FACTORY_TEST_HR_START, &result);\r
-\r
- //gsensor_get_n_data(1,gsensordata);\r
-\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].x;\r
- // gsen_fifo_y_send[ii] = gsensordata[ii].y;\r
- // gsen_fifo_z_send[ii] = gsensordata[ii].z;\r
- // }\r
-\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[ii],gsen_fifo_y[ii],gsen_fifo_z[ii],ppg_s_data.green_cur);\r
- }\r
-\r
- hrs_wear_status = hx3695_hrs_get_wear_status();\r
- PRINT("hrs_wear_status: %d !!\r\n", hrs_wear_status);\r
- \r
- if(hrs_wear_status == MSG_HRS_WEAR)\r
+ PRINT("*count : %d \r\n",*count);\r
+ if(*count < 10)\r
{\r
- tyhx_hrs_alg_send_data(PPG_buf, *count, gsen_fifo_x_send, gsen_fifo_y_send, \r
- gsen_fifo_z_send, cal.Group1_Ledidac);\r
+ gsensor_get_n_data(16,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
+ }\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
+ hrs_wear_status = hx3695_hrs_get_wear_status();\r
+ PRINT("hrs_wear_status: %d !!\r\n", hrs_wear_status);\r
+ \r
+ if(hrs_wear_status == MSG_HRS_WEAR)\r
+ {\r
+ tyhx_hrs_alg_send_data(PPG_buf, *count, gsen_fifo_x_send, gsen_fifo_y_send, \r
+ gsen_fifo_z_send, cal.Group1_Ledidac);\r
+ }\r
}\r
#endif\r
\r
PRINT("hx3695 data_cnt: %d, hr_living: %d, hr_living_qu: %d, hr_living_std: %d, hr_result:%d \r\n",\r
alg_results.data_cnt, hrsresult.hr_living, hrsresult.hr_living_qu, hrsresult.hr_living_std, hrsresult.lastesthrs);\r
\r
- free_trainning_hrs = hrsresult.lastesthrs;\r
- free_trainning_wearstatus = hrs_wear_status;\r
+ if(hrs_mode_state)\r
+ {\r
+ hrs_data[0] = hrsresult.lastesthrs;\r
+ hrs_data[1] = hrs_wear_status;\r
\r
+ do_cywee_service_check_msg(CYWEE_SERVICE_CMD_HRS_WEARSTATUS_CHANGE,hrs_data);\r
+ }\r
\r
if(hrsresult.lastesthrs > 0)\r
{\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
- wear_mode_status = hx3695_wear_status;\r
- //PRINT("wear_mode_status : %d \r\n",wear_mode_status);\r
+ if(wear_mode_status != hx3695_wear_status)\r
+ {\r
+ wear_mode_status = hx3695_wear_status;\r
+ do_cywee_service_check_msg(CYWEE_SERVICE_CMD_WEAR_STATUS_CHANGE,&wear_mode_status);\r
+ }\r
+\r
extern uint8_t notouch_cnt;\r
extern uint8_t touch_cnt;\r
\r
#include "hx3695_hal.h"
#include "custom_utils.h"
+#include "cywee_hal.h"
+
static bool g_ppg_service_initialled = false;
uint8_t card_databuf[64] = {0};
#define PPG_SERVICE_MSG_COUNT 16
-#define PPG_SERVICE_TASK_SIZE 0x800
+#define PPG_SERVICE_TASK_SIZE 0x900
#define PPG_SERVICE_TASK_PRIO 5
#define MAG_CHECK_MS 20