memset(status_file_path, 0, sizeof(status_file_path));
memset(dir_path, 0, sizeof(dir_path));
memset(nap_file_path, 0, sizeof(nap_file_path));
+
+ wake_up_flag = 0;
+}
+
+static void cywee_clean_ui_sleep_data(void)
+{
memset(&ui_nap_data, 0, sizeof(ui_nap_data));
memset(&ui_sleep_data, 0, sizeof(ui_nap_data));
- wake_up_flag = 0;
}
void cywee_read_nap_data(void)
//睡眠
case INACTIVITY_MODE_SLEEPING:
// CWM_OS_dbgPrintf("INACTIVITY_MODE_SLEEPING\r\n");
-
+ cywee_clean_ui_sleep_data();
//设置睡眠
memset(&scl, 0, sizeof(scl));
scl.iData[0] = 1;
static uint8_t time_cnt = 0;\r
// static uint8_t his_wear = 2;\r
// static uint8_t wear_cnt = 0;\r
+static uint32_t last_system_time = 0;\r
\r
uint8_t alg_ram[11 * 1024] __attribute__((aligned(4)));\r
\r
if(en)\r
{\r
hx3695_timers_start();\r
+ uapi_get_timestampe_ms(&last_system_time);\r
}\r
else\r
{\r
}\r
}\r
}\r
-\r
uint16_t hx3695_read_fifo_data(ppg_sensor_data_t *ppg_sensor_dat)\r
{\r
uint8_t databuf[3];\r
+ uint8_t data_right = 0;\r
+ uint8_t exp_group = 0;\r
// uint32_t ii=0;\r
uint16_t data_len_h = 0;\r
uint16_t data_len_l = 0;\r
uint16_t fifo_read_length = 0;\r
uint16_t fifo_read_bytes = 0;\r
uint16_t fifo_out_count = 0;\r
- uint8_t retry_cnt = 0;\r
+ uint32_t now_system_time = 0;\r
+\r
data_len_h = hx3695_read_reg(0x21);\r
data_len_l = hx3695_read_reg(0x20);\r
fifo_data_length = (((data_len_h&0x01)<<8)|data_len_l);\r
- // printf("111 fifo data length %d %d %d\n", data_len_h, data_len_l, fifo_data_length);\r
- // DEBUG_PRINTF("fifo_data_length: %d\r\n", fifo_data_length);\r
-\r
- int threshold = 0;\r
-\r
- if(work_mode_flag == WEAR_MODE)\r
- {\r
- threshold = (ppg_sensor_dat->led_activated)*(ppg_sensor_dat->fs/5)*40;\r
- }\r
- else\r
- {\r
- threshold = (ppg_sensor_dat->led_activated)*(ppg_sensor_dat->fs/5)*4;\r
- }\r
-\r
- // printf("threshold : %d\n",threshold);\r
-\r
- if(fifo_data_length > threshold)\r
- {\r
- for(int i = 0 ; i < 3; i++)\r
- {\r
- data_len_h = hx3695_read_reg(0x21);\r
- data_len_l = hx3695_read_reg(0x20);\r
- fifo_data_length = (((data_len_h&0x01)<<8)|data_len_l);\r
- // printf("222 fifo data length again %d %d %d\n", data_len_h, data_len_l, fifo_data_length);\r
- if(fifo_data_length > threshold)\r
- {\r
- retry_cnt ++;\r
- }\r
- else\r
- break;\r
- }\r
- }\r
-\r
-\r
- if (fifo_data_length>FIFO_DATA_LENGTH)\r
- {\r
- fifo_data_length = FIFO_DATA_LENGTH;\r
- }\r
- \r
+ now_system_time = get_system_time();\r
+ exp_group = (now_system_time - last_system_time) / (1000 / ppg_sensor_dat->fs);\r
+ \r
+ for(uint8_t index = 0; index < 3; index++)\r
+ {\r
+ if(fifo_data_length > (exp_group + 4) * ppg_sensor_dat->led_activated)\r
+ {\r
+ data_len_h = hx3695_read_reg(0x21);\r
+ data_len_l = hx3695_read_reg(0x20);\r
+ fifo_data_length = (((data_len_h&0x01)<<8)|data_len_l);\r
+ }\r
+ else\r
+ {\r
+ data_right = 1;\r
+ break;\r
+ }\r
+ }\r
+ \r
+ if(data_right != 1)\r
+ {\r
+ fifo_data_length = (exp_group + 1) * ppg_sensor_dat->led_activated;\r
+ }\r
+ last_system_time = now_system_time;\r
+ \r
+ if (fifo_data_length>FIFO_DATA_LENGTH)\r
+ {\r
+ fifo_data_length = FIFO_DATA_LENGTH;\r
+ }\r
+ \r
if(fifo_data_length<2*ppg_sensor_dat->led_activated)\r
{\r
return 0;\r
\r
hx3695_get_led_para(ppg_sensor_dat);\r
\r
- if(retry_cnt >= 3)\r
- {\r
- if(work_mode_flag == WEAR_MODE)\r
- fifo_out_count = 25;\r
- else\r
- fifo_out_count = 8;\r
- }\r
-\r
-\r
return fifo_out_count;\r
}\r
\r
uint8_t phase2_tia_cap = 4; /* 0= ; 1= ; 2= ; 3= ; 4= ; 5= ; 6= ; 7= */\r
uint8_t phase2_led_drv1_cha_sel = LDR0_FT_SEL; /* 1 = ldr1; 2 = ldr2; 4 = ldr3; 8 = ldr4 ; */\r
uint8_t phase2_led_drv2_cha_sel = 0x00;\r
- uint8_t phase2_pd_sel = LDR0_PD_FT_SEL; /* 1 = pd1; 2 = pd2; 4 = pd3*/\r
+ uint8_t phase2_pd_sel = LDR0_PD_FT_GRAY_SEL; /* 1 = pd1; 2 = pd2; 4 = pd3*/\r
uint8_t phase2_als_offset_idac = 0; /* 0~255 = 0 ~ 128ua , step = 0.5ua */\r
uint8_t phase2_led_offset_idac = 0; /* 0~255 = 0 ~ 64ua , step = 0.25ua */\r
uint8_t phase2_ldr1_cur = DRV1_GRAD_CUR; /* 0~255 = 0 ~ 200ma, step = 0.8ma */\r
uint8_t phase3_tia_cap = 4; /* 0= ; 1= ; 2= ; 3= ; 4= ; 5= ; 6= ; 7= */\r
uint8_t phase3_led_drv1_cha_sel = LDR1_FT_SEL; /* 1 = ldr1; 2 = ldr2; 4 = ldr3; 8 = ldr4 ; */\r
uint8_t phase3_led_drv2_cha_sel = 0;\r
- uint8_t phase3_pd_sel = LDR1_PD_FT_SEL; /* 1 = pd1; 2 = pd2; 4 = pd3*/\r
+ uint8_t phase3_pd_sel = LDR1_PD_FT_GRAY_SEL; /* 1 = pd1; 2 = pd2; 4 = pd3*/\r
uint8_t phase3_als_offset_idac = 0; /* 0~255 = 0 ~ 128ua , step = 0.5ua */\r
uint8_t phase3_led_offset_idac = 0; /* 0~255 = 0 ~ 64ua , step = 0.25ua */\r
uint8_t phase3_ldr1_cur = DRV1_GRAD_CUR; /* 0~255 = 0 ~ 200ma, step = 0.8ma */\r
uint8_t phase4_tia_cap = 4; /* 0= ; 1= ; 2= ; 3= ; 4= ; 5= ; 6= ; 7= */\r
uint8_t phase4_led_drv1_cha_sel = LDR2_FT_SEL; /* 1 = ldr1; 2 = ldr2; 4 = ldr3; 8 = ldr4 ; */\r
uint8_t phase4_led_drv2_cha_sel = 0;\r
- uint8_t phase4_pd_sel = LDR2_PD_FT_SEL; /* 1 = pd1; 2 = pd2; 4 = pd3*/\r
+ uint8_t phase4_pd_sel = LDR2_PD_FT_GRAY_SEL; /* 1 = pd1; 2 = pd2; 4 = pd3*/\r
uint8_t phase4_als_offset_idac = 0; /* 0~255 = 0 ~ 128ua , step = 0.5ua */\r
uint8_t phase4_led_offset_idac = 0; /* 0~255 = 0 ~ 64ua , step = 0.25ua */\r
uint8_t phase4_ldr1_cur = DRV1_GRAD_CUR; /* 0~255 = 0 ~ 200ma, step = 0.8ma */\r
uint8_t phase5_tia_cap = 4; /* 0= ; 1= ; 2= ; 3= ; 4= ; 5= ; 6= ; 7= */\r
uint8_t phase5_led_drv1_cha_sel = LDR3_FT_SEL; /* 1 = ldr1; 2 = ldr2; 4 = ldr3; 8 = ldr4 ; */\r
uint8_t phase5_led_drv2_cha_sel = 0;\r
- uint8_t phase5_pd_sel = LDR3_PD_FT_SEL; /* 1 = pd1; 2 = pd2; */\r
+ uint8_t phase5_pd_sel = LDR3_PD_FT_GRAY_SEL; /* 1 = pd1; 2 = pd2; */\r
uint8_t phase5_als_offset_idac = 0; /* 0~255 = 0 ~ 128ua , step = 0.5ua */\r
uint8_t phase5_led_offset_idac = 0; /* 0~255 = 0 ~ 64ua , step = 0.25ua */\r
uint8_t phase5_ldr1_cur = DRV1_GRAD_CUR; /* 0~255 = 0 ~ 200ma, step = 0.8ma */\r
/////////FIFO and adc conversion ready config////////\r
/////////FIFO and adc conversion ready config////////\r
#if defined(INT_MODE) //(FIFO_ALL_MOST_FULL)\r
- hx3695_write_reg(0X1b, 0x90);// bits<3:0> fifo data sel, 0000 = p1;0001= p2;0010=p3;\\r
- 0011=p4;0100=p5;0101=p6;0110=p7;\\r
- bits<7> fifo enble\r
+ hx3695_write_reg(0X1b, 0x90);// bits<3:0> fifo data sel, 0000 = p1;0001= p2;0010=p3;0011=p4;0100=p5;0101=p6;0110=p7;bits<7> fifo enble\r
hx3695_write_reg(0X1c, (fifo_watermark&0xff)); //fifo_watermark\r
hx3695_write_reg(0X1d, fifo_watermark<<8); //bit<0>=fifo_watermark[8] \r
hx3695_write_reg(0X33, 0x83); // int width \r
/////////FIFO and adc conversion ready config////////\r
/////////FIFO and adc conversion ready config////////\r
#if defined(INT_MODE) //(FIFO_ALL_MOST_FULL)\r
- hx3695_write_reg(0X1b, 0x90);// bits<3:0> fifo data sel, 0000 = p1;0001= p2;0010=p3;0011=p4;0100=p5;0101=p6;0110=p7;bits<7> fifo enble\r
+ hx3695_write_reg(0X1b, 0x90);// bits<3:0> fifo data sel, 0000 = p1;0001= p2;0010=p3;0011=p4;0100=p5;0101=p6;0110=p7; bits<7> fifo enble\r
hx3695_write_reg(0X1c, (fifo_watermark&0xff)); //fifo_watermark\r
hx3695_write_reg(0X1d, fifo_watermark<<8); //bit<0>=fifo_watermark[8] \r
hx3695_write_reg(0X33, 0x83); // int width \r
/////////FIFO and adc conversion ready config////////\r
/////////FIFO and adc conversion ready config////////\r
#if defined(INT_MODE) //(FIFO_ALL_MOST_FULL)\r
- hx3695_write_reg(0X1b, 0x90);// bits<3:0> fifo data sel, 0000 = p1;0001= p2;0010=p3;0011=p4;0100=p5;0101=p6;0110=p7;bits<7> fifo enble\r
+ hx3695_write_reg(0X1b, 0x90);// bits<3:0> fifo data sel, 0000 = p1;0001= p2;0010=p3;0011=p4;0100=p5;0101=p6;0110=p7; bits<7> fifo enble\r
hx3695_write_reg(0X1c, (fifo_watermark&0xff)); //fifo_watermark\r
hx3695_write_reg(0X1d, fifo_watermark<<8); //bit<0>=fifo_watermark[8] \r
hx3695_write_reg(0X33, 0x83); // int width \r
hx3695_write_reg(0X38, 0x04); // int sel,00=close almost full int,04=enable almost full int\r
\r
#else\r
- hx3695_write_reg(0X1b, 0x90);// bits<3:0> fifo data sel, 0000 = p1;0001= p2;0010=p3;0011=p4;0100=p5;0101=p6;0110=p7;\bits<7> fifo enble \r
+ hx3695_write_reg(0X1b, 0x90);// bits<3:0> fifo data sel, 0000 = p1;0001= p2;0010=p3;0011=p4;0100=p5;0101=p6;0110=p7;bits<7> fifo enble \r
hx3695_write_reg(0X36, 0x00); //intrupt \r
hx3695_write_reg(0X38, 0x00); // int sel,00=close almost full int,01= prf int 04=enable almost full int\r
\r
/////////FIFO and adc conversion ready config////////\r
/////////FIFO and adc conversion ready config////////\r
#if defined(INT_MODE) //(FIFO_ALL_MOST_FULL)\r
- hx3695_write_reg(0X1b, 0x90);// bits<3:0> fifo data sel, 0000 = p1;0001= p2;0010=p3;\\r
- 0011=p4;0100=p5;0101=p6;0110=p7;\\r
- bits<7> fifo enble\r
+ hx3695_write_reg(0X1b, 0x90);// bits<3:0> fifo data sel, 0000 = p1;0001= p2;0010=p3;0011=p4;0100=p5;0101=p6;0110=p7;bits<7> fifo enble\r
hx3695_write_reg(0X1c, (fifo_watermark&0xff)); //fifo_watermark\r
hx3695_write_reg(0X1d, fifo_watermark<<8); //bit<0>=fifo_watermark[8] \r
hx3695_write_reg(0X33, 0x83); // int width \r
factory_green = ft_result.ldr0_data_final;\r
factory_red = ft_result.ldr1_data_final;\r
factory_ir = ft_result.ldr2_data_final;\r
+ // TYHX_LOG("leak LDR0=%d\r\n",hrsresult.leak_ldr0);\r
\r
TYHX_LOG("leak LDR0=%d\r\n",ft_result.ldr0_data_final);\r
TYHX_LOG("leak LDR1=%d\r\n",ft_result.ldr1_data_final);\r
factory_red = ft_result.ldr1_data_final;\r
factory_ir = ft_result.ldr2_data_final;\r
\r
+ // hrsresult.card_ldr3 = ft_result.ldr3_data_final;\r
TYHX_LOG("leak LDR0=%d\r\n",ft_result.ldr0_data_final);\r
TYHX_LOG("leak LDR1=%d\r\n",ft_result.ldr1_data_final);\r
TYHX_LOG("leak LDR2=%d\r\n",ft_result.ldr2_data_final);\r
\r
\r
/***********ѡ��*************/\r
-#define LDR0_FT_SEL 0x50 \r
-#define LDR1_FT_SEL 0x28\r
-#define LDR2_FT_SEL 0x81\r
-#define LDR3_FT_SEL 0x81\r
+#define LDR0_FT_SEL 0x20 \r
+#define LDR1_FT_SEL 0x40\r
+#define LDR2_FT_SEL 0x80\r
+#define LDR3_FT_SEL 0x20\r
#define LDR4_FT_SEL 0x40\r
#define LDR5_FT_SEL 0x80\r
\r
/***********ѡPD*************/\r
#define LDR0_PD_FT_SEL 0x06\r
-#define LDR1_PD_FT_SEL 0x06\r
+#define LDR1_PD_FT_SEL 0x09\r
#define LDR2_PD_FT_SEL 0x06\r
#define LDR3_PD_FT_SEL 0x06\r
#define LDR4_PD_FT_SEL 0x0f\r
#define LDR5_PD_FT_SEL 0x0f\r
#define ALS_PD_FT_SEL 0x0f\r
\r
+#define LDR0_PD_FT_GRAY_SEL 0x01\r
+#define LDR1_PD_FT_GRAY_SEL 0x02\r
+#define LDR2_PD_FT_GRAY_SEL 0x04\r
+#define LDR3_PD_FT_GRAY_SEL 0x08\r
/***********���õ���*************/\r
\r
#define DRV1_LEAK_CUR 64 //Ĭ������ led driver 1 ����50MA��driver2�����õ���\r
break;\r
case GPS_SENTENCE_GSV + 1: // GSV numMsg 2 GSV 语句总数。\r
pnmea->gsvpagecount = (unsigned char)sring_to_int((const char*)pnmea->term, (void*)0);\r
- printf("gsv pagecount %d\r\n",pnmea->gsvpagecount );\r
+ // printf("gsv pagecount %d\r\n",pnmea->gsvpagecount );\r
pnmea->gps_data_good=1;\r
break;\r
case GPS_SENTENCE_GSV + 2: // GSV msgNo GSV 语句编号。\r
pnmea->gsvpage = (unsigned char)sring_to_int((const char*)pnmea->term, (void*)0);\r
- printf("gsv gsvpage %d\r\n",pnmea->gsvpage );\r
+ // printf("gsv gsvpage %d\r\n",pnmea->gsvpage );\r
break;\r
case GPS_SENTENCE_GSV + 3: // GSV numSV 可见卫星总数。\r
{\r
pnmea->starcount = (unsigned char)sring_to_int((const char*)pnmea->term, (void*)0);\r
- printf("gsv starcount %d\r\n",pnmea->starcount );\r
+ // printf("gsv starcount %d\r\n",pnmea->starcount );\r
if (pnmea->gsvpage==pnmea->gsvpagecount)\r
{ //最后一页星的数量\r
//非最后一页的中间任意一页一定是4颗星\r
case GPS_SENTENCE_GSV + 4: // GSV svid 卫星编号\r
startindex=4*(pnmea->gsvpage-1);\r
pnmea->starts[0].starID=(unsigned char)sring_to_int((const char*)pnmea->term, (void*)0);\r
- printf("gsv 0 startindex %d startid %d\r\n",startindex ,pnmea->starts[0].starID);\r
+ // printf("gsv 0 startindex %d startid %d\r\n",startindex ,pnmea->starts[0].starID);\r
break;\r
case GPS_SENTENCE_GSV + 7: // GSV cn0 载噪比:0~99,无效时为空\r
startindex=4*(pnmea->gsvpage-1);\r
pnmea->starts[0].snr=(unsigned char)sring_to_int((const char*)pnmea->term, (void*)0);\r
- printf("gsv 0 startindex %d snr %d\r\n",startindex ,pnmea->starts[0].snr);\r
+ // printf("gsv 0 startindex %d snr %d\r\n",startindex ,pnmea->starts[0].snr);\r
break;\r
case GPS_SENTENCE_GSV + 8: // GSV svid 卫星编号 N*4\r
startindex=4*(pnmea->gsvpage-1)+1;\r
if (1>=pnmea->gsvpage_starcount) break;\r
pnmea->starts[1].starID=(unsigned char)sring_to_int((const char*)pnmea->term, (void*)0);\r
- printf("gsv 1 startindex %d startid %d\r\n",startindex ,pnmea->starts[1].starID);\r
+ // printf("gsv 1 startindex %d startid %d\r\n",startindex ,pnmea->starts[1].starID);\r
break;\r
case GPS_SENTENCE_GSV + 11: // GSV cn0 载噪比:0~99,无效时为空\r
startindex=4*(pnmea->gsvpage-1)+1;\r
if (1>=pnmea->gsvpage_starcount) break;\r
pnmea->starts[1].snr=(unsigned char)sring_to_int((const char*)pnmea->term, (void*)0);\r
- printf("gsv 1 startindex %d snr %d\r\n",startindex ,pnmea->starts[1].snr);\r
+ // printf("gsv 1 startindex %d snr %d\r\n",startindex ,pnmea->starts[1].snr);\r
break;\r
case GPS_SENTENCE_GSV + 12: // GSV svid 卫星编号\r
startindex=4*(pnmea->gsvpage-1)+2;\r
if (2>=pnmea->gsvpage_starcount) break;\r
pnmea->starts[2].starID=(unsigned char)sring_to_int((const char*)pnmea->term, (void*)0);\r
- printf("gsv 2 startindex %d startid %d\r\n",startindex ,pnmea->starts[2].starID);\r
+ // printf("gsv 2 startindex %d startid %d\r\n",startindex ,pnmea->starts[2].starID);\r
break;\r
case GPS_SENTENCE_GSV + 15: // GSV cn0 载噪比:0~99,无效时为空\r
startindex=4*(pnmea->gsvpage-1)+2;\r
if (2>=pnmea->gsvpage_starcount) break;\r
pnmea->starts[2].snr=(unsigned char)sring_to_int((const char*)pnmea->term, (void*)0);\r
- printf("gsv 2 startindex %d snr %d\r\n",startindex ,pnmea->starts[2].snr);\r
+ // printf("gsv 2 startindex %d snr %d\r\n",startindex ,pnmea->starts[2].snr);\r
break;\r
case GPS_SENTENCE_GSV + 16: // GSV svid 卫星编号\r
startindex=4*(pnmea->gsvpage-1)+3;\r
if (3>=pnmea->gsvpage_starcount) break;\r
pnmea->starts[3].starID=(unsigned char)sring_to_int((const char*)pnmea->term, (void*)0);\r
- printf("gsv 3 startindex %d startid %d\r\n",startindex ,pnmea->starts[3].starID);\r
+ // printf("gsv 3 startindex %d startid %d\r\n",startindex ,pnmea->starts[3].starID);\r
break;\r
case GPS_SENTENCE_GSV + 19: // GSV cn0 载噪比:0~99,无效时为空\r
startindex=4*(pnmea->gsvpage-1)+3;\r
if (3>=pnmea->gsvpage_starcount) break;\r
pnmea->starts[3].snr=(unsigned char)sring_to_int((const char*)pnmea->term, (void*)0);\r
- printf("gsv 3 startindex %d snr %d\r\n",startindex ,pnmea->starts[3].snr);\r
+ // printf("gsv 3 startindex %d snr %d\r\n",startindex ,pnmea->starts[3].snr);\r
break;\r
// time and date\r
//\r