vc9202_usr_interrupt_handler(SPORT_TYPE_NORMAL,1);
//co_printf("HRS_test2!!!!!!!!\n");
uart0_receive();//串口0接收数据处理
+ irq_flag = 0;
}
}
return send_hrs_data_flag;
// sensor_INT();//唤醒上位机
// co_delay_10us(100*1000);
}
+ irq_flag = 0;
//co_printf("YYL_test2!!\n");
}
}
co_delay_100us(500);
// }
}
+#if 0
void temp_test(void)
{
//co_delay_100us(1000);
}
+#else
+
+void send_temp_data(void)
+{
+ //co_printf("[CHENG]:send_temp_data\r\n");
+ get_tp_data();
+ UART_send_buf_len = snprintf((char *)UART_send_buf,UART_SEND_MAX,"{\"cmd\":\"2\",\"temp_data\":\"");
+ uart0_write_for_hci(UART_send_buf,UART_send_buf_len,NULL, NULL);
+ float shi=0.00,ge=0.00;
+ shi=(temper_data/256)/10;
+ ge=(temper_data/256)%10;
+ uart_putc_noint(UART0,(int)(shi+48)); //0x30
+ uart_putc_noint(UART0,(int)(ge+48));
+ uart_putc_noint(UART0,'.');
+ shi = temper_data;
+ shi = shi/256;
+ shi = (int)(shi*100)%100/10;
+ uart_putc_noint(UART0,(int)shi+48); //0x30
+ ge= temper_data;
+ ge = ge/256;
+ ge = (int)(ge*100)%100%10;
+ uart_putc_noint(UART0,(int)ge+48); //0x30
+ uart0_write_for_hci(uart0_residue_data, 3, NULL, NULL);
+ //co_delay_100us(1000);
+}
+
+char temp_test(void)
+{
+ bool irq_flag=0;
+ while(send_temp_data_flag)
+ {
+ while(gpio_get_pin_value(GPIO_PORT_C, GPIO_BIT_7)==1&&send_temp_data_flag)//等待HR_INT变低
+ {
+ //vcHr02IRQHandler();
+ co_delay_100us(10);
+ uart0_receive();//串口0接收数据处理
+ irq_flag = 1;
+ }
+ while((gpio_get_pin_value(GPIO_PORT_C, GPIO_BIT_7)==0)&&irq_flag&&send_temp_data_flag)//等待HR_INT变高 //高电平获取数据
+ {
+ vc9202_usr_interrupt_handler(SPORT_TYPE_NORMAL,1);
+ uart0_receive();//串口0接收数据处理
+ irq_flag = 0;
+ }
+ }
+ return send_temp_data_flag;
+}
+#endif
+
void gsensor_test(void)
{
//vc9202_usr_interrupt_handler(SPORT_TYPE_NORMAL,1);
}
+
+void temp_open(void)
+{
+ gpio_set_pin_value(GPIO_PORT_A, GPIO_BIT_0, 1); //心率使能
+ gpio_set_pin_value(GPIO_PORT_A, GPIO_BIT_1, 0); //血压使能
+ //pmu_port_wakeup_func_set(GPIO_PC7);//使能心率中断
+ pInit_Param.work_mode = WORK_MODE_WEAR; // WORK_MODE_TEMPERATURE;
+ vc9202_usr_init(&pInit_Param);
+ send_temp_data_flag = 1;
+ //co_printf("[CHENG]:temp_open\r\n");
+}
+
void wear_open(void)//佩戴
{
wear_test();
// /////////////////////工厂模式/////////////////////////////
factory_test();
+
+ temp_test();
}
//if(BP_IRQ_FLAG == 1)
{
void HRS_open(void);//心率
void SPO2_open(void);//血氧
void wear_open(void);//佩戴
+void temp_open(void);
void sensor_close(void);
void gsensor_init(void);
char BP_test(void);
void YYL_test_timer(void);
char EMO_test(void);
void get_tp_data(void);
-void temp_test(void);
+//void temp_test(void);
+void send_temp_data(void);
void gsensor_test(void);
void VC9202_init(void);
void HA_lib_init(void);
if ((event & VC9202_EVENT_PS_MARK) && (en_int & (1 << 4)))
{
wear_interrupt = 1;
+ //co_printf("[10]:000000\r\n");
}
/* 未使能PsInt下,ps_ppg同频通过fifo中断去识别摘配带 */
if (event & VC9202_EVENT_FIFO_MARK)
{
wear_interrupt = 1;
+ //co_printf("[11]:111111\r\n");
}
+ //co_printf("[12]:222222=%d\r\n", event);
+
+ /* WORK_MODE_HRV 100HZ, wear off status check error */
+ if (WORK_MODE_HRV == dev9202_info.work_mode)
+ {
+ static unsigned char wear_int_counter = 0;
+ if(0 == wear_interrupt)
+ {
+ wear_int_counter++;
+ //co_printf("[13]:333333=%d\r\n", wear_int_counter);
+ }
+ else
+ {
+ wear_int_counter = 0;
+ //co_printf("[14]:444444=%d\r\n", wear_int_counter);
+ }
+ if(10 <= wear_int_counter)
+ {
+ wear_interrupt = 1;
+ wear_int_counter = 0;
+ //co_printf("[15]:555555=%d\r\n", wear_int_counter);
+ }
+ }
+ /* WORK_MODE_HRV 100HZ, wear off status check error */
+
#endif
/* 非心率模式,就算使能了运动量,也没有去做处理,直接置1忽略 */
if (dev9202_info.work_mode != WORK_MODE_HR && dev9202_info.work_mode != WORK_MODE_WEAR)
break;
case WORK_MODE_HRV:
- if( vc9202_usr_get_int_reason()&(VC9202_EVENT_PS_MARK|VC9202_EVENT_FIFO_MARK) )
+ /* WORK_MODE_HRV 100HZ, wear off status check error */
+ // if( vc9202_usr_get_int_reason()&(VC9202_EVENT_PS_MARK|VC9202_EVENT_FIFO_MARK) )
+ /* WORK_MODE_HRV 100HZ, wear off status check error */
{
//co_printf("WORK_MODE_HRV0\n");
vc9202_alg_results.wear_status = vc9202_usr_get_wear_status();
- //co_printf("WORK_MODE_HRV:wear_status: %d\r\n",vc9202_alg_results.wear_status);
- get_gsensor_data(&gsensor_data, &gsensor_size, ppg_size);
- //co_printf("WORK_MODE_HRV1\n");
- yylPFE_InputData_t yyl_in_data = {0};
if(vc9202_alg_results.wear_status )
{
+ yylPFE_InputData_t yyl_in_data = {0};
+ get_gsensor_data(&gsensor_data, &gsensor_size, ppg_size);
//co_printf("WORK_MODE_HRV2\n");
vc9202_alg_results.hr_rate = alg_calculate_hrv_handler( vc9202_alg_results.hr_rate, &data, ppg_size, &gsensor_data, hr_alg_mode );
if(yyl_in_data_len< 3000-1 && ppg_size != 0)
else if(strstr((char *)uart0_rivce_data,"\"temp\""))//:"temp"}//temp:温度模式
{
uart0_write_for_hci("{\"cmd\":\"1\",\"work_mode\":\"1\"}\r\n", sizeof("{\"cmd\":\"1\",\"work_mode\":\"1\"}\r\n")-1, NULL, NULL);
- send_temp_data_flag=1;
+ temp_open();
}else if(strstr((char *)uart0_rivce_data,"\"factory\""))//:"factory"}//factory:工厂模式
{
uart0_write_for_hci("{\"cmd\":\"1\",\"work_mode\":\"1\"}\r\n", sizeof("{\"cmd\":\"1\",\"work_mode\":\"1\"}\r\n")-1, NULL, NULL);
}
if(strstr((char *)uart0_rivce_data,"\"get_data\":\"temp\""))//:"temp"}//temp:获取当前温度数值
{
- temp_test();
+ //temp_test();
+ send_temp_data();
}
if(strstr((char *)uart0_rivce_data,"\"get_data\":\"is_HA_activate\""))//:获取恒爱库是否激活状态
{
co_printf("HA_req_code:HA_req_code:%s \n",sys_config.HA_req_code);
save_sys_config();//保存配置
}
+ //co_printf("[CHENG]:send_wear_status=%d\r\n", vc9202_alg_results.wear_status);
UART_send_buf_len = snprintf((char *)UART_send_buf,UART_SEND_MAX,"{\"cmd\":\"2\",\"wear_data\":\"%d\"}\n",vc9202_alg_results.wear_status);
uart0_write_for_hci(UART_send_buf,UART_send_buf_len,NULL, NULL);
// memset(UART_send_buf,0,UART_SEND_MAX);