unsigned char HA_req_code[128+1] = {0};
char fr8012haq_agc_timerout_flag = 0;
static void * fr8012haq_agc_timer = NULL;
+int factory_apre_val[2];
+int factory_aps_val;
/************************simware add start***********************************/
/************************simware add start***********************************/
static uint32_t fr8012haq_mfp_cfgs[] = {
gpio_set_value(GPIO18, GPIO_HIGH);
gpio_set_value(GPIO81, GPIO_HIGH);
gpio_set_value(GPIO84, GPIO_LOW);
- gpio_set_value(GPIO16, GPIO_HIGH);
- //gpio_set_value(GPIO7, GPIO_LOW);
+ gpio_set_value(GPIO16, GPIO_HIGH);//vbat ldo
+ //gpio_set_value(GPIO16, GPIO_LOW);
+
// while(1)
// {
// UOS_SleepMs(1000);
// FR8012HAQ_LOG("fr8012haq_en_gpio_enable2!!!!\n\n");
// }
} else {
+ gpio_set_value(GPIO16, GPIO_LOW);
gpio_set_value(GPIO18, GPIO_LOW);
gpio_set_value(GPIO81, GPIO_LOW);
//gpio_set_value(GPIO7, GPIO_LOW);
}else if(FR8012HAQ_run_mode == BP_MODE)//血压150MS
{
FR8012HAQ_LOG("fr8012haq_timer_cfg:BP_MODE!!!!!\n");
- uos_timer_start(fr8012haq_timer, MS_TO_TICKS(150), MS_TO_TICKS(150), fr8012haq_timerout_cb, NULL);
- }else if(FR8012HAQ_run_mode == YYL_MODE)//中医30秒
+ uos_timer_start(fr8012haq_timer, MS_TO_TICKS(1000), MS_TO_TICKS(1000), fr8012haq_timerout_cb, NULL);
+ }else if(FR8012HAQ_run_mode == YYL_MODE)//中医10秒
{
uos_timer_start(fr8012haq_timer, MS_TO_TICKS(10000), MS_TO_TICKS(10000), fr8012haq_timerout_cb, NULL);
}else//其他1秒
switch (mode)
{
- case HRS_MODE:
- /* code */
- uart4_send_data("{\"cmd\":\"1\",\"work_mode\":\"hrs\"}",sizeof("{\"cmd\":\"1\",\"work_mode\":\"hrs\"}"));
- break;
- case SPO2_MODE:
- /* code */
- uart4_send_data("{\"cmd\":\"1\",\"work_mode\":\"spo2\"}",sizeof("{\"cmd\":\"1\",\"work_mode\":\"spo2\"}"));
- break;
- case BP_MODE:
- /* code */
- if(s_FR8012HAQ_blood_data ==NULL)
- {
- s_FR8012HAQ_blood_data = malloc(s_FR8012HAQ_blood_data_mxa_len);
- memset(s_FR8012HAQ_blood_data,0,s_FR8012HAQ_blood_data_mxa_len);
- }
- s_FR8012HAQ_blood_data_len =0;
+ case HRS_MODE:
+ /* code */
+ uart4_send_data("{\"cmd\":\"1\",\"work_mode\":\"hrs\"}",sizeof("{\"cmd\":\"1\",\"work_mode\":\"hrs\"}"));
+ break;
+ case SPO2_MODE:
+ /* code */
+ uart4_send_data("{\"cmd\":\"1\",\"work_mode\":\"spo2\"}",sizeof("{\"cmd\":\"1\",\"work_mode\":\"spo2\"}"));
+ break;
+ case BP_MODE:
+ /* code */
+ if(s_FR8012HAQ_blood_data ==NULL)
+ {
+ s_FR8012HAQ_blood_data = malloc(s_FR8012HAQ_blood_data_mxa_len);
+ memset(s_FR8012HAQ_blood_data,0,s_FR8012HAQ_blood_data_mxa_len);
+ }
+ s_FR8012HAQ_blood_data_len =0;
- uart4_send_data("{\"cmd\":\"1\",\"work_mode\":\"bp\"}",sizeof("{\"cmd\":\"1\",\"work_mode\":\"bp\"}"));
- break;
- case EMO_MODE:
- /* code */
- if(s_FR8012HAQ_emo_data ==NULL)
- {
- s_FR8012HAQ_emo_data = malloc(s_FR8012HAQ_emo_data_mxa_len);
- memset(s_FR8012HAQ_emo_data,0,s_FR8012HAQ_emo_data_mxa_len);
- }
- s_FR8012HAQ_emo_data_len =0;
+ uart4_send_data("{\"cmd\":\"1\",\"work_mode\":\"bp\"}",sizeof("{\"cmd\":\"1\",\"work_mode\":\"bp\"}"));
+ break;
+ case EMO_MODE:
+ /* code */
+ if(s_FR8012HAQ_emo_data ==NULL)
+ {
+ s_FR8012HAQ_emo_data = malloc(s_FR8012HAQ_emo_data_mxa_len);
+ memset(s_FR8012HAQ_emo_data,0,s_FR8012HAQ_emo_data_mxa_len);
+ }
+ s_FR8012HAQ_emo_data_len =0;
- uart4_send_data("{\"cmd\":\"1\",\"work_mode\":\"emo\"}",sizeof("{\"cmd\":\"1\",\"work_mode\":\"emo\"}"));
- break;
- case TEMP_MODE:
- /* code */
-
+ uart4_send_data("{\"cmd\":\"1\",\"work_mode\":\"emo\"}",sizeof("{\"cmd\":\"1\",\"work_mode\":\"emo\"}"));
+ break;
+ case FACTORY_MODE:
+ uart4_send_data("{\"cmd\":\"1\",\"work_mode\":\"factory\"}",sizeof("{\"cmd\":\"1\",\"work_mode\":\"factory\"}"));
+ break;
+ case TEMP_MODE:
+ /* code */
+
- uart4_send_data("{\"cmd\":\"1\",\"work_mode\":\"temp\"}",sizeof("{\"cmd\":\"1\",\"work_mode\":\"temp\"}"));
- break;
-
- case WEAR_MODE:
- /* code */
- uart4_send_data("{\"cmd\":\"1\",\"work_mode\":\"wear\"}",sizeof("{\"cmd\":\"1\",\"work_mode\":\"wear\"}"));
- break;
- case HRV_MODE:
- /* 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;
- default:
- break;
+ uart4_send_data("{\"cmd\":\"1\",\"work_mode\":\"temp\"}",sizeof("{\"cmd\":\"1\",\"work_mode\":\"temp\"}"));
+ break;
+
+ case WEAR_MODE:
+ /* code */
+ uart4_send_data("{\"cmd\":\"1\",\"work_mode\":\"wear\"}",sizeof("{\"cmd\":\"1\",\"work_mode\":\"wear\"}"));
+ break;
+ case HRV_MODE:
+ /* 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;
+ default:
+ break;
}
}
if(fr8012haq_parse_returned_data(100) == 1)//必须解析到执行成功
//读取并解析返回数据
#define DATA_HANDLE (1<<24)
#define UART4_BUF_LEN 4*1024
-
+#define my_str_print_on 1
void my_str_print(char *data,int len)
{
+#if my_str_print_on
for(int i = 0;i<len;i++)
FR8012HAQ_LOG("%c",data[i]);
+#endif
}
int fr8012haq_parse_returned_data(int timeout)
{
static char *UART4_buf = NULL;
char *str_tmp = NULL;
+ char *cmd_str_tmp = NULL;
char num_buf[20] = {0};
unsigned int num_buf_len = 0;
int i = 0,ret = -1;
unsigned int len;
+ unsigned char count = 0 ;
if(NULL == UART4_buf)
UART4_buf = malloc(UART4_BUF_LEN);
if(UART4_buf == NULL)
{
// FR8012HAQ_LOG("UART4:len:%d str:%s",len,UART4_buf);
// FR8012HAQ_LOG("%s\n", (char *)UART4_buf+110);
+
int print_len_tmp = len ;
FR8012HAQ_LOG("UART4:len:%d ",len);
my_str_print(UART4_buf,len);//打印
FR8012HAQ_LOG("\n\n");
-
- if(strstr(UART4_buf,"\"cmd\":\"2\""))
+ cmd_str_tmp = UART4_buf;
+ while(1)
{
- ret = 2;
- /*心率*/
- str_tmp = strstr(UART4_buf,"\"hrs_data\":\"");
- if(str_tmp)
- {
- unsigned char hrs = 0;
- str_tmp += strlen("\"hrs_data\":\"");
- 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);
- }
- /*血氧*/
- str_tmp = strstr(UART4_buf,"\"spo2_data\":\"");
- if(str_tmp)
- {
- unsigned char spo2 = 0;
- str_tmp += strlen("\"spo2_data\":\"");
- 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);
- }
- /*血压*/
- str_tmp = strstr(UART4_buf,"\"bp_data\":\"");
- if(str_tmp)
+ count++;
+ if(count >30)
+ break;
+ cmd_str_tmp = strstr(cmd_str_tmp,"{\"");
+ if(cmd_str_tmp)
{
- str_tmp += strlen("\"bp_data\":\"");
- num_buf_len = find_c(str_tmp,'\"');
- FR8012HAQ_LOG("bp:hex_str:%s\n",str_tmp);
- FR8012HAQ_LOG("bp:int:");
- for(i=0;i<num_buf_len;i+=6)
+ if(strstr(cmd_str_tmp,"\"cmd\":\"2\""))
{
- 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);
- if(s_FR8012HAQ_blood_data && s_FR8012HAQ_blood_data_len < s_FR8012HAQ_blood_data_mxa_len/4)
+ ret = 2;
+ /*心率*/
+ str_tmp = strstr(cmd_str_tmp,"\"hrs_data\":\"");
+ if(str_tmp)
+ {
+ unsigned char hrs = 0;
+ str_tmp += strlen("\"hrs_data\":\"");
+ 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);
+ }
+ /*血氧*/
+ str_tmp = strstr(cmd_str_tmp,"\"spo2_data\":\"");
+ if(str_tmp)
+ {
+ unsigned char spo2 = 0;
+ str_tmp += strlen("\"spo2_data\":\"");
+ 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);
+ }
+ /*工厂模式*/
+ str_tmp = strstr(cmd_str_tmp,"\"factory_data\":\"");
+ if(str_tmp)
+ {
+ str_tmp += strlen("\"factory_data\":\"");
+ 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);
+ factory_apre_val[0] = atoi(num_buf);
+
+ str_tmp += num_buf_len+1;
+ 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);
+ factory_apre_val[1] = atoi(num_buf);
+
+ str_tmp += num_buf_len+1;
+ 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);
+ factory_aps_val = atoi(num_buf);
+ }
+ /*血压*/
+ str_tmp = strstr(cmd_str_tmp,"\"bp_data\":\"");
+ if(str_tmp)
+ {
+ //FR8012HAQ_LOG("bp:str_tmp:%s\n",str_tmp);
+ str_tmp += strlen("\"bp_data\":\"");
+ num_buf_len = find_c(str_tmp,'\"');
+ printf("bp:hex_str:%s\n",str_tmp);
+ 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);
+ if(s_FR8012HAQ_blood_data && s_FR8012HAQ_blood_data_len < s_FR8012HAQ_blood_data_mxa_len/4)
+ {
+ s_FR8012HAQ_blood_data[s_FR8012HAQ_blood_data_len] = strtol(num_buf, NULL, 16);
+ if(s_FR8012HAQ_blood_data[s_FR8012HAQ_blood_data_len]>=DATA_HANDLE/2)
+ {
+ s_FR8012HAQ_blood_data[s_FR8012HAQ_blood_data_len]-=DATA_HANDLE;
+ }
+ FR8012HAQ_LOG("%d ",s_FR8012HAQ_blood_data[s_FR8012HAQ_blood_data_len]);
+ //FR8012HAQ_LOG("s_FR8012HAQ_blood_data[%d]:%x\n",s_FR8012HAQ_blood_data_len,s_FR8012HAQ_blood_data[s_FR8012HAQ_blood_data_len]);
+ s_FR8012HAQ_blood_data_len++;
+ }
+ }
+ FR8012HAQ_LOG("\n");
+ printf("fr8012haq_parse_returned_data:bp_data:%d\n",s_FR8012HAQ_blood_data_len);
+ }
+ /*情绪*/
+ str_tmp = strstr(cmd_str_tmp,"\"emo_data\":[");
+ if(str_tmp)
{
- s_FR8012HAQ_blood_data[s_FR8012HAQ_blood_data_len] = strtol(num_buf, NULL, 16);
- if(s_FR8012HAQ_blood_data[s_FR8012HAQ_blood_data_len]>=DATA_HANDLE/2)
+ str_tmp += strlen("\"emo_data\":[");
+ char *emo_str_tmp = strstr(str_tmp,"]]");
+ num_buf_len = emo_str_tmp+1-str_tmp;
+ FR8012HAQ_LOG("emo_data:num_buf_len:%d\n",num_buf_len);
+ if(s_FR8012HAQ_emo_data_len+num_buf_len+1 < s_FR8012HAQ_emo_data_mxa_len)
{
- s_FR8012HAQ_blood_data[s_FR8012HAQ_blood_data_len]-=DATA_HANDLE;
+ if(s_FR8012HAQ_emo_data_len != 0)//加逗号
+ {
+ s_FR8012HAQ_emo_data[s_FR8012HAQ_emo_data_len] = ',';
+ s_FR8012HAQ_emo_data_len++;
+ }
+ memcpy(&s_FR8012HAQ_emo_data[s_FR8012HAQ_emo_data_len],str_tmp,num_buf_len);
+ FR8012HAQ_LOG("emo_data one:%s\n",&s_FR8012HAQ_emo_data[s_FR8012HAQ_emo_data_len]);
+ s_FR8012HAQ_emo_data_len+=num_buf_len;
}
- FR8012HAQ_LOG("%d ",s_FR8012HAQ_blood_data[s_FR8012HAQ_blood_data_len]);
- //FR8012HAQ_LOG("s_FR8012HAQ_blood_data[%d]:%x\n",s_FR8012HAQ_blood_data_len,s_FR8012HAQ_blood_data[s_FR8012HAQ_blood_data_len]);
- s_FR8012HAQ_blood_data_len++;
+
+ FR8012HAQ_LOG("emo_data!!!:%s",s_FR8012HAQ_emo_data);
+ FR8012HAQ_LOG("%s",(char *)s_FR8012HAQ_emo_data+255-12);
+ FR8012HAQ_LOG("%s",s_FR8012HAQ_emo_data+255+255-12);
+ FR8012HAQ_LOG("\n");
+ FR8012HAQ_LOG("emo_data:len:%d\n",s_FR8012HAQ_emo_data_len);
+
}
- }
- FR8012HAQ_LOG("\n");
- }
- /*情绪*/
- str_tmp = strstr(UART4_buf,"\"emo_data\":[");
- if(str_tmp)
- {
- str_tmp += strlen("\"emo_data\":[");
- char *emo_str_tmp = strstr(str_tmp,"]]");
- num_buf_len = emo_str_tmp+1-str_tmp;
- FR8012HAQ_LOG("emo_data:num_buf_len:%d\n",num_buf_len);
- if(s_FR8012HAQ_emo_data_len+num_buf_len+1 < s_FR8012HAQ_emo_data_mxa_len)
- {
- if(s_FR8012HAQ_emo_data_len != 0)//加逗号
+ /*体温*/
+ str_tmp = strstr(cmd_str_tmp,"\"temp_data\":\"");
+ if(str_tmp)
{
- s_FR8012HAQ_emo_data[s_FR8012HAQ_emo_data_len] = ',';
- s_FR8012HAQ_emo_data_len++;
+
+ //unsigned char hrs = 0;
+ str_tmp += strlen("\"temp_data\":\"");
+ 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);
+ //FR8012HAQ_LOG("temp:str_tmp:%s\n",str_tmp);
+ FR8012HAQ_LOG("temp:%f\n",temp);
}
- memcpy(&s_FR8012HAQ_emo_data[s_FR8012HAQ_emo_data_len],str_tmp,num_buf_len);
- FR8012HAQ_LOG("emo_data one:%s\n",&s_FR8012HAQ_emo_data[s_FR8012HAQ_emo_data_len]);
- s_FR8012HAQ_emo_data_len+=num_buf_len;
- }
+ /*佩戴*/
+ str_tmp = strstr(cmd_str_tmp,"\"wear_data\":\"");
+ if(str_tmp)
+ {
+ //unsigned char hrs = 0;
+ str_tmp += strlen("\"wear_data\":\"");
+ if(*str_tmp == '0')
+ {
+ FR8012HAQ_result_set_wear_status(0);
+ }else
+ {
+ FR8012HAQ_result_set_wear_status(1);
+ }
+ }
+ /*恒爱算法库是否激活*/
+ str_tmp = strstr(cmd_str_tmp,"\"is_HA_activate\":\"");
+ if(str_tmp)
+ {
+ //unsigned char hrs = 0;
+ str_tmp += strlen("\"is_HA_activate\":\"");
+ if(*str_tmp == '1')
+ is_HA_activate = 1;
+ else
+ is_HA_activate = 0;
+ }
+ /*恒爱算法库请求码返回*/
+ str_tmp = strstr(cmd_str_tmp,"\"HA_req_code\":\"");
+ if(str_tmp)
+ {
+ //unsigned char hrs = 0;
+ memset(HA_req_code,0,sizeof(HA_req_code));
+ str_tmp += strlen("\"HA_req_code\":\"");
+ num_buf_len = find_c(str_tmp,'\"');
+ if(num_buf_len >= sizeof(HA_req_code))
+ {
+ num_buf_len = sizeof(HA_req_code)-1;
+ }
+ memcpy(HA_req_code,str_tmp,num_buf_len);
+ }
+ /*中医数据*/
+ str_tmp = strstr(cmd_str_tmp,"\"yyl_data\":\"");
+ if(str_tmp && s_FR8012HAQ_yyl_data_len < s_FR8012HAQ_yyl_data_mxa_len)
+ {
+ //unsigned char hrs = 0;
+ str_tmp += strlen("\"yyl_data\":\"");
+ FR8012HAQ_LOG("yyl_data1:!!!\n");
+ unsigned int yyl_data_len = 0;
+ yyl_data_len = find_c(str_tmp,'\"');
+ FR8012HAQ_LOG("yyl_data1.0.0:!!!\n");
+ if(s_FR8012HAQ_yyl_data!= NULL && s_FR8012HAQ_yyl_data_len ==0)//统一线程释放,避免上层应用释放导致dump
+ {
+ FR8012HAQ_LOG("yyl_data1.0:!!!\n");
+ free(s_FR8012HAQ_yyl_data);
+ s_FR8012HAQ_yyl_data = NULL;
+ }
+
+ if(s_FR8012HAQ_yyl_data == NULL)//第一次用
+ {
+ FR8012HAQ_LOG("yyl_data1.1:!!!\n");
+ s_FR8012HAQ_yyl_data = malloc(yyl_data_len);
+ s_FR8012HAQ_yyl_data_len = 0;
- FR8012HAQ_LOG("emo_data!!!:%s",s_FR8012HAQ_emo_data);
- FR8012HAQ_LOG("%s",(char *)s_FR8012HAQ_emo_data+255-12);
- FR8012HAQ_LOG("%s",s_FR8012HAQ_emo_data+255+255-12);
- FR8012HAQ_LOG("\n");
- FR8012HAQ_LOG("emo_data:len:%d\n",s_FR8012HAQ_emo_data_len);
-
- }
- /*体温*/
- str_tmp = strstr(UART4_buf,"\"temp_data\":\"");
- if(str_tmp)
- {
-
- //unsigned char hrs = 0;
- str_tmp += strlen("\"temp_data\":\"");
- 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);
- //FR8012HAQ_LOG("temp:str_tmp:%s\n",str_tmp);
- FR8012HAQ_LOG("temp:%f\n",temp);
- }
- /*佩戴*/
- str_tmp = strstr(UART4_buf,"\"wear_data\":\"");
- if(str_tmp)
- {
- //unsigned char hrs = 0;
- str_tmp += strlen("\"wear_data\":\"");
- if(*str_tmp == '0')
- {
- FR8012HAQ_result_set_wear_status(0);
- }else
- {
- FR8012HAQ_result_set_wear_status(1);
- }
- }
- /*恒爱算法库是否激活*/
- str_tmp = strstr(UART4_buf,"\"is_HA_activate\":\"");
- if(str_tmp)
- {
- //unsigned char hrs = 0;
- str_tmp += strlen("\"is_HA_activate\":\"");
- if(*str_tmp == '1')
- is_HA_activate = 1;
- else
- is_HA_activate = 0;
- }
- /*恒爱算法库请求码返回*/
- str_tmp = strstr(UART4_buf,"\"HA_req_code\":\"");
- if(str_tmp)
- {
- //unsigned char hrs = 0;
- memset(HA_req_code,0,sizeof(HA_req_code));
- str_tmp += strlen("\"HA_req_code\":\"");
- num_buf_len = find_c(str_tmp,'\"');
- if(num_buf_len >= sizeof(HA_req_code))
- {
- num_buf_len = sizeof(HA_req_code)-1;
- }
- memcpy(HA_req_code,str_tmp,num_buf_len);
- }
- /*中医数据*/
- str_tmp = strstr(UART4_buf,"\"yyl_data\":\"");
- if(str_tmp && s_FR8012HAQ_yyl_data_len < s_FR8012HAQ_yyl_data_mxa_len)
- {
- //unsigned char hrs = 0;
- str_tmp += strlen("\"yyl_data\":\"");
- FR8012HAQ_LOG("yyl_data1:!!!\n");
- unsigned int yyl_data_len = 0;
- yyl_data_len = find_c(str_tmp,'\"');
- FR8012HAQ_LOG("yyl_data1.0.0:!!!\n");
- if(s_FR8012HAQ_yyl_data!= NULL && s_FR8012HAQ_yyl_data_len ==0)//统一线程释放,避免上层应用释放导致dump
- {
- FR8012HAQ_LOG("yyl_data1.0:!!!\n");
- free(s_FR8012HAQ_yyl_data);
- s_FR8012HAQ_yyl_data = NULL;
- }
-
- if(s_FR8012HAQ_yyl_data == NULL)//第一次用
- {
- FR8012HAQ_LOG("yyl_data1.1:!!!\n");
- s_FR8012HAQ_yyl_data = malloc(yyl_data_len);
- s_FR8012HAQ_yyl_data_len = 0;
+ }else
+ {
+ FR8012HAQ_LOG("yyl_data1.3:!!!\n");
+ char *s_FR8012HAQ_yyl_data_tmp = malloc(yyl_data_len+s_FR8012HAQ_yyl_data_len);
+ memcpy(s_FR8012HAQ_yyl_data_tmp,s_FR8012HAQ_yyl_data,s_FR8012HAQ_yyl_data_len);
+ free(s_FR8012HAQ_yyl_data);
+ s_FR8012HAQ_yyl_data = s_FR8012HAQ_yyl_data_tmp;
- }else
- {
- FR8012HAQ_LOG("yyl_data1.3:!!!\n");
- char *s_FR8012HAQ_yyl_data_tmp = malloc(yyl_data_len+s_FR8012HAQ_yyl_data_len);
- memcpy(s_FR8012HAQ_yyl_data_tmp,s_FR8012HAQ_yyl_data,s_FR8012HAQ_yyl_data_len);
- free(s_FR8012HAQ_yyl_data);
- s_FR8012HAQ_yyl_data = s_FR8012HAQ_yyl_data_tmp;
+ }
+ if(s_FR8012HAQ_yyl_data)//复制数据
+ {
+ FR8012HAQ_LOG("yyl_data1.4:!!!\n");
+ memcpy(&s_FR8012HAQ_yyl_data[s_FR8012HAQ_yyl_data_len],str_tmp,yyl_data_len);
+ s_FR8012HAQ_yyl_data_len+=yyl_data_len;
+
+ }
+ FR8012HAQ_LOG("yyl_data2:len:%d\n",s_FR8012HAQ_yyl_data_len);
+ FR8012HAQ_LOG("yyl_data2:len:%d\n",s_FR8012HAQ_yyl_data_len);
+ FR8012HAQ_LOG("yyl_data3:");
+ my_str_print(s_FR8012HAQ_yyl_data,s_FR8012HAQ_yyl_data_len);//打印
+ FR8012HAQ_LOG("\n\n");
+
+ }
+ }
+ if(strstr(cmd_str_tmp,"\"cmd\":\"3\""))
+ {
+ ret = 3;
+ if(strstr(cmd_str_tmp,"\"HA_activate\":\"1\""))
+ {
+ ret = 3;
+ }
+ if(strstr(cmd_str_tmp,"\"HA_activate\":\"0\""))
+ {
+ ret = -3;
+ }
}
- if(s_FR8012HAQ_yyl_data)//复制数据
+ /*********************************************/
+ /*执行工作模式成功*/
+ str_tmp = strstr(cmd_str_tmp,"\"cmd\":\"1\",\"work_mode\":\"1\"");
+ if(str_tmp)
{
- FR8012HAQ_LOG("yyl_data1.4:!!!\n");
- memcpy(&s_FR8012HAQ_yyl_data[s_FR8012HAQ_yyl_data_len],str_tmp,yyl_data_len);
- s_FR8012HAQ_yyl_data_len+=yyl_data_len;
-
+ ret = 1;
}
- FR8012HAQ_LOG("yyl_data2:len:%d\n",s_FR8012HAQ_yyl_data_len);
- FR8012HAQ_LOG("yyl_data3:");
- my_str_print(s_FR8012HAQ_yyl_data,s_FR8012HAQ_yyl_data_len);//打印
- FR8012HAQ_LOG("\n\n");
-
- }
- }
- if(strstr(UART4_buf,"\"cmd\":\"3\""))
- {
- ret = 3;
- if(strstr(UART4_buf,"\"HA_activate\":\"1\""))
- {
- ret = 3;
- }
- if(strstr(UART4_buf,"\"HA_activate\":\"0\""))
+ }else
{
- ret = -3;
+ break;
}
- }
- /*********************************************/
- /*执行工作模式成功*/
- str_tmp = strstr(UART4_buf,"\"cmd\":\"1\",\"work_mode\":\"1\"");
- if(str_tmp)
- {
- ret = 1;
+ cmd_str_tmp += strlen("{\"");
}
}
// float tmp = 0x3FE2E147;
// FR8012HAQ_LOG("float:%f\n",tmp);
fr8012haq_parse_returned_data(60);
-
+ uart4_send_data("{\"cmd\":\"0\"}",sizeof("{\"cmd\":\"0\"}"));//保活用
}
//返回是否激活返回0未激活,联网后判断一次是否激活,没激活需要执行激活参数
char get_is_HA_activate(void)
FR8012HAQ_LOG("fr8012haq_measure_YYL_start :FR8012HAQ_run_mode:%d!!!!!!!!\n",FR8012HAQ_run_mode);
sensor_task_send_message(FR8012HAQ_ID,SENSOR_MSG_START);
}
+void fr8012haq_measure_factory_start(void)
+{
+ sys_pm_wakeup_no_lcd();
+ FR8012HAQ_run_mode = FACTORY_MODE;
+ FR8012HAQ_LOG("fr8012haq_measure_factory_start :FR8012HAQ_run_mode:%d!!!!!!!!\n",FR8012HAQ_run_mode);
+ sensor_task_send_message(FR8012HAQ_ID,SENSOR_MSG_START);
+}
void fr8012haq_measure_temp_start(void)
{
sys_pm_wakeup_no_lcd();
if(bo != NULL)
*bo = s_FR8012HAQ_blood_oxygen;
}
+//获取工厂模式数据,
+void fr8012haq_factory_data_get(int *apre_val0,int *apre_val1,int *aps_val)
+{
+ *apre_val0 = factory_apre_val[0];
+ *apre_val1 = factory_apre_val[1];
+ *aps_val = factory_aps_val;
+
+ FR8012HAQ_LOG("fr8012haq_factory_data_get apre_val0:%d,apre_val1%d,aps_cal:%d\n",*apre_val0,*apre_val1,*aps_val);
+ return s_FR8012HAQ_yyl_data;
+}
//获取1分钟血压数据,总共81*60个int数组,返回数据数组,len:长度返回,当长度等于81*60时表示存够数据
int *fr8012haq_blood_data_get(int *len)
{
//memcpy(blood_buf,s_FR8012HAQ_blood_data,sizeof(s_FR8012HAQ_blood_data));
*len = s_FR8012HAQ_blood_data_len;
+ printf("fr8012haq_parse_returned_data:bp_data:%d",s_FR8012HAQ_blood_data_len);
return s_FR8012HAQ_blood_data;
}
//获取1分钟情绪数据,返回数据数组,已封装好string,可当参数返回给服务器,len:长度返回