蓝牙
authorp15692025051 <846603105@qq.com>
Sat, 3 Feb 2024 02:48:45 +0000 (10:48 +0800)
committerp15692025051 <846603105@qq.com>
Sat, 3 Feb 2024 02:48:45 +0000 (10:48 +0800)
23 files changed:
1.doc/K18/BLE_Watch/code/proj_main.c
1.doc/K18/BLE_Watch/code/sensor_drive.c
1.doc/K18/BLE_Watch/code/sensor_drive.h
1.doc/K18/BLE_Watch/components/ble/library/fr8010h_stack.lib
1.doc/K18/BLE_Watch/keil/BLE_Watch.uvgui.Administrator
1.doc/K18/BLE_Watch/keil/BLE_Watch.uvopt
1.doc/K18/BLE_Watch/keil/BLE_Watch.uvproj
1.doc/K18/BLE_Watch/keil/Imitate_IIC.c
1.doc/K18/BLE_Watch/keil/Imitate_IIC.h
1.doc/K18/BLE_Watch/keil/Objects/driver_timer.crf
1.doc/K18/BLE_Watch/keil/Objects/imitate_iic.crf
1.doc/K18/BLE_Watch/keil/Objects/proj_main.crf
1.doc/K18/BLE_Watch/keil/Objects/sensor_drive.crf
1.doc/K18/BLE_Watch/keil/Objects/sl_watch_pedo_kcal_wrist_sleep_sway_l_application.crf
1.doc/K18/BLE_Watch/keil/Objects/uart.crf
1.doc/K18/BLE_Watch/keil/Objects/vc9202_driver.crf
1.doc/K18/BLE_Watch/keil/Objects/vc9202_user.crf
1.doc/K18/BLE_Watch/keil/SL_Watch_Pedo_Kcal_Wrist_Sleep_Sway_L_Algorithm.h
1.doc/K18/BLE_Watch/keil/VC9202/vc9202_driver.c
1.doc/K18/BLE_Watch/keil/VC9202/vc9202_user.c
1.doc/K18/BLE_Watch/keil/feedback.txt
1.doc/K18/BLE_Watch/keil/uart.c
1.doc/K18/BLE_Watch/keil/uart.h

index 4a59a47..76c7379 100644 (file)
@@ -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
index 765b7b0..13f33a8 100644 (file)
 #include "sensor_drive.h"
 #include "algo.h"
 #include "yyl_pfev01.h"
+uint16_t task_sensor_id = 0;
 
-extern  uint8_t uart0_rivce_data[50];
 InitParamTypeDef pInit_Param={0};
 
 char is_HA_activate = 0;
-#define HA_BUF_LEN 15*1024
+#define HA_BUF_LEN 10*1024
 unsigned char HA_BUF[HA_BUF_LEN];//恒爱算法库和中医算法库缓冲区
 
 // char ppg_buf[PPG_BUF_LEN];
@@ -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)//读血压数据
                {
-                       //è¦\81æ\94¾å\85¥é\87\87é\9b\86æ\97¶é\97´ï¼\8cç­\89å¾\85æ\97¶é\97´æ²¡é\87\87å\88°é\80\80å\87º
-                       while((gpio_get_pin_value(GPIO_PORT_D, GPIO_BIT_5)==0)&&send_emo_data_flag)//等待BP_INT变高 
-                       {
-                               uart0_receive();//串口0接收数据处理
-                               co_delay_100us(100);//不加延时串口获取数据异常
-                               //co_printf("  get_BP_waite \n");       
-                               irq_flag=1;
-                       }                       
-                       while(gpio_get_pin_value(GPIO_PORT_D, GPIO_BIT_5)&&irq_flag&&send_emo_data_flag) //等待BP_INT变低 
+                       //è¾\93å\87ºè¡\80å\8e\8bæ\95°æ\8d®å\88°ä¸²å\8f£0  
+                       // float tmp = 3.33;
+                       // co_printf("  EMO_test:2.0:%s \n",UART_send_buf);     
+                       // UART_send_buf_len = sprintf((char *)UART_send_buf,"%.2f!!,",tmp);
+                       // co_printf("  EMO_test:2.1:%s \n",UART_send_buf);     
+                       UART_send_buf_len = 0;
+                       memset(UART_send_buf,0,sizeof(UART_send_buf));
+
+                       for(int i=0;i<16;i++)//转码
                        {
+                               emo_in_buf[emo_in_buf_len] = bp_data[i*3+0]<<16|bp_data[i*3+1]<<8|bp_data[i*3+2];
+                               //co_printf("  EMO_test:bp_data:0x%02X%02X%02X\n",bp_data[i*3+0],bp_data[i*3+1],bp_data[i*3+2]);
+                               //co_printf("  EMO_test:emo_in_buf[%d]:%d\n",emo_in_buf_len,emo_in_buf[emo_in_buf_len]);
+                               emo_in_buf_len++;
                                
-                               read_BP_data();//读血压数据
-                               //输出血压数据到串口0  
-                               // float tmp = 3.33;
-                               // co_printf("  EMO_test:2.0:%s \n",UART_send_buf);     
-                               // UART_send_buf_len = sprintf((char *)UART_send_buf,"%.2f!!,",tmp);
-                               // co_printf("  EMO_test:2.1:%s \n",UART_send_buf);     
-                               UART_send_buf_len = 0;
-                               memset(UART_send_buf,0,sizeof(UART_send_buf));
-                               
-                               
-                               for(int i=0;i<16;i++)//转码
+                               if(emo_in_buf_len >= EMO_IN_BUF_SIZE)
                                {
-                                       emo_in_buf[emo_in_buf_len] = bp_data[i*3+0]<<16|bp_data[i*3+1]<<8|bp_data[i*3+2];
-                                       //co_printf("  EMO_test:bp_data:0x%02X%02X%02X\n",bp_data[i*3+0],bp_data[i*3+1],bp_data[i*3+2]);
-                                       //co_printf("  EMO_test:emo_in_buf[%d]:%d\n",emo_in_buf_len,emo_in_buf[emo_in_buf_len]);
-                                       emo_in_buf_len++;
-                                       
-                                       if(emo_in_buf_len >= EMO_IN_BUF_SIZE)
+                                       //co_printf("  EMO_test:ppg_midvalue \n");
+                                       status = ppg_midvalue(emo_in_buf,emo_in_buf_len,SAMPLERATE,emo_out_Fm,&emo_out_Fm_len);
+                                       co_printf("  EMO_test:status:%d emo_out_Fm_len:%d\n",status,emo_out_Fm_len);
+                                       if(emo_out_Fm_len != 0)
                                        {
-                                               //co_printf("  EMO_test:ppg_midvalue \n");
-                                               status = ppg_midvalue(emo_in_buf,emo_in_buf_len,SAMPLERATE,emo_out_Fm,&emo_out_Fm_len);
-                                               co_printf("  EMO_test:status:%d emo_out_Fm_len:%d\n",status,emo_out_Fm_len);
-                                               if(emo_out_Fm_len != 0)
+                                               UART_send_buf_len += snprintf((char *)UART_send_buf,sizeof(UART_send_buf),"{\"cmd\":\"2\",\"emo_data\":[");
+                                               //co_printf("  EMO_test:1:%d \n",UART_send_buf_len);
+                                               for(int j=0;j<emo_out_Fm_len;j++)
                                                {
-                                                       UART_send_buf_len += snprintf((char *)UART_send_buf,sizeof(UART_send_buf),"{\"cmd\":\"2\",\"emo_data\":[");
-                                                       //co_printf("  EMO_test:1:%d \n",UART_send_buf_len);
-                                                       for(int j=0;j<emo_out_Fm_len;j++)
+                                                       UART_send_buf_len += snprintf((char *)&UART_send_buf[UART_send_buf_len],sizeof(UART_send_buf)-UART_send_buf_len,
+                                                                                                                       "[");
+                                                       //co_printf("  EMO_test:2:%d \n",UART_send_buf_len);
+                                                       for(int k=0;k<8;k++)
                                                        {
+                                                               //co_printf("  EMO_test:2.0:%s \n",UART_send_buf);
+                                                               memset(tmp_buf,0,sizeof(tmp_buf));
+                                                               char *float_str = _float_to_char(emo_out_Fm[j][k],tmp_buf,sizeof(tmp_buf));
+                                                               //int int_tmp = emo_out_Fm[j][k]*100;
                                                                UART_send_buf_len += snprintf((char *)&UART_send_buf[UART_send_buf_len],sizeof(UART_send_buf)-UART_send_buf_len,
-                                                                                                                               "[");
-                                                               //co_printf("  EMO_test:2:%d \n",UART_send_buf_len);
-                                                               for(int k=0;k<8;k++)
-                                                               {
-                                                                       //co_printf("  EMO_test:2.0:%s \n",UART_send_buf);
-                                                                       memset(tmp_buf,0,sizeof(tmp_buf));
-                                                                       char *float_str = _float_to_char(emo_out_Fm[j][k],tmp_buf,sizeof(tmp_buf));
-                                                                       //int int_tmp = emo_out_Fm[j][k]*100;
-                                                                       UART_send_buf_len += snprintf((char *)&UART_send_buf[UART_send_buf_len],sizeof(UART_send_buf)-UART_send_buf_len,
-                                                                                                                               "%s,",float_str);
-                                                                       
-                                                                       //co_printf("  EMO_test:float:%s \n",float_str);
-                                                                       //co_printf("  EMO_test:hex:0x%X \n",emo_out_Fm[j][k]); 
-                                                                       //printf("  EMO_test:printf:%f \n",emo_out_Fm[j][k]);                                           
-                                                               }
-                                                               UART_send_buf_len-=1;//减去最后的逗号
-                                                               UART_send_buf_len += snprintf((char *)&UART_send_buf[UART_send_buf_len],sizeof(UART_send_buf)-UART_send_buf_len,
-                                                                                                                               "],");
+                                                                                                                       "%s,",float_str);
+                                                               
+                                                               //co_printf("  EMO_test:float:%s \n",float_str);
+                                                               //co_printf("  EMO_test:hex:0x%X \n",emo_out_Fm[j][k]); 
+                                                               //printf("  EMO_test:printf:%f \n",emo_out_Fm[j][k]);                                           
                                                        }
-                                                       //co_printf("  EMO_test:3:%d \n",UART_send_buf_len);
                                                        UART_send_buf_len-=1;//减去最后的逗号
                                                        UART_send_buf_len += snprintf((char *)&UART_send_buf[UART_send_buf_len],sizeof(UART_send_buf)-UART_send_buf_len,
-                                                                                                                               "]}\n");
-                                                       uart0_write_for_hci(UART_send_buf,UART_send_buf_len,NULL, NULL);
-                                                       co_printf("  EMO_test:send_buf:%s\n",UART_send_buf);
+                                                                                                                       "],");
                                                }
-                                               
-                                               
-                                               emo_in_buf_len = 0;
+                                               //co_printf("  EMO_test:3:%d \n",UART_send_buf_len);
+                                               UART_send_buf_len-=1;//减去最后的逗号
+                                               UART_send_buf_len += snprintf((char *)&UART_send_buf[UART_send_buf_len],sizeof(UART_send_buf)-UART_send_buf_len,
+                                                                                                                       "]}\n");
+                                               uart0_write_for_hci(UART_send_buf,UART_send_buf_len,NULL, NULL);
+                                               co_printf("  EMO_test:send_buf:%s\n",UART_send_buf);
                                        }
+                                       
+                                       
+                                       emo_in_buf_len = 0;
                                }
-                               
-                               irq_flag=0;
                        }
-               }       
-               gpio_set_pin_value(GPIO_PORT_A, GPIO_BIT_1, 0); //关闭血压 
-               co_printf("  EMO_test_end \n");         
+               }
+               
+                               
        }
     return send_emo_data_flag;
 }
 
 char HRS_test(void)
 {
+       
        if(send_hrs_data_flag)//心率
        {
-               
-               bool irq_flag=0;
-               //get_hr_data(); 
-               //vcHr02PhyInit();              //vcHr02 board initial
-               //vcHr02Init(&vcHr02,vcMode);
-               pInit_Param.work_mode = WORK_MODE_HR;
-               vc9202_usr_init(&pInit_Param);
-               //加心率获取到数据退出测量或者加获取有效数据次数或者测试时间
-               while(send_hrs_data_flag)
+               //co_printf("HRS_test1!!!!!!!!\n");
+               vc9202_usr_interrupt_handler(SPORT_TYPE_NORMAL,1);      
+               //co_printf("HRS_test2!!!!!!!!\n");
+               if(vc9202_alg_results.hr_rate >0)
                {
-                       while(gpio_get_pin_value(GPIO_PORT_C, GPIO_BIT_7)==1&&send_hrs_data_flag)//等待HR_INT变低    
-                       {
-                               //co_printf("  get_HR_waite \n");       
-                               //vcHr02IRQHandler();   
-                               irq_flag=1;
-                               uart0_receive();//串口0接收数据处理
-                       } 
-                       while((gpio_get_pin_value(GPIO_PORT_C, GPIO_BIT_7)==0)&&irq_flag&&send_hrs_data_flag)//等待HR_INT变高               //高电平获取数据
-                       { 
-                               
-                               vc9202_usr_interrupt_handler(SPORT_TYPE_NORMAL,1);
-                               irq_flag=0;     
-                               
-                               uart0_receive();//串口0接收数据处理
-                               if(vc9202_alg_results.hr_rate >0)
-                               {
-                                       co_printf("hr_rate:%d \n",vc9202_alg_results.hr_rate);
-                                       memset(UART_send_buf,0,sizeof(UART_send_buf));
-                                       UART_send_buf_len = snprintf((char *)UART_send_buf,sizeof(UART_send_buf),"{\"cmd\":\"2\",\"hrs_data\":\"%d\"}\n",vc9202_alg_results.hr_rate);
-                                       uart0_write_for_hci(UART_send_buf,UART_send_buf_len,NULL, NULL);
-                                       vc9202_alg_results.hr_rate = 0; 
-                               }
-                               
-                       }
-               }
-               pInit_Param.work_mode = WORK_MODE_NONE;
-               vc9202_usr_init(&pInit_Param);
-               gpio_set_pin_value(GPIO_PORT_A, GPIO_BIT_0, 0); //关闭心率
-               co_printf("  get_HR_end \n");           
+                       //co_printf("HRS_test3!!!!!!!!\n");
+                       //co_printf("hr_rate:%d \n",vc9202_alg_results.hr_rate);
+                       memset(UART_send_buf,0,sizeof(UART_send_buf));
+                       UART_send_buf_len = snprintf((char *)UART_send_buf,sizeof(UART_send_buf),"{\"cmd\":\"2\",\"hrs_data\":\"%d\"}\n",vc9202_alg_results.hr_rate);
+                       uart0_write_for_hci(UART_send_buf,UART_send_buf_len,NULL, NULL);
+                       vc9202_alg_results.hr_rate = 0; 
+               }       
        }
     return send_hrs_data_flag;
 }
@@ -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<pOutputData_len; count++)
                        {
-                               //co_printf("  get_HR_waite \n");       
-                               //vcHr02IRQHandler();   
-                               irq_flag=1;
-                               uart0_receive();//串口0接收数据处理
-                       } 
-                       while((gpio_get_pin_value(GPIO_PORT_C, GPIO_BIT_7)==0)&&irq_flag&&send_yyl_data_flag)//等待HR_INT变高               //高电平获取数据
-                       { 
-                               
-                               vc9202_usr_interrupt_handler(SPORT_TYPE_NORMAL,1);//里面获取ppg数据
-                               irq_flag=0;     
-                               int printf_len = 0;
-                               if(yyl_in_data_len>= 3000-1)
-                               {
-                                       co_printf("YYL_Output_PFE!!\n");
-                                       pOutputData = YYL_Output_PFE(&pOutputData_len);
-                                       co_printf("YYL_test:pOutputData_len:%d\n",pOutputData_len);
-                                       memset(UART_send_buf,0,sizeof(UART_send_buf));
-                                       co_printf("YYL_test:");
-                                       UART_send_buf_len = snprintf((char *)UART_send_buf,sizeof(UART_send_buf),
-                                                                                               "{\"cmd\":\"2\",\"yyl_data\":\"");
-                                       uart0_write_for_hci(UART_send_buf,UART_send_buf_len,NULL, NULL);
-                                       co_printf("%s",UART_send_buf);
-                                       //pOutputData_len = 10;
-                                       if(pOutputData_len > 50)
-                                               pOutputData_len = 50;
-                                       for(int count=0; count<pOutputData_len; count++)
-                                       {
-                                               pOutputData_tmp = pOutputData+count;
-                                               // if(pOutputData_tmp->timestamp==0&&pOutputData_tmp->areaUP==0&&pOutputData_tmp->areaUPBase==0&&pOutputData_tmp->areaUPHeight==0)
-                                               //      break;
-                                               //co_printf("pOutputData_tmp:%x\n",pOutputData_tmp);
-                                               unsigned int time_tmp = get_timestamp();
-                                               UART_send_buf_len = snprintf((char *)UART_send_buf,sizeof(UART_send_buf),
-                                                                                               "%u,%d,%d,%d,%d,%d,%d,%d,%d,%d,",
-                                                                                                       time_tmp,pOutputData_tmp->timestamp,pOutputData_tmp->areaUP,pOutputData_tmp->areaUPBase,pOutputData_tmp->areaUPHeight,
-                                                                                                       pOutputData_tmp->areaDOWN,pOutputData_tmp->areaDOWNBase,pOutputData_tmp->areaDOWNHeight,pOutputData_tmp->RRI,pOutputData_tmp->motion);
-                                               uart0_write_for_hci(UART_send_buf,UART_send_buf_len,NULL, NULL);
-                                               UART_send_buf[UART_send_buf_len] = 0;
-                                               co_printf("%s",UART_send_buf);
-                                               printf_len+=UART_send_buf_len;
-                                               UART_send_buf_len = 0;
-                                               
-                                               if(count>=255)
-                                                       break;
-                                       }
-                                       
-                                       uart0_write_for_hci("\"}\n",sizeof("\"}\n"),NULL, NULL);
-                                       printf_len+=3;
-                                       co_printf("%s","\"}\n");
-                                       co_printf("YYL_test:printf_len:%d\n",printf_len);
-                                       yyl_in_data_len =0;
-                               }
-                               uart0_receive();//串口0接收数据处理
-                               
+                               pOutputData_tmp = pOutputData+count;
+                               // if(pOutputData_tmp->timestamp==0&&pOutputData_tmp->areaUP==0&&pOutputData_tmp->areaUPBase==0&&pOutputData_tmp->areaUPHeight==0)
+                               //      break;
+                               //co_printf("pOutputData_tmp:%x\n",pOutputData_tmp);
+                               unsigned int time_tmp = get_timestamp();
+                               UART_send_buf_len = snprintf((char *)UART_send_buf,sizeof(UART_send_buf),
+                                                                               "%u,%d,%d,%d,%d,%d,%d,%d,%d,%d,",
+                                                                                       time_tmp,pOutputData_tmp->timestamp,pOutputData_tmp->areaUP,pOutputData_tmp->areaUPBase,pOutputData_tmp->areaUPHeight,
+                                                                                       pOutputData_tmp->areaDOWN,pOutputData_tmp->areaDOWNBase,pOutputData_tmp->areaDOWNHeight,pOutputData_tmp->RRI,pOutputData_tmp->motion);
+                               uart0_write_for_hci(UART_send_buf,UART_send_buf_len,NULL, NULL);
+                               UART_send_buf[UART_send_buf_len] = 0;
+                               co_printf("%s",UART_send_buf);
+                               printf_len+=UART_send_buf_len;
+                               UART_send_buf_len = 0;
                                
+                               if(count>=255)
+                                       break;
                        }
-               }
-               pInit_Param.work_mode = WORK_MODE_NONE;
-               vc9202_usr_init(&pInit_Param);
-               gpio_set_pin_value(GPIO_PORT_A, GPIO_BIT_0, 0); //关闭心率
-               co_printf("  YYL_test_end \n");         
+                       
+                       uart0_write_for_hci("\"}\n",sizeof("\"}\n"),NULL, NULL);
+                       printf_len+=3;
+                       co_printf("%s","\"}\n");
+                       co_printf("YYL_test:printf_len:%d\n",printf_len);
+                       yyl_in_data_len =0;
+               }       
+               
        }
+       // YYL_test_count++;
+       // co_printf("os_msg_post_count:%d  YYL_test_count:%d\n",os_msg_post_count,YYL_test_count);
     return send_yyl_data_flag;
 }
  ////////////////////////////获取温度数据//////////////////////////////////////////////////////
@@ -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);
+}
index 9dd83fe..135f9ad 100644 (file)
@@ -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
index e47b724..1cd0fde 100644 (file)
@@ -1,3 +1,3 @@
 version https://git-lfs.github.com/spec/v1
-oid sha256:ed84309bf511fb679fd9a693afb7a0f9decb65de8d0cf5eb5253480b7aa2a2c8
-size 1432068
+oid sha256:6f8f3c89d498c5f280eb41c8379141f9f2b930c77ffce608ac9c4631570ede70
+size 1454240
index c55a1a7..d4cb9e9 100644 (file)
@@ -73,7 +73,7 @@
     <WindowPosition>
       <length>44</length>
       <flags>0</flags>
-      <showCmd>2</showCmd>
+      <showCmd>1</showCmd>
       <MinPosition>
         <xPos>-32000</xPos>
         <yPos>-32000</yPos>
         <yPos>-1</yPos>
       </MaxPosition>
       <NormalPosition>
-        <Top>25</Top>
-        <Left>17</Left>
-        <Right>1516</Right>
-        <Bottom>939</Bottom>
+        <Top>213</Top>
+        <Left>226</Left>
+        <Right>1725</Right>
+        <Bottom>1069</Bottom>
       </NormalPosition>
     </WindowPosition>
     <MDIClientArea>
       <RegID>0</RegID>
       <MDITabState>
-        <Len>881</Len>
-        <Data>01000000040000000100000001000000010000000100000000000000020000000000000001000000010000000000000028000000280000000100000007000000000000000100000042473A5C312E776F726B5C332E4153525C332E5A355C312E646F635C4B31385C424C455F57617463685C636F64655C626C655F73696D706C655F63656E7472616C2E630000000014626C655F73696D706C655F63656E7472616C2E6300000000F7B88600FFFFFFFF47473A5C312E776F726B5C332E4153525C332E5A355C312E646F635C4B31385C424C455F57617463685C636F6D706F6E656E74735C6472697665725C6472697665725F706D752E63000000000C6472697665725F706D752E63000000009CC1B600FFFFFFFF39473A5C312E776F726B5C332E4153525C332E5A355C312E646F635C4B31385C424C455F57617463685C636F64655C70726F6A5F6D61696E2E63000000000B70726F6A5F6D61696E2E6300000000BCA8E100FFFFFFFF49473A5C312E776F726B5C332E4153525C332E5A355C312E646F635C4B31385C424C455F57617463685C636F6D706F6E656E74735C6D6F64756C65735C70617463685C70617463682E63000000000770617463682E6300000000F0A0A100FFFFFFFF42473A5C312E776F726B5C332E4153525C332E5A355C312E646F635C4B31385C424C455F57617463685C6B65696C5C5643393230325C7663393230325F757365722E63000000000D7663393230325F757365722E6300000000BECEA100FFFFFFFF4D473A5C312E776F726B5C332E4153525C332E5A355C312E646F635C4B31385C424C455F57617463685C6B65696C5C5643393230325C7663393230325F6472697665725F746573746D6F64652E6300000000187663393230325F6472697665725F746573746D6F64652E6300000000FFDC7800FFFFFFFF42473A5C312E776F726B5C332E4153525C332E5A355C312E646F635C4B31385C424C455F57617463685C636F64655C626C655F73696D706C655F63656E7472616C2E680000000014626C655F73696D706C655F63656E7472616C2E6800000000D9ADC200FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD5000100000000000000020000009484FFFF4F83FFFFCB88FFFF5185FFFF</Data>
+        <Len>1313</Len>
+        <Data>0100000004000000010000000100000001000000010000000000000002000000000000000100000001000000000000002800000028000000010000000B000000030000000100000042473A5C312E776F726B5C332E4153525C332E5A355C312E646F635C4B31385C424C455F57617463685C6B65696C5C5643393230325C7663393230325F757365722E63000000000D7663393230325F757365722E6300000000BECEA100FFFFFFFF5F473A5C312E776F726B5C332E4153525C332E5A355C312E646F635C4B31385C424C455F57617463685C6B65696C5C534C5F57617463685F5065646F5F4B63616C5F57726973745F536C6565705F537761795F4C5F416C676F726974686D2E680000000031534C5F57617463685F5065646F5F4B63616C5F57726973745F536C6565705F537761795F4C5F416C676F726974686D2E6800000000C5D4F200FFFFFFFF3C473A5C312E776F726B5C332E4153525C332E5A355C312E646F635C4B31385C424C455F57617463685C636F64655C73656E736F725F64726976652E68000000000E73656E736F725F64726976652E6800000000BECEA100FFFFFFFF3C473A5C312E776F726B5C332E4153525C332E5A355C312E646F635C4B31385C424C455F57617463685C636F64655C73656E736F725F64726976652E63000000000E73656E736F725F64726976652E6300000000C5D4F200FFFFFFFF42473A5C312E776F726B5C332E4153525C332E5A355C312E646F635C4B31385C424C455F57617463685C636F64655C626C655F73696D706C655F63656E7472616C2E630000000014626C655F73696D706C655F63656E7472616C2E6300000000F7B88600FFFFFFFF47473A5C312E776F726B5C332E4153525C332E5A355C312E646F635C4B31385C424C455F57617463685C636F6D706F6E656E74735C6472697665725C6472697665725F706D752E63000000000C6472697665725F706D752E63000000009CC1B600FFFFFFFF39473A5C312E776F726B5C332E4153525C332E5A355C312E646F635C4B31385C424C455F57617463685C636F64655C70726F6A5F6D61696E2E63000000000B70726F6A5F6D61696E2E6300000000BCA8E100FFFFFFFF49473A5C312E776F726B5C332E4153525C332E5A355C312E646F635C4B31385C424C455F57617463685C636F6D706F6E656E74735C6D6F64756C65735C70617463685C70617463682E63000000000770617463682E6300000000F0A0A100FFFFFFFF4D473A5C312E776F726B5C332E4153525C332E5A355C312E646F635C4B31385C424C455F57617463685C6B65696C5C5643393230325C7663393230325F6472697665725F746573746D6F64652E6300000000187663393230325F6472697665725F746573746D6F64652E6300000000FFDC7800FFFFFFFF42473A5C312E776F726B5C332E4153525C332E5A355C312E646F635C4B31385C424C455F57617463685C636F64655C626C655F73696D706C655F63656E7472616C2E680000000014626C655F73696D706C655F63656E7472616C2E6800000000C5D4F200FFFFFFFF39473A5C312E776F726B5C332E4153525C332E5A355C312E646F635C4B31385C424C455F57617463685C6B65696C5C626C655F355F302E736374000000000B626C655F355F302E73637400000000D9ADC200FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD5000100000000000000020000007E02000043010000B50600000B030000</Data>
       </MDITabState>
     </MDIClientArea>
     <ViewEx>
         </RectRecentDocked>
         <RectRecentFloat>
           <Len>16</Len>
-          <Data>54020000E70000005006000075010000</Data>
+          <Data>AD01000087000000A905000015010000</Data>
         </RectRecentFloat>
       </Window>
       <Window>
         <RecentRowIndex>0</RecentRowIndex>
         <RectRecentDocked>
           <Len>16</Len>
-          <Data>00000000630000009001000051020000</Data>
+          <Data>00000000630000009001000017020000</Data>
         </RectRecentDocked>
         <RectRecentFloat>
           <Len>16</Len>
         <RecentRowIndex>0</RecentRowIndex>
         <RectRecentDocked>
           <Len>16</Len>
-          <Data>030000006C020000C80500003F030000</Data>
+          <Data>0300000032020000C805000005030000</Data>
         </RectRecentDocked>
         <RectRecentFloat>
           <Len>16</Len>
         <RecentRowIndex>0</RecentRowIndex>
         <RectRecentDocked>
           <Len>16</Len>
-          <Data>030000006C020000C80500003F030000</Data>
+          <Data>0300000032020000C805000005030000</Data>
         </RectRecentDocked>
         <RectRecentFloat>
           <Len>16</Len>
         <RecentRowIndex>0</RecentRowIndex>
         <RectRecentDocked>
           <Len>16</Len>
-          <Data>030000006C020000C80500003F030000</Data>
+          <Data>0300000032020000C805000005030000</Data>
         </RectRecentDocked>
         <RectRecentFloat>
           <Len>16</Len>
         <RecentRowIndex>0</RecentRowIndex>
         <RectRecentDocked>
           <Len>16</Len>
-          <Data>030000006C020000C80500003F030000</Data>
+          <Data>0300000032020000C805000005030000</Data>
         </RectRecentDocked>
         <RectRecentFloat>
           <Len>16</Len>
         <RecentRowIndex>0</RecentRowIndex>
         <RectRecentDocked>
           <Len>16</Len>
-          <Data>0000000058030000CB0500006B030000</Data>
+          <Data>000000001E030000CB05000031030000</Data>
         </RectRecentDocked>
         <RectRecentFloat>
           <Len>16</Len>
       </Window>
       <DockMan>
         <Len>2619</Len>
-        <Data>000000000B000000000000000020000000000000FFFFFFFFFFFFFFFF94010000DD00000090050000E1000000000000000100000004000000010000000000000000000000FFFFFFFF06000000CB00000057010000CC000000F08B00005A01000079070000FFFF02000B004354616262656450616E65002000000000000054020000E70000005006000075010000940100004F00000090050000DD0000000000000040280046060000000B446973617373656D626C7900000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFFFC0300004F0000000004000025020000000000000200000004000000010000000000000000000000FFFFFFFF17000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C000001800040000000000000C0040000E700000050060000BD020000000400004F00000090050000250200000000000040410046170000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFF900100004F0000009401000051020000010000000200001004000000010000000000000000000000FFFFFFFF05000000ED0300006D000000C3000000C40000007394000001800010000001000000C0000000E700000050020000E9020000000000004F00000090010000510200000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73000000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7300000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657300000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273000000007394000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000000000000FFFFFFFFFFFFFFFF0000000011020000900500001502000000000000010000000400000001000000000000000000000000000000000000000000000001000000C6000000FFFFFFFF0E0000008F070000930700009407000095070000960700009007000091070000B5010000B8010000B9050000BA050000BB050000BC050000CB09000001800080000000000000C0000000AD020000500600004F030000000000001502000090050000B702000000000000404100460E0000001343616C6C20537461636B202B204C6F63616C73000000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031000000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF084D656D6F7279203100000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFFFFFFFFFF0000000001000000000000000000000001000000FFFFFFFFC802000015020000CC020000B702000000000000020000000400000000000000000000000000000000000000000000000000000002000000C6000000FFFFFFFF8F07000001000000FFFFFFFF8F07000001000000C6000000000000000080000001000000FFFFFFFFFFFFFFFF0000000051020000CB050000550200000100000001000010040000000100000061FEFFFF25010000FFFFFFFF04000000C5000000C7000000B40100007794000001800080000001000000C0000000ED0200008B060000F00300000000000055020000CB050000580300000000000040820056040000000C4275696C64204F757470757401000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657301000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF0742726F77736572000000007794000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000000000000000000</Data>
+        <Data>000000000B000000000000000020000000000000FFFFFFFFFFFFFFFF94010000DD00000090050000E1000000000000000100000004000000010000000000000000000000FFFFFFFF06000000CB00000057010000CC000000F08B00005A01000079070000FFFF02000B004354616262656450616E650020000000000000AD01000087000000A905000015010000940100004F00000090050000DD0000000000000040280046060000000B446973617373656D626C7900000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFFFC0300004F0000000004000025020000000000000200000004000000010000000000000000000000FFFFFFFF17000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C0000018000400000000000001904000087000000A90500005D020000000400004F00000090050000250200000000000040410046170000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFF900100004F0000009401000017020000010000000200001004000000010000000000000000000000FFFFFFFF05000000ED0300006D000000C3000000C400000073940000018000100000010000001900000087000000A901000089020000000000004F00000090010000170200000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73000000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7300000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657300000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273000000007394000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000000000000FFFFFFFFFFFFFFFF0000000011020000900500001502000000000000010000000400000001000000000000000000000000000000000000000000000001000000C6000000FFFFFFFF0E0000008F070000930700009407000095070000960700009007000091070000B5010000B8010000B9050000BA050000BB050000BC050000CB09000001800080000000000000190000004D020000A9050000EF020000000000001502000090050000B702000000000000404100460E0000001343616C6C20537461636B202B204C6F63616C73000000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031000000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF084D656D6F7279203100000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFFFFFFFFFF0000000001000000000000000000000001000000FFFFFFFFC802000015020000CC020000B702000000000000020000000400000000000000000000000000000000000000000000000000000002000000C6000000FFFFFFFF8F07000001000000FFFFFFFF8F07000001000000C6000000000000000080000001000000FFFFFFFFFFFFFFFF0000000017020000CB0500001B0200000100000001000010040000000100000061FEFFFF25010000FFFFFFFF04000000C5000000C7000000B40100007794000001800080000001000000190000008D020000E405000090030000000000001B020000CB0500001E0300000000000040820056040000000C4275696C64204F757470757401000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657301000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF0742726F77736572000000007794000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000000000000000000</Data>
       </DockMan>
       <ToolBar>
         <RegID>59392</RegID>
         <Name>File</Name>
         <Buttons>
-          <Len>2070</Len>
-          <Data>00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000004000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000000000C0000000000000000000000000000000001000000010000000180F4B00000000000000D000000000000000000000000000000000100000001000000018036B10000000000000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE803000000000000000000000000000000000000000000000001000000010000009600000002002050000000000D6F735F74696D65725F696E6974960000000000000003000D6F735F74696D65725F696E69740D706D755F6973725F72616D5F430E7379735F74696D65725F696E6974000000000000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018022800000020000001500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000000180C8880000000000001700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E4C010000020001001A0000000F50726F6A6563742057696E646F7773000000000000000000000000010000000100000000000000000000000100000008002880DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002880DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002880E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002880E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000288018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000028800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002880D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002880E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65AC030000</Data>
+          <Len>2181</Len>
+          <Data>00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000004000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000000000C0000000000000000000000000000000001000000010000000180F4B00000000000000D000000000000000000000000000000000100000001000000018036B10000000000000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE803000000000000000000000000000000000000000000000001000000010000009600000002002050000000000D6F735F74696D65725F696E69749600000000000000080018706D755F706F72745F77616B6575705F66756E635F73657404626F6F6C0D464C4153485F50524F54454354156761705F73746172745F6164766572746973696E6718737065616B65725F676174745F6164645F736572766963650D6F735F74696D65725F696E69740D706D755F6973725F72616D5F430E7379735F74696D65725F696E69740000000000000000000000000000000000000000000000000000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018022800000020000001500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000000180C8880000000000001700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E4C010000020001001A0000000F50726F6A6563742057696E646F7773000000000000000000000000010000000100000000000000000000000100000008002880DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002880DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002880E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002880E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000288018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000028800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002880D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002880E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65AC030000</Data>
         </Buttons>
         <OriginalItems>
           <Len>1423</Len>
         <Name>Debug</Name>
         <Buttons>
           <Len>2220</Len>
-          <Data>00200000000000001900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000000002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000000002A00000000000000000000000000000000010000000100000001801C800000000000002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000000000002D0000000000000000000000000000000001000000010000000180F07F0000000000002E0000000000000000000000000000000001000000010000000180E8880000000000003700000000000000000000000000000000010000000100000001803B010000000000002F0000000000000000000000000000000001000000010000000180BB8A00000000000030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000000000000310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000002001380D88B000000000000310000000757617463682031000000000000000000000000010000000100000000000000000000000100000000001380D98B0000000000003100000007576174636820320000000000000000000000000100000001000000000000000000000001000000000013800F01000000000000320000000E4D656D6F72792057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000084D656D6F72792031000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000084D656D6F72792032000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000084D656D6F72792033000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000084D656D6F727920340000000000000000000000000100000001000000000000000000000001000000000013801001000000000000330000000E53657269616C2057696E646F77730000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000755415254202331000000000000000000000000010000000100000000000000000000000100000000001380940700000000000033000000075541525420233200000000000000000000000001000000010000000000000000000000010000000000138095070000000000003300000007554152542023330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000000E49544D2F525441205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000000000003400000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380658A000000000000340000000E4C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E00000014506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000D436F646520436F76657261676500000000000000000000000001000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720100000000000000010000000000000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720100000000000000010000000000000001000000000000000000000001000000000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000138001890000000000003600000007546F6F6C626F7800000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730100000000000000010000000000000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000010000000000000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F72010000000000000001000000000000000100000000000000000000000100000000000000000005446562756764020000</Data>
+          <Data>00200000000000001900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000000002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000000002A00000000000000000000000000000000010000000100000001801C800000000000002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000000000002D0000000000000000000000000000000001000000010000000180F07F0000000000002E0000000000000000000000000000000001000000010000000180E8880000000000003700000000000000000000000000000000010000000100000001803B010000000000002F0000000000000000000000000000000001000000010000000180BB8A00000000000030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000000000000310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000002001380D88B000000000000310000000757617463682031000000000000000000000000010000000100000000000000000000000100000000001380D98B0000000000003100000007576174636820320000000000000000000000000100000001000000000000000000000001000000000013800F01000000000000320000000E4D656D6F72792057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000084D656D6F72792031000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000084D656D6F72792032000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000084D656D6F72792033000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000084D656D6F727920340000000000000000000000000100000001000000000000000000000001000000000013801001000000000000330000000E53657269616C2057696E646F77730000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000755415254202331000000000000000000000000010000000100000000000000000000000100000000001380940700000000000033000000075541525420233200000000000000000000000001000000010000000000000000000000010000000000138095070000000000003300000007554152542023330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000000E49544D2F525441205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000000000003400000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380658A000000000000340000000E4C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E00000014506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000D436F646520436F76657261676500000000000000000000000001000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720000000000000000010000000000000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720000000000000000010000000000000001000000000000000000000001000000000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000138001890000000000003600000007546F6F6C626F7800000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730000000000000000010000000000000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000010000000000000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F72000000000000000001000000000000000100000000000000000000000100000000000000000005446562756764020000</Data>
         </Buttons>
         <OriginalItems>
           <Len>898</Len>
     <ActiveMDIGroup>0</ActiveMDIGroup>
     <MDIGroup>
       <Size>100</Size>
-      <ActiveTab>0</ActiveTab>
+      <ActiveTab>3</ActiveTab>
       <Doc>
-        <Name>..\code\ble_simple_central.c</Name>
-        <ColumnNumber>55</ColumnNumber>
-        <TopLine>13</TopLine>
+        <Name>.\VC9202\vc9202_user.c</Name>
+        <ColumnNumber>0</ColumnNumber>
+        <TopLine>344</TopLine>
+        <CurrentLine>345</CurrentLine>
+        <Folding>1</Folding>
+        <ContractedFolders></ContractedFolders>
+        <PaneID>0</PaneID>
+      </Doc>
+      <Doc>
+        <Name>SL_Watch_Pedo_Kcal_Wrist_Sleep_Sway_L_Algorithm.h</Name>
+        <ColumnNumber>0</ColumnNumber>
+        <TopLine>64</TopLine>
+        <CurrentLine>78</CurrentLine>
+        <Folding>1</Folding>
+        <ContractedFolders></ContractedFolders>
+        <PaneID>0</PaneID>
+      </Doc>
+      <Doc>
+        <Name>..\code\sensor_drive.h</Name>
+        <ColumnNumber>0</ColumnNumber>
+        <TopLine>14</TopLine>
         <CurrentLine>36</CurrentLine>
         <Folding>1</Folding>
         <ContractedFolders></ContractedFolders>
         <PaneID>0</PaneID>
       </Doc>
+      <Doc>
+        <Name>..\code\sensor_drive.c</Name>
+        <ColumnNumber>46</ColumnNumber>
+        <TopLine>768</TopLine>
+        <CurrentLine>790</CurrentLine>
+        <Folding>1</Folding>
+        <ContractedFolders></ContractedFolders>
+        <PaneID>0</PaneID>
+      </Doc>
+      <Doc>
+        <Name>..\code\ble_simple_central.c</Name>
+        <ColumnNumber>17</ColumnNumber>
+        <TopLine>287</TopLine>
+        <CurrentLine>294</CurrentLine>
+        <Folding>1</Folding>
+        <ContractedFolders></ContractedFolders>
+        <PaneID>0</PaneID>
+      </Doc>
       <Doc>
         <Name>..\components\driver\driver_pmu.c</Name>
         <ColumnNumber>53</ColumnNumber>
-        <TopLine>909</TopLine>
+        <TopLine>910</TopLine>
         <CurrentLine>936</CurrentLine>
         <Folding>1</Folding>
         <ContractedFolders></ContractedFolders>
       </Doc>
       <Doc>
         <Name>..\code\proj_main.c</Name>
-        <ColumnNumber>63</ColumnNumber>
-        <TopLine>136</TopLine>
-        <CurrentLine>162</CurrentLine>
+        <ColumnNumber>11</ColumnNumber>
+        <TopLine>260</TopLine>
+        <CurrentLine>261</CurrentLine>
         <Folding>1</Folding>
         <ContractedFolders></ContractedFolders>
         <PaneID>0</PaneID>
       <Doc>
         <Name>..\components\modules\patch\patch.c</Name>
         <ColumnNumber>0</ColumnNumber>
-        <TopLine>273</TopLine>
+        <TopLine>274</TopLine>
         <CurrentLine>286</CurrentLine>
         <Folding>1</Folding>
         <ContractedFolders></ContractedFolders>
         <PaneID>0</PaneID>
       </Doc>
-      <Doc>
-        <Name>.\VC9202\vc9202_user.c</Name>
-        <ColumnNumber>36</ColumnNumber>
-        <TopLine>205</TopLine>
-        <CurrentLine>206</CurrentLine>
-        <Folding>1</Folding>
-        <ContractedFolders></ContractedFolders>
-        <PaneID>0</PaneID>
-      </Doc>
       <Doc>
         <Name>.\VC9202\vc9202_driver_testmode.c</Name>
         <ColumnNumber>28</ColumnNumber>
-        <TopLine>19</TopLine>
+        <TopLine>20</TopLine>
         <CurrentLine>45</CurrentLine>
         <Folding>1</Folding>
         <ContractedFolders></ContractedFolders>
         <ContractedFolders></ContractedFolders>
         <PaneID>0</PaneID>
       </Doc>
+      <Doc>
+        <Name>G:\1.work\3.ASR\3.Z5\1.doc\K18\BLE_Watch\keil\ble_5_0.sct</Name>
+        <ColumnNumber>0</ColumnNumber>
+        <TopLine>13</TopLine>
+        <CurrentLine>36</CurrentLine>
+        <Folding>1</Folding>
+        <ContractedFolders></ContractedFolders>
+        <PaneID>0</PaneID>
+      </Doc>
     </MDIGroup>
   </MDIGroups>
 
index 4b830ee..df24604 100644 (file)
       <RteFlg>0</RteFlg>
       <bShared>0</bShared>
     </File>
+    <File>
+      <GroupNumber>1</GroupNumber>
+      <FileNumber>8</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <Focus>0</Focus>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\components\ble\profiles\ble_ota\ota_service.c</PathWithFileName>
+      <FilenameWithoutPath>ota_service.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>1</GroupNumber>
+      <FileNumber>9</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <Focus>0</Focus>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\components\ble\profiles\ble_ota\ota.c</PathWithFileName>
+      <FilenameWithoutPath>ota.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
   </Group>
 
   <Group>
     <RteFlg>0</RteFlg>
     <File>
       <GroupNumber>2</GroupNumber>
-      <FileNumber>8</FileNumber>
+      <FileNumber>10</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <Focus>1</Focus>
     </File>
     <File>
       <GroupNumber>2</GroupNumber>
-      <FileNumber>9</FileNumber>
+      <FileNumber>11</FileNumber>
       <FileType>2</FileType>
       <tvExp>0</tvExp>
       <Focus>1</Focus>
     <RteFlg>0</RteFlg>
     <File>
       <GroupNumber>3</GroupNumber>
-      <FileNumber>10</FileNumber>
+      <FileNumber>12</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <Focus>1</Focus>
     <RteFlg>0</RteFlg>
     <File>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>11</FileNumber>
+      <FileNumber>13</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <Focus>1</Focus>
     </File>
     <File>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>12</FileNumber>
+      <FileNumber>14</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <Focus>1</Focus>
     <RteFlg>0</RteFlg>
     <File>
       <GroupNumber>5</GroupNumber>
-      <FileNumber>13</FileNumber>
+      <FileNumber>15</FileNumber>
       <FileType>4</FileType>
       <tvExp>0</tvExp>
       <Focus>1</Focus>
     </File>
     <File>
       <GroupNumber>5</GroupNumber>
-      <FileNumber>14</FileNumber>
+      <FileNumber>16</FileNumber>
       <FileType>4</FileType>
       <tvExp>0</tvExp>
       <Focus>1</Focus>
     <RteFlg>0</RteFlg>
     <File>
       <GroupNumber>6</GroupNumber>
-      <FileNumber>15</FileNumber>
+      <FileNumber>17</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <Focus>1</Focus>
     </File>
     <File>
       <GroupNumber>6</GroupNumber>
-      <FileNumber>16</FileNumber>
+      <FileNumber>18</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <Focus>1</Focus>
     </File>
     <File>
       <GroupNumber>6</GroupNumber>
-      <FileNumber>17</FileNumber>
+      <FileNumber>19</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <Focus>1</Focus>
     </File>
     <File>
       <GroupNumber>6</GroupNumber>
-      <FileNumber>18</FileNumber>
+      <FileNumber>20</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <Focus>1</Focus>
     </File>
     <File>
       <GroupNumber>6</GroupNumber>
-      <FileNumber>19</FileNumber>
+      <FileNumber>21</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <Focus>1</Focus>
     </File>
     <File>
       <GroupNumber>6</GroupNumber>
-      <FileNumber>20</FileNumber>
+      <FileNumber>22</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <Focus>1</Focus>
     </File>
     <File>
       <GroupNumber>6</GroupNumber>
-      <FileNumber>21</FileNumber>
+      <FileNumber>23</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <Focus>1</Focus>
     </File>
     <File>
       <GroupNumber>6</GroupNumber>
-      <FileNumber>22</FileNumber>
+      <FileNumber>24</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <Focus>1</Focus>
     </File>
     <File>
       <GroupNumber>6</GroupNumber>
-      <FileNumber>23</FileNumber>
+      <FileNumber>25</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <Focus>1</Focus>
     </File>
     <File>
       <GroupNumber>6</GroupNumber>
-      <FileNumber>24</FileNumber>
+      <FileNumber>26</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <Focus>1</Focus>
     </File>
     <File>
       <GroupNumber>6</GroupNumber>
-      <FileNumber>25</FileNumber>
+      <FileNumber>27</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <Focus>1</Focus>
     </File>
     <File>
       <GroupNumber>6</GroupNumber>
-      <FileNumber>26</FileNumber>
+      <FileNumber>28</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <Focus>1</Focus>
     <RteFlg>0</RteFlg>
     <File>
       <GroupNumber>7</GroupNumber>
-      <FileNumber>27</FileNumber>
+      <FileNumber>29</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <Focus>1</Focus>
     </File>
     <File>
       <GroupNumber>7</GroupNumber>
-      <FileNumber>28</FileNumber>
+      <FileNumber>30</FileNumber>
       <FileType>5</FileType>
       <tvExp>0</tvExp>
       <Focus>1</Focus>
     <RteFlg>0</RteFlg>
     <File>
       <GroupNumber>8</GroupNumber>
-      <FileNumber>29</FileNumber>
+      <FileNumber>31</FileNumber>
       <FileType>4</FileType>
       <tvExp>0</tvExp>
       <Focus>0</Focus>
     </File>
     <File>
       <GroupNumber>8</GroupNumber>
-      <FileNumber>30</FileNumber>
+      <FileNumber>32</FileNumber>
       <FileType>4</FileType>
       <tvExp>0</tvExp>
       <Focus>0</Focus>
     </File>
     <File>
       <GroupNumber>8</GroupNumber>
-      <FileNumber>31</FileNumber>
+      <FileNumber>33</FileNumber>
       <FileType>4</FileType>
       <tvExp>0</tvExp>
       <Focus>0</Focus>
     </File>
     <File>
       <GroupNumber>8</GroupNumber>
-      <FileNumber>32</FileNumber>
+      <FileNumber>34</FileNumber>
       <FileType>4</FileType>
       <tvExp>0</tvExp>
       <Focus>0</Focus>
     </File>
     <File>
       <GroupNumber>8</GroupNumber>
-      <FileNumber>33</FileNumber>
+      <FileNumber>35</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <Focus>0</Focus>
     </File>
     <File>
       <GroupNumber>8</GroupNumber>
-      <FileNumber>34</FileNumber>
+      <FileNumber>36</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <Focus>0</Focus>
     </File>
     <File>
       <GroupNumber>8</GroupNumber>
-      <FileNumber>35</FileNumber>
+      <FileNumber>37</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <Focus>0</Focus>
     </File>
     <File>
       <GroupNumber>8</GroupNumber>
-      <FileNumber>36</FileNumber>
+      <FileNumber>38</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <Focus>0</Focus>
     </File>
     <File>
       <GroupNumber>8</GroupNumber>
-      <FileNumber>37</FileNumber>
+      <FileNumber>39</FileNumber>
       <FileType>4</FileType>
       <tvExp>0</tvExp>
       <Focus>0</Focus>
index a21aa71..2e6d034 100644 (file)
             <Ro3Chk>0</Ro3Chk>
             <Ir1Chk>0</Ir1Chk>
             <Ir2Chk>0</Ir2Chk>
-            <Ra1Chk>0</Ra1Chk>
+            <Ra1Chk>1</Ra1Chk>
             <Ra2Chk>0</Ra2Chk>
             <Ra3Chk>0</Ra3Chk>
             <Im1Chk>0</Im1Chk>
               </OCR_RVCT5>
               <OCR_RVCT6>
                 <Type>0</Type>
-                <StartAddress>0x0</StartAddress>
-                <Size>0x0</Size>
+                <StartAddress>0x2000000</StartAddress>
+                <Size>0x7800</Size>
               </OCR_RVCT6>
               <OCR_RVCT7>
                 <Type>0</Type>
           </ArmAdsMisc>
           <Cads>
             <interw>1</interw>
-            <Optim>1</Optim>
+            <Optim>4</Optim>
             <oTime>0</oTime>
             <SplitLS>0</SplitLS>
             <OneElfS>1</OneElfS>
               <FileType>1</FileType>
               <FilePath>..\code\sensor_drive.c</FilePath>
             </File>
+            <File>
+              <FileName>ota_service.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\components\ble\profiles\ble_ota\ota_service.c</FilePath>
+            </File>
+            <File>
+              <FileName>ota.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\components\ble\profiles\ble_ota\ota.c</FilePath>
+            </File>
           </Files>
         </Group>
         <Group>
index fc4e39c..3326781 100644 (file)
@@ -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
+       
 }
 
 
index d18c3af..50f7aa9 100644 (file)
@@ -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
 
index ace2a6c..c5ea5d0 100644 (file)
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
index 29b45b5..54ad382 100644 (file)
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
index c900531..af96217 100644 (file)
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
index f5f0a9f..68bdb3e 100644 (file)
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
index ca09fda..a3a918d 100644 (file)
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
index 6bfda08..c31de48 100644 (file)
Binary files a/1.doc/K18/BLE_Watch/keil/Objects/uart.crf and b/1.doc/K18/BLE_Watch/keil/Objects/uart.crf differ
index 3d266d4..02a2204 100644 (file)
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
index 723e674..476cd0a 100644 (file)
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
index 27f7dea..717b4a9 100644 (file)
@@ -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轴的校准值,需保存**/
index d797fae..3e31300 100644 (file)
@@ -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下降沿 */
index 35eaf81..045df36 100644 (file)
@@ -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
index b024b69..69e8f2b 100644 (file)
@@ -1,4 +1,4 @@
-;#<FEEDBACK># ARM Linker, 5050106: Last Updated: Thu Feb 01 14:56:04 2024
+;#<FEEDBACK># ARM Linker, 5050106: Last Updated: Sat Feb 03 10:38:15 2024
 ;VERSION 0.2
 ;FILE acpower_add_doublefre.o
 acPower_add_doublefre_init <= USED 0
@@ -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
index 7df467c..5b259f7 100644 (file)
@@ -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"}
index 335fca3..69cbe93 100644 (file)
@@ -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
 {