#include "gatt_api.h"
#include "os_timer.h"
#include "os_mem.h"
+#include "os_task.h"
#include "sys_utils.h"
#include "button.h"
#include "jump_table.h"
}
-os_timer_t m_task_main_5ms_timer;//
-void main_data_treating(void *arg)
-{
- uart0_receive();//串口0接收数据处理
- /////////////////////血压测量/////////////////////////////
- BP_test();
- // /////////////////////心率测量/////////////////////////////
- HRS_test();
- // /////////////////////心率变异性测量/////////////////////////////
- // HRV_test();
- // /////////////////////血氧测量/////////////////////////////
- SPO2_test();
- // /////////////////////中医测量/////////////////////////////
- // YYL_test();
- // //////////////////////情绪测量//////////////////////////////////
- // EMO_test();
-}
+
+
+
///////main函数/////////////////////////////////////////////////
void user_entry_after_ble_init(void)
{
co_printf("\r\n\r\n--------init_sys_config--------\r\n\r\n");
//system_set_tx_power(RF_TX_POWER_POS_10dBm); //设置发射功率为10DB
system_sleep_disable(); //关睡眠
- simple_peripheral_init();
- //HR_EN = PA0 //心率使能,
- //BP_EN = PA1 //血压使能,
- //HR_BP_SCL0 = PA4 //心率血压IIC
- //HR_BP_SDA0 = PA5 //心率血压IIC
- //G_TE_SCL1 = PA6 //三轴地磁传感器 IIC
- //G_TE_SDA1 = PA7 //三轴地磁传感器 IIC
- //UART1_TXD = PC5 //4G通讯
- //UART1_RXD = PC6 //4G通讯
- //HR_INT = PC7 //心率中断
- //G_EINT = PD4 // 三轴地磁传感器中断
- //BP_INT = PD5 //血压中断
- //4G_INT0 = PD6 //4G中断0
- //4G_INT1 = PD7 //4G中断1
-
+ simple_peripheral_init();//蓝牙初始化
//rtc_timer_arm(RTC_B,150); //RTC_B, 150us
init_sys_config();
co_printf("\r\n\r\n--------system start end--------\r\n\r\n");
- pmu_set_aldo_voltage(PMU_ALDO_MODE_NORMAL,PMU_ALDO_VOL_3_3); //设置内部LDO输出电压
-
- //
- // pmu_set_pin_pull(GPIO_PORT_C,BIT(7),true);//上拉//心率中断
- // pmu_set_pin_pull(GPIO_PORT_D,BIT(4),true);//上拉// 三轴地磁传感器中断
- // pmu_set_pin_pull(GPIO_PORT_D,BIT(5),true);//上拉//血压中断
- // pmu_set_pin_pull(GPIO_PORT_D,BIT(6),true);//上拉 //4G中断0
- // pmu_set_pin_pull(GPIO_PORT_D,BIT(7),true);//上拉 //4G中断1
- // pmu_port_wakeup_func_set(GPIO_PC7|GPIO_PD4|GPIO_PD5|GPIO_PD6|GPIO_PD7);//GPIO中断
- // NVIC_EnableIRQ(PMU_IRQn);
+
// bool hr_out_flag;
- VC9202_init();
-
- HA_lib_init();
mac_addr_t MAC_T = {0};
- get_tp_data();
- gsensor_init();//gsensor初始化
gap_address_get(&MAC_T);
co_printf("MAC: %X:%X:%X:%X:%X:%X\n",MAC_T.addr[0],MAC_T.addr[1],MAC_T.addr[2],MAC_T.addr[3],MAC_T.addr[4],MAC_T.addr[5]);
// mac_addr_t gsensor_buff[40] = {0};
timer_init(TIMER0,10000,TIMER_PERIODIC);//10ms
timer_run(TIMER0);
NVIC_EnableIRQ(TIMER0_IRQn);
- // os_timer_init(&m_task_main_5ms_timer, main_data_treating, NULL);
- // os_timer_start(&m_task_main_5ms_timer, 500, true);
- while(1)
- {
+
+
+
+
+
+ sensor_init();
+ os_user_loop_event_set(sensor_while);
+
+ // while(1)
+ // {
- uart0_receive();//串口0接收数据处理
- /////////////////////血压测量/////////////////////////////
- BP_test();
- /////////////////////心率测量/////////////////////////////
- HRS_test();
- /////////////////////心率变异性测量/////////////////////////////
- HRV_test();
- /////////////////////血氧测量/////////////////////////////
- SPO2_test();
- /////////////////////中医测量/////////////////////////////
- YYL_test();
- //////////////////////情绪测量//////////////////////////////////
- EMO_test();
+ // uart0_receive();//串口0接收数据处理
+ // /////////////////////血压测量/////////////////////////////
+ // BP_test();
+ // /////////////////////心率测量/////////////////////////////
+ // HRS_test();
+ // /////////////////////心率变异性测量/////////////////////////////
+ // HRV_test();
+ // /////////////////////血氧测量/////////////////////////////
+ // SPO2_test();
+ // /////////////////////中医测量/////////////////////////////
+ // YYL_test();
+ // //////////////////////情绪测量//////////////////////////////////
+ // EMO_test();
- co_delay_100us(500);
+ // co_delay_100us(500);
- //co_printf("main:end\n");
- }
+ // //co_printf("main:end\n");
+ // }
}
-////////////////////////////中断处理////////////////////////// MCU响应太慢,中断时间太短无法捕获 3.2US
-// void pmu_gpio_isr_ram(void) //中断处理
-// {
-// uint32_t pmu_int_pin_setting = ool_read32(PMU_REG_PORTA_TRIG_MASK);
-// uint32_t gpio_value = ool_read32(PMU_REG_GPIOA_V);
-// ool_write32(PMU_REG_PORTA_LAST, gpio_value);
-// uint32_t tmp = gpio_value & pmu_int_pin_setting;
-// uint32_t pressed_key = tmp^pmu_int_pin_setting;
-// // co_printf("K:0x%08x\r\n", (pressed_key));//PD PC PB PA
-// if((pressed_key&0x00800000)==0x00800000)//PC7//心率中断 低电平
-// {
-// // co_printf("PC7 = 0 \r\n");
-// hr_int=1;
-// }
-// else if((pressed_key&0x80000000)==0x80000000)//PD7 //4G中断1
-// {
-// // co_printf("PD7 = 0 \r\n");
-// }
-// else if((pressed_key&0x40000000)==0x40000000)//PD6 //4G中断0
-// {
-// // co_printf("PD6 = 0 \r\n");
-// }
-// else if((pressed_key&0x20000000)==0x20000000)//PD5//血压中断
-// {
-// // co_printf("PD5 = 0 \r\n");
-// bp_int=1;
-// }
-// else if((pressed_key&0x10000000)==0x10000000)//PD4// 三轴地磁传感器中断
-// {
-// // co_printf("PD4 = 0 \r\n");
-// }
-// }
-//
-//
\ No newline at end of file
+
+
+
\ No newline at end of file
#include "sensor_drive.h"
#include "algo.h"
#include "yyl_pfev01.h"
+uint16_t task_sensor_id = 0;
-extern uint8_t uart0_rivce_data[50];
InitParamTypeDef pInit_Param={0};
char is_HA_activate = 0;
-#define HA_BUF_LEN 15*1024
+#define HA_BUF_LEN 10*1024
unsigned char HA_BUF[HA_BUF_LEN];//恒爱算法库和中医算法库缓冲区
// char ppg_buf[PPG_BUF_LEN];
extern unsigned char UART_send_buf[UART_SEND_MAX] ;
extern int UART_send_buf_len ;
+////////////////////////////中断处理////////////////////////// MCU响应太慢,中断时间太短无法捕获 3.2US
+char task_sensor_evn_flag = 0;
+os_event_t evt;
+int os_msg_post_count = 0;
+unsigned char HR_IRQ_FLAG = 0;
+unsigned char BP_IRQ_FLAG = 0;
+void pmu_gpio_isr_ram(void) //中断处理
+{
+ uint32_t pmu_int_pin_setting = ool_read32(PMU_REG_PORTA_TRIG_MASK);
+ uint32_t gpio_value = ool_read32(PMU_REG_GPIOA_V);
+ ool_write32(PMU_REG_PORTA_LAST, gpio_value);
+ uint32_t tmp = gpio_value & pmu_int_pin_setting;
+ uint32_t pressed_key = tmp^pmu_int_pin_setting;
+ //co_printf("K:0x%08x\r\n", (pressed_key));//PD PC PB PA
+ if((pressed_key&0x00800000)==0x00800000)//PC7//心率中断 低电平
+ {
+
+ //co_printf("PC7 = 0 \r\n");
+ HR_IRQ_FLAG =1;
+
+ }
+ else if((pressed_key&0x80000000)==0x80000000)//PD7 //4G中断1
+ {
+ //co_printf("PD7 = 0 \r\n");
+ }
+ else if((pressed_key&0x40000000)==0x40000000)//PD6 //4G中断0
+ {
+ //co_printf("PD6 = 0 \r\n");
+ }
+ else if((pressed_key&0x20000000)==0x20000000)//PD5//血压中断
+ {
+ //co_printf("PD5 = 0 \r\n");
+
+ // evt.event_id = BP_IRQ;
+ // if(task_sensor_id != 0&&task_sensor_evn_flag==0)
+ // os_msg_post(task_sensor_id,&evt);
+ //bp_int=1;
+ }
+ else if((pressed_key&0x10000000)==0x10000000)//PD4// 三轴地磁传感器中断
+ {
+ //co_printf("PD4 = 0 \r\n");
+ }
+ //NVIC_DisableIRQ(PMU_IRQn);
+}
+
void HA_lib_init(void)
{
if(strlen(sys_config.HA_key_code)>5 && strlen(sys_config.HA_req_code)>5)
{
- is_HA_activate = activate_algorithm(sys_config.HA_req_code,strlen(sys_config.HA_req_code),sys_config.HA_key_code,strlen(sys_config.HA_key_code));
+ is_HA_activate = activate_algorithm((unsigned char *)sys_config.HA_req_code,strlen(sys_config.HA_req_code),(unsigned char *)sys_config.HA_key_code,strlen(sys_config.HA_key_code));
}
co_printf("HA_lib_init:HA_req_code:%s\n",sys_config.HA_req_code);
co_printf("HA_lib_init:HA_key_code:%s\n",sys_config.HA_key_code);
///////////////////////////中断标致位///////////////////////
// bool bp_int,hr_int;//血压和心率
-////////////////////////////获取血压数据//////////////////////////////////////////////////////
-void get_bp_data()
-{
- system_set_port_mux(GPIO_PORT_A, GPIO_BIT_0, PORTA0_FUNC_A0);
- gpio_set_dir(GPIO_PORT_A, GPIO_BIT_0, GPIO_DIR_OUT);
- gpio_set_pin_value(GPIO_PORT_A, GPIO_BIT_0, 0); //心率使能 低电平
-
-
- system_set_port_mux(GPIO_PORT_A, GPIO_BIT_1, PORTA1_FUNC_A1);
- gpio_set_dir(GPIO_PORT_A, GPIO_BIT_1, GPIO_DIR_OUT);
- gpio_set_pin_value(GPIO_PORT_A, GPIO_BIT_1, 1); //血压使能
-
- system_set_port_pull((GPIO_PA0 | GPIO_PA1), true); //设置上拉
- system_set_port_mux(GPIO_PORT_D, GPIO_BIT_5, PORTD5_FUNC_D5);
- gpio_set_dir(GPIO_PORT_D, GPIO_BIT_5, GPIO_DIR_IN);
- system_set_port_pull(GPIO_PD5, true); //设置上拉
- gpio_set_pin_value(GPIO_PORT_D, GPIO_BIT_5, 1); //血压中断
-
-
- system_set_port_mux(GPIO_PORT_C, GPIO_BIT_7, PORTC7_FUNC_C7);
- gpio_set_dir(GPIO_PORT_C, GPIO_BIT_7, GPIO_DIR_IN);
- system_set_port_pull(GPIO_PC7, true); //设置上拉
- gpio_set_pin_value(GPIO_PORT_C, GPIO_BIT_7, 0); //心率中断
-
-
- user_i2c1_init();
-
- co_delay_100us(5000);
- IIC1_Start_I2c();
- IIC1_Write_One_Byte(0x0A);
- IIC1_Read_Ack();
- co_delay_10us(1);
- IIC1_Write_One_Byte(0x04);
- IIC1_Read_Ack();
- IIC1_Stop_I2c( );
- co_printf(" get_BP_start \n");
-
-}
/********GSENSOR_IIC写部分//客户需要进行的IIC接口封包函数****************/
// return 0;
}
IIC0_Stop_I2c();//结束
+ return 1;
}
/********GSENSOR_IIC读部分//客户需要进行的IIC接口封包函数****************/
unsigned char SL_SC7A20_I2c_Spi_Read(bool sl_spi_iic,unsigned char reg, unsigned char len, unsigned char *buf)
// {
// co_printf("temp_data[%d] = %02x \n",j,temp_data[j]);
// }
+ return 1;
}
////////////////////////////获取Gsensor数据//////////////////////////////////////////////////////
-signed short sl_x_dat[5], sl_y_dat[5],sl_z_dat[5];
-void gsensor_init()
+
+void gsensor_init(void)
{
- user_i2c0_init();
+ signed short sl_x_dat[5], sl_y_dat[5],sl_z_dat[5];
co_delay_100us(5);
SL_SC7A20_PEDO_KCAL_WRIST_SLEEP_SWAY_L_INIT();
//while(1)
if(send_bp_data_flag)//血压
{
//send_bp_data_flag=0;
- get_bp_data();
- co_delay_10us(1);
- bool irq_flag=0;
- while(send_bp_data_flag)
+
+ //co_delay_10us(1);
+
+
+ co_printf("BP_test!!!\n");
+ if(read_BP_data()==1)//读血压数据
{
- //要放入采集时间,等待时间没采到退出
- while((gpio_get_pin_value(GPIO_PORT_D, GPIO_BIT_5)==0)&&send_bp_data_flag)//等待BP_INT变高
- {
- uart0_receive();//串口0接收数据处理
- co_delay_100us(100);//不加延时串口获取数据异常
- //co_printf(" get_BP_waite \n");
- irq_flag=1;
- }
- while(gpio_get_pin_value(GPIO_PORT_D, GPIO_BIT_5)&&irq_flag&&send_bp_data_flag) //等待BP_INT变低
+ //输出血压数据到串口0
+ UART_send_buf_len = snprintf((char *)UART_send_buf,sizeof(UART_send_buf),"{\"cmd\":\"2\",\"bp_data\":\"");
+ uart0_write_for_hci(UART_send_buf,UART_send_buf_len,NULL, NULL);
+ for(uint8_t i=0;i<48;i++)//转码
{
-
- read_BP_data();//读血压数据
- //输出血压数据到串口0
- UART_send_buf_len = snprintf((char *)UART_send_buf,sizeof(UART_send_buf),"{\"cmd\":\"2\",\"bp_data\":\"");
- uart0_write_for_hci(UART_send_buf,UART_send_buf_len,NULL, NULL);
- for(uint8_t i=0;i<48;i++)//转码
- {
- uintTOstr(bp_data[i]);
- uart_putc_noint(UART0,str_high);
- uart_putc_noint(UART0,str_low);
- }
- uart0_write_for_hci(uart0_residue_data, 3, NULL, NULL);
- uart0_receive();//串口0接收数据处理
- irq_flag=0;
+ uintTOstr(bp_data[i]);
+ uart_putc_noint(UART0,str_high);
+ uart_putc_noint(UART0,str_low);
}
- }
- gpio_set_pin_value(GPIO_PORT_A, GPIO_BIT_1, 0); //关闭血压
- co_printf(" get_BP_end \n");
+ uart0_write_for_hci(uart0_residue_data, 3, NULL, NULL);
+ }
}
+
return send_bp_data_flag;
}
#define EMO_IN_BUF_SIZE SAMPLERATE*SAMPLETIME
char tmp_buf[30];
if(send_emo_data_flag)//情绪
{
- //send_emo_data_flag=0;
- get_bp_data();
- co_delay_10us(1);
- bool irq_flag=0;
- init_algorithm(HA_BUF, sizeof(HA_BUF));
- co_printf(" EMO_test_start \n");
-
- while(send_emo_data_flag)
+
+
+ if(read_BP_data()==1)//读血压数据
{
- //è¦\81æ\94¾å\85¥é\87\87é\9b\86æ\97¶é\97´ï¼\8cç\89å¾\85æ\97¶é\97´æ²¡é\87\87å\88°é\80\80å\87º
- while((gpio_get_pin_value(GPIO_PORT_D, GPIO_BIT_5)==0)&&send_emo_data_flag)//等待BP_INT变高
- {
- uart0_receive();//串口0接收数据处理
- co_delay_100us(100);//不加延时串口获取数据异常
- //co_printf(" get_BP_waite \n");
- irq_flag=1;
- }
- while(gpio_get_pin_value(GPIO_PORT_D, GPIO_BIT_5)&&irq_flag&&send_emo_data_flag) //等待BP_INT变低
+ //è¾\93å\87ºè¡\80å\8e\8bæ\95°æ\8d®å\88°ä¸²å\8f£0
+ // float tmp = 3.33;
+ // co_printf(" EMO_test:2.0:%s \n",UART_send_buf);
+ // UART_send_buf_len = sprintf((char *)UART_send_buf,"%.2f!!,",tmp);
+ // co_printf(" EMO_test:2.1:%s \n",UART_send_buf);
+ UART_send_buf_len = 0;
+ memset(UART_send_buf,0,sizeof(UART_send_buf));
+
+ for(int i=0;i<16;i++)//转码
{
+ emo_in_buf[emo_in_buf_len] = bp_data[i*3+0]<<16|bp_data[i*3+1]<<8|bp_data[i*3+2];
+ //co_printf(" EMO_test:bp_data:0x%02X%02X%02X\n",bp_data[i*3+0],bp_data[i*3+1],bp_data[i*3+2]);
+ //co_printf(" EMO_test:emo_in_buf[%d]:%d\n",emo_in_buf_len,emo_in_buf[emo_in_buf_len]);
+ emo_in_buf_len++;
- read_BP_data();//读血压数据
- //输出血压数据到串口0
- // float tmp = 3.33;
- // co_printf(" EMO_test:2.0:%s \n",UART_send_buf);
- // UART_send_buf_len = sprintf((char *)UART_send_buf,"%.2f!!,",tmp);
- // co_printf(" EMO_test:2.1:%s \n",UART_send_buf);
- UART_send_buf_len = 0;
- memset(UART_send_buf,0,sizeof(UART_send_buf));
-
-
- for(int i=0;i<16;i++)//转码
+ if(emo_in_buf_len >= EMO_IN_BUF_SIZE)
{
- emo_in_buf[emo_in_buf_len] = bp_data[i*3+0]<<16|bp_data[i*3+1]<<8|bp_data[i*3+2];
- //co_printf(" EMO_test:bp_data:0x%02X%02X%02X\n",bp_data[i*3+0],bp_data[i*3+1],bp_data[i*3+2]);
- //co_printf(" EMO_test:emo_in_buf[%d]:%d\n",emo_in_buf_len,emo_in_buf[emo_in_buf_len]);
- emo_in_buf_len++;
-
- if(emo_in_buf_len >= EMO_IN_BUF_SIZE)
+ //co_printf(" EMO_test:ppg_midvalue \n");
+ status = ppg_midvalue(emo_in_buf,emo_in_buf_len,SAMPLERATE,emo_out_Fm,&emo_out_Fm_len);
+ co_printf(" EMO_test:status:%d emo_out_Fm_len:%d\n",status,emo_out_Fm_len);
+ if(emo_out_Fm_len != 0)
{
- //co_printf(" EMO_test:ppg_midvalue \n");
- status = ppg_midvalue(emo_in_buf,emo_in_buf_len,SAMPLERATE,emo_out_Fm,&emo_out_Fm_len);
- co_printf(" EMO_test:status:%d emo_out_Fm_len:%d\n",status,emo_out_Fm_len);
- if(emo_out_Fm_len != 0)
+ UART_send_buf_len += snprintf((char *)UART_send_buf,sizeof(UART_send_buf),"{\"cmd\":\"2\",\"emo_data\":[");
+ //co_printf(" EMO_test:1:%d \n",UART_send_buf_len);
+ for(int j=0;j<emo_out_Fm_len;j++)
{
- UART_send_buf_len += snprintf((char *)UART_send_buf,sizeof(UART_send_buf),"{\"cmd\":\"2\",\"emo_data\":[");
- //co_printf(" EMO_test:1:%d \n",UART_send_buf_len);
- for(int j=0;j<emo_out_Fm_len;j++)
+ UART_send_buf_len += snprintf((char *)&UART_send_buf[UART_send_buf_len],sizeof(UART_send_buf)-UART_send_buf_len,
+ "[");
+ //co_printf(" EMO_test:2:%d \n",UART_send_buf_len);
+ for(int k=0;k<8;k++)
{
+ //co_printf(" EMO_test:2.0:%s \n",UART_send_buf);
+ memset(tmp_buf,0,sizeof(tmp_buf));
+ char *float_str = _float_to_char(emo_out_Fm[j][k],tmp_buf,sizeof(tmp_buf));
+ //int int_tmp = emo_out_Fm[j][k]*100;
UART_send_buf_len += snprintf((char *)&UART_send_buf[UART_send_buf_len],sizeof(UART_send_buf)-UART_send_buf_len,
- "[");
- //co_printf(" EMO_test:2:%d \n",UART_send_buf_len);
- for(int k=0;k<8;k++)
- {
- //co_printf(" EMO_test:2.0:%s \n",UART_send_buf);
- memset(tmp_buf,0,sizeof(tmp_buf));
- char *float_str = _float_to_char(emo_out_Fm[j][k],tmp_buf,sizeof(tmp_buf));
- //int int_tmp = emo_out_Fm[j][k]*100;
- UART_send_buf_len += snprintf((char *)&UART_send_buf[UART_send_buf_len],sizeof(UART_send_buf)-UART_send_buf_len,
- "%s,",float_str);
-
- //co_printf(" EMO_test:float:%s \n",float_str);
- //co_printf(" EMO_test:hex:0x%X \n",emo_out_Fm[j][k]);
- //printf(" EMO_test:printf:%f \n",emo_out_Fm[j][k]);
- }
- UART_send_buf_len-=1;//减去最后的逗号
- UART_send_buf_len += snprintf((char *)&UART_send_buf[UART_send_buf_len],sizeof(UART_send_buf)-UART_send_buf_len,
- "],");
+ "%s,",float_str);
+
+ //co_printf(" EMO_test:float:%s \n",float_str);
+ //co_printf(" EMO_test:hex:0x%X \n",emo_out_Fm[j][k]);
+ //printf(" EMO_test:printf:%f \n",emo_out_Fm[j][k]);
}
- //co_printf(" EMO_test:3:%d \n",UART_send_buf_len);
UART_send_buf_len-=1;//减去最后的逗号
UART_send_buf_len += snprintf((char *)&UART_send_buf[UART_send_buf_len],sizeof(UART_send_buf)-UART_send_buf_len,
- "]}\n");
- uart0_write_for_hci(UART_send_buf,UART_send_buf_len,NULL, NULL);
- co_printf(" EMO_test:send_buf:%s\n",UART_send_buf);
+ "],");
}
-
-
- emo_in_buf_len = 0;
+ //co_printf(" EMO_test:3:%d \n",UART_send_buf_len);
+ UART_send_buf_len-=1;//减去最后的逗号
+ UART_send_buf_len += snprintf((char *)&UART_send_buf[UART_send_buf_len],sizeof(UART_send_buf)-UART_send_buf_len,
+ "]}\n");
+ uart0_write_for_hci(UART_send_buf,UART_send_buf_len,NULL, NULL);
+ co_printf(" EMO_test:send_buf:%s\n",UART_send_buf);
}
+
+
+ emo_in_buf_len = 0;
}
-
- irq_flag=0;
}
- }
- gpio_set_pin_value(GPIO_PORT_A, GPIO_BIT_1, 0); //关闭血压
- co_printf(" EMO_test_end \n");
+ }
+
+
}
return send_emo_data_flag;
}
char HRS_test(void)
{
+
if(send_hrs_data_flag)//心率
{
-
- bool irq_flag=0;
- //get_hr_data();
- //vcHr02PhyInit(); //vcHr02 board initial
- //vcHr02Init(&vcHr02,vcMode);
- pInit_Param.work_mode = WORK_MODE_HR;
- vc9202_usr_init(&pInit_Param);
- //加心率获取到数据退出测量或者加获取有效数据次数或者测试时间
- while(send_hrs_data_flag)
+ //co_printf("HRS_test1!!!!!!!!\n");
+ vc9202_usr_interrupt_handler(SPORT_TYPE_NORMAL,1);
+ //co_printf("HRS_test2!!!!!!!!\n");
+ if(vc9202_alg_results.hr_rate >0)
{
- while(gpio_get_pin_value(GPIO_PORT_C, GPIO_BIT_7)==1&&send_hrs_data_flag)//等待HR_INT变低
- {
- //co_printf(" get_HR_waite \n");
- //vcHr02IRQHandler();
- irq_flag=1;
- uart0_receive();//串口0接收数据处理
- }
- while((gpio_get_pin_value(GPIO_PORT_C, GPIO_BIT_7)==0)&&irq_flag&&send_hrs_data_flag)//等待HR_INT变高 //高电平获取数据
- {
-
- vc9202_usr_interrupt_handler(SPORT_TYPE_NORMAL,1);
- irq_flag=0;
-
- uart0_receive();//串口0接收数据处理
- if(vc9202_alg_results.hr_rate >0)
- {
- co_printf("hr_rate:%d \n",vc9202_alg_results.hr_rate);
- memset(UART_send_buf,0,sizeof(UART_send_buf));
- UART_send_buf_len = snprintf((char *)UART_send_buf,sizeof(UART_send_buf),"{\"cmd\":\"2\",\"hrs_data\":\"%d\"}\n",vc9202_alg_results.hr_rate);
- uart0_write_for_hci(UART_send_buf,UART_send_buf_len,NULL, NULL);
- vc9202_alg_results.hr_rate = 0;
- }
-
- }
- }
- pInit_Param.work_mode = WORK_MODE_NONE;
- vc9202_usr_init(&pInit_Param);
- gpio_set_pin_value(GPIO_PORT_A, GPIO_BIT_0, 0); //关闭心率
- co_printf(" get_HR_end \n");
+ //co_printf("HRS_test3!!!!!!!!\n");
+ //co_printf("hr_rate:%d \n",vc9202_alg_results.hr_rate);
+ memset(UART_send_buf,0,sizeof(UART_send_buf));
+ UART_send_buf_len = snprintf((char *)UART_send_buf,sizeof(UART_send_buf),"{\"cmd\":\"2\",\"hrs_data\":\"%d\"}\n",vc9202_alg_results.hr_rate);
+ uart0_write_for_hci(UART_send_buf,UART_send_buf_len,NULL, NULL);
+ vc9202_alg_results.hr_rate = 0;
+ }
}
return send_hrs_data_flag;
}
{
if(send_hrv_data_flag)//心率变异性
{
- bool irq_flag=0;
- //get_hr_data();
- //vcHr02PhyInit(); //vcHr02 board initial
- //vcHr02Init(&vcHr02,vcMode);
- pInit_Param.work_mode = WORK_MODE_HRV;
- vc9202_usr_init(&pInit_Param);
- co_printf(" get_HRV_start \n");
- //加心率获取到数据退出测量或者加获取有效数据次数或者测试时间
- while(send_hrv_data_flag)
- {
- while(gpio_get_pin_value(GPIO_PORT_C, GPIO_BIT_7)==1&&send_hrv_data_flag)//等待HR_INT变低
- {
- //co_printf(" get_HR_waite \n");
- //vcHr02IRQHandler();
- irq_flag=1;
- uart0_receive();//串口0接收数据处理
- }
- while((gpio_get_pin_value(GPIO_PORT_C, GPIO_BIT_7)==0)&&irq_flag&&send_hrv_data_flag)//等待HR_INT变高 //高电平获取数据
- {
-
- vc9202_usr_interrupt_handler(SPORT_TYPE_NORMAL,1);
- irq_flag=0;
-
- uart0_receive();//串口0接收数据处理
- // if(vc9202_alg_results.hr_rate >0)
- // {
- // co_printf("hr_rate:%d \n",vc9202_alg_results.hr_rate);
- // memset(UART_send_buf,0,sizeof(UART_send_buf));
- // UART_send_buf_len = snprintf((char *)UART_send_buf,sizeof(UART_send_buf),"{\"cmd\":\"2\",\"hrs_data\":\"%d\"}\n",vc9202_alg_results.hr_rate);
- // uart0_write_for_hci(UART_send_buf,UART_send_buf_len,NULL, NULL);
- // vc9202_alg_results.hr_rate = 0;
- // }
-
- }
- }
- pInit_Param.work_mode = WORK_MODE_NONE;
- vc9202_usr_init(&pInit_Param);
- gpio_set_pin_value(GPIO_PORT_A, GPIO_BIT_0, 0); //关闭心率
- co_printf(" get_HRV_end \n");
+
+ vc9202_usr_interrupt_handler(SPORT_TYPE_NORMAL,1);
+
+ uart0_receive();//串口0接收数据处理
+ // if(vc9202_alg_results.hr_rate >0)
+ // {
+ // co_printf("hr_rate:%d \n",vc9202_alg_results.hr_rate);
+ // memset(UART_send_buf,0,sizeof(UART_send_buf));
+ // UART_send_buf_len = snprintf((char *)UART_send_buf,sizeof(UART_send_buf),"{\"cmd\":\"2\",\"hrs_data\":\"%d\"}\n",vc9202_alg_results.hr_rate);
+ // uart0_write_for_hci(UART_send_buf,UART_send_buf_len,NULL, NULL);
+ // vc9202_alg_results.hr_rate = 0;
+ // }
+
}
return send_hrv_data_flag;
}
if(send_spo2_data_flag)//血氧
{
- bool irq_flag=0;
- pInit_Param.work_mode = WORK_MODE_SPO2;
- vc9202_usr_init(&pInit_Param);
- while(send_spo2_data_flag)//放入定时测量的值,如果1分钟内没检测到值就退出
+ vc9202_usr_interrupt_handler(SPORT_TYPE_NORMAL,1);
+ if(vc9202_alg_results.spo2_val >0)
{
- while(gpio_get_pin_value(GPIO_PORT_C, GPIO_BIT_7)==1&&send_spo2_data_flag)//等待HR_INT变低
- {
- //co_printf(" get_SPO2_waite \n");
- //vcHr02IRQHandler();
- irq_flag=1;
- uart0_receive();//串口0接收数据处理
- }
- while((gpio_get_pin_value(GPIO_PORT_C, GPIO_BIT_7)==0)&&irq_flag&&send_spo2_data_flag)//等待HR_INT变高
- {
- irq_flag=0;
- uart0_receive();//串口0接收数据处理
- vc9202_usr_interrupt_handler(SPORT_TYPE_NORMAL,1);
- if(vc9202_alg_results.spo2_val >0)
- {
- co_printf("spo2_val:%d \n",vc9202_alg_results.spo2_val);
- memset(UART_send_buf,0,sizeof(UART_send_buf));
- UART_send_buf_len = snprintf((char *)UART_send_buf,sizeof(UART_send_buf),"{\"cmd\":\"2\",\"spo2_data\":\"%d\"}\n",vc9202_alg_results.spo2_val);
- uart0_write_for_hci(UART_send_buf,UART_send_buf_len,NULL, NULL);
- vc9202_alg_results.spo2_val = 0;
- }
- }
- }
- pInit_Param.work_mode = WORK_MODE_NONE;
- vc9202_usr_init(&pInit_Param);
- gpio_set_pin_value(GPIO_PORT_A, GPIO_BIT_0, 0); //关闭心率
- co_printf(" get_SPO2_end \n");
+ co_printf("spo2_val:%d \n",vc9202_alg_results.spo2_val);
+ memset(UART_send_buf,0,sizeof(UART_send_buf));
+ UART_send_buf_len = snprintf((char *)UART_send_buf,sizeof(UART_send_buf),"{\"cmd\":\"2\",\"spo2_data\":\"%d\"}\n",vc9202_alg_results.spo2_val);
+ uart0_write_for_hci(UART_send_buf,UART_send_buf_len,NULL, NULL);
+ vc9202_alg_results.spo2_val = 0;
+ }
}
return send_spo2_data_flag;
}
////////////////////////////////////云医链中医测试////////////////////////////////////////////////
+int YYL_test_count = 0;
char YYL_test(void)
{
if(send_yyl_data_flag)//中医
{
- bool irq_flag=0;
- //get_hr_data();
- //vcHr02PhyInit(); //vcHr02 board initial
- //vcHr02Init(&vcHr02,vcMode);
- pInit_Param.work_mode = WORK_MODE_HRV;
- vc9202_usr_init(&pInit_Param);
- YYL_Init_PFE( HA_BUF, HA_BUF_LEN);//中医初始化
- co_printf(" YYL_test_start \n");
yylPFE_OutputData *pOutputData;
yylPFE_OutputData *pOutputData_tmp;
- unsigned int pOutputData_len ;
+ int pOutputData_len ;
//加心率获取到数据退出测量或者加获取有效数据次数或者测试时间
- while(send_yyl_data_flag)
+
+ //co_printf("YYL_test1!!\n");
+ vc9202_usr_interrupt_handler(SPORT_TYPE_NORMAL,1);//里面获取ppg数据
+ //co_printf("YYL_test2!!\n");
+ int printf_len = 0;
+ if(yyl_in_data_len>= 3000-1)
{
- while(gpio_get_pin_value(GPIO_PORT_C, GPIO_BIT_7)==1&&send_yyl_data_flag)//等待HR_INT变低
+ co_printf("YYL_Output_PFE!!\n");
+ pOutputData = YYL_Output_PFE(&pOutputData_len);
+ co_printf("YYL_test:pOutputData_len:%d\n",pOutputData_len);
+ memset(UART_send_buf,0,sizeof(UART_send_buf));
+ co_printf("YYL_test:");
+ UART_send_buf_len = snprintf((char *)UART_send_buf,sizeof(UART_send_buf),
+ "{\"cmd\":\"2\",\"yyl_data\":\"");
+ uart0_write_for_hci(UART_send_buf,UART_send_buf_len,NULL, NULL);
+ co_printf("%s",UART_send_buf);
+ //pOutputData_len = 10;
+ if(pOutputData_len > 50)
+ pOutputData_len = 50;
+ for(int count=0; count<pOutputData_len; count++)
{
- //co_printf(" get_HR_waite \n");
- //vcHr02IRQHandler();
- irq_flag=1;
- uart0_receive();//串口0接收数据处理
- }
- while((gpio_get_pin_value(GPIO_PORT_C, GPIO_BIT_7)==0)&&irq_flag&&send_yyl_data_flag)//等待HR_INT变高 //高电平获取数据
- {
-
- vc9202_usr_interrupt_handler(SPORT_TYPE_NORMAL,1);//里面获取ppg数据
- irq_flag=0;
- int printf_len = 0;
- if(yyl_in_data_len>= 3000-1)
- {
- co_printf("YYL_Output_PFE!!\n");
- pOutputData = YYL_Output_PFE(&pOutputData_len);
- co_printf("YYL_test:pOutputData_len:%d\n",pOutputData_len);
- memset(UART_send_buf,0,sizeof(UART_send_buf));
- co_printf("YYL_test:");
- UART_send_buf_len = snprintf((char *)UART_send_buf,sizeof(UART_send_buf),
- "{\"cmd\":\"2\",\"yyl_data\":\"");
- uart0_write_for_hci(UART_send_buf,UART_send_buf_len,NULL, NULL);
- co_printf("%s",UART_send_buf);
- //pOutputData_len = 10;
- if(pOutputData_len > 50)
- pOutputData_len = 50;
- for(int count=0; count<pOutputData_len; count++)
- {
- pOutputData_tmp = pOutputData+count;
- // if(pOutputData_tmp->timestamp==0&&pOutputData_tmp->areaUP==0&&pOutputData_tmp->areaUPBase==0&&pOutputData_tmp->areaUPHeight==0)
- // break;
- //co_printf("pOutputData_tmp:%x\n",pOutputData_tmp);
- unsigned int time_tmp = get_timestamp();
- UART_send_buf_len = snprintf((char *)UART_send_buf,sizeof(UART_send_buf),
- "%u,%d,%d,%d,%d,%d,%d,%d,%d,%d,",
- time_tmp,pOutputData_tmp->timestamp,pOutputData_tmp->areaUP,pOutputData_tmp->areaUPBase,pOutputData_tmp->areaUPHeight,
- pOutputData_tmp->areaDOWN,pOutputData_tmp->areaDOWNBase,pOutputData_tmp->areaDOWNHeight,pOutputData_tmp->RRI,pOutputData_tmp->motion);
- uart0_write_for_hci(UART_send_buf,UART_send_buf_len,NULL, NULL);
- UART_send_buf[UART_send_buf_len] = 0;
- co_printf("%s",UART_send_buf);
- printf_len+=UART_send_buf_len;
- UART_send_buf_len = 0;
-
- if(count>=255)
- break;
- }
-
- uart0_write_for_hci("\"}\n",sizeof("\"}\n"),NULL, NULL);
- printf_len+=3;
- co_printf("%s","\"}\n");
- co_printf("YYL_test:printf_len:%d\n",printf_len);
- yyl_in_data_len =0;
- }
- uart0_receive();//串口0接收数据处理
-
+ pOutputData_tmp = pOutputData+count;
+ // if(pOutputData_tmp->timestamp==0&&pOutputData_tmp->areaUP==0&&pOutputData_tmp->areaUPBase==0&&pOutputData_tmp->areaUPHeight==0)
+ // break;
+ //co_printf("pOutputData_tmp:%x\n",pOutputData_tmp);
+ unsigned int time_tmp = get_timestamp();
+ UART_send_buf_len = snprintf((char *)UART_send_buf,sizeof(UART_send_buf),
+ "%u,%d,%d,%d,%d,%d,%d,%d,%d,%d,",
+ time_tmp,pOutputData_tmp->timestamp,pOutputData_tmp->areaUP,pOutputData_tmp->areaUPBase,pOutputData_tmp->areaUPHeight,
+ pOutputData_tmp->areaDOWN,pOutputData_tmp->areaDOWNBase,pOutputData_tmp->areaDOWNHeight,pOutputData_tmp->RRI,pOutputData_tmp->motion);
+ uart0_write_for_hci(UART_send_buf,UART_send_buf_len,NULL, NULL);
+ UART_send_buf[UART_send_buf_len] = 0;
+ co_printf("%s",UART_send_buf);
+ printf_len+=UART_send_buf_len;
+ UART_send_buf_len = 0;
+ if(count>=255)
+ break;
}
- }
- pInit_Param.work_mode = WORK_MODE_NONE;
- vc9202_usr_init(&pInit_Param);
- gpio_set_pin_value(GPIO_PORT_A, GPIO_BIT_0, 0); //关闭心率
- co_printf(" YYL_test_end \n");
+
+ uart0_write_for_hci("\"}\n",sizeof("\"}\n"),NULL, NULL);
+ printf_len+=3;
+ co_printf("%s","\"}\n");
+ co_printf("YYL_test:printf_len:%d\n",printf_len);
+ yyl_in_data_len =0;
+ }
+
}
+ // YYL_test_count++;
+ // co_printf("os_msg_post_count:%d YYL_test_count:%d\n",os_msg_post_count,YYL_test_count);
return send_yyl_data_flag;
}
////////////////////////////获取温度数据//////////////////////////////////////////////////////
#define ACNT117_ADDR 0x49
char write_buffer[2] = {0};
- user_i2c0_init();
+
co_delay_100us(5);
IIC0_Start_I2c();
IIC0_Write_One_Byte(ACNT117_ADDR);
void gsensor_test(void)
{
- gsensor_init();
+ //gsensor_init();
+ signed short sl_x_dat[5], sl_y_dat[5],sl_z_dat[5];
// sl_x_dat[5], sl_y_dat[5],sl_z_dat[5];
UART_send_buf_len = snprintf((char *)UART_send_buf,sizeof(UART_send_buf),"{\"cmd\":\"2\",\"gsensor_data\":\"");
uart0_write_for_hci(UART_send_buf,UART_send_buf_len,NULL, NULL);
}
uart0_write_for_hci(uart0_residue_data, 3, NULL, NULL);
-}
\ No newline at end of file
+}
+void BP_timer_cb(void *arg)
+{
+ // evt.event_id = BP_IRQ;
+ // co_printf("BP_timer_cb !!\n");
+ // if(task_sensor_id != 0&&task_sensor_evn_flag==0)
+ // {
+ // os_msg_post(task_sensor_id,&evt);
+ // co_printf("BP_timer_cb :os_msg_post!!\n");
+ // }
+ BP_IRQ_FLAG = 1;
+
+}
+os_timer_t BP_timer = {0};//
+void BP_open(void)//血压
+{
+
+ gpio_set_pin_value(GPIO_PORT_A, GPIO_BIT_1, 1); //血压使能
+ co_delay_100us(5000);
+ IIC1_Start_I2c();
+ IIC1_Write_One_Byte(0x0A);
+ IIC1_Read_Ack();
+ co_delay_10us(1);
+ IIC1_Write_One_Byte(0x04);
+ IIC1_Read_Ack();
+ IIC1_Stop_I2c( );
+ send_bp_data_flag = 1;
+ co_printf(" BP_open \n");
+ if(BP_timer.timer_id != 0)
+ os_timer_start(&BP_timer, 100, true);
+
+}
+void EMO_open(void)//情绪
+{
+
+ gpio_set_pin_value(GPIO_PORT_A, GPIO_BIT_1, 1); //血压使能
+ co_delay_100us(5000);
+ IIC1_Start_I2c();
+ IIC1_Write_One_Byte(0x0A);
+ IIC1_Read_Ack();
+ co_delay_10us(1);
+ IIC1_Write_One_Byte(0x04);
+ IIC1_Read_Ack();
+ IIC1_Stop_I2c();
+ send_emo_data_flag = 1;
+ co_printf(" EMO_open \n");
+
+}
+void YYL_open(void)//中医
+{
+
+ gpio_set_pin_value(GPIO_PORT_A, GPIO_BIT_0, 1); //心率使能
+ gpio_set_pin_value(GPIO_PORT_A, GPIO_BIT_1, 0); //血压使能
+ pInit_Param.work_mode = WORK_MODE_HRV;
+ vc9202_usr_init(&pInit_Param);
+ YYL_Init_PFE( HA_BUF, HA_BUF_LEN);//中医初始化
+ send_yyl_data_flag = 1;
+ co_printf(" YYL_open \n");
+ init_algorithm(HA_BUF, sizeof(HA_BUF));
+
+}
+
+void HRS_open(void)//心率
+{
+
+ gpio_set_pin_value(GPIO_PORT_A, GPIO_BIT_0, 1); //心率使能
+ gpio_set_pin_value(GPIO_PORT_A, GPIO_BIT_1, 0); //血压使能
+ pInit_Param.work_mode = WORK_MODE_HR;
+ vc9202_usr_init(&pInit_Param);
+ send_hrs_data_flag = 1;
+ //vc9202_usr_interrupt_handler(SPORT_TYPE_NORMAL,1);
+ co_printf(" HRS_open \n");
+}
+
+void SPO2_open(void)//血氧
+{
+
+ gpio_set_pin_value(GPIO_PORT_A, GPIO_BIT_0, 1); //心率使能
+ gpio_set_pin_value(GPIO_PORT_A, GPIO_BIT_1, 0); //血压使能
+ pInit_Param.work_mode = WORK_MODE_SPO2;
+ vc9202_usr_init(&pInit_Param);
+ send_spo2_data_flag = 1;
+ co_printf(" SPO2_open \n");
+
+ //vc9202_usr_interrupt_handler(SPORT_TYPE_NORMAL,1);
+}
+
+void sensor_close(void)
+{
+ pInit_Param.work_mode = WORK_MODE_NONE;
+ vc9202_usr_init(&pInit_Param);
+ send_bp_data_flag=0;//发送血压数据标致位
+ send_hrs_data_flag=0;//发送心率数据标标致位
+ send_hrv_data_flag=0;//发送心率变异性标致位
+ send_spo2_data_flag=0;//发送血氧数值标致位
+ send_temp_data_flag=0;//发送温度标致位
+ send_gs_data_flag=0;//发送gsensor数据标致位
+ send_sleep_data_flag=0;//发送sleep数据标致位
+ send_step_data_flag=0;//发送step数据标致位
+ send_wear_data_flag=0;//发送wear数据标致位
+ gpio_set_pin_value(GPIO_PORT_A, GPIO_BIT_0, 0); //心率使能 低电平
+ gpio_set_pin_value(GPIO_PORT_A, GPIO_BIT_1, 0); //血压使能
+ if(BP_timer.timer_id != 0)
+ os_timer_stop(&BP_timer);
+
+ co_printf(" sensor_close \n");
+}
+
+void sensor_while(void)
+{
+ uart0_receive();
+
+ if(HR_IRQ_FLAG == 1)
+ {
+ //co_printf("sensor_while:HR_IRQ_FLAG:%d BP_IRQ_FLAG:%d\n",HR_IRQ_FLAG,BP_IRQ_FLAG);
+ HR_IRQ_FLAG = 0;
+ /////////////////////心率测量/////////////////////////////
+ HRS_test();
+ // /////////////////////心率变异性测量/////////////////////////////
+ HRV_test();
+ // /////////////////////血氧测量/////////////////////////////
+ SPO2_test();
+ // /////////////////////中医测量/////////////////////////////
+ YYL_test();
+
+ }
+ if(BP_IRQ_FLAG == 1)
+ {
+ //co_printf("sensor_while:HR_IRQ_FLAG:%d BP_IRQ_FLAG:%d\n",HR_IRQ_FLAG,BP_IRQ_FLAG);
+ BP_IRQ_FLAG = 0;
+ EMO_test();
+ BP_test();
+ }
+ // pmu_port_wakeup_func_set(GPIO_PC7|GPIO_PD4|GPIO_PD5|GPIO_PD6|GPIO_PD7);//GPIO中断
+ // NVIC_EnableIRQ(PMU_IRQn);
+}
+void sensor_init(void)
+{
+ // task_sensor_id = os_task_create(task_sensor_evn);//sensro数据处理数据处理
+ // co_printf("task_sensor_id:%d\n",task_sensor_id);
+
+ //HR_EN = PA0 //心率使能,
+ //BP_EN = PA1 //血压使能,
+ //HR_BP_SCL0 = PA4 //心率血压IIC
+ //HR_BP_SDA0 = PA5 //心率血压IIC
+ //G_TE_SCL1 = PA6 //三轴地磁传感器 IIC
+ //G_TE_SDA1 = PA7 //三轴地磁传感器 IIC
+ //UART1_TXD = PC5 //4G通讯
+ //UART1_RXD = PC6 //4G通讯
+ //HR_INT = PC7 //心率中断
+ //G_EINT = PD4 // 三轴地磁传感器中断
+ //BP_INT = PD5 //血压中断
+ //4G_INT0 = PD6 //4G中断0
+ //4G_INT1 = PD7 //4G中断1
+ pmu_set_aldo_voltage(PMU_ALDO_MODE_NORMAL,PMU_ALDO_VOL_3_3); //设置内部LDO输出电压
+
+ system_set_port_mux(GPIO_PORT_A, GPIO_BIT_0, PORTA0_FUNC_A0);
+ gpio_set_dir(GPIO_PORT_A, GPIO_BIT_0, GPIO_DIR_OUT);
+ gpio_set_pin_value(GPIO_PORT_A, GPIO_BIT_0, 0); //心率使能 低电平
+
+
+ system_set_port_mux(GPIO_PORT_A, GPIO_BIT_1, PORTA1_FUNC_A1);
+ gpio_set_dir(GPIO_PORT_A, GPIO_BIT_1, GPIO_DIR_OUT);
+ gpio_set_pin_value(GPIO_PORT_A, GPIO_BIT_1, 0); //血压使能
+
+ system_set_port_pull((GPIO_PA0 | GPIO_PA1), true); //设置上拉
+
+ system_set_port_mux(GPIO_PORT_D, GPIO_BIT_5, PORTD5_FUNC_D5);
+ gpio_set_dir(GPIO_PORT_D, GPIO_BIT_5, GPIO_DIR_IN);
+ system_set_port_pull(GPIO_PD5, true); //设置上拉
+ gpio_set_pin_value(GPIO_PORT_D, GPIO_BIT_5, 1); //血压中断
+
+
+ system_set_port_mux(GPIO_PORT_C, GPIO_BIT_7, PORTC7_FUNC_C7);
+ gpio_set_dir(GPIO_PORT_C, GPIO_BIT_7, GPIO_DIR_IN);
+ system_set_port_pull(GPIO_PC7, true); //设置上拉
+ gpio_set_pin_value(GPIO_PORT_C, GPIO_BIT_7, 0); //心率中断
+
+ pmu_set_pin_pull(GPIO_PORT_C,BIT(7),true);//上拉//心率中断
+ pmu_set_pin_pull(GPIO_PORT_D,BIT(4),true);//上拉// 三轴地磁传感器中断
+ //pmu_set_pin_pull(GPIO_PORT_D,BIT(5),true);//上拉//血压中断
+ pmu_set_pin_pull(GPIO_PORT_D,BIT(6),true);//上拉 //4G中断0
+ pmu_set_pin_pull(GPIO_PORT_D,BIT(7),true);//上拉 //4G中断1
+ //pmu_port_wakeup_func_set(GPIO_PC7|GPIO_PD4|GPIO_PD5|GPIO_PD6|GPIO_PD7);//GPIO中断
+ pmu_port_wakeup_func_set(GPIO_PC7|GPIO_PD4|GPIO_PD6|GPIO_PD7);//GPIO中断
+ NVIC_EnableIRQ(PMU_IRQn);
+
+
+ user_i2c0_init();
+ user_i2c1_init();
+
+ VC9202_init();
+ HA_lib_init();
+
+ get_tp_data();
+ gsensor_init();//gsensor初始化
+ os_timer_init(&BP_timer, BP_timer_cb, NULL);
+ // os_timer_start(&BP_timer, 100, true);
+}
#ifndef _SENSOR_H
#define _SENSOR_H
+#include "os_task.h"
// #define PPG_BUF_LEN 60*100
// extern char ppg_buf[PPG_BUF_LEN];
// extern int ppg_buf_len ;
+typedef enum
+{
+ UART0_EVEN=0,//串口数据处理
+ HR_IRQ ,//vc9202中断
+ BP_IRQ ,//血压中断
+
+}SENSOR_IRQ;
extern int yyl_in_data_len;
-void gsensor_init();
+int task_sensor_evn(os_event_t *param);
+void BP_open(void);//血压
+void EMO_open(void);//情绪
+void YYL_open(void);//中医
+void HRS_open(void);//心率
+void SPO2_open(void);//血氧
+void sensor_close(void);
+void gsensor_init(void);
char BP_test(void);
char HRS_test(void);
char HRV_test(void);
char SPO2_test(void);
char YYL_test(void);
char EMO_test(void);
-void get_tp_data();
+void get_tp_data(void);
void temp_test(void);
void gsensor_test(void);
void VC9202_init(void);
void HA_lib_init(void);
-#endif //_SENSOR_H
\ No newline at end of file
+void sensor_init(void);
+void sensor_while(void);
+#endif //_SENSOR_H
version https://git-lfs.github.com/spec/v1
-oid sha256:ed84309bf511fb679fd9a693afb7a0f9decb65de8d0cf5eb5253480b7aa2a2c8
-size 1432068
+oid sha256:6f8f3c89d498c5f280eb41c8379141f9f2b930c77ffce608ac9c4631570ede70
+size 1454240
<WindowPosition>
<length>44</length>
<flags>0</flags>
- <showCmd>2</showCmd>
+ <showCmd>1</showCmd>
<MinPosition>
<xPos>-32000</xPos>
<yPos>-32000</yPos>
<yPos>-1</yPos>
</MaxPosition>
<NormalPosition>
- <Top>25</Top>
- <Left>17</Left>
- <Right>1516</Right>
- <Bottom>939</Bottom>
+ <Top>213</Top>
+ <Left>226</Left>
+ <Right>1725</Right>
+ <Bottom>1069</Bottom>
</NormalPosition>
</WindowPosition>
<MDIClientArea>
<RegID>0</RegID>
<MDITabState>
- <Len>881</Len>
- <Data>01000000040000000100000001000000010000000100000000000000020000000000000001000000010000000000000028000000280000000100000007000000000000000100000042473A5C312E776F726B5C332E4153525C332E5A355C312E646F635C4B31385C424C455F57617463685C636F64655C626C655F73696D706C655F63656E7472616C2E630000000014626C655F73696D706C655F63656E7472616C2E6300000000F7B88600FFFFFFFF47473A5C312E776F726B5C332E4153525C332E5A355C312E646F635C4B31385C424C455F57617463685C636F6D706F6E656E74735C6472697665725C6472697665725F706D752E63000000000C6472697665725F706D752E63000000009CC1B600FFFFFFFF39473A5C312E776F726B5C332E4153525C332E5A355C312E646F635C4B31385C424C455F57617463685C636F64655C70726F6A5F6D61696E2E63000000000B70726F6A5F6D61696E2E6300000000BCA8E100FFFFFFFF49473A5C312E776F726B5C332E4153525C332E5A355C312E646F635C4B31385C424C455F57617463685C636F6D706F6E656E74735C6D6F64756C65735C70617463685C70617463682E63000000000770617463682E6300000000F0A0A100FFFFFFFF42473A5C312E776F726B5C332E4153525C332E5A355C312E646F635C4B31385C424C455F57617463685C6B65696C5C5643393230325C7663393230325F757365722E63000000000D7663393230325F757365722E6300000000BECEA100FFFFFFFF4D473A5C312E776F726B5C332E4153525C332E5A355C312E646F635C4B31385C424C455F57617463685C6B65696C5C5643393230325C7663393230325F6472697665725F746573746D6F64652E6300000000187663393230325F6472697665725F746573746D6F64652E6300000000FFDC7800FFFFFFFF42473A5C312E776F726B5C332E4153525C332E5A355C312E646F635C4B31385C424C455F57617463685C636F64655C626C655F73696D706C655F63656E7472616C2E680000000014626C655F73696D706C655F63656E7472616C2E6800000000D9ADC200FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD5000100000000000000020000009484FFFF4F83FFFFCB88FFFF5185FFFF</Data>
+ <Len>1313</Len>
+ <Data>0100000004000000010000000100000001000000010000000000000002000000000000000100000001000000000000002800000028000000010000000B000000030000000100000042473A5C312E776F726B5C332E4153525C332E5A355C312E646F635C4B31385C424C455F57617463685C6B65696C5C5643393230325C7663393230325F757365722E63000000000D7663393230325F757365722E6300000000BECEA100FFFFFFFF5F473A5C312E776F726B5C332E4153525C332E5A355C312E646F635C4B31385C424C455F57617463685C6B65696C5C534C5F57617463685F5065646F5F4B63616C5F57726973745F536C6565705F537761795F4C5F416C676F726974686D2E680000000031534C5F57617463685F5065646F5F4B63616C5F57726973745F536C6565705F537761795F4C5F416C676F726974686D2E6800000000C5D4F200FFFFFFFF3C473A5C312E776F726B5C332E4153525C332E5A355C312E646F635C4B31385C424C455F57617463685C636F64655C73656E736F725F64726976652E68000000000E73656E736F725F64726976652E6800000000BECEA100FFFFFFFF3C473A5C312E776F726B5C332E4153525C332E5A355C312E646F635C4B31385C424C455F57617463685C636F64655C73656E736F725F64726976652E63000000000E73656E736F725F64726976652E6300000000C5D4F200FFFFFFFF42473A5C312E776F726B5C332E4153525C332E5A355C312E646F635C4B31385C424C455F57617463685C636F64655C626C655F73696D706C655F63656E7472616C2E630000000014626C655F73696D706C655F63656E7472616C2E6300000000F7B88600FFFFFFFF47473A5C312E776F726B5C332E4153525C332E5A355C312E646F635C4B31385C424C455F57617463685C636F6D706F6E656E74735C6472697665725C6472697665725F706D752E63000000000C6472697665725F706D752E63000000009CC1B600FFFFFFFF39473A5C312E776F726B5C332E4153525C332E5A355C312E646F635C4B31385C424C455F57617463685C636F64655C70726F6A5F6D61696E2E63000000000B70726F6A5F6D61696E2E6300000000BCA8E100FFFFFFFF49473A5C312E776F726B5C332E4153525C332E5A355C312E646F635C4B31385C424C455F57617463685C636F6D706F6E656E74735C6D6F64756C65735C70617463685C70617463682E63000000000770617463682E6300000000F0A0A100FFFFFFFF4D473A5C312E776F726B5C332E4153525C332E5A355C312E646F635C4B31385C424C455F57617463685C6B65696C5C5643393230325C7663393230325F6472697665725F746573746D6F64652E6300000000187663393230325F6472697665725F746573746D6F64652E6300000000FFDC7800FFFFFFFF42473A5C312E776F726B5C332E4153525C332E5A355C312E646F635C4B31385C424C455F57617463685C636F64655C626C655F73696D706C655F63656E7472616C2E680000000014626C655F73696D706C655F63656E7472616C2E6800000000C5D4F200FFFFFFFF39473A5C312E776F726B5C332E4153525C332E5A355C312E646F635C4B31385C424C455F57617463685C6B65696C5C626C655F355F302E736374000000000B626C655F355F302E73637400000000D9ADC200FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD5000100000000000000020000007E02000043010000B50600000B030000</Data>
</MDITabState>
</MDIClientArea>
<ViewEx>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
- <Data>54020000E70000005006000075010000</Data>
+ <Data>AD01000087000000A905000015010000</Data>
</RectRecentFloat>
</Window>
<Window>
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
- <Data>00000000630000009001000051020000</Data>
+ <Data>00000000630000009001000017020000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
- <Data>030000006C020000C80500003F030000</Data>
+ <Data>0300000032020000C805000005030000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
- <Data>030000006C020000C80500003F030000</Data>
+ <Data>0300000032020000C805000005030000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
- <Data>030000006C020000C80500003F030000</Data>
+ <Data>0300000032020000C805000005030000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
- <Data>030000006C020000C80500003F030000</Data>
+ <Data>0300000032020000C805000005030000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
- <Data>0000000058030000CB0500006B030000</Data>
+ <Data>000000001E030000CB05000031030000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
</Window>
<DockMan>
<Len>2619</Len>
- <Data>000000000B000000000000000020000000000000FFFFFFFFFFFFFFFF94010000DD00000090050000E1000000000000000100000004000000010000000000000000000000FFFFFFFF06000000CB00000057010000CC000000F08B00005A01000079070000FFFF02000B004354616262656450616E65002000000000000054020000E70000005006000075010000940100004F00000090050000DD0000000000000040280046060000000B446973617373656D626C7900000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFFFC0300004F0000000004000025020000000000000200000004000000010000000000000000000000FFFFFFFF17000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C000001800040000000000000C0040000E700000050060000BD020000000400004F00000090050000250200000000000040410046170000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFF900100004F0000009401000051020000010000000200001004000000010000000000000000000000FFFFFFFF05000000ED0300006D000000C3000000C40000007394000001800010000001000000C0000000E700000050020000E9020000000000004F00000090010000510200000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73000000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7300000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657300000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273000000007394000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000000000000FFFFFFFFFFFFFFFF0000000011020000900500001502000000000000010000000400000001000000000000000000000000000000000000000000000001000000C6000000FFFFFFFF0E0000008F070000930700009407000095070000960700009007000091070000B5010000B8010000B9050000BA050000BB050000BC050000CB09000001800080000000000000C0000000AD020000500600004F030000000000001502000090050000B702000000000000404100460E0000001343616C6C20537461636B202B204C6F63616C73000000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031000000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF084D656D6F7279203100000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFFFFFFFFFF0000000001000000000000000000000001000000FFFFFFFFC802000015020000CC020000B702000000000000020000000400000000000000000000000000000000000000000000000000000002000000C6000000FFFFFFFF8F07000001000000FFFFFFFF8F07000001000000C6000000000000000080000001000000FFFFFFFFFFFFFFFF0000000051020000CB050000550200000100000001000010040000000100000061FEFFFF25010000FFFFFFFF04000000C5000000C7000000B40100007794000001800080000001000000C0000000ED0200008B060000F00300000000000055020000CB050000580300000000000040820056040000000C4275696C64204F757470757401000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657301000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF0742726F77736572000000007794000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000000000000000000</Data>
+ <Data>000000000B000000000000000020000000000000FFFFFFFFFFFFFFFF94010000DD00000090050000E1000000000000000100000004000000010000000000000000000000FFFFFFFF06000000CB00000057010000CC000000F08B00005A01000079070000FFFF02000B004354616262656450616E650020000000000000AD01000087000000A905000015010000940100004F00000090050000DD0000000000000040280046060000000B446973617373656D626C7900000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFFFC0300004F0000000004000025020000000000000200000004000000010000000000000000000000FFFFFFFF17000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C0000018000400000000000001904000087000000A90500005D020000000400004F00000090050000250200000000000040410046170000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFF900100004F0000009401000017020000010000000200001004000000010000000000000000000000FFFFFFFF05000000ED0300006D000000C3000000C400000073940000018000100000010000001900000087000000A901000089020000000000004F00000090010000170200000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73000000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7300000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657300000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273000000007394000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000000000000FFFFFFFFFFFFFFFF0000000011020000900500001502000000000000010000000400000001000000000000000000000000000000000000000000000001000000C6000000FFFFFFFF0E0000008F070000930700009407000095070000960700009007000091070000B5010000B8010000B9050000BA050000BB050000BC050000CB09000001800080000000000000190000004D020000A9050000EF020000000000001502000090050000B702000000000000404100460E0000001343616C6C20537461636B202B204C6F63616C73000000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031000000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF084D656D6F7279203100000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFFFFFFFFFF0000000001000000000000000000000001000000FFFFFFFFC802000015020000CC020000B702000000000000020000000400000000000000000000000000000000000000000000000000000002000000C6000000FFFFFFFF8F07000001000000FFFFFFFF8F07000001000000C6000000000000000080000001000000FFFFFFFFFFFFFFFF0000000017020000CB0500001B0200000100000001000010040000000100000061FEFFFF25010000FFFFFFFF04000000C5000000C7000000B40100007794000001800080000001000000190000008D020000E405000090030000000000001B020000CB0500001E0300000000000040820056040000000C4275696C64204F757470757401000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657301000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF0742726F77736572000000007794000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000000000000000000</Data>
</DockMan>
<ToolBar>
<RegID>59392</RegID>
<Name>File</Name>
<Buttons>
- <Len>2070</Len>
- <Data>00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000004000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000000000C0000000000000000000000000000000001000000010000000180F4B00000000000000D000000000000000000000000000000000100000001000000018036B10000000000000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE803000000000000000000000000000000000000000000000001000000010000009600000002002050000000000D6F735F74696D65725F696E6974960000000000000003000D6F735F74696D65725F696E69740D706D755F6973725F72616D5F430E7379735F74696D65725F696E6974000000000000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018022800000020000001500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000000180C8880000000000001700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E4C010000020001001A0000000F50726F6A6563742057696E646F7773000000000000000000000000010000000100000000000000000000000100000008002880DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002880DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002880E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002880E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000288018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000028800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002880D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002880E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65AC030000</Data>
+ <Len>2181</Len>
+ <Data>00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000004000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000000000C0000000000000000000000000000000001000000010000000180F4B00000000000000D000000000000000000000000000000000100000001000000018036B10000000000000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE803000000000000000000000000000000000000000000000001000000010000009600000002002050000000000D6F735F74696D65725F696E69749600000000000000080018706D755F706F72745F77616B6575705F66756E635F73657404626F6F6C0D464C4153485F50524F54454354156761705F73746172745F6164766572746973696E6718737065616B65725F676174745F6164645F736572766963650D6F735F74696D65725F696E69740D706D755F6973725F72616D5F430E7379735F74696D65725F696E69740000000000000000000000000000000000000000000000000000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018022800000020000001500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000000180C8880000000000001700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E4C010000020001001A0000000F50726F6A6563742057696E646F7773000000000000000000000000010000000100000000000000000000000100000008002880DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002880DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002880E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002880E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000288018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000028800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002880D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002880E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65AC030000</Data>
</Buttons>
<OriginalItems>
<Len>1423</Len>
<Name>Debug</Name>
<Buttons>
<Len>2220</Len>
- <Data>00200000000000001900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000000002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000000002A00000000000000000000000000000000010000000100000001801C800000000000002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000000000002D0000000000000000000000000000000001000000010000000180F07F0000000000002E0000000000000000000000000000000001000000010000000180E8880000000000003700000000000000000000000000000000010000000100000001803B010000000000002F0000000000000000000000000000000001000000010000000180BB8A00000000000030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000000000000310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000002001380D88B000000000000310000000757617463682031000000000000000000000000010000000100000000000000000000000100000000001380D98B0000000000003100000007576174636820320000000000000000000000000100000001000000000000000000000001000000000013800F01000000000000320000000E4D656D6F72792057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000084D656D6F72792031000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000084D656D6F72792032000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000084D656D6F72792033000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000084D656D6F727920340000000000000000000000000100000001000000000000000000000001000000000013801001000000000000330000000E53657269616C2057696E646F77730000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000755415254202331000000000000000000000000010000000100000000000000000000000100000000001380940700000000000033000000075541525420233200000000000000000000000001000000010000000000000000000000010000000000138095070000000000003300000007554152542023330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000000E49544D2F525441205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000000000003400000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380658A000000000000340000000E4C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E00000014506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000D436F646520436F76657261676500000000000000000000000001000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720100000000000000010000000000000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720100000000000000010000000000000001000000000000000000000001000000000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000138001890000000000003600000007546F6F6C626F7800000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730100000000000000010000000000000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000010000000000000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F72010000000000000001000000000000000100000000000000000000000100000000000000000005446562756764020000</Data>
+ <Data>00200000000000001900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000000002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000000002A00000000000000000000000000000000010000000100000001801C800000000000002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000000000002D0000000000000000000000000000000001000000010000000180F07F0000000000002E0000000000000000000000000000000001000000010000000180E8880000000000003700000000000000000000000000000000010000000100000001803B010000000000002F0000000000000000000000000000000001000000010000000180BB8A00000000000030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000000000000310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000002001380D88B000000000000310000000757617463682031000000000000000000000000010000000100000000000000000000000100000000001380D98B0000000000003100000007576174636820320000000000000000000000000100000001000000000000000000000001000000000013800F01000000000000320000000E4D656D6F72792057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000084D656D6F72792031000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000084D656D6F72792032000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000084D656D6F72792033000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000084D656D6F727920340000000000000000000000000100000001000000000000000000000001000000000013801001000000000000330000000E53657269616C2057696E646F77730000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000755415254202331000000000000000000000000010000000100000000000000000000000100000000001380940700000000000033000000075541525420233200000000000000000000000001000000010000000000000000000000010000000000138095070000000000003300000007554152542023330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000000E49544D2F525441205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000000000003400000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380658A000000000000340000000E4C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E00000014506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000D436F646520436F76657261676500000000000000000000000001000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720000000000000000010000000000000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720000000000000000010000000000000001000000000000000000000001000000000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000138001890000000000003600000007546F6F6C626F7800000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730000000000000000010000000000000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000010000000000000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F72000000000000000001000000000000000100000000000000000000000100000000000000000005446562756764020000</Data>
</Buttons>
<OriginalItems>
<Len>898</Len>
<ActiveMDIGroup>0</ActiveMDIGroup>
<MDIGroup>
<Size>100</Size>
- <ActiveTab>0</ActiveTab>
+ <ActiveTab>3</ActiveTab>
<Doc>
- <Name>..\code\ble_simple_central.c</Name>
- <ColumnNumber>55</ColumnNumber>
- <TopLine>13</TopLine>
+ <Name>.\VC9202\vc9202_user.c</Name>
+ <ColumnNumber>0</ColumnNumber>
+ <TopLine>344</TopLine>
+ <CurrentLine>345</CurrentLine>
+ <Folding>1</Folding>
+ <ContractedFolders></ContractedFolders>
+ <PaneID>0</PaneID>
+ </Doc>
+ <Doc>
+ <Name>SL_Watch_Pedo_Kcal_Wrist_Sleep_Sway_L_Algorithm.h</Name>
+ <ColumnNumber>0</ColumnNumber>
+ <TopLine>64</TopLine>
+ <CurrentLine>78</CurrentLine>
+ <Folding>1</Folding>
+ <ContractedFolders></ContractedFolders>
+ <PaneID>0</PaneID>
+ </Doc>
+ <Doc>
+ <Name>..\code\sensor_drive.h</Name>
+ <ColumnNumber>0</ColumnNumber>
+ <TopLine>14</TopLine>
<CurrentLine>36</CurrentLine>
<Folding>1</Folding>
<ContractedFolders></ContractedFolders>
<PaneID>0</PaneID>
</Doc>
+ <Doc>
+ <Name>..\code\sensor_drive.c</Name>
+ <ColumnNumber>46</ColumnNumber>
+ <TopLine>768</TopLine>
+ <CurrentLine>790</CurrentLine>
+ <Folding>1</Folding>
+ <ContractedFolders></ContractedFolders>
+ <PaneID>0</PaneID>
+ </Doc>
+ <Doc>
+ <Name>..\code\ble_simple_central.c</Name>
+ <ColumnNumber>17</ColumnNumber>
+ <TopLine>287</TopLine>
+ <CurrentLine>294</CurrentLine>
+ <Folding>1</Folding>
+ <ContractedFolders></ContractedFolders>
+ <PaneID>0</PaneID>
+ </Doc>
<Doc>
<Name>..\components\driver\driver_pmu.c</Name>
<ColumnNumber>53</ColumnNumber>
- <TopLine>909</TopLine>
+ <TopLine>910</TopLine>
<CurrentLine>936</CurrentLine>
<Folding>1</Folding>
<ContractedFolders></ContractedFolders>
</Doc>
<Doc>
<Name>..\code\proj_main.c</Name>
- <ColumnNumber>63</ColumnNumber>
- <TopLine>136</TopLine>
- <CurrentLine>162</CurrentLine>
+ <ColumnNumber>11</ColumnNumber>
+ <TopLine>260</TopLine>
+ <CurrentLine>261</CurrentLine>
<Folding>1</Folding>
<ContractedFolders></ContractedFolders>
<PaneID>0</PaneID>
<Doc>
<Name>..\components\modules\patch\patch.c</Name>
<ColumnNumber>0</ColumnNumber>
- <TopLine>273</TopLine>
+ <TopLine>274</TopLine>
<CurrentLine>286</CurrentLine>
<Folding>1</Folding>
<ContractedFolders></ContractedFolders>
<PaneID>0</PaneID>
</Doc>
- <Doc>
- <Name>.\VC9202\vc9202_user.c</Name>
- <ColumnNumber>36</ColumnNumber>
- <TopLine>205</TopLine>
- <CurrentLine>206</CurrentLine>
- <Folding>1</Folding>
- <ContractedFolders></ContractedFolders>
- <PaneID>0</PaneID>
- </Doc>
<Doc>
<Name>.\VC9202\vc9202_driver_testmode.c</Name>
<ColumnNumber>28</ColumnNumber>
- <TopLine>19</TopLine>
+ <TopLine>20</TopLine>
<CurrentLine>45</CurrentLine>
<Folding>1</Folding>
<ContractedFolders></ContractedFolders>
<ContractedFolders></ContractedFolders>
<PaneID>0</PaneID>
</Doc>
+ <Doc>
+ <Name>G:\1.work\3.ASR\3.Z5\1.doc\K18\BLE_Watch\keil\ble_5_0.sct</Name>
+ <ColumnNumber>0</ColumnNumber>
+ <TopLine>13</TopLine>
+ <CurrentLine>36</CurrentLine>
+ <Folding>1</Folding>
+ <ContractedFolders></ContractedFolders>
+ <PaneID>0</PaneID>
+ </Doc>
</MDIGroup>
</MDIGroups>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
+ <File>
+ <GroupNumber>1</GroupNumber>
+ <FileNumber>8</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <Focus>0</Focus>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>..\components\ble\profiles\ble_ota\ota_service.c</PathWithFileName>
+ <FilenameWithoutPath>ota_service.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>1</GroupNumber>
+ <FileNumber>9</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <Focus>0</Focus>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>..\components\ble\profiles\ble_ota\ota.c</PathWithFileName>
+ <FilenameWithoutPath>ota.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
</Group>
<Group>
<RteFlg>0</RteFlg>
<File>
<GroupNumber>2</GroupNumber>
- <FileNumber>8</FileNumber>
+ <FileNumber>10</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<Focus>1</Focus>
</File>
<File>
<GroupNumber>2</GroupNumber>
- <FileNumber>9</FileNumber>
+ <FileNumber>11</FileNumber>
<FileType>2</FileType>
<tvExp>0</tvExp>
<Focus>1</Focus>
<RteFlg>0</RteFlg>
<File>
<GroupNumber>3</GroupNumber>
- <FileNumber>10</FileNumber>
+ <FileNumber>12</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<Focus>1</Focus>
<RteFlg>0</RteFlg>
<File>
<GroupNumber>4</GroupNumber>
- <FileNumber>11</FileNumber>
+ <FileNumber>13</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<Focus>1</Focus>
</File>
<File>
<GroupNumber>4</GroupNumber>
- <FileNumber>12</FileNumber>
+ <FileNumber>14</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<Focus>1</Focus>
<RteFlg>0</RteFlg>
<File>
<GroupNumber>5</GroupNumber>
- <FileNumber>13</FileNumber>
+ <FileNumber>15</FileNumber>
<FileType>4</FileType>
<tvExp>0</tvExp>
<Focus>1</Focus>
</File>
<File>
<GroupNumber>5</GroupNumber>
- <FileNumber>14</FileNumber>
+ <FileNumber>16</FileNumber>
<FileType>4</FileType>
<tvExp>0</tvExp>
<Focus>1</Focus>
<RteFlg>0</RteFlg>
<File>
<GroupNumber>6</GroupNumber>
- <FileNumber>15</FileNumber>
+ <FileNumber>17</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<Focus>1</Focus>
</File>
<File>
<GroupNumber>6</GroupNumber>
- <FileNumber>16</FileNumber>
+ <FileNumber>18</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<Focus>1</Focus>
</File>
<File>
<GroupNumber>6</GroupNumber>
- <FileNumber>17</FileNumber>
+ <FileNumber>19</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<Focus>1</Focus>
</File>
<File>
<GroupNumber>6</GroupNumber>
- <FileNumber>18</FileNumber>
+ <FileNumber>20</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<Focus>1</Focus>
</File>
<File>
<GroupNumber>6</GroupNumber>
- <FileNumber>19</FileNumber>
+ <FileNumber>21</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<Focus>1</Focus>
</File>
<File>
<GroupNumber>6</GroupNumber>
- <FileNumber>20</FileNumber>
+ <FileNumber>22</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<Focus>1</Focus>
</File>
<File>
<GroupNumber>6</GroupNumber>
- <FileNumber>21</FileNumber>
+ <FileNumber>23</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<Focus>1</Focus>
</File>
<File>
<GroupNumber>6</GroupNumber>
- <FileNumber>22</FileNumber>
+ <FileNumber>24</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<Focus>1</Focus>
</File>
<File>
<GroupNumber>6</GroupNumber>
- <FileNumber>23</FileNumber>
+ <FileNumber>25</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<Focus>1</Focus>
</File>
<File>
<GroupNumber>6</GroupNumber>
- <FileNumber>24</FileNumber>
+ <FileNumber>26</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<Focus>1</Focus>
</File>
<File>
<GroupNumber>6</GroupNumber>
- <FileNumber>25</FileNumber>
+ <FileNumber>27</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<Focus>1</Focus>
</File>
<File>
<GroupNumber>6</GroupNumber>
- <FileNumber>26</FileNumber>
+ <FileNumber>28</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<Focus>1</Focus>
<RteFlg>0</RteFlg>
<File>
<GroupNumber>7</GroupNumber>
- <FileNumber>27</FileNumber>
+ <FileNumber>29</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<Focus>1</Focus>
</File>
<File>
<GroupNumber>7</GroupNumber>
- <FileNumber>28</FileNumber>
+ <FileNumber>30</FileNumber>
<FileType>5</FileType>
<tvExp>0</tvExp>
<Focus>1</Focus>
<RteFlg>0</RteFlg>
<File>
<GroupNumber>8</GroupNumber>
- <FileNumber>29</FileNumber>
+ <FileNumber>31</FileNumber>
<FileType>4</FileType>
<tvExp>0</tvExp>
<Focus>0</Focus>
</File>
<File>
<GroupNumber>8</GroupNumber>
- <FileNumber>30</FileNumber>
+ <FileNumber>32</FileNumber>
<FileType>4</FileType>
<tvExp>0</tvExp>
<Focus>0</Focus>
</File>
<File>
<GroupNumber>8</GroupNumber>
- <FileNumber>31</FileNumber>
+ <FileNumber>33</FileNumber>
<FileType>4</FileType>
<tvExp>0</tvExp>
<Focus>0</Focus>
</File>
<File>
<GroupNumber>8</GroupNumber>
- <FileNumber>32</FileNumber>
+ <FileNumber>34</FileNumber>
<FileType>4</FileType>
<tvExp>0</tvExp>
<Focus>0</Focus>
</File>
<File>
<GroupNumber>8</GroupNumber>
- <FileNumber>33</FileNumber>
+ <FileNumber>35</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<Focus>0</Focus>
</File>
<File>
<GroupNumber>8</GroupNumber>
- <FileNumber>34</FileNumber>
+ <FileNumber>36</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<Focus>0</Focus>
</File>
<File>
<GroupNumber>8</GroupNumber>
- <FileNumber>35</FileNumber>
+ <FileNumber>37</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<Focus>0</Focus>
</File>
<File>
<GroupNumber>8</GroupNumber>
- <FileNumber>36</FileNumber>
+ <FileNumber>38</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<Focus>0</Focus>
</File>
<File>
<GroupNumber>8</GroupNumber>
- <FileNumber>37</FileNumber>
+ <FileNumber>39</FileNumber>
<FileType>4</FileType>
<tvExp>0</tvExp>
<Focus>0</Focus>
<Ro3Chk>0</Ro3Chk>
<Ir1Chk>0</Ir1Chk>
<Ir2Chk>0</Ir2Chk>
- <Ra1Chk>0</Ra1Chk>
+ <Ra1Chk>1</Ra1Chk>
<Ra2Chk>0</Ra2Chk>
<Ra3Chk>0</Ra3Chk>
<Im1Chk>0</Im1Chk>
</OCR_RVCT5>
<OCR_RVCT6>
<Type>0</Type>
- <StartAddress>0x0</StartAddress>
- <Size>0x0</Size>
+ <StartAddress>0x2000000</StartAddress>
+ <Size>0x7800</Size>
</OCR_RVCT6>
<OCR_RVCT7>
<Type>0</Type>
</ArmAdsMisc>
<Cads>
<interw>1</interw>
- <Optim>1</Optim>
+ <Optim>4</Optim>
<oTime>0</oTime>
<SplitLS>0</SplitLS>
<OneElfS>1</OneElfS>
<FileType>1</FileType>
<FilePath>..\code\sensor_drive.c</FilePath>
</File>
+ <File>
+ <FileName>ota_service.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\components\ble\profiles\ble_ota\ota_service.c</FilePath>
+ </File>
+ <File>
+ <FileName>ota.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\components\ble\profiles\ble_ota\ota.c</FilePath>
+ </File>
</Files>
</Group>
<Group>
}
uint8_t bp_data[49];
-void read_BP_data(void)
+//·µ»Ø1ΪÕý³£Êý¾Ý£¬·µ»Ø0ÎªÖØ¸´Êý¾Ý£¬Ð趪Æú
+uint8_t read_BP_data(void)
{
+ uint8_t bp_data_tmp[49] = {0};
IIC1_Start_I2c();
IIC1_Write_One_Byte(0x0B);//дÈëÒª¶ÁµÄÆ÷¼þµØÖ·
if(!IIC1_Read_Ack())//¶ÁÓ¦´ðλ
}
for(uint8_t i = 0;i < 48;i++)
{
- bp_data[i] = IIC1_Read_One_Byte();
+ bp_data_tmp[i] = IIC1_Read_One_Byte();
// I2c_Delay(DELAY_TIME4);
if(i==47)
{
else
IIC1_Send_Ack();
}
- #if 0
- co_printf("BP_DATA : ");
- for(uint8_t i=0;i<48;i++)
+ if(memcmp(bp_data_tmp,bp_data) == 0)//ÖØ¸´Êý¾Ý²»Òª
{
- co_printf("%02X ",bp_data[i]);
+ return 0;
+ }else
+ {
+ memcpy(bp_data,bp_data_tmp,sizeof(bp_data));
+ #if 1
+ co_printf("BP_DATA : ");
+ for(uint8_t i=0;i<48;i++)
+ {
+ co_printf("%02X ",bp_data[i]);
+ }
+ co_printf("\n");
+ #endif
+ return 1;
}
- co_printf("\n");
- #endif
+
}
uint8_t IIC1_Read_Ack(void);
void IIC1_Send_Ack(void);
uint8_t IIC1_Read_One_Byte(void);
-void IIC1_read_BP_data(void);
+uint8_t read_BP_data(void);
void IIC0_Write_One_Byte(uint8_t data);
void IIC0_Start_I2c(void);
uint8_t IIC0_Read_Ack(void);
void IIC0_Send_Ack(void);
uint8_t IIC0_Read_One_Byte(void);
-void IIC0_read_BP_data(void);
+
#endif
#define SL_SC7A20_VERSION_VALUE (unsigned char)0x11
#define SL_SC7A20E_VERSION_VALUE (unsigned char)0x26
-typedef enum {FALSE = 0,TRUE = !FALSE} bool;
+typedef enum {FALSE = 0,TRUE = !FALSE} BOOL;
/********客户需要进行的IIC接口封包函数****************/
-//extern unsigned char SL_SC7A20_I2c_Spi_Write(bool sl_spi_iic,unsigned char reg, unsigned char dat);
-//extern unsigned char SL_SC7A20_I2c_Spi_Read(bool sl_spi_iic,unsigned char reg, unsigned char len, unsigned char *buf);
+//extern unsigned char SL_SC7A20_I2c_Spi_Write(BOOL sl_spi_iic,unsigned char reg, unsigned char dat);
+//extern unsigned char SL_SC7A20_I2c_Spi_Read(BOOL sl_spi_iic,unsigned char reg, unsigned char len, unsigned char *buf);
/**SL_SC7A20_I2c_Spi_Write 函数中, sl_spi_iic:0=spi 1=i2c Reg:寄存器地址 dat:寄存器的配置值*******************/
/**SL_SC7A20_I2c_Spi_Write 函数 是一个单次写的函数*******************************************************************/
/***SL_SC7A20_I2c_Spi_Read 函数中, sl_spi_iic:0=spi 1=i2c Reg 同上,len:读取数据长度,buf:存储数据首地址(指针)***/
/***SL_SC7A20_I2c_Spi_Read 函数 是可以进行单次读或多次连续读取的函数*************************************************/
/*************驱动初始化函数**************/
-signed char SL_SC7A20_Driver_Init(bool Sl_spi_iic_init,unsigned char Sl_pull_up_mode,bool sl_addr_auto);
+signed char SL_SC7A20_Driver_Init(BOOL Sl_spi_iic_init,unsigned char Sl_pull_up_mode,BOOL sl_addr_auto);
/***输入参数:1,Sl_spi_iic_init:0-1***2,PULL_UP_MODE:0x00 0x08 0x04 0x0c********/
/****Sl_spi_iic_init=0:SPI MODE, Sl_pull_up_mode config failed****************/
/****Sl_spi_iic_init=1:IIC MODE***********************************************/
/****说明:该函数需要定时执行,从而保证算法执行到位**/
/***************执行算法获取计步结果***************/
-unsigned int SL_Watch_Kcal_Pedo_Algo(bool sl_music_motor_en);
+unsigned int SL_Watch_Kcal_Pedo_Algo(BOOL sl_music_motor_en);
/***sl_music_motor_en=0: 马达电机和音乐功能未打开**/
/***sl_music_motor_en=1: 马达电机和音乐功能已打开**/
/**************获取当天的当前计步值****************/
/*************输出数据为:计步值(步)***************/
/***************获取三轴原始数据***************/
-unsigned char SL_SC7A20_GET_FIFO_Buf(signed short *sl_x_buf,signed short *sl_y_buf,signed short *sl_z_buf,bool filter_en);
+unsigned char SL_SC7A20_GET_FIFO_Buf(signed short *sl_x_buf,signed short *sl_y_buf,signed short *sl_z_buf,BOOL filter_en);
/****************执行算法后执行该命令**********/
/**x_buf y_buf z_buf : 长度32的数组首地址****/
/**filter_en:0 低通滤波禁止 1:低通滤波使能***/
/***sl_xyz:3 算法决定**************/
/*设置运动检测幅度阈值和时间阈值****/
-void SL_PEDO_INT_SET(unsigned char V_TH,unsigned char T_TH,bool INT_EN);
+void SL_PEDO_INT_SET(unsigned char V_TH,unsigned char T_TH,BOOL INT_EN);
/***V_TH:0 0-127************************************/
/***T_TH:1 0-127************************************/
/***INT_EN:0 关闭中断功能,1,打开中断状态监测功能***/
/***USE AOI2 INT*************************************/
/*设置运动状态读取******************/
-bool SL_INT_STATUS_READ(void);
+BOOL SL_INT_STATUS_READ(void);
/*0: 没有运动*********************/
/*1: 有运动***********************/
/*关闭中断功能情况下,一直输出1*****/
/***********Power down 函数**********/
/********不使用该设备情况下**********/
/****如需重启,使用驱动初始化函数****/
-bool SL_SC7A20_Power_Down(void);
+BOOL SL_SC7A20_Power_Down(void);
/*************输入参数:无************/
/**********返回参数情况说明**********/
/**return 1: Power Down Success*****/
/*********传感器的工作频率设置***********/
-void SC7A20_ODR_SET(bool sl_odr);//10 50/25
+void SC7A20_ODR_SET(BOOL sl_odr);//10 50/25
/**sl_odr:0 10Hz(SC7A20E) 25Hz(SC7A20)***/
/**sl_odr:1 25Hz(SC7A20E) 50Hz(SC7A20)***/
/***************1:in sleep***********************/
/**************************翻转功能************************/
-bool SL_Get_Clock_Status(bool open_close);
+BOOL SL_Get_Clock_Status(BOOL open_close);
/***********输入参数:sensor_pos***********/
/****sensor_pos:1 open 检测是否要关闭时输入 1*************/
/****sensor_pos:0 close 关闭闹铃时时 输入 0*************/
/**************************摇晃功能************************/
-bool SL_Get_Phone_Answer_Status(unsigned char Sway_Degree,unsigned char Sway_Num);
+BOOL SL_Get_Phone_Answer_Status(unsigned char Sway_Degree,unsigned char Sway_Num);
/***********输入参数:摇晃等级0--10 摇晃数量0--10***********************/
/***摇晃等级:设置值越小,需要摇晃的幅度越小,越容易触发接听动作*********/
/***摇晃数量:设置值越小,需要摇晃的次数越少,越容易触发接听动作*********/
/************加测项目客户端测试***********/
/***初始化的时候调用用于判断FIFO是否正常**/
-bool SL_SC7A20_FIFO_TEST(void);
+BOOL SL_SC7A20_FIFO_TEST(void);
/*************输入参数:无*****************/
/*************返回数据情况如下************/
/**return :1 FIFO 异常*******************/
/*****加测项目客户端测试 校准XY零漂*******/
-bool SL_SC7A20_CAL_FUN(unsigned char *sl_fifo_num,signed char *sl_xy_cal);
+BOOL SL_SC7A20_CAL_FUN(unsigned char *sl_fifo_num,signed char *sl_xy_cal);
/*************输入参数:2*****************************/
/***sl_fifo_num[0]:控制FIFO延时,使得FIFO长度为12****/
/***sl_xy_cal[0]:校准完成时,输出X轴的校准值,需保存**/
{
unsigned short int clk_div = 0x0000;
unsigned char fifo_div = 0;
- unsigned char reg_cfg[17] = {0x00, 0x1F, 0x8A, 0x00, 0x03, 0x1F, 0x00, 0x00, 0x80, 0x00, 0x57, 0x57, 0x07, 0x16, 0x56, 0x16, 0x00};
+ unsigned char reg_cfg[17] = {0x00, 0x7F, 0x8A, 0x00, 0x03, 0x1F, 0x00, 0x00, 0x80, 0x00, 0x57, 0x57, 0x07, 0x16, 0x56, 0x16, 0x00};
unsigned char reg_new = (1 << 3);
unsigned char reg_bio_cfg[2] = {0x00, 0xA2};
/* 设置中断触发方式 0上升沿 1下降沿 */
#include "sensor_drive.h"
#include "yyl_pfev01.h"
#include "driver_gpio.h"
+#include "SL_Watch_Pedo_Kcal_Wrist_Sleep_Sway_L_Algorithm.h"
static WorkModeTypeDef work_mode = WORK_MODE_NONE;
AlgoCalcResultsTypeDef vc9202_alg_results = {0};
{
ir_PPG = (float)pdata->ppg_data[i*2];
red_PPG = (float)pdata->ppg_data[i*2+1];
+ //co_printf("alg_calculate_spo2_handler1");
ret_spo2 = spo2Algo( red_PPG, ir_PPG,1 );
sport_flag = vcSportMotionCalculate( pgsensor->gsensor_x_axis[i], pgsensor->gsensor_y_axis[i], pgsensor->gsensor_z_axis[i] );
if ( (-1!=ret_spo2)&&(!sport_flag))
ppg_size = sizeof(gsensor_data.gsensor_x_axis)/sizeof(int);
co_printf("ppg_size be adjusted to %d!! \n",ppg_size);
}
- //co_printf(" interrupt!! \n");
+ co_printf(" interrupt ppg_size:%d!! \n",ppg_size);
switch ( work_mode )
{
case WORK_MODE_HR:
yyl_in_data_len++;
}
}
+
//co_printf(" !\n");
+ //co_printf("WORK_MODE_HRV4 yyl_in_data_len:%d\n",yyl_in_data_len);
}
else
-;#<FEEDBACK># ARM Linker, 5050106: Last Updated: Thu Feb 01 14:56:04 2024
+;#<FEEDBACK># ARM Linker, 5050106: Last Updated: Sat Feb 03 10:38:15 2024
;VERSION 0.2
;FILE acpower_add_doublefre.o
acPower_add_doublefre_init <= USED 0
;FILE app_proj_event.o
;FILE app_sec.o
ble_sec_clr_fixed_ltk <= USED 0
+ble_sec_nc_rsp <= USED 0
ble_sec_remove_bond <= USED 0
ble_sec_send_paring_password <= USED 0
ble_sec_send_security_req <= USED 0
ble_sec_set_fixed_ltk <= USED 0
bond_info_add <= USED 0
+gap_pairing_rsp <= USED 0
gap_security_check_rand_ediv <= USED 0
;FILE app_task.o
;FILE attc.o
pmu_enable_charge <= USED 0
pmu_get_gpio_port_value <= USED 0
pmu_get_gpio_value <= USED 0
-pmu_port_wakeup_func_set <= USED 0
pmu_set_gpio_value <= USED 0
pmu_set_led1_as_pwm <= USED 0
pmu_set_led1_value <= USED 0
pmu_set_led2_value <= USED 0
pmu_set_lp_clk_src <= USED 0
pmu_set_pin_dir <= USED 0
-pmu_set_pin_pull <= USED 0
pmu_set_pin_to_CPU <= USED 0
pmu_set_pin_to_PMU <= USED 0
pmu_set_port_mux <= USED 0
__asm___7_entry_c_a06f3641____RRX <= USED 0
check_and_set_rand_seed <= USED 0
get_SDK_compile_date_time <= USED 0
+pmu_recalib_rc <= USED 0
;FILE f_sqrt.o
;FILE flash.o
__asm___7_flash_c_48468d59____REV16 <= USED 0
gap_get_link_rssi <= USED 0
gap_get_link_version <= USED 0
gap_sec_clr_fixed_ltk <= USED 0
+gap_sec_nc_rsp <= USED 0
gap_sec_set_fixed_ltk <= USED 0
gap_security_get_bond_req <= USED 0
gap_security_req <= USED 0
gatt_client_write_req <= USED 0
gatt_client_write_req_with_handle <= USED 0
gatt_delete_svc <= USED 0
+gatt_delete_svc_internal <= USED 0
+gatt_delete_svc_list <= USED 0
+gatt_get_client_read_handle <= USED 0
+gatt_get_notification_handle <= USED 0
gatt_get_svc_hdl <= USED 0
gatt_get_task_no_from_prf_id <= USED 0
gatt_indication <= USED 0
gatt_svc_changed_req <= USED 0
;FILE gattc.o
gattc_get_op_seq_num <= USED 0
+;FILE gattc_task.o
+gattc_trans_timeout_ctrl <= USED 0
;FILE gattm.o
;FILE ha_base64.o
base64_self_test <= USED 0
;FILE l2cm.o
;FILE lib_hr.o
amplitudevalue <= USED 0
-bubble <= USED 0
-change_sampling_rate_simplified <= USED 0
compute_bp_feature <= USED 0
convolution <= USED 0
corrcoef <= USED 0
get_hr <= USED 0
get_pi <= USED 0
get_sleep_time <= USED 0
-ha_ismoving <= USED 0
-ha_iswarable <= USED 0
heart_rate <= USED 0
-init_algorithm <= USED 0
init_sleep_data <= USED 0
init_sleep_time <= USED 0
-insertsort <= USED 0
is_good_ppg <= USED 0
is_kpt <= USED 0
isperiodic <= USED 0
isppgsignal <= USED 0
load_bp_model <= USED 0
load_gen_info <= USED 0
-max_simplified <= USED 0
-mean <= USED 0
-meanfilter <= USED 0
-medianfilter <= USED 0
merge_sample_feature <= USED 0
moving_value <= USED 0
periodic_value <= USED 0
periodicvalue <= USED 0
-ppg_correction <= USED 0
-ppg_fearure_extractor_simplified <= USED 0
ppg_hrv_midvalue <= USED 0
ppg_keypoints_extractor_simplified <= USED 0
-ppg_midvalue <= USED 0
quicksort <= USED 0
version_get_number <= USED 0
version_get_string <= USED 0
os_task_delete <= USED 0
os_task_process_saved_msg <= USED 0
os_user_loop_event_clear <= USED 0
-os_user_loop_event_set <= USED 0
;FILE os_timer.o
;FILE ota.o
__asm___5_ota_c_56ada2da____REV16 <= USED 0
__asm___7_patch_c_487891fc____REV16 <= USED 0
__asm___7_patch_c_487891fc____REVSH <= USED 0
__asm___7_patch_c_487891fc____RRX <= USED 0
+;FILE patch_lld_adv.o
+lld_adv_pkt_rx_patch <= USED 0
+rssi_threshold_set <= USED 0
;FILE patch_no_md_bit.o
dbg_log <= USED 0
gatt_get_tx_buf_nb <= USED 0
__asm___10_patch_rf_c_e73c1e89____REV16 <= USED 0
__asm___10_patch_rf_c_e73c1e89____REVSH <= USED 0
__asm___10_patch_rf_c_e73c1e89____RRX <= USED 0
+lc_update_check <= USED 0
+lld_con_tx_remove_duplicate <= USED 0
+patch_fast_scan_set <= USED 0
system_set_conn_sleep_max_during <= USED 0
+test_start <= USED 0
;FILE patch_rtos.o
__asm___12_patch_rtos_c_ea38be2b____REV16 <= USED 0
__asm___12_patch_rtos_c_ea38be2b____REVSH <= USED 0
__asm___11_proj_main_c_571a19f4____RRX <= USED 0
;FILE rwble_hl.o
;FILE sensor_drive.o
-EMO_test <= USED 0
-HRV_test <= USED 0
-YYL_test <= USED 0
-__asm___14_sensor_drive_c_eae9c459____REV16 <= USED 0
-__asm___14_sensor_drive_c_eae9c459____REVSH <= USED 0
-__asm___14_sensor_drive_c_eae9c459____RRX <= USED 0
+__asm___14_sensor_drive_c_dd6d544e____REV16 <= USED 0
+__asm___14_sensor_drive_c_dd6d544e____REVSH <= USED 0
+__asm___14_sensor_drive_c_dd6d544e____RRX <= USED 0
;FILE sha256.o
sha256_final <= USED 0
sha256_gatt_gen_auth_value <= USED 0
spo2_algo_content_init <= USED 0
spo2version_info <= USED 0
;FILE sys_utils.o
+Smoothing_Filter_destroy <= USED 0
+Smoothing_Filter_handle <= USED 0
+Smoothing_Filter_init <= USED 0
+Smoothing_Filter_reset <= USED 0
__asm___11_sys_utils_c_415ab936____REV16 <= USED 0
__asm___11_sys_utils_c_415ab936____REVSH <= USED 0
__asm___11_sys_utils_c_415ab936____RRX <= USED 0
hex4bit_to_caps_char <= USED 0
hex4bit_to_char <= USED 0
hex_arr_to_str <= USED 0
+kalmanFilter <= USED 0
retry_handshake <= USED 0
str_to_hex_arr <= USED 0
str_to_val <= USED 0
system_get_curr_time <= USED 0
+system_get_spare_exmem <= USED 0
system_optimize_power_consumption_set <= USED 0
system_power_off <= USED 0
system_prevent_sleep_clear <= USED 0
system_sleep_enable <= USED 0
val_to_str <= USED 0
;FILE uart.o
-__asm___6_uart_c_02229386____REV16 <= USED 0
-__asm___6_uart_c_02229386____REVSH <= USED 0
-__asm___6_uart_c_02229386____RRX <= USED 0
-get_timestamp <= USED 0
-uart0_send <= USED 0
+__asm___6_uart_c_57f9c24c____REV16 <= USED 0
+__asm___6_uart_c_57f9c24c____REVSH <= USED 0
+__asm___6_uart_c_57f9c24c____RRX <= USED 0
;FILE user_bond_manage.o
ble_bond_addr_check_result <= USED 0
ble_bond_clr_all_info <= USED 0
;FILE vcsportmotionalgo.o
version_info_sportmotion <= USED 0
;FILE yyl_pfev01.o
-YYL_Init_PFE <= USED 0
-YYL_Output_PFE <= USED 0
YYL_Output_PFE_Array_Clear <= USED 0
YYL_PFE_Get_Current_Version <= USED 0
#include"uart.h"
#include "lib_hr.h"
#include "sensor_drive.h"
-char send_bp_data_flag;//血压数据标致位
-char send_hrs_data_flag;//心率数据标标致位
-char send_hrv_data_flag;//心率变异性标致位
-char send_spo2_data_flag;//血氧数值标致位
-char send_yyl_data_flag;//中医标致位
-char send_emo_data_flag;//情绪标致位
-char send_temp_data_flag;//温度标致位
-char send_gs_data_flag;//gsensor数据标致位
-char send_sleep_data_flag;//sleep数据标致位
-char send_step_data_flag;//step数据标致位
-char send_wear_data_flag;//wear数据标致位
+char send_bp_data_flag = 0;//血压数据标致位
+char send_hrs_data_flag= 0;//心率数据标标致位
+char send_hrv_data_flag= 0;//心率变异性标致位
+char send_spo2_data_flag= 0;//血氧数值标致位
+char send_yyl_data_flag= 0;//中医标致位
+char send_emo_data_flag= 0;//情绪标致位
+char send_temp_data_flag= 0;//温度标致位
+char send_gs_data_flag= 0;//gsensor数据标致位
+char send_sleep_data_flag= 0;//sleep数据标致位
+char send_step_data_flag= 0;//step数据标致位
+char send_wear_data_flag= 0;//wear数据标致位
uint8_t uart0_rivce_data[UART_READ_MAX];
int uart0_data_len =0;
unsigned int timestamp_d = 0; //秒的时间戳,需要配合RTC使用
{
return timestamp_d;
}
-uint8_t uart0_work_mode_ack[]="{\"cmd\":\"1\",\"work_mode\":\"1\"}\r\n";//1:打开工作模式成功 0:打开工作模式失败
+
extern char is_HA_activate ;
return 0;
}
}
-//////////////////////串口处理///////////////////////
-void uart0_send()
-{
- uart0_write_for_hci(uart0_work_mode_ack, sizeof(uart0_work_mode_ack)-1, NULL, NULL);
-}
+
/***************************模块接收处理**********************************/
char uart0_flag = 0;
/*********************************************************************
}
}
-unsigned int uart0_timer = 0;
+unsigned int uart0_timer = 0;
+
void uart0_receive(void)
{
+
if(uart0_timer > 100)//100秒没数据,关闭测试
{
uart0_timer = 0;
- send_bp_data_flag=0;//发送血压数据标致位
- send_hrs_data_flag=0;//发送心率数据标标致位
- send_hrv_data_flag=0;//发送心率变异性标致位
- send_spo2_data_flag=0;//发送血氧数值标致位
- send_temp_data_flag=0;//发送温度标致位
- send_gs_data_flag=0;//发送gsensor数据标致位
- send_sleep_data_flag=0;//发送sleep数据标致位
- send_step_data_flag=0;//发送step数据标致位
- send_wear_data_flag=0;//发送wear数据标致位
+ sensor_close();
co_printf("\nHost no response!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n");
}
if(uart0_flag == 0)
send_wear_data_flag=0;//发送wear数据标致位
if(strstr(uart0_rivce_data,"\"bp\""))//bp:血压模式
{
- uart0_write_for_hci(uart0_work_mode_ack, sizeof(uart0_work_mode_ack)-1, NULL, NULL);
- send_bp_data_flag=1;
+ uart0_write_for_hci("{\"cmd\":\"1\",\"work_mode\":\"1\"}\r\n", sizeof("{\"cmd\":\"1\",\"work_mode\":\"1\"}\r\n")-1, NULL, NULL);
+
+ BP_open();//血压
}
else if(strstr(uart0_rivce_data,"\"hrs\""))//:"hrs"}//hrs:心率模式
{
- uart0_write_for_hci(uart0_work_mode_ack, sizeof(uart0_work_mode_ack)-1, NULL, NULL);
- send_hrs_data_flag=1;
+ uart0_write_for_hci("{\"cmd\":\"1\",\"work_mode\":\"1\"}\r\n", sizeof("{\"cmd\":\"1\",\"work_mode\":\"1\"}\r\n")-1, NULL, NULL);
+
+ HRS_open();//心率
+
}
else if(strstr(uart0_rivce_data,"\"hrv\""))//:"hrv"}//hrv:HRV模式
{
- uart0_write_for_hci(uart0_work_mode_ack, sizeof(uart0_work_mode_ack)-1, NULL, NULL);
+ uart0_write_for_hci("{\"cmd\":\"1\",\"work_mode\":\"1\"}\r\n", sizeof("{\"cmd\":\"1\",\"work_mode\":\"1\"}\r\n")-1, NULL, NULL);
send_hrv_data_flag=1;
}
else if(strstr(uart0_rivce_data,"\"spo2\""))//:"spo2"}//spo2:血氧模式
{
- uart0_write_for_hci(uart0_work_mode_ack, sizeof(uart0_work_mode_ack)-1, NULL, NULL);
- send_spo2_data_flag=1;
+ uart0_write_for_hci("{\"cmd\":\"1\",\"work_mode\":\"1\"}\r\n", sizeof("{\"cmd\":\"1\",\"work_mode\":\"1\"}\r\n")-1, NULL, NULL);
+
+ SPO2_open();//血氧
}else if(strstr(uart0_rivce_data,"\"yyl\""))//yyl:中医模式
{
- uart0_write_for_hci(uart0_work_mode_ack, sizeof(uart0_work_mode_ack)-1, NULL, NULL);
- send_yyl_data_flag=1;
- }else if(strstr(uart0_rivce_data,"\"emo\""))//emo:中医模式
+ uart0_write_for_hci("{\"cmd\":\"1\",\"work_mode\":\"1\"}\r\n", sizeof("{\"cmd\":\"1\",\"work_mode\":\"1\"}\r\n")-1, NULL, NULL);
+ YYL_open();//中医
+ }else if(strstr(uart0_rivce_data,"\"emo\""))//emo:情绪模式
{
- uart0_write_for_hci(uart0_work_mode_ack, sizeof(uart0_work_mode_ack)-1, NULL, NULL);
- send_emo_data_flag=1;
+ uart0_write_for_hci("{\"cmd\":\"1\",\"work_mode\":\"1\"}\r\n", sizeof("{\"cmd\":\"1\",\"work_mode\":\"1\"}\r\n")-1, NULL, NULL);
+ EMO_open();//情绪
}
else if(strstr(uart0_rivce_data,"\"wear\""))//:"wear"}//wear:佩戴模式
{
- uart0_write_for_hci(uart0_work_mode_ack, sizeof(uart0_work_mode_ack)-1, NULL, NULL);
+ uart0_write_for_hci("{\"cmd\":\"1\",\"work_mode\":\"1\"}\r\n", sizeof("{\"cmd\":\"1\",\"work_mode\":\"1\"}\r\n")-1, NULL, NULL);
send_wear_data_flag=1;
}
else if(strstr(uart0_rivce_data,"\"temp\""))//:"temp"}//temp:温度模式
{
- uart0_write_for_hci(uart0_work_mode_ack, sizeof(uart0_work_mode_ack)-1, NULL, NULL);
+ 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;
}
else if(strstr(uart0_rivce_data,"\"close\""))//:"close"}//close:关闭所有测试,进入低功耗待机模式
{
- uart0_write_for_hci(uart0_work_mode_ack, sizeof(uart0_work_mode_ack)-1, NULL, NULL);
+ uart0_write_for_hci("{\"cmd\":\"1\",\"work_mode\":\"1\"}\r\n", sizeof("{\"cmd\":\"1\",\"work_mode\":\"1\"}\r\n")-1, NULL, NULL);
///////////////////////////////// 关闭测量//////////////////////////////////////////////
- send_bp_data_flag=0;//发送血压数据标致位
- send_hrs_data_flag=0;//发送心率数据标标致位
- send_hrv_data_flag=0;//发送心率变异性标致位
- send_spo2_data_flag=0;//发送血氧数值标致位
- send_temp_data_flag=0;//发送温度标致位
- send_gs_data_flag=0;//发送gsensor数据标致位
- send_sleep_data_flag=0;//发送sleep数据标致位
- send_step_data_flag=0;//发送step数据标致位
- send_wear_data_flag=0;//发送wear数据标致位
+ sensor_close();
}
}
//////////////////////////////获取测试数值///////////////////////////主控->血压模块{"cmd":"2","get_data":"bp"}
#include "driver_pwm.h"
#include "DRIVER_FLASH.H"
#define UART_SEND_MAX 1024
-#define UART_READ_MAX 1024
+#define UART_READ_MAX 512
typedef struct
{