From: p15692025051 <846603105@qq.com> Date: Sat, 3 Feb 2024 02:48:45 +0000 (+0800) Subject: 蓝牙 X-Git-Url: http://git.snicker.com.cn/Users/apple/Desktop/static/gitweb.css?a=commitdiff_plain;h=1a2ea42b29226694a993d0420aa8cffa3bf732f4;p=mirrors%2FASR3603_Z5.git 蓝牙 --- diff --git a/1.doc/K18/BLE_Watch/code/proj_main.c b/1.doc/K18/BLE_Watch/code/proj_main.c index 4a59a477..76c7379b 100644 --- a/1.doc/K18/BLE_Watch/code/proj_main.c +++ b/1.doc/K18/BLE_Watch/code/proj_main.c @@ -10,6 +10,7 @@ #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" @@ -249,23 +250,9 @@ void save_sys_config(void) } -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) { @@ -273,44 +260,16 @@ 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}; @@ -318,63 +277,38 @@ void user_entry_after_ble_init(void) 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 diff --git a/1.doc/K18/BLE_Watch/code/sensor_drive.c b/1.doc/K18/BLE_Watch/code/sensor_drive.c index 765b7b0f..13f33a87 100644 --- a/1.doc/K18/BLE_Watch/code/sensor_drive.c +++ b/1.doc/K18/BLE_Watch/code/sensor_drive.c @@ -32,12 +32,12 @@ #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]; @@ -61,12 +61,57 @@ extern AlgoCalcResultsTypeDef vc9202_alg_results; 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); @@ -88,45 +133,7 @@ void VC9202_init(void) ///////////////////////////中断标致位/////////////////////// // 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接口封包函数****************/ @@ -156,6 +163,7 @@ unsigned char SL_SC7A20_I2c_Spi_Write(bool sl_spi_iic,unsigned char reg, unsigne // 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) @@ -200,14 +208,15 @@ unsigned char SL_SC7A20_I2c_Spi_Read(bool sl_spi_iic,unsigned char reg, unsigned // { // 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) @@ -242,40 +251,26 @@ char BP_test(void) 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 @@ -313,139 +308,92 @@ char EMO_test(void) 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)//读血压数据 { - //要放入采集时间,等待时间没采到退出 - 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变低 + //输出血压数据到串口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;j0) { - 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; } @@ -453,45 +401,19 @@ char HRV_test(void) { 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; } @@ -500,123 +422,78 @@ char SPO2_test(void) 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= 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; counttimestamp==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; } ////////////////////////////获取温度数据////////////////////////////////////////////////////// @@ -626,7 +503,7 @@ void get_tp_data() #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); @@ -687,7 +564,8 @@ void temp_test(void) 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); @@ -713,4 +591,202 @@ void gsensor_test(void) } 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); +} diff --git a/1.doc/K18/BLE_Watch/code/sensor_drive.h b/1.doc/K18/BLE_Watch/code/sensor_drive.h index 9dd83fe9..135f9ad3 100644 --- a/1.doc/K18/BLE_Watch/code/sensor_drive.h +++ b/1.doc/K18/BLE_Watch/code/sensor_drive.h @@ -1,20 +1,37 @@ #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 diff --git a/1.doc/K18/BLE_Watch/components/ble/library/fr8010h_stack.lib b/1.doc/K18/BLE_Watch/components/ble/library/fr8010h_stack.lib index e47b724a..1cd0fde7 100644 --- a/1.doc/K18/BLE_Watch/components/ble/library/fr8010h_stack.lib +++ b/1.doc/K18/BLE_Watch/components/ble/library/fr8010h_stack.lib @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ed84309bf511fb679fd9a693afb7a0f9decb65de8d0cf5eb5253480b7aa2a2c8 -size 1432068 +oid sha256:6f8f3c89d498c5f280eb41c8379141f9f2b930c77ffce608ac9c4631570ede70 +size 1454240 diff --git a/1.doc/K18/BLE_Watch/keil/BLE_Watch.uvgui.Administrator b/1.doc/K18/BLE_Watch/keil/BLE_Watch.uvgui.Administrator index c55a1a79..d4cb9e9e 100644 --- a/1.doc/K18/BLE_Watch/keil/BLE_Watch.uvgui.Administrator +++ b/1.doc/K18/BLE_Watch/keil/BLE_Watch.uvgui.Administrator @@ -73,7 +73,7 @@ 44 0 - 2 + 1 -32000 -32000 @@ -83,17 +83,17 @@ -1 - 25 - 17 - 1516 - 939 + 213 + 226 + 1725 + 1069 0 - 881 - 01000000040000000100000001000000010000000100000000000000020000000000000001000000010000000000000028000000280000000100000007000000000000000100000042473A5C312E776F726B5C332E4153525C332E5A355C312E646F635C4B31385C424C455F57617463685C636F64655C626C655F73696D706C655F63656E7472616C2E630000000014626C655F73696D706C655F63656E7472616C2E6300000000F7B88600FFFFFFFF47473A5C312E776F726B5C332E4153525C332E5A355C312E646F635C4B31385C424C455F57617463685C636F6D706F6E656E74735C6472697665725C6472697665725F706D752E63000000000C6472697665725F706D752E63000000009CC1B600FFFFFFFF39473A5C312E776F726B5C332E4153525C332E5A355C312E646F635C4B31385C424C455F57617463685C636F64655C70726F6A5F6D61696E2E63000000000B70726F6A5F6D61696E2E6300000000BCA8E100FFFFFFFF49473A5C312E776F726B5C332E4153525C332E5A355C312E646F635C4B31385C424C455F57617463685C636F6D706F6E656E74735C6D6F64756C65735C70617463685C70617463682E63000000000770617463682E6300000000F0A0A100FFFFFFFF42473A5C312E776F726B5C332E4153525C332E5A355C312E646F635C4B31385C424C455F57617463685C6B65696C5C5643393230325C7663393230325F757365722E63000000000D7663393230325F757365722E6300000000BECEA100FFFFFFFF4D473A5C312E776F726B5C332E4153525C332E5A355C312E646F635C4B31385C424C455F57617463685C6B65696C5C5643393230325C7663393230325F6472697665725F746573746D6F64652E6300000000187663393230325F6472697665725F746573746D6F64652E6300000000FFDC7800FFFFFFFF42473A5C312E776F726B5C332E4153525C332E5A355C312E646F635C4B31385C424C455F57617463685C636F64655C626C655F73696D706C655F63656E7472616C2E680000000014626C655F73696D706C655F63656E7472616C2E6800000000D9ADC200FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD5000100000000000000020000009484FFFF4F83FFFFCB88FFFF5185FFFF + 1313 + 0100000004000000010000000100000001000000010000000000000002000000000000000100000001000000000000002800000028000000010000000B000000030000000100000042473A5C312E776F726B5C332E4153525C332E5A355C312E646F635C4B31385C424C455F57617463685C6B65696C5C5643393230325C7663393230325F757365722E63000000000D7663393230325F757365722E6300000000BECEA100FFFFFFFF5F473A5C312E776F726B5C332E4153525C332E5A355C312E646F635C4B31385C424C455F57617463685C6B65696C5C534C5F57617463685F5065646F5F4B63616C5F57726973745F536C6565705F537761795F4C5F416C676F726974686D2E680000000031534C5F57617463685F5065646F5F4B63616C5F57726973745F536C6565705F537761795F4C5F416C676F726974686D2E6800000000C5D4F200FFFFFFFF3C473A5C312E776F726B5C332E4153525C332E5A355C312E646F635C4B31385C424C455F57617463685C636F64655C73656E736F725F64726976652E68000000000E73656E736F725F64726976652E6800000000BECEA100FFFFFFFF3C473A5C312E776F726B5C332E4153525C332E5A355C312E646F635C4B31385C424C455F57617463685C636F64655C73656E736F725F64726976652E63000000000E73656E736F725F64726976652E6300000000C5D4F200FFFFFFFF42473A5C312E776F726B5C332E4153525C332E5A355C312E646F635C4B31385C424C455F57617463685C636F64655C626C655F73696D706C655F63656E7472616C2E630000000014626C655F73696D706C655F63656E7472616C2E6300000000F7B88600FFFFFFFF47473A5C312E776F726B5C332E4153525C332E5A355C312E646F635C4B31385C424C455F57617463685C636F6D706F6E656E74735C6472697665725C6472697665725F706D752E63000000000C6472697665725F706D752E63000000009CC1B600FFFFFFFF39473A5C312E776F726B5C332E4153525C332E5A355C312E646F635C4B31385C424C455F57617463685C636F64655C70726F6A5F6D61696E2E63000000000B70726F6A5F6D61696E2E6300000000BCA8E100FFFFFFFF49473A5C312E776F726B5C332E4153525C332E5A355C312E646F635C4B31385C424C455F57617463685C636F6D706F6E656E74735C6D6F64756C65735C70617463685C70617463682E63000000000770617463682E6300000000F0A0A100FFFFFFFF4D473A5C312E776F726B5C332E4153525C332E5A355C312E646F635C4B31385C424C455F57617463685C6B65696C5C5643393230325C7663393230325F6472697665725F746573746D6F64652E6300000000187663393230325F6472697665725F746573746D6F64652E6300000000FFDC7800FFFFFFFF42473A5C312E776F726B5C332E4153525C332E5A355C312E646F635C4B31385C424C455F57617463685C636F64655C626C655F73696D706C655F63656E7472616C2E680000000014626C655F73696D706C655F63656E7472616C2E6800000000C5D4F200FFFFFFFF39473A5C312E776F726B5C332E4153525C332E5A355C312E646F635C4B31385C424C455F57617463685C6B65696C5C626C655F355F302E736374000000000B626C655F355F302E73637400000000D9ADC200FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD5000100000000000000020000007E02000043010000B50600000B030000 @@ -116,7 +116,7 @@ 16 - 54020000E70000005006000075010000 + AD01000087000000A905000015010000 @@ -132,7 +132,7 @@ 0 16 - 00000000630000009001000051020000 + 00000000630000009001000017020000 16 @@ -472,7 +472,7 @@ 0 16 - 030000006C020000C80500003F030000 + 0300000032020000C805000005030000 16 @@ -512,7 +512,7 @@ 0 16 - 030000006C020000C80500003F030000 + 0300000032020000C805000005030000 16 @@ -1132,7 +1132,7 @@ 0 16 - 030000006C020000C80500003F030000 + 0300000032020000C805000005030000 16 @@ -1152,7 +1152,7 @@ 0 16 - 030000006C020000C80500003F030000 + 0300000032020000C805000005030000 16 @@ -1232,7 +1232,7 @@ 0 16 - 0000000058030000CB0500006B030000 + 000000001E030000CB05000031030000 16 @@ -1281,14 +1281,14 @@ 2619 - 000000000B000000000000000020000000000000FFFFFFFFFFFFFFFF94010000DD00000090050000E1000000000000000100000004000000010000000000000000000000FFFFFFFF06000000CB00000057010000CC000000F08B00005A01000079070000FFFF02000B004354616262656450616E65002000000000000054020000E70000005006000075010000940100004F00000090050000DD0000000000000040280046060000000B446973617373656D626C7900000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFFFC0300004F0000000004000025020000000000000200000004000000010000000000000000000000FFFFFFFF17000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C000001800040000000000000C0040000E700000050060000BD020000000400004F00000090050000250200000000000040410046170000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFF900100004F0000009401000051020000010000000200001004000000010000000000000000000000FFFFFFFF05000000ED0300006D000000C3000000C40000007394000001800010000001000000C0000000E700000050020000E9020000000000004F00000090010000510200000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73000000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7300000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657300000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273000000007394000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000000000000FFFFFFFFFFFFFFFF0000000011020000900500001502000000000000010000000400000001000000000000000000000000000000000000000000000001000000C6000000FFFFFFFF0E0000008F070000930700009407000095070000960700009007000091070000B5010000B8010000B9050000BA050000BB050000BC050000CB09000001800080000000000000C0000000AD020000500600004F030000000000001502000090050000B702000000000000404100460E0000001343616C6C20537461636B202B204C6F63616C73000000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031000000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF084D656D6F7279203100000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFFFFFFFFFF0000000001000000000000000000000001000000FFFFFFFFC802000015020000CC020000B702000000000000020000000400000000000000000000000000000000000000000000000000000002000000C6000000FFFFFFFF8F07000001000000FFFFFFFF8F07000001000000C6000000000000000080000001000000FFFFFFFFFFFFFFFF0000000051020000CB050000550200000100000001000010040000000100000061FEFFFF25010000FFFFFFFF04000000C5000000C7000000B40100007794000001800080000001000000C0000000ED0200008B060000F00300000000000055020000CB050000580300000000000040820056040000000C4275696C64204F757470757401000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657301000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF0742726F77736572000000007794000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000000000000000000 + 000000000B000000000000000020000000000000FFFFFFFFFFFFFFFF94010000DD00000090050000E1000000000000000100000004000000010000000000000000000000FFFFFFFF06000000CB00000057010000CC000000F08B00005A01000079070000FFFF02000B004354616262656450616E650020000000000000AD01000087000000A905000015010000940100004F00000090050000DD0000000000000040280046060000000B446973617373656D626C7900000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFFFC0300004F0000000004000025020000000000000200000004000000010000000000000000000000FFFFFFFF17000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C0000018000400000000000001904000087000000A90500005D020000000400004F00000090050000250200000000000040410046170000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFF900100004F0000009401000017020000010000000200001004000000010000000000000000000000FFFFFFFF05000000ED0300006D000000C3000000C400000073940000018000100000010000001900000087000000A901000089020000000000004F00000090010000170200000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73000000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7300000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657300000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273000000007394000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000000000000FFFFFFFFFFFFFFFF0000000011020000900500001502000000000000010000000400000001000000000000000000000000000000000000000000000001000000C6000000FFFFFFFF0E0000008F070000930700009407000095070000960700009007000091070000B5010000B8010000B9050000BA050000BB050000BC050000CB09000001800080000000000000190000004D020000A9050000EF020000000000001502000090050000B702000000000000404100460E0000001343616C6C20537461636B202B204C6F63616C73000000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031000000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF084D656D6F7279203100000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFFFFFFFFFF0000000001000000000000000000000001000000FFFFFFFFC802000015020000CC020000B702000000000000020000000400000000000000000000000000000000000000000000000000000002000000C6000000FFFFFFFF8F07000001000000FFFFFFFF8F07000001000000C6000000000000000080000001000000FFFFFFFFFFFFFFFF0000000017020000CB0500001B0200000100000001000010040000000100000061FEFFFF25010000FFFFFFFF04000000C5000000C7000000B40100007794000001800080000001000000190000008D020000E405000090030000000000001B020000CB0500001E0300000000000040820056040000000C4275696C64204F757470757401000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657301000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF0742726F77736572000000007794000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000000000000000000 59392 File - 2070 - 00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000004000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000000000C0000000000000000000000000000000001000000010000000180F4B00000000000000D000000000000000000000000000000000100000001000000018036B10000000000000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE803000000000000000000000000000000000000000000000001000000010000009600000002002050000000000D6F735F74696D65725F696E6974960000000000000003000D6F735F74696D65725F696E69740D706D755F6973725F72616D5F430E7379735F74696D65725F696E6974000000000000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018022800000020000001500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000000180C8880000000000001700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E4C010000020001001A0000000F50726F6A6563742057696E646F7773000000000000000000000000010000000100000000000000000000000100000008002880DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002880DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002880E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002880E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000288018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000028800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002880D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002880E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65AC030000 + 2181 + 00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000004000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000000000C0000000000000000000000000000000001000000010000000180F4B00000000000000D000000000000000000000000000000000100000001000000018036B10000000000000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE803000000000000000000000000000000000000000000000001000000010000009600000002002050000000000D6F735F74696D65725F696E69749600000000000000080018706D755F706F72745F77616B6575705F66756E635F73657404626F6F6C0D464C4153485F50524F54454354156761705F73746172745F6164766572746973696E6718737065616B65725F676174745F6164645F736572766963650D6F735F74696D65725F696E69740D706D755F6973725F72616D5F430E7379735F74696D65725F696E69740000000000000000000000000000000000000000000000000000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018022800000020000001500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000000180C8880000000000001700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E4C010000020001001A0000000F50726F6A6563742057696E646F7773000000000000000000000000010000000100000000000000000000000100000008002880DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002880DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002880E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002880E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000288018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000028800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002880D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002880E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65AC030000 1423 @@ -1320,7 +1320,7 @@ Debug 2220 - 00200000000000001900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000000002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000000002A00000000000000000000000000000000010000000100000001801C800000000000002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000000000002D0000000000000000000000000000000001000000010000000180F07F0000000000002E0000000000000000000000000000000001000000010000000180E8880000000000003700000000000000000000000000000000010000000100000001803B010000000000002F0000000000000000000000000000000001000000010000000180BB8A00000000000030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000000000000310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000002001380D88B000000000000310000000757617463682031000000000000000000000000010000000100000000000000000000000100000000001380D98B0000000000003100000007576174636820320000000000000000000000000100000001000000000000000000000001000000000013800F01000000000000320000000E4D656D6F72792057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000084D656D6F72792031000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000084D656D6F72792032000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000084D656D6F72792033000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000084D656D6F727920340000000000000000000000000100000001000000000000000000000001000000000013801001000000000000330000000E53657269616C2057696E646F77730000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000755415254202331000000000000000000000000010000000100000000000000000000000100000000001380940700000000000033000000075541525420233200000000000000000000000001000000010000000000000000000000010000000000138095070000000000003300000007554152542023330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000000E49544D2F525441205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000000000003400000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380658A000000000000340000000E4C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E00000014506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000D436F646520436F76657261676500000000000000000000000001000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720100000000000000010000000000000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720100000000000000010000000000000001000000000000000000000001000000000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000138001890000000000003600000007546F6F6C626F7800000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730100000000000000010000000000000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000010000000000000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F72010000000000000001000000000000000100000000000000000000000100000000000000000005446562756764020000 + 00200000000000001900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000000002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000000002A00000000000000000000000000000000010000000100000001801C800000000000002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000000000002D0000000000000000000000000000000001000000010000000180F07F0000000000002E0000000000000000000000000000000001000000010000000180E8880000000000003700000000000000000000000000000000010000000100000001803B010000000000002F0000000000000000000000000000000001000000010000000180BB8A00000000000030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000000000000310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000002001380D88B000000000000310000000757617463682031000000000000000000000000010000000100000000000000000000000100000000001380D98B0000000000003100000007576174636820320000000000000000000000000100000001000000000000000000000001000000000013800F01000000000000320000000E4D656D6F72792057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000084D656D6F72792031000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000084D656D6F72792032000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000084D656D6F72792033000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000084D656D6F727920340000000000000000000000000100000001000000000000000000000001000000000013801001000000000000330000000E53657269616C2057696E646F77730000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000755415254202331000000000000000000000000010000000100000000000000000000000100000000001380940700000000000033000000075541525420233200000000000000000000000001000000010000000000000000000000010000000000138095070000000000003300000007554152542023330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000000E49544D2F525441205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000000000003400000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380658A000000000000340000000E4C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E00000014506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000D436F646520436F76657261676500000000000000000000000001000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720000000000000000010000000000000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720000000000000000010000000000000001000000000000000000000001000000000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000138001890000000000003600000007546F6F6C626F7800000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730000000000000000010000000000000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000010000000000000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F72000000000000000001000000000000000100000000000000000000000100000000000000000005446562756764020000 898 @@ -1344,20 +1344,56 @@ 0 100 - 0 + 3 - ..\code\ble_simple_central.c - 55 - 13 + .\VC9202\vc9202_user.c + 0 + 344 + 345 + 1 + + 0 + + + SL_Watch_Pedo_Kcal_Wrist_Sleep_Sway_L_Algorithm.h + 0 + 64 + 78 + 1 + + 0 + + + ..\code\sensor_drive.h + 0 + 14 36 1 0 + + ..\code\sensor_drive.c + 46 + 768 + 790 + 1 + + 0 + + + ..\code\ble_simple_central.c + 17 + 287 + 294 + 1 + + 0 + ..\components\driver\driver_pmu.c 53 - 909 + 910 936 1 @@ -1365,9 +1401,9 @@ ..\code\proj_main.c - 63 - 136 - 162 + 11 + 260 + 261 1 0 @@ -1375,25 +1411,16 @@ ..\components\modules\patch\patch.c 0 - 273 + 274 286 1 0 - - .\VC9202\vc9202_user.c - 36 - 205 - 206 - 1 - - 0 - .\VC9202\vc9202_driver_testmode.c 28 - 19 + 20 45 1 @@ -1408,6 +1435,15 @@ 0 + + G:\1.work\3.ASR\3.Z5\1.doc\K18\BLE_Watch\keil\ble_5_0.sct + 0 + 13 + 36 + 1 + + 0 + diff --git a/1.doc/K18/BLE_Watch/keil/BLE_Watch.uvopt b/1.doc/K18/BLE_Watch/keil/BLE_Watch.uvopt index 4b830eea..df246044 100644 --- a/1.doc/K18/BLE_Watch/keil/BLE_Watch.uvopt +++ b/1.doc/K18/BLE_Watch/keil/BLE_Watch.uvopt @@ -252,6 +252,32 @@ 0 0 + + 1 + 8 + 1 + 0 + 0 + 0 + 0 + ..\components\ble\profiles\ble_ota\ota_service.c + ota_service.c + 0 + 0 + + + 1 + 9 + 1 + 0 + 0 + 0 + 0 + ..\components\ble\profiles\ble_ota\ota.c + ota.c + 0 + 0 + @@ -262,7 +288,7 @@ 0 2 - 8 + 10 1 0 1 @@ -275,7 +301,7 @@ 2 - 9 + 11 2 0 1 @@ -296,7 +322,7 @@ 0 3 - 10 + 12 1 0 1 @@ -317,7 +343,7 @@ 0 4 - 11 + 13 1 0 1 @@ -330,7 +356,7 @@ 4 - 12 + 14 1 0 1 @@ -351,7 +377,7 @@ 0 5 - 13 + 15 4 0 1 @@ -364,7 +390,7 @@ 5 - 14 + 16 4 0 1 @@ -385,7 +411,7 @@ 0 6 - 15 + 17 1 0 1 @@ -398,7 +424,7 @@ 6 - 16 + 18 1 0 1 @@ -411,7 +437,7 @@ 6 - 17 + 19 1 0 1 @@ -424,7 +450,7 @@ 6 - 18 + 20 1 0 1 @@ -437,7 +463,7 @@ 6 - 19 + 21 1 0 1 @@ -450,7 +476,7 @@ 6 - 20 + 22 1 0 1 @@ -463,7 +489,7 @@ 6 - 21 + 23 1 0 1 @@ -476,7 +502,7 @@ 6 - 22 + 24 1 0 1 @@ -489,7 +515,7 @@ 6 - 23 + 25 1 0 1 @@ -502,7 +528,7 @@ 6 - 24 + 26 1 0 1 @@ -515,7 +541,7 @@ 6 - 25 + 27 1 0 1 @@ -528,7 +554,7 @@ 6 - 26 + 28 1 0 1 @@ -549,7 +575,7 @@ 0 7 - 27 + 29 1 0 1 @@ -562,7 +588,7 @@ 7 - 28 + 30 5 0 1 @@ -583,7 +609,7 @@ 0 8 - 29 + 31 4 0 0 @@ -596,7 +622,7 @@ 8 - 30 + 32 4 0 0 @@ -609,7 +635,7 @@ 8 - 31 + 33 4 0 0 @@ -622,7 +648,7 @@ 8 - 32 + 34 4 0 0 @@ -635,7 +661,7 @@ 8 - 33 + 35 1 0 0 @@ -648,7 +674,7 @@ 8 - 34 + 36 1 0 0 @@ -661,7 +687,7 @@ 8 - 35 + 37 1 0 0 @@ -674,7 +700,7 @@ 8 - 36 + 38 1 0 0 @@ -687,7 +713,7 @@ 8 - 37 + 39 4 0 0 diff --git a/1.doc/K18/BLE_Watch/keil/BLE_Watch.uvproj b/1.doc/K18/BLE_Watch/keil/BLE_Watch.uvproj index a21aa710..2e6d034e 100644 --- a/1.doc/K18/BLE_Watch/keil/BLE_Watch.uvproj +++ b/1.doc/K18/BLE_Watch/keil/BLE_Watch.uvproj @@ -239,7 +239,7 @@ 0 0 0 - 0 + 1 0 0 0 @@ -317,8 +317,8 @@ 0 - 0x0 - 0x0 + 0x2000000 + 0x7800 0 @@ -345,7 +345,7 @@ 1 - 1 + 4 0 0 1 @@ -441,6 +441,16 @@ 1 ..\code\sensor_drive.c + + ota_service.c + 1 + ..\components\ble\profiles\ble_ota\ota_service.c + + + ota.c + 1 + ..\components\ble\profiles\ble_ota\ota.c + diff --git a/1.doc/K18/BLE_Watch/keil/Imitate_IIC.c b/1.doc/K18/BLE_Watch/keil/Imitate_IIC.c index fc4e39c5..3326781b 100644 --- a/1.doc/K18/BLE_Watch/keil/Imitate_IIC.c +++ b/1.doc/K18/BLE_Watch/keil/Imitate_IIC.c @@ -580,8 +580,10 @@ void user_i2c0_init(void) } 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())//¶ÁÓ¦´ðλ @@ -591,7 +593,7 @@ void read_BP_data(void) } 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) { @@ -602,14 +604,23 @@ void read_BP_data(void) 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 + } diff --git a/1.doc/K18/BLE_Watch/keil/Imitate_IIC.h b/1.doc/K18/BLE_Watch/keil/Imitate_IIC.h index d18c3afa..50f7aa92 100644 --- a/1.doc/K18/BLE_Watch/keil/Imitate_IIC.h +++ b/1.doc/K18/BLE_Watch/keil/Imitate_IIC.h @@ -107,7 +107,7 @@ void IIC1_Send_NAck(void); 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); @@ -117,6 +117,6 @@ void IIC0_Send_NAck(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 diff --git a/1.doc/K18/BLE_Watch/keil/Objects/driver_timer.crf b/1.doc/K18/BLE_Watch/keil/Objects/driver_timer.crf index ace2a6cd..c5ea5d0c 100644 Binary files a/1.doc/K18/BLE_Watch/keil/Objects/driver_timer.crf and b/1.doc/K18/BLE_Watch/keil/Objects/driver_timer.crf differ diff --git a/1.doc/K18/BLE_Watch/keil/Objects/imitate_iic.crf b/1.doc/K18/BLE_Watch/keil/Objects/imitate_iic.crf index 29b45b53..54ad382c 100644 Binary files a/1.doc/K18/BLE_Watch/keil/Objects/imitate_iic.crf and b/1.doc/K18/BLE_Watch/keil/Objects/imitate_iic.crf differ diff --git a/1.doc/K18/BLE_Watch/keil/Objects/proj_main.crf b/1.doc/K18/BLE_Watch/keil/Objects/proj_main.crf index c900531a..af96217b 100644 Binary files a/1.doc/K18/BLE_Watch/keil/Objects/proj_main.crf and b/1.doc/K18/BLE_Watch/keil/Objects/proj_main.crf differ diff --git a/1.doc/K18/BLE_Watch/keil/Objects/sensor_drive.crf b/1.doc/K18/BLE_Watch/keil/Objects/sensor_drive.crf index f5f0a9f6..68bdb3e0 100644 Binary files a/1.doc/K18/BLE_Watch/keil/Objects/sensor_drive.crf and b/1.doc/K18/BLE_Watch/keil/Objects/sensor_drive.crf differ diff --git a/1.doc/K18/BLE_Watch/keil/Objects/sl_watch_pedo_kcal_wrist_sleep_sway_l_application.crf b/1.doc/K18/BLE_Watch/keil/Objects/sl_watch_pedo_kcal_wrist_sleep_sway_l_application.crf index ca09fdaa..a3a918d5 100644 Binary files a/1.doc/K18/BLE_Watch/keil/Objects/sl_watch_pedo_kcal_wrist_sleep_sway_l_application.crf and b/1.doc/K18/BLE_Watch/keil/Objects/sl_watch_pedo_kcal_wrist_sleep_sway_l_application.crf differ diff --git a/1.doc/K18/BLE_Watch/keil/Objects/uart.crf b/1.doc/K18/BLE_Watch/keil/Objects/uart.crf index 6bfda080..c31de486 100644 Binary files a/1.doc/K18/BLE_Watch/keil/Objects/uart.crf and b/1.doc/K18/BLE_Watch/keil/Objects/uart.crf differ diff --git a/1.doc/K18/BLE_Watch/keil/Objects/vc9202_driver.crf b/1.doc/K18/BLE_Watch/keil/Objects/vc9202_driver.crf index 3d266d4f..02a2204c 100644 Binary files a/1.doc/K18/BLE_Watch/keil/Objects/vc9202_driver.crf and b/1.doc/K18/BLE_Watch/keil/Objects/vc9202_driver.crf differ diff --git a/1.doc/K18/BLE_Watch/keil/Objects/vc9202_user.crf b/1.doc/K18/BLE_Watch/keil/Objects/vc9202_user.crf index 723e6746..476cd0a8 100644 Binary files a/1.doc/K18/BLE_Watch/keil/Objects/vc9202_user.crf and b/1.doc/K18/BLE_Watch/keil/Objects/vc9202_user.crf differ diff --git a/1.doc/K18/BLE_Watch/keil/SL_Watch_Pedo_Kcal_Wrist_Sleep_Sway_L_Algorithm.h b/1.doc/K18/BLE_Watch/keil/SL_Watch_Pedo_Kcal_Wrist_Sleep_Sway_L_Algorithm.h index 27f7dea9..717b4a9b 100644 --- a/1.doc/K18/BLE_Watch/keil/SL_Watch_Pedo_Kcal_Wrist_Sleep_Sway_L_Algorithm.h +++ b/1.doc/K18/BLE_Watch/keil/SL_Watch_Pedo_Kcal_Wrist_Sleep_Sway_L_Algorithm.h @@ -44,18 +44,18 @@ Copyright (c) 2017 Silan MEMS. All Rights Reserved. #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***********************************************/ @@ -85,14 +85,14 @@ unsigned char SL_SC7A20_Read_FIFO(void); /****说明:该函数需要定时执行,从而保证算法执行到位**/ /***************执行算法获取计步结果***************/ -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:低通滤波使能***/ @@ -158,14 +158,14 @@ void SL_PEDO_SET_AXIS(unsigned char sl_xyz); /***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*****/ @@ -174,7 +174,7 @@ bool SL_INT_STATUS_READ(void); /***********Power down 函数**********/ /********不使用该设备情况下**********/ /****如需重启,使用驱动初始化函数****/ -bool SL_SC7A20_Power_Down(void); +BOOL SL_SC7A20_Power_Down(void); /*************输入参数:无************/ /**********返回参数情况说明**********/ /**return 1: Power Down Success*****/ @@ -182,7 +182,7 @@ bool SL_SC7A20_Power_Down(void); /*********传感器的工作频率设置***********/ -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)***/ @@ -334,7 +334,7 @@ unsigned char SL_In_Sleep_Status(void); /***************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*************/ @@ -357,7 +357,7 @@ unsigned char SL_Get_Direction_Status(void); /**************************摇晃功能************************/ -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***********************/ /***摇晃等级:设置值越小,需要摇晃的幅度越小,越容易触发接听动作*********/ /***摇晃数量:设置值越小,需要摇晃的次数越少,越容易触发接听动作*********/ @@ -368,7 +368,7 @@ bool SL_Get_Phone_Answer_Status(unsigned char Sway_Degree,unsigned char Sway_Num /************加测项目客户端测试***********/ /***初始化的时候调用用于判断FIFO是否正常**/ -bool SL_SC7A20_FIFO_TEST(void); +BOOL SL_SC7A20_FIFO_TEST(void); /*************输入参数:无*****************/ /*************返回数据情况如下************/ /**return :1 FIFO 异常*******************/ @@ -376,7 +376,7 @@ bool SL_SC7A20_FIFO_TEST(void); /*****加测项目客户端测试 校准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轴的校准值,需保存**/ diff --git a/1.doc/K18/BLE_Watch/keil/VC9202/vc9202_driver.c b/1.doc/K18/BLE_Watch/keil/VC9202/vc9202_driver.c index d797fae0..3e31300b 100644 --- a/1.doc/K18/BLE_Watch/keil/VC9202/vc9202_driver.c +++ b/1.doc/K18/BLE_Watch/keil/VC9202/vc9202_driver.c @@ -1447,7 +1447,7 @@ unsigned char vc9202_drv_reg_init(InitParamTypeDef *pInit_Param) { 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下降沿 */ diff --git a/1.doc/K18/BLE_Watch/keil/VC9202/vc9202_user.c b/1.doc/K18/BLE_Watch/keil/VC9202/vc9202_user.c index 35eaf819..045df362 100644 --- a/1.doc/K18/BLE_Watch/keil/VC9202/vc9202_user.c +++ b/1.doc/K18/BLE_Watch/keil/VC9202/vc9202_user.c @@ -24,6 +24,7 @@ #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}; @@ -543,6 +544,7 @@ static unsigned char alg_calculate_spo2_handler( unsigned char last_spo2_val , S { 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)) @@ -706,7 +708,7 @@ void vc9202_usr_interrupt_handler( AlgoSportMode hr_alg_mode, unsigned char spo2 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: @@ -782,7 +784,9 @@ void vc9202_usr_interrupt_handler( AlgoSportMode hr_alg_mode, unsigned char spo2 yyl_in_data_len++; } } + //co_printf(" !\n"); + //co_printf("WORK_MODE_HRV4 yyl_in_data_len:%d\n",yyl_in_data_len); } else diff --git a/1.doc/K18/BLE_Watch/keil/feedback.txt b/1.doc/K18/BLE_Watch/keil/feedback.txt index b024b691..69e8f2ba 100644 --- a/1.doc/K18/BLE_Watch/keil/feedback.txt +++ b/1.doc/K18/BLE_Watch/keil/feedback.txt @@ -1,4 +1,4 @@ -;## ARM Linker, 5050106: Last Updated: Thu Feb 01 14:56:04 2024 +;## 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 @@ -57,11 +57,13 @@ mesh_info_store_into_flash <= 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 @@ -141,7 +143,6 @@ pmu_disable_irq <= USED 0 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 @@ -149,7 +150,6 @@ pmu_set_led2_as_pwm <= 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 @@ -190,6 +190,7 @@ __asm___7_entry_c_a06f3641____REVSH <= 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 @@ -218,6 +219,7 @@ gap_get_link_features <= 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 @@ -272,6 +274,10 @@ gatt_client_write_cmd_with_handle <= 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 @@ -280,6 +286,8 @@ gatt_msg_default <= 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 @@ -306,8 +314,6 @@ l2cc_dbg_pdu_unpack <= 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 @@ -320,32 +326,21 @@ get_emotion_pi <= 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 @@ -847,7 +842,6 @@ os_task_create_x <= 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 @@ -862,6 +856,9 @@ ota_gatt_op_cmp_handler <= 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 @@ -871,7 +868,11 @@ patch_set_event_cnt_target <= 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 @@ -903,12 +904,9 @@ __asm___11_proj_main_c_571a19f4____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 @@ -969,6 +967,10 @@ spo2AlgoInit <= 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 @@ -979,10 +981,12 @@ char_to_val <= 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 @@ -992,11 +996,9 @@ system_set_tx_power <= 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 @@ -1020,7 +1022,5 @@ vc9202_usr_stop_sampling <= 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 diff --git a/1.doc/K18/BLE_Watch/keil/uart.c b/1.doc/K18/BLE_Watch/keil/uart.c index 7df467c9..5b259f75 100644 --- a/1.doc/K18/BLE_Watch/keil/uart.c +++ b/1.doc/K18/BLE_Watch/keil/uart.c @@ -1,17 +1,17 @@ #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使用 @@ -19,7 +19,7 @@ unsigned int get_timestamp(void)//获取时间戳 { return timestamp_d; } -uint8_t uart0_work_mode_ack[]="{\"cmd\":\"1\",\"work_mode\":\"1\"}\r\n";//1:打开工作模式成功 0:打开工作模式失败 + extern char is_HA_activate ; @@ -69,11 +69,7 @@ unsigned int find_c(char *data,char c) 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; /********************************************************************* @@ -116,21 +112,15 @@ __attribute__((section("ram_code"))) void uart0_isr_ram(void) } } -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) @@ -158,57 +148,53 @@ void uart0_receive(void) 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"} diff --git a/1.doc/K18/BLE_Watch/keil/uart.h b/1.doc/K18/BLE_Watch/keil/uart.h index 335fca3a..69cbe936 100644 --- a/1.doc/K18/BLE_Watch/keil/uart.h +++ b/1.doc/K18/BLE_Watch/keil/uart.h @@ -43,7 +43,7 @@ #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 {