{
uos_timer_start(fr8012haq_timer, MS_TO_TICKS(3000), MS_TO_TICKS(3000), fr8012haq_timerout_cb, NULL);
- //Helios_Timer_Start(fr8012haq_timer, 3000, 1);
- //Helios_Timer_Start(fr8012haq_timer, 320, 1);
- }else
+ }else if(FR8012HAQ_jobs_mode == BP_MODE)//血压150MS
{
uos_timer_start(fr8012haq_timer, MS_TO_TICKS(150), MS_TO_TICKS(150), fr8012haq_timerout_cb, NULL);
- }
+ }else if(FR8012HAQ_jobs_mode == YYL_MODE)//中医50秒
+ {
+ uos_timer_start(fr8012haq_timer, MS_TO_TICKS(50000), MS_TO_TICKS(50000), fr8012haq_timerout_cb, NULL);
+ }else//其他1秒
+ {
- //Helios_Timer_Start(fr8012haq_timer, 320, 1);
+ uos_timer_start(fr8012haq_timer, MS_TO_TICKS(1000), MS_TO_TICKS(1000), fr8012haq_timerout_cb, NULL);
+ }
+
}
else
/* code */
uart4_send_data("{\"cmd\":\"1\",\"work_mode\":\"hrv\"}",sizeof("{\"cmd\":\"1\",\"work_mode\":\"hrv\"}"));
break;
- // case YYL_MODE:
- // /* code */
- // uart4_send_data("{\"cmd\":\"1\",\"work_mode\":\"yyl\"}",sizeof("{\"cmd\":\"1\",\"work_mode\":\"yyl\"}"));
- // break;
+ case YYL_MODE:
+ /* code */
+ uart4_send_data("{\"cmd\":\"1\",\"work_mode\":\"yyl\"}",sizeof("{\"cmd\":\"1\",\"work_mode\":\"yyl\"}"));
+ break;
default:
break;
}
//fr8012haq_en_gpio_enable(false);
FR8012HAQ_close();
//FR8012HAQ_LOG("FR8012HAQ_irq_cb: 1111111111111!!!!!!!!\r\n");
- FR8012HAQ_run_mode = NULL_MODE;
- FR8012HAQ_jobs_mode = NULL_MODE;
+ //FR8012HAQ_run_mode = NULL_MODE;
+ //FR8012HAQ_jobs_mode = NULL_MODE;
fr8012haq_ppg_timerout_flag = 0;
fr8012haq_agc_timerout_flag = 0;
Timer0_Switch(0);
//读取并解析返回数据
#define DATA_HANDLE (1<<24)
#define UART4_BUF_LEN 2*1024
-
+#define YYL_OUT_DATA_SIZE 30
+yylPFE_OutputData yyl_out_data[YYL_OUT_DATA_SIZE]={0};
+int yyl_out_data_len = 0;
int fr8012haq_parse_returned_data(int timeout)
{
static char *UART4_buf = NULL;
return -1;
memset(UART4_buf,0,UART4_BUF_LEN);
len =uart4_recv_data(UART4_buf,UART4_BUF_LEN,timeout);//读串口数据
- FR8012HAQ_LOG("fr8012haq_parse_returned_data:len:%d!!!!\n",len);
if(len)
{
FR8012HAQ_LOG("UART4:len:%d str:%s",len,UART4_buf);
num_buf_len = find_c(str_tmp,'\"');
if(num_buf_len>=sizeof(num_buf))
num_buf_len = sizeof(num_buf)-1;
+ memset(num_buf,0,sizeof(num_buf));
memcpy(num_buf,str_tmp,num_buf_len);
hrs = atoi(num_buf);
FR8012HAQ_result_set_heart_rate(hrs);
num_buf_len = find_c(str_tmp,'\"');
if(num_buf_len>=sizeof(num_buf))
num_buf_len = sizeof(num_buf)-1;
+ memset(num_buf,0,sizeof(num_buf));
memcpy(num_buf,str_tmp,num_buf_len);
spo2 = atoi(num_buf);
FR8012HAQ_result_set_blood_oxygen(spo2);
FR8012HAQ_LOG("bp:int:");
for(i=0;i<num_buf_len;i+=6)
{
+ memset(num_buf,0,sizeof(num_buf));
memcpy(num_buf,&str_tmp[i],6);
num_buf[6] = 0;
//FR8012HAQ_LOG("num_buf:0x%s\n",num_buf);
num_buf_len = find_c(str_tmp,'\"');
if(num_buf_len>=sizeof(num_buf))
num_buf_len = sizeof(num_buf)-1;
+ memset(num_buf,0,sizeof(num_buf));
memcpy(num_buf,str_tmp,num_buf_len);
temp = atof(num_buf);
}
}
memcpy(HA_req_code,str_tmp,num_buf_len);
}
-
+ /*中医数据*/
+ str_tmp = strstr(UART4_buf,"\"yyl_data\":\"");
+ if(str_tmp)
+ {
+ //unsigned char hrs = 0;
+ str_tmp += strlen("\"yyl_data\":\"");
+ //timestamp
+ num_buf_len = find_c(str_tmp,'/');
+ if(num_buf_len>=sizeof(num_buf))
+ num_buf_len = sizeof(num_buf)-1;
+ memset(num_buf,0,sizeof(num_buf));
+ memcpy(num_buf,str_tmp,num_buf_len);
+ yyl_out_data[yyl_out_data_len].timestamp = atof(num_buf);
+ FR8012HAQ_LOG("yyl_out_data[timestamp]:%d\n",yyl_out_data[yyl_out_data_len].timestamp);
+ str_tmp += num_buf_len+1;
+ //areaUP
+ num_buf_len = find_c(str_tmp,'/');
+ if(num_buf_len>=sizeof(num_buf))
+ num_buf_len = sizeof(num_buf)-1;
+ memset(num_buf,0,sizeof(num_buf));
+ memcpy(num_buf,str_tmp,num_buf_len);
+ yyl_out_data[yyl_out_data_len].areaUP = atof(num_buf);
+ FR8012HAQ_LOG("yyl_out_data[areaUP]:%d\n",yyl_out_data[yyl_out_data_len].areaUP);
+ str_tmp += num_buf_len+1;
+ //areaUPBase
+ num_buf_len = find_c(str_tmp,'/');
+ if(num_buf_len>=sizeof(num_buf))
+ num_buf_len = sizeof(num_buf)-1;
+ memset(num_buf,0,sizeof(num_buf));
+ memcpy(num_buf,str_tmp,num_buf_len);
+ yyl_out_data[yyl_out_data_len].areaUPBase = atof(num_buf);
+ FR8012HAQ_LOG("yyl_out_data[areaUPBase]:%d\n",yyl_out_data[yyl_out_data_len].areaUPBase);
+ str_tmp += num_buf_len+1;
+ //areaUPHeight
+ num_buf_len = find_c(str_tmp,'/');
+ if(num_buf_len>=sizeof(num_buf))
+ num_buf_len = sizeof(num_buf)-1;
+ memset(num_buf,0,sizeof(num_buf));
+ memcpy(num_buf,str_tmp,num_buf_len);
+ yyl_out_data[yyl_out_data_len].areaUPHeight = atof(num_buf);
+ FR8012HAQ_LOG("yyl_out_data[areaUPHeight]:%d\n",yyl_out_data[yyl_out_data_len].areaUPHeight);
+ str_tmp += num_buf_len+1;
+ //areaDOWN
+ num_buf_len = find_c(str_tmp,'/');
+ if(num_buf_len>=sizeof(num_buf))
+ num_buf_len = sizeof(num_buf)-1;
+ memset(num_buf,0,sizeof(num_buf));
+ memcpy(num_buf,str_tmp,num_buf_len);
+ yyl_out_data[yyl_out_data_len].areaDOWN = atof(num_buf);
+ FR8012HAQ_LOG("yyl_out_data[areaDOWN]:%d\n",yyl_out_data[yyl_out_data_len].areaDOWN);
+ str_tmp += num_buf_len+1;
+ //areaDOWNBase
+ num_buf_len = find_c(str_tmp,'/');
+ if(num_buf_len>=sizeof(num_buf))
+ num_buf_len = sizeof(num_buf)-1;
+ memset(num_buf,0,sizeof(num_buf));
+ memcpy(num_buf,str_tmp,num_buf_len);
+ yyl_out_data[yyl_out_data_len].areaDOWNBase = atof(num_buf);
+ FR8012HAQ_LOG("yyl_out_data[areaDOWNBase]:%d\n",yyl_out_data[yyl_out_data_len].areaDOWNBase);
+ str_tmp += num_buf_len+1;
+ //areaDOWNHeight
+ num_buf_len = find_c(str_tmp,'/');
+ if(num_buf_len>=sizeof(num_buf))
+ num_buf_len = sizeof(num_buf)-1;
+ memset(num_buf,0,sizeof(num_buf));
+ memcpy(num_buf,str_tmp,num_buf_len);
+ yyl_out_data[yyl_out_data_len].areaDOWNHeight = atof(num_buf);
+ FR8012HAQ_LOG("yyl_out_data[areaDOWNHeight]:%d\n",yyl_out_data[yyl_out_data_len].areaDOWNHeight);
+ str_tmp += num_buf_len+1;
+ //RRI
+ num_buf_len = find_c(str_tmp,'/');
+ if(num_buf_len>=sizeof(num_buf))
+ num_buf_len = sizeof(num_buf)-1;
+ memset(num_buf,0,sizeof(num_buf));
+ memcpy(num_buf,str_tmp,num_buf_len);
+ yyl_out_data[yyl_out_data_len].RRI = atof(num_buf);
+ FR8012HAQ_LOG("yyl_out_data[RRI]:%d\n",yyl_out_data[yyl_out_data_len].RRI);
+ str_tmp += num_buf_len+1;
+ //motion
+ num_buf_len = find_c(str_tmp,'\"');
+ if(num_buf_len>=sizeof(num_buf))
+ num_buf_len = sizeof(num_buf)-1;
+ memset(num_buf,0,sizeof(num_buf));
+ memcpy(num_buf,str_tmp,num_buf_len);
+ yyl_out_data[yyl_out_data_len].motion = atof(num_buf);
+ FR8012HAQ_LOG("yyl_out_data[motion]:%d\n",yyl_out_data[yyl_out_data_len].motion);
+ str_tmp += num_buf_len+1;
+
+ if(yyl_out_data_len<YYL_OUT_DATA_SIZE-1)
+ yyl_out_data_len++;
+ }
}
if(strstr(UART4_buf,"\"cmd\":\"3\""))
{
/* code */
//uart4_send_data("{\"cmd\":\"2\",\"get_data\":\"hrv\"}",sizeof("{\"cmd\":\"2\",\"get_data\":\"hrv\"}"));
break;
- // case YYL_MODE:
- // /* code */
- // uart4_send_data("{\"cmd\":\"2\",\"get_data\":\"yyl\"}",sizeof("{\"cmd\":\"2\",\"get_data\":\"yyl\"}"));
- // break;
+ case YYL_MODE:
+ /* code */
+ //uart4_send_data("{\"cmd\":\"2\",\"get_data\":\"yyl\"}",sizeof("{\"cmd\":\"2\",\"get_data\":\"yyl\"}"));
+ break;
default:
break;
}
// FR8012HAQ_LOG("Fr8012haq_Init5!!!!\n\n");
// }
//fr8012haq_init(WEAR_MODE);//打开佩戴检测
-
+ // FR8012HAQ_run_mode = YYL_MODE;
+ // fr8012haq_start();
+
}
uint8_t get_fr8012haq_id(void)
void fr8012haq_measure_hr_start(void)
{
sys_pm_wakeup_no_lcd();
-
-
FR8012HAQ_run_mode = HRS_MODE;
FR8012HAQ_LOG("fr8012haq_measure_hr_start :FR8012HAQ_run_mode:%d!!!!!!!!\n",FR8012HAQ_run_mode);
sensor_task_send_message(FR8012HAQ_ID,SENSOR_MSG_START);
FR8012HAQ_LOG("fr8012haq_measure_bp_start :FR8012HAQ_run_mode:%d!!!!!!!!\n",FR8012HAQ_run_mode);
sensor_task_send_message(FR8012HAQ_ID,SENSOR_MSG_START);
}
-
+void fr8012haq_measure_YYL_start(void)
+{
+ sys_pm_wakeup_no_lcd();
+ FR8012HAQ_run_mode = YYL_MODE ;
+ FR8012HAQ_LOG("fr8012haq_measure_bp_start :FR8012HAQ_run_mode:%d!!!!!!!!\n",FR8012HAQ_run_mode);
+ sensor_task_send_message(FR8012HAQ_ID,SENSOR_MSG_START);
+}
void FR8012HAQ_restart(void)
{
fr8012haq_en_gpio_enable(false);
void fr8012haq_measure_stop(void)
{
FR8012HAQ_LOG("fr8012haq_measure_stop !!!!!!!!\n");
- FR8012HAQ_run_mode = close_MODE;
+ FR8012HAQ_run_mode = NULL_MODE;
+ FR8012HAQ_jobs_mode = NULL_MODE;
sensor_task_send_message(FR8012HAQ_ID,SENSOR_MSG_STOP);
}
void FR8012HAQ_close(void)
*len = s_FR8012HAQ_blood_data_len;
return s_FR8012HAQ_blood_data;
}
+//获取云医链中医数据,一分钟产生一个,最多存30个。返回当前存多少个,yyl_data:数据复制缓冲区,必须大于30*sizeof(yylPFE_OutputData)
+//yylPFE_OutputData yyl_out_data
+int fr8012haq_YYL_data_get(yylPFE_OutputData *yyl_data)
+{
+ int len_tmp = yyl_out_data_len;
+ memcpy(yyl_data,yyl_out_data,yyl_out_data_len);
+ yyl_out_data_len = 0;
+ memset(yyl_out_data,0,YYL_OUT_DATA_SIZE*sizeof(yylPFE_OutputData));
+}
void fr8012haq_hr_bp_bo_value_clear(void)
{
s_FR8012HAQ_heart_rate = 0x0;