static gsenson_t gsensordata[32];\r
#endif\r
\r
-#define HRS_WINDOW_SIZE 5\r
+#define HRS_WINDOW_SIZE 7\r
static uint8_t hrs_num = 0;\r
static int32_t sum_hrs = 0;\r
static int32_t hrs_data[7] = {0};\r
// static uint8_t wear_cnt = 0;\r
static uint32_t last_system_time = 0;\r
\r
+static uint8_t last_hrs = 0;\r
+\r
uint8_t alg_ram[11 * 1024] __attribute__((aligned(4)));\r
\r
\r
uint8_t valid_count = hrs_num - 2;\r
avg_hrs = (sum_hrs - max_hrs - min_hrs) / valid_count;\r
\r
+\r
+ if (last_hrs >= 30 && last_hrs <= 210) \r
+ {\r
+ int16_t diff = avg_hrs - last_hrs;\r
+ if (abs(diff) > 10) \r
+ {\r
+ if (diff > 0) \r
+ avg_hrs = last_hrs + 5;\r
+ else \r
+ avg_hrs = last_hrs - 5;\r
+ }\r
+ }\r
+ last_hrs = avg_hrs;\r
// printf("max_hrs[%d],min_hrs[%d],avg_hrs[%d]\n",max_hrs,min_hrs,avg_hrs);\r
}\r
}\r
DEBUG_PRINTF("HRS: %d %d\r\n",hrs_result.data_cnt, hrs_result.hr_result);\r
// printf("hr:%d, living:%d, wear_status:%d\n", hrs_result.hr_result,hrs_result.living_status,wear_status);\r
\r
- if(uapi_dev_runtime_get_train_status())\r
- {\r
- if(hrs_result.hr_result >= 30 && hrs_result.hr_result <= 210)\r
- get_avg_hrs(hrs_result.hr_result);\r
- }\r
- else\r
+ time_cnt++;\r
+\r
+ if(time_cnt >= 3)\r
{\r
- if(hrs_result.living_status == MSG_LIVING_TRUE)\r
+ time_cnt = 0;\r
+ if(uapi_dev_runtime_get_train_status())\r
{\r
- living_wear_cnt = 0;\r
-\r
if(hrs_result.hr_result >= 30 && hrs_result.hr_result <= 210)\r
get_avg_hrs(hrs_result.hr_result);\r
-\r
- living_status = 1;\r
- #ifdef SUPPORT_CYWEE_SERVICE\r
- cywee_wear_status_update(&living_status);\r
- #endif\r
}\r
- else if(hrs_result.living_status == MSG_LIVING_FAIL)\r
+ else\r
{\r
- living_wear_cnt++;\r
- if(living_wear_cnt >= 5)\r
+ if(hrs_result.living_status == MSG_LIVING_TRUE)\r
{\r
- avg_hrs = 0;\r
- living_status = 2;\r
- wear_status = 0;\r
- wear_status_pre = 0;\r
- // hx3695_unwearstatus_update();\r
+ living_wear_cnt = 0;\r
\r
+ if(hrs_result.hr_result >= 30 && hrs_result.hr_result <= 210)\r
+ get_avg_hrs(hrs_result.hr_result);\r
+\r
+ living_status = 1;\r
#ifdef SUPPORT_CYWEE_SERVICE\r
cywee_wear_status_update(&living_status);\r
#endif\r
+ }\r
+ else if(hrs_result.living_status == MSG_LIVING_FAIL)\r
+ {\r
+ living_wear_cnt++;\r
+ if(living_wear_cnt >= 5)\r
+ {\r
+ avg_hrs = 0;\r
+ living_status = 2;\r
+ wear_status = 0;\r
+ wear_status_pre = 0;\r
+ // hx3695_unwearstatus_update();\r
+\r
+ #ifdef SUPPORT_CYWEE_SERVICE\r
+ cywee_wear_status_update(&living_status);\r
+ #endif\r
+ living_wear_cnt = 0;\r
+ }\r
+ }\r
+ else\r
+ {\r
living_wear_cnt = 0;\r
+ living_status = 0;\r
}\r
}\r
- else\r
- {\r
- living_wear_cnt = 0;\r
- living_status = 0;\r
- }\r
}\r
- time_cnt++;\r
+ // time_cnt++;\r
// if(time_cnt >= 3)\r
{\r
- time_cnt = 0;\r
+ // time_cnt = 0;\r
#ifdef SUPPORT_PPG_BLE_SERVICE \r
#if 0\r
\r