血压蓝牙代码提交
authorp15692025051 <846603105@qq.com>
Sat, 16 Mar 2024 03:42:47 +0000 (11:42 +0800)
committerp15692025051 <846603105@qq.com>
Sat, 16 Mar 2024 03:42:47 +0000 (11:42 +0800)
22 files changed:
1.doc/K18/BLE_Watch/code/ble_simple_central.c
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/include/mesh/mesh_api.h
1.doc/K18/BLE_Watch/components/ble/library/fr8010h_stack.lib
1.doc/K18/BLE_Watch/components/ble/profiles/ble_ota/ota.c
1.doc/K18/BLE_Watch/components/modules/platform/source/app_boot_vectors.s
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/SL_Watch_Pedo_Kcal_Wrist_Sleep_Sway_L_Algorithm.h
1.doc/K18/BLE_Watch/keil/SL_Watch_Pedo_Kcal_Wrist_Sleep_Sway_L_Application.c
1.doc/K18/BLE_Watch/keil/VC9202/BIODetect_V14_1.h
1.doc/K18/BLE_Watch/keil/VC9202/vc9202_common.h
1.doc/K18/BLE_Watch/keil/VC9202/vc9202_driver.c
1.doc/K18/BLE_Watch/keil/VC9202/vc9202_driver_testmode.c
1.doc/K18/BLE_Watch/keil/VC9202/vc9202_user.c
1.doc/K18/BLE_Watch/keil/ble_5_0.sct
1.doc/K18/BLE_Watch/keil/feedback.txt
1.doc/K18/BLE_Watch/keil/uart.c

index 879a7f5..6ae6a67 100644 (file)
@@ -300,7 +300,7 @@ void simple_peripheral_init(void)
     // set local device name
     uint8_t local_name[13] = {0};
 
-    snprintf(local_name,sizeof(local_name),"ZH_%s",sys_config.IMEI+6);
+    snprintf((char *)local_name,sizeof(local_name),"ZH_%s",sys_config.IMEI+6);
        memcpy(scan_rsp_data+2,local_name,13);
     gap_set_dev_name(local_name, sizeof(local_name));
     os_timer_init( &update_param_timer,param_timer_func,NULL);
index edd7c9d..501094b 100644 (file)
@@ -57,6 +57,35 @@ __attribute__((section("ram_code"))) void gap_rssi_ind(int8_t rssi, uint8_t coni
 { 
        co_printf("link:%d rssi:%d\r\n", conidx, rssi); 
 }
+void initial_static_memory(uint8_t act_num,
+                                                  uint8_t adv_act_num,
+                                                  uint8_t con_num,
+                                                  uint8_t rx_buf_num,
+                                                  uint16_t rx_buf_size,
+                                                  uint8_t tx_buf_num,
+                                                  uint16_t tx_buf_size,
+                                                  uint16_t max_adv_size,
+                                                  uint16_t stack_size);
+/*********************************************************************
+ * @fn      user_init_static_memory
+ *
+ * @brief   set memory.
+ *
+ * @param   None.
+ *
+ *
+ * @return  None.
+ */
+void user_init_static_memory(void)
+{
+       /*
+        * activity: init, adv+con, scan, pb-adv, pb-gatt (adv + con)
+        * adv: adv * 2 * 2, pb-adv + 1, pb-gatt *2 * 2
+        * con: init, pb-gatt*2
+        */
+       initial_static_memory(9, 5, 3, 8, 251, 8, 251, 37, 0x1000);
+       //initial_static_memory(9, 5, 3, 8, 40, 8, 27, 37, 0x1000);
+}
 /*********************************************************************
 * @fn      user_custom_parameters
 *
@@ -124,7 +153,7 @@ __attribute__((section("ram_code"))) void user_entry_after_sleep_imp(void)
        system_set_port_pull(GPIO_PA2, true);
        system_set_port_mux(GPIO_PORT_A, GPIO_BIT_2, PORTA2_FUNC_UART1_RXD);
        system_set_port_mux(GPIO_PORT_A, GPIO_BIT_3, PORTA3_FUNC_UART1_TXD);
-       uart_init(UART1, BAUD_RATE_115200);    
+       uart_init(UART1, BAUD_RATE_921600);    
 
        NVIC_EnableIRQ(UART1_IRQn);
        NVIC_EnableIRQ(PMU_IRQn);
@@ -144,7 +173,7 @@ __attribute__((section("ram_code"))) void user_entry_after_sleep_imp(void)
 */
 void user_entry_before_ble_init(void)
 {    
-       rtc_init();  //心率需要
+       //rtc_init();  //心率需要
        // rtc_alarm(RTC_A,10); //RTC_A, 10MS
        // rtc_alarm(RTC_B,1000);
        /* set system power supply in BUCK mode */
@@ -164,7 +193,7 @@ void user_entry_before_ble_init(void)
        system_set_port_pull(GPIO_PA2, true);
        system_set_port_mux(GPIO_PORT_A, GPIO_BIT_2, PORTA2_FUNC_UART1_RXD);
        system_set_port_mux(GPIO_PORT_A, GPIO_BIT_3, PORTA3_FUNC_UART1_TXD);
-       uart_init(UART1, BAUD_RATE_115200);      
+       uart_init(UART1, BAUD_RATE_921600);      
        //        NVIC_EnableIRQ(UART1_IRQn);
 
        system_set_port_pull(GPIO_PC6, true);
@@ -238,9 +267,6 @@ void init_sys_config(void)
                memset(sys_config.IMEI,0,sizeof(sys_config.IMEI));
                save_sys_config();
        }
-       
-       
-       
 }
 void save_sys_config(void)
 {
@@ -267,7 +293,7 @@ extern uint8_t *uart0_rivce_data ;
 void user_entry_after_ble_init(void)
 {
        
-       co_printf("\r\n\r\n--------33333333333init_sys_config--------\r\n\r\n");
+       co_printf("\r\n\r\n--------333333333init_sys_config--------\r\n\r\n");
        //system_set_tx_power(RF_TX_POWER_POS_10dBm); //设置发射功率为10DB
        system_sleep_disable();  //关睡眠
        simple_peripheral_init();//蓝牙初始化
@@ -301,7 +327,10 @@ void user_entry_after_ble_init(void)
        sensor_init();
        os_user_loop_event_set(sensor_while);
        
-
+       // while(1)
+       // {
+       //      sensor_INT();
+       // }
        // while(1)      
        // {
                
@@ -326,6 +355,3 @@ void user_entry_after_ble_init(void)
        //      //co_printf("main:end\n");
        // }
 }
-
-               
-       
\ No newline at end of file
index 106e356..0ffd582 100644 (file)
 #include "sensor_drive.h"
 #include "algo.h"
 #include "yyl_pfev01.h"
-
+#include "os_mem.h"
 
 InitParamTypeDef pInit_Param={0};
 
 char is_HA_activate = 0;
-#define HA_BUF_LEN 10*1024
-unsigned char HA_BUF[HA_BUF_LEN];//恒爱算法库和中医算法库缓冲区
+#define HA_BUF_LEN 6*1024
+unsigned char *HA_BUF = NULL;//恒爱算法库和中医算法库缓冲区
 
 
 int yyl_in_data_len = 0;
-extern   char  send_bp_data_flag;//发送血压数据标致位
-extern   char  send_hrs_data_flag;//发送心率数据标标致位
-extern   char  send_hrv_data_flag;//发送心率变异性标致位 
-extern   char  send_spo2_data_flag;//发送血氧数值标致位 
-extern          char   send_temp_data_flag;//发送温度标致位
-extern   char  send_gs_data_flag;//发送gsensor数据标致位
-extern   char send_sleep_data_flag;//发送sleep数据标致位
-extern   char send_step_data_flag;//发送step数据标致位
-extern   char send_wear_data_flag;//发送wear数据标致位
-extern char send_yyl_data_flag;//中医标致位
+extern char    send_bp_data_flag;//发送血压数据标致位
+extern char    send_hrs_data_flag;//发送心率数据标标致位
+extern char    send_hrv_data_flag;//发送心率变异性标致位 
+extern char    send_spo2_data_flag;//发送血氧数值标致位 
+extern char    send_factory_data_flag;//工厂模式标致位
+extern char    send_temp_data_flag;//发送温度标致位
+extern char    send_gs_data_flag;//发送gsensor数据标致位
+extern char send_sleep_data_flag;//发送sleep数据标致位
+extern char send_step_data_flag;//发送step数据标致位
+extern char send_wear_data_flag;//发送wear数据标致位
+extern char send_yyl_data_flag;//中医标致位
 extern char send_emo_data_flag;//情绪标致位
 extern  uint8_t bp_data[49];
 
@@ -68,6 +69,7 @@ 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); 
@@ -136,6 +138,8 @@ void VC9202_init(void)
 unsigned char SL_SC7A20_I2c_Spi_Write(bool sl_spi_iic,unsigned char reg, unsigned char dat)
 {
        sl_spi_iic=0;//IIC模式
+       if(sl_spi_iic)
+               __nop();
        IIC0_Start_I2c(); //开始IIC
        IIC0_Write_One_Byte(SL_SC7A20_IIC_8BITS_WRITE_ADDR);//写器件地址
        if(!IIC0_Read_Ack())  //等待应答
@@ -165,6 +169,8 @@ unsigned char SL_SC7A20_I2c_Spi_Write(bool sl_spi_iic,unsigned char reg, unsigne
 unsigned char SL_SC7A20_I2c_Spi_Read(bool sl_spi_iic,unsigned char reg, unsigned char len, unsigned char *buf)
 {
        sl_spi_iic=0;//IIC模式
+       if(sl_spi_iic)
+               __nop();
        IIC0_Start_I2c();//开始IIC
        IIC0_Write_One_Byte(SL_SC7A20_IIC_8BITS_WRITE_ADDR);//写器件地址
        if(!IIC0_Read_Ack()) //等待应答
@@ -225,7 +231,7 @@ void gsensor_init(void)
 }
  /////////////////////////////////////数据转换//////////////////////////////////
 //////////////////////////////////////十六进制转字符串ASCII码///////////////////////////////////////////////////////////////////////
-char str_high,str_low;//uint8转字符高位和低位
+char str_high=0,str_low=0;//uint8转字符高位和低位
 void uintTOstr(uint8_t hex_data)//十六进制转字符串ASCII码
 {
        str_high =(hex_data&0xF0)>>4;//取高位的4位
@@ -241,7 +247,7 @@ void uintTOstr(uint8_t hex_data)//十六进制转字符串ASCII码
 }
 
 
-
+int read_BP_data_len = 0;
 char BP_test(void)
 {
        // if(send_bp_data_flag)//血压
@@ -276,7 +282,7 @@ char BP_test(void)
                        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_delay_100us(10);//不加延时串口获取数据异常     
                                irq_flag=1;
                                //co_printf("BP_test:irq_flag\n");
                        }                       
@@ -284,15 +290,8 @@ char BP_test(void)
                        {
                                
                                read_BP_data();//读血压数据
-                               //输出血压数据到串口0  
-                               uart0_write_for_hci("{\"cmd\":\"2\",\"bp_data\":\"",strlen("{\"cmd\":\"2\",\"bp_data\":\""),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);        
+                               read_BP_data_len += 16;
+                               co_printf("read_BP_data_len :%d\n",read_BP_data_len);
                                uart0_receive();//串口0接收数据处理     
                                irq_flag=0;
                        }
@@ -368,6 +367,7 @@ char EMO_test(void)
                                                co_printf("  EMO_test:status:%d emo_out_Fm_len:%d\n",status,emo_out_Fm_len);
                                                if(emo_out_Fm_len != 0)
                                                {
+                                                       //sensor_INT();//唤醒上位机
                                                        UART_send_buf_len += snprintf((char *)UART_send_buf,UART_SEND_MAX,"{\"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++)
@@ -391,6 +391,7 @@ char EMO_test(void)
                                                                UART_send_buf_len-=1;//减去最后的逗号
                                                                UART_send_buf_len += snprintf((char *)&UART_send_buf[UART_send_buf_len],UART_SEND_MAX-UART_send_buf_len,
                                                                                                                                "],");
+                                                               
                                                        }
                                                        //co_printf("  EMO_test:3:%d \n",UART_send_buf_len);
                                                        UART_send_buf_len-=1;//减去最后的逗号
@@ -421,6 +422,7 @@ char HRS_test(void)
                {
                        //co_printf("  get_HR_waite \n");       
                        //vcHr02IRQHandler();   
+                       co_delay_100us(10);
                        irq_flag=1;
                        uart0_receive();//串口0接收数据处理
                } 
@@ -429,17 +431,7 @@ char HRS_test(void)
                        //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)
-                       {
-                               //co_printf("HRS_test3!!!!!!!!\n");
-                               //co_printf("hr_rate0:%d UART_send_buf:0x%x\n",vc9202_alg_results.hr_rate,UART_send_buf);
-                               memset(UART_send_buf,0,UART_SEND_MAX);
-                               co_printf("hr_rate:%d \n",vc9202_alg_results.hr_rate);
-                               UART_send_buf_len = snprintf((char *)UART_send_buf,UART_SEND_MAX,"{\"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; 
-                               //co_printf("hr_rate2:%d \n",vc9202_alg_results.hr_rate);
-                       }       
+                       uart0_receive();//串口0接收数据处理
                }
        }
     return send_hrs_data_flag;
@@ -473,6 +465,7 @@ char SPO2_test(void)
                {
                        //co_printf("  get_SPO2_waite \n");     
                        //vcHr02IRQHandler();   
+                       co_delay_100us(10);
                        irq_flag=1;
                        uart0_receive();//串口0接收数据处理
                }  
@@ -482,19 +475,36 @@ char SPO2_test(void)
                        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,UART_SEND_MAX);
-                               UART_send_buf_len = snprintf((char *)UART_send_buf,UART_SEND_MAX,"{\"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;
 }
+//工厂模式
+char factory_test(void)
+{
+       char irq_flag;
+       while(send_factory_data_flag)//放入定时测量的值,如果1分钟内没检测到值就退出
+       {
+               while(gpio_get_pin_value(GPIO_PORT_C, GPIO_BIT_7)==1&&send_factory_data_flag)//等待HR_INT变低    
+               {
+                       //co_printf("  get_factory_waite \n");  
+                       //vcHr02IRQHandler();   
+                       irq_flag=1;
+                       uart0_receive();//串口0接收数据处理
+               }  
+               while((gpio_get_pin_value(GPIO_PORT_C, GPIO_BIT_7)==0)&&irq_flag&&send_factory_data_flag)//等待HR_INT变高 
+               {       
+                       irq_flag=0;     
+                       uart0_receive();//串口0接收数据处理
+
+                       vc9202_usr_interrupt_handler(SPORT_TYPE_NORMAL,1);//在中断处理函数返回协议数据     
+               }
+       }
+       
+    return send_factory_data_flag;
+}
 ////////////////////////////////////云医链中医测试////////////////////////////////////////////////
 unsigned int yyl_timer=0;
 void YYL_test_timer(void)
@@ -509,14 +519,68 @@ void YYL_test_timer(void)
        }
 }
 int YYL_test_count = 0;
-
-char YYL_test(void)
+void YYL_out_data(void)
 {
-       char irq_flag;
        yylPFE_OutputData *pOutputData; 
        yylPFE_OutputData *pOutputData_tmp;     
        int pOutputData_len ;
        int printf_len = 0;
+       co_printf("YYL_Output_PFE!!\n");
+       if(yyl_in_data_len>= 3000-1)
+       {
+               co_printf("WORK_MODE_HRV hr:%d \nPPG:",vc9202_alg_results.hr_rate);
+               pOutputData = YYL_Output_PFE(&pOutputData_len);
+               co_printf("YYL_test:pOutputData_len:%d\n",pOutputData_len);
+               memset(UART_send_buf,0,UART_SEND_MAX);
+               //co_printf("YYL_test:");
+               UART_send_buf_len = snprintf((char *)UART_send_buf,UART_SEND_MAX,
+                                                                       "{\"cmd\":\"2\",\"yyl_data\":\"");
+               uart0_write_for_hci(UART_send_buf,UART_send_buf_len,NULL, NULL);
+               printf_len+=UART_send_buf_len;
+               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,UART_SEND_MAX,
+                                                                       "%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);
+               if(HA_BUF != NULL)
+                       YYL_Init_PFE( HA_BUF, HA_BUF_LEN);//中医初始化
+               yyl_in_data_len =0;
+               // ///////关闭//////////
+               // pInit_Param.work_mode = WORK_MODE_NONE;
+               // vc9202_usr_init(&pInit_Param);
+               // send_yyl_data_flag=2;
+               // yyl_timer=0;
+               //co_printf(" colse\n");
+       }
+}
+char YYL_test(void)
+{
+       char irq_flag;
+       
        while(send_yyl_data_flag==1)//中医
        {
                while(gpio_get_pin_value(GPIO_PORT_C, GPIO_BIT_7)==1&&send_yyl_data_flag)//等待HR_INT变低    
@@ -532,55 +596,17 @@ char YYL_test(void)
                
                        //co_printf("YYL_test1!!\n");           
                        vc9202_usr_interrupt_handler(SPORT_TYPE_NORMAL,1);//里面获取ppg数据
-                       //co_printf("YYL_test2!!\n");   
-                       
-                       if(yyl_in_data_len>= 3000-1)
+                       uart0_receive();//串口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,UART_SEND_MAX);
-                               co_printf("YYL_test:");
-                               UART_send_buf_len = snprintf((char *)UART_send_buf,UART_SEND_MAX,
-                                                                                       "{\"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,UART_SEND_MAX,
-                                                                                       "%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;
-                               // ///////关闭//////////
-                               // pInit_Param.work_mode = WORK_MODE_NONE;
-                               // vc9202_usr_init(&pInit_Param);
-                               // send_yyl_data_flag=2;
-                               // yyl_timer=0;
-                               co_printf(" colse\n");
+                               
+                       }else
+                       {
+                               // sensor_INT();//唤醒上位机
+                               // co_delay_10us(100*1000);
                        }
+                       //co_printf("YYL_test2!!\n");   
                }
        }
 
@@ -701,9 +727,8 @@ void BP_open(void)//血压
        IIC1_Read_Ack();
        IIC1_Stop_I2c( ); 
        send_bp_data_flag = 1;
+       read_BP_data_len =0;
        co_printf(" BP_open \n");
-
-       
 }
 void EMO_open(void)//情绪
 {
@@ -719,7 +744,21 @@ void EMO_open(void)//情绪
        IIC1_Read_Ack();
        IIC1_Stop_I2c(); 
        send_emo_data_flag = 1;
-
+       if(HA_BUF != NULL)
+       {
+               os_free(HA_BUF);
+               HA_BUF = NULL;
+       }
+       HA_BUF = os_malloc(HA_BUF_LEN);
+       if(HA_BUF == NULL)
+       {
+               while(1)
+               {
+                       co_printf("  EMO_open malloc error!!!!!\n");
+                       co_delay_10us(100*1000);
+               }
+       }
+       init_algorithm(HA_BUF, HA_BUF_LEN);
        co_printf(" EMO_open \n");
        
 }
@@ -731,10 +770,24 @@ void YYL_open(void)//中医
        //pmu_port_wakeup_func_set(GPIO_PC7);//使能心率中断
        pInit_Param.work_mode = WORK_MODE_HRV;
        vc9202_usr_init(&pInit_Param);
+       if(HA_BUF != NULL)
+       {
+               os_free(HA_BUF);
+               HA_BUF = NULL;
+       }
+       HA_BUF = os_malloc(HA_BUF_LEN);
+       if(HA_BUF == NULL)
+       {
+               while(1)
+               {
+                       co_printf("  YYL_open malloc error!!!!!\n");
+                       co_delay_10us(100*1000);
+               }
+       }
        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));
+       //init_algorithm(HA_BUF, sizeof(HA_BUF));
 
 }
 
@@ -764,7 +817,19 @@ void SPO2_open(void)//血氧
        
        //vc9202_usr_interrupt_handler(SPORT_TYPE_NORMAL,1);
 }
+void factory_open(void)//工厂模式
+{
 
+       gpio_set_pin_value(GPIO_PORT_A, GPIO_BIT_0, 1);  //心率使能 
+       gpio_set_pin_value(GPIO_PORT_A, GPIO_BIT_1, 0); //血压使能
+       //pmu_port_wakeup_func_set(GPIO_PC7);//使能心率中断
+       pInit_Param.work_mode = WORK_MODE_FACTORY;
+       vc9202_usr_init(&pInit_Param);
+       send_factory_data_flag = 1;
+       co_printf("  factory_open \n");
+       
+       //vc9202_usr_interrupt_handler(SPORT_TYPE_NORMAL,1);
+}
 void sensor_close(void)
 {
        pInit_Param.work_mode = WORK_MODE_NONE;
@@ -773,6 +838,7 @@ void sensor_close(void)
        send_hrs_data_flag=0;//发送心率数据标标致位  
        send_hrv_data_flag=0;//发送心率变异性标致位  
        send_spo2_data_flag=0;//发送血氧数值标致位 
+       send_factory_data_flag=0;//工厂模式数值标致位 
        send_temp_data_flag=0;//发送温度标致位
        send_gs_data_flag=0;//发送gsensor数据标致位
        send_sleep_data_flag=0;//发送sleep数据标致位
@@ -782,13 +848,18 @@ void sensor_close(void)
        gpio_set_pin_value(GPIO_PORT_A, GPIO_BIT_1, 0); //血压使能
 
        pmu_port_wakeup_func_clear(GPIO_PC7);//失能中断GPIO中断
+       if(HA_BUF != NULL)
+       {
+               os_free(HA_BUF);
+               HA_BUF = NULL;
+       }
        co_printf("  sensor_close \n");
 }
 
 void sensor_while(void)
 {
        uart0_receive();
-       
+       //factory_open();
        //if(HR_IRQ_FLAG == 1)
        {
                //co_printf("sensor_while:HR_IRQ_FLAG:%d BP_IRQ_FLAG:%d\n",HR_IRQ_FLAG,BP_IRQ_FLAG);
@@ -801,7 +872,8 @@ void sensor_while(void)
                SPO2_test();
                // /////////////////////中医测量/////////////////////////////
                YYL_test();
-
+               // /////////////////////工厂模式/////////////////////////////
+               factory_test();
        }
        //if(BP_IRQ_FLAG == 1)
        {
@@ -815,6 +887,14 @@ void sensor_while(void)
        // pmu_port_wakeup_func_set(GPIO_PC7|GPIO_PD4|GPIO_PD5|GPIO_PD6|GPIO_PD7);//GPIO中断
        // NVIC_EnableIRQ(PMU_IRQn);
 }
+//产生中断,告诉上位机有数据
+void sensor_INT(void)
+{
+       gpio_set_pin_value(GPIO_PORT_D, GPIO_BIT_6, 1);  
+       co_delay_100us(2);
+       gpio_set_pin_value(GPIO_PORT_D, GPIO_BIT_6, 0);  //中断信号使能  低电平
+       co_delay_100us(2);
+}
 void sensor_init(void)
 {
 
@@ -834,6 +914,10 @@ void sensor_init(void)
        //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_D, GPIO_BIT_6, PORTD0_FUNC_D0);
+       gpio_set_dir(GPIO_PORT_D, GPIO_BIT_6, GPIO_DIR_OUT); 
+       gpio_set_pin_value(GPIO_PORT_D, GPIO_BIT_6, 0);  //中断信号使能  低电平
+
        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);  //心率使能  低电平
index dca9ac4..7ddd9e5 100644 (file)
@@ -35,4 +35,7 @@ void VC9202_init(void);
 void HA_lib_init(void);
 void sensor_init(void);
 void sensor_while(void);
+void sensor_INT(void);
+void YYL_out_data(void);
+void factory_open(void);
 #endif  //_SENSOR_H
index 14acc71..c1ec713 100644 (file)
@@ -384,7 +384,7 @@ void mesh_set_scan_rsp_data(uint8_t length, uint8_t *data);
  *
  * @return  None.
  */
-void mesh_init(mesh_composition_cfg_t cfg, struct bd_addr_ *addr, uint32_t store_addr);
+//void mesh_init(mesh_composition_cfg_t cfg, struct bd_addr_ *addr, uint32_t store_addr);
 /*********************************************************************
  * @fn      mesh_set_runtime
  *
index 1cd0fde..1818461 100644 (file)
@@ -1,3 +1,3 @@
 version https://git-lfs.github.com/spec/v1
-oid sha256:6f8f3c89d498c5f280eb41c8379141f9f2b930c77ffce608ac9c4631570ede70
-size 1454240
+oid sha256:02d3eb1abc05019448469a796b86c12362f35924b4b9b41b9185cd49ef933582
+size 1446208
index b6911ba..ee4021d 100644 (file)
@@ -24,7 +24,7 @@
 #include "flash_usage_config.h"
 #ifdef OTA_CRC_CHECK
 #include "os_timer.h"
-
+#include "os_task.h"
 uint32_t Crc32CalByByte(int crc,uint8_t* ptr, int len);
 uint8_t app_otas_crc_cal(uint32_t firmware_length,uint32_t new_bin_addr,uint32_t crc_data_t);
 void enable_cache(uint8_t invalid_ram);
index 961af40..42922cc 100644 (file)
 ; * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER.
 ; *
 ; *****************************************************************************/
+Heap_Size EQU 0x00000050
+                       AREA HEAP, NOINIT, READWRITE, ALIGN=3
+__heap_base
+Heap_Mem SPACE Heap_Size
+__heap_limit
 
 ; <h> Stack Configuration
 ;   <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>
@@ -159,7 +164,11 @@ Default_Handler PROC
                 EXPORT  ssp_isr_ram       [WEAK]
                 EXPORT  pdm_isr_ram       [WEAK]
                 EXPORT  uart0_isr_ram     [WEAK]
-                EXPORT  uart1_isr_ram     [WEAK]                                       
+                EXPORT  uart1_isr_ram     [WEAK]
+                                       IF      :DEF:__MICROLIB
+                                               EXPORT __heap_base
+                                               EXPORT  __heap_limit
+                                       ENDIF
 adc_isr
 ssp_isr_ram
 pdm_isr_ram
index 823c775..2591d6a 100644 (file)
@@ -1,54 +1,64 @@
 <?xml version="1.0" encoding="UTF-8" standalone="no" ?>
 <ProjectGui xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_gui.xsd">
 
-  <SchemaVersion>-5.1</SchemaVersion>
+  <SchemaVersion>-6.1</SchemaVersion>
 
   <Header>### uVision Project, (C) Keil Software</Header>
 
+  <PrjGuiSettings>
+    <LastAddFilePath></LastAddFilePath>
+  </PrjGuiSettings>
+
   <ViewPool/>
 
   <SECTreeCtrl>
     <View>
       <WinId>38003</WinId>
       <ViewName>Registers</ViewName>
-      <TableColWidths>115 275</TableColWidths>
+      <TableColWidths>140 90</TableColWidths>
     </View>
     <View>
       <WinId>346</WinId>
       <ViewName>Code Coverage</ViewName>
-      <TableColWidths>850 160</TableColWidths>
+      <TableColWidths>1010 160</TableColWidths>
     </View>
     <View>
       <WinId>204</WinId>
       <ViewName>Performance Analyzer</ViewName>
-      <TableColWidths>1010</TableColWidths>
+      <TableColWidths>1170</TableColWidths>
     </View>
   </SECTreeCtrl>
 
   <TreeListPane>
+    <View>
+      <WinId>35141</WinId>
+      <ViewName>Event Statistics</ViewName>
+      <UserString></UserString>
+      <TableColWidths>200 50 700</TableColWidths>
+    </View>
     <View>
       <WinId>1506</WinId>
       <ViewName>Symbols</ViewName>
       <UserString></UserString>
-      <TableColWidths>133 133 133</TableColWidths>
+      <TableColWidths>80 80 80</TableColWidths>
     </View>
     <View>
       <WinId>1936</WinId>
       <ViewName>Watch 1</ViewName>
       <UserString></UserString>
-      <TableColWidths>133 133 133</TableColWidths>
+      <TableColWidths>200 133 133</TableColWidths>
     </View>
     <View>
       <WinId>1937</WinId>
       <ViewName>Watch 2</ViewName>
       <UserString></UserString>
-      <TableColWidths>133 133 133</TableColWidths>
+      <TableColWidths>200 133 133</TableColWidths>
     </View>
     <View>
       <WinId>1935</WinId>
       <ViewName>Call Stack + Locals</ViewName>
       <UserString></UserString>
-      <TableColWidths>133 133 133</TableColWidths>
+      <TableColWidths>200 133 133</TableColWidths>
     </View>
     <View>
       <WinId>2506</WinId>
       <UserString></UserString>
       <TableColWidths>75 135 130 95 70 230 200 150</TableColWidths>
     </View>
+    <View>
+      <WinId>466</WinId>
+      <ViewName>Source Browser</ViewName>
+      <UserString>500</UserString>
+      <TableColWidths>300</TableColWidths>
+    </View>
   </TreeListPane>
 
+  <CompViewPool/>
+
   <WindowSettings>
     <LogicAnalizer>
       <ShowLACursor>1</ShowLACursor>
         <yPos>-1</yPos>
       </MaxPosition>
       <NormalPosition>
-        <Top>184</Top>
-        <Left>-117</Left>
-        <Right>1382</Right>
-        <Bottom>1098</Bottom>
+        <Top>138</Top>
+        <Left>757</Left>
+        <Right>2256</Right>
+        <Bottom>1067</Bottom>
       </NormalPosition>
     </WindowPosition>
     <MDIClientArea>
       <RegID>0</RegID>
       <MDITabState>
-        <Len>348</Len>
-        <Data>01000000040000000100000001000000010000000100000000000000020000000000000001000000010000000000000028000000280000000100000002000000000000000100000039473A5C312E776F726B5C332E4153525C332E5A355C312E646F635C4B31385C424C455F57617463685C636F64655C70726F6A5F6D61696E2E63000000000B70726F6A5F6D61696E2E6300000000F6FA7D00FFFFFFFF3B473A5C312E776F726B5C332E4153525C332E5A355C312E646F635C4B31385C424C455F57617463685C6B65696C5C496D69746174655F4949432E63000000000D496D69746174655F4949432E6300000000FFDC7800FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD50001000000000000000200000027010000260100005E05000028030000</Data>
+        <Len>1026</Len>
+        <Data>0100000004000000010000000100000001000000010000000000000002000000000000000100000001000000000000002800000028000000010000000800000003000000010000004D483A5C312E776F726B5C332E4153525C332E5A355C312E646F635C4B31385C424C455F57617463685C6B65696C5C5643393230325C7663393230325F6472697665725F746573746D6F64652E6300000000187663393230325F6472697665725F746573746D6F64652E6300000000C5D4F200FFFFFFFF61483A5C312E776F726B5C332E4153525C332E5A355C312E646F635C4B31385C424C455F57617463685C6B65696C5C534C5F57617463685F5065646F5F4B63616C5F57726973745F536C6565705F537761795F4C5F4170706C69636174696F6E2E630000000033534C5F57617463685F5065646F5F4B63616C5F57726973745F536C6565705F537761795F4C5F4170706C69636174696F6E2E6300000000FFDC7800FFFFFFFF4F483A5C312E776F726B5C332E4153525C332E5A355C312E646F635C4B31385C424C455F57617463685C636F6D706F6E656E74735C626C655C696E636C7564655C6D6573685C6D6573685F6170692E68000000000A6D6573685F6170692E6800000000BECEA100FFFFFFFF42483A5C312E776F726B5C332E4153525C332E5A355C312E646F635C4B31385C424C455F57617463685C6B65696C5C5643393230325C7663393230325F757365722E63000000000D7663393230325F757365722E6300000000F0A0A100FFFFFFFF3C483A5C312E776F726B5C332E4153525C332E5A355C312E646F635C4B31385C424C455F57617463685C636F64655C73656E736F725F64726976652E63000000000E73656E736F725F64726976652E6300000000BCA8E100FFFFFFFF4E483A5C312E776F726B5C332E4153525C332E5A355C312E646F635C4B31385C424C455F57617463685C636F6D706F6E656E74735C626C655C70726F66696C65735C626C655F6F74615C6F74612E6300000000056F74612E63000000009CC1B600FFFFFFFF39483A5C312E776F726B5C332E4153525C332E5A355C312E646F635C4B31385C424C455F57617463685C636F64655C70726F6A5F6D61696E2E63000000000B70726F6A5F6D61696E2E6300000000F7B88600FFFFFFFF39483A5C312E776F726B5C332E4153525C332E5A355C312E646F635C4B31385C424C455F57617463685C6B65696C5C626C655F355F302E736374000000000B626C655F355F302E73637400000000D9ADC200FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD500010000000000000002000000F1030000F8000000C80800004E030000</Data>
       </MDITabState>
     </MDIClientArea>
     <ViewEx>
         <RecentRowIndex>0</RecentRowIndex>
         <RectRecentDocked>
           <Len>16</Len>
-          <Data>940100004F00000090050000DD000000</Data>
+          <Data>F40000004F00000090050000DD000000</Data>
         </RectRecentDocked>
         <RectRecentFloat>
           <Len>16</Len>
-          <Data>FE010000F5000000FA05000083010000</Data>
+          <Data>1901000030010000B5050000BE010000</Data>
         </RectRecentFloat>
       </Window>
       <Window>
         <RecentRowIndex>0</RecentRowIndex>
         <RectRecentDocked>
           <Len>16</Len>
-          <Data>00000000630000009001000051020000</Data>
+          <Data>0300000066000000ED0000008C020000</Data>
         </RectRecentDocked>
         <RectRecentFloat>
           <Len>16</Len>
-          <Data>8A000000A10000001A02000031020000</Data>
+          <Data>BE000000D5000000AE0100009E010000</Data>
         </RectRecentFloat>
       </Window>
       <Window>
         <RegID>109</RegID>
         <PaneID>109</PaneID>
-        <IsVisible>0</IsVisible>
+        <IsVisible>1</IsVisible>
         <IsFloating>0</IsFloating>
         <IsTabbed>0</IsTabbed>
         <IsActivated>0</IsActivated>
         <RecentRowIndex>0</RecentRowIndex>
         <RectRecentDocked>
           <Len>16</Len>
-          <Data>03000000660000008D01000038020000</Data>
+          <Data>0300000066000000ED0000008C020000</Data>
         </RectRecentDocked>
         <RectRecentFloat>
           <Len>16</Len>
-          <Data>8A000000A1000000A6010000DD020000</Data>
+          <Data>BE000000D5000000DA01000011030000</Data>
         </RectRecentFloat>
       </Window>
       <Window>
         </RectRecentDocked>
         <RectRecentFloat>
           <Len>16</Len>
-          <Data>8A000000A1000000520300002F010000</Data>
+          <Data>BE000000D50000008603000063010000</Data>
         </RectRecentFloat>
       </Window>
       <Window>
         </RectRecentDocked>
         <RectRecentFloat>
           <Len>16</Len>
-          <Data>8A000000A1000000520300002F010000</Data>
+          <Data>BE000000D50000008603000063010000</Data>
         </RectRecentFloat>
       </Window>
       <Window>
         </RectRecentDocked>
         <RectRecentFloat>
           <Len>16</Len>
-          <Data>8A000000A1000000520300002F010000</Data>
+          <Data>BE000000D50000008603000063010000</Data>
         </RectRecentFloat>
       </Window>
       <Window>
         </RectRecentDocked>
         <RectRecentFloat>
           <Len>16</Len>
-          <Data>8A000000A1000000520300002F010000</Data>
+          <Data>BE000000D50000008603000063010000</Data>
         </RectRecentFloat>
       </Window>
       <Window>
         <RecentRowIndex>0</RecentRowIndex>
         <RectRecentDocked>
           <Len>16</Len>
-          <Data>03040000660000008D0500000C020000</Data>
+          <Data>A3040000660000008D0500000C020000</Data>
         </RectRecentDocked>
         <RectRecentFloat>
           <Len>16</Len>
-          <Data>8A000000A10000001A02000031020000</Data>
+          <Data>BE000000D5000000AE0100009E010000</Data>
         </RectRecentFloat>
       </Window>
       <Window>
         <RecentRowIndex>0</RecentRowIndex>
         <RectRecentDocked>
           <Len>16</Len>
-          <Data>97010000660000008D050000C4000000</Data>
+          <Data>F7000000660000008D050000C4000000</Data>
         </RectRecentDocked>
         <RectRecentFloat>
           <Len>16</Len>
-          <Data>8A000000A1000000520300002F010000</Data>
+          <Data>BE000000D50000008603000063010000</Data>
         </RectRecentFloat>
       </Window>
       <Window>
         </RectRecentDocked>
         <RectRecentFloat>
           <Len>16</Len>
-          <Data>8A000000A10000001A02000031020000</Data>
+          <Data>BE000000D5000000AE0100009E010000</Data>
         </RectRecentFloat>
       </Window>
       <Window>
         </RectRecentDocked>
         <RectRecentFloat>
           <Len>16</Len>
-          <Data>8A000000A10000001A02000031020000</Data>
+          <Data>BE000000D5000000AE0100009E010000</Data>
         </RectRecentFloat>
       </Window>
       <Window>
         </RectRecentDocked>
         <RectRecentFloat>
           <Len>16</Len>
-          <Data>8A000000A10000001A02000031020000</Data>
+          <Data>BE000000D5000000AE0100009E010000</Data>
         </RectRecentFloat>
       </Window>
       <Window>
         </RectRecentDocked>
         <RectRecentFloat>
           <Len>16</Len>
-          <Data>8A000000A1000000520300002F010000</Data>
+          <Data>BE000000D50000008603000063010000</Data>
         </RectRecentFloat>
       </Window>
       <Window>
         </RectRecentDocked>
         <RectRecentFloat>
           <Len>16</Len>
-          <Data>8A000000A1000000520300002F010000</Data>
+          <Data>BE000000D50000008603000063010000</Data>
         </RectRecentFloat>
       </Window>
       <Window>
         </RectRecentDocked>
         <RectRecentFloat>
           <Len>16</Len>
-          <Data>8A000000A1000000520300002F010000</Data>
+          <Data>BE000000D50000008603000063010000</Data>
         </RectRecentFloat>
       </Window>
       <Window>
         </RectRecentDocked>
         <RectRecentFloat>
           <Len>16</Len>
-          <Data>8A000000A1000000520300002F010000</Data>
+          <Data>BE000000D50000008603000063010000</Data>
         </RectRecentFloat>
       </Window>
       <Window>
         <RegID>195</RegID>
         <PaneID>195</PaneID>
-        <IsVisible>0</IsVisible>
+        <IsVisible>1</IsVisible>
         <IsFloating>0</IsFloating>
         <IsTabbed>0</IsTabbed>
         <IsActivated>0</IsActivated>
         <RecentRowIndex>0</RecentRowIndex>
         <RectRecentDocked>
           <Len>16</Len>
-          <Data>03000000660000008D01000038020000</Data>
+          <Data>0300000066000000ED0000008C020000</Data>
         </RectRecentDocked>
         <RectRecentFloat>
           <Len>16</Len>
-          <Data>8A000000A1000000A6010000DD020000</Data>
+          <Data>BE000000D5000000DA01000011030000</Data>
         </RectRecentFloat>
       </Window>
       <Window>
         <RegID>196</RegID>
         <PaneID>196</PaneID>
-        <IsVisible>0</IsVisible>
+        <IsVisible>1</IsVisible>
         <IsFloating>0</IsFloating>
         <IsTabbed>0</IsTabbed>
         <IsActivated>0</IsActivated>
         <RecentRowIndex>0</RecentRowIndex>
         <RectRecentDocked>
           <Len>16</Len>
-          <Data>03000000660000008D01000038020000</Data>
+          <Data>0300000066000000ED0000008C020000</Data>
         </RectRecentDocked>
         <RectRecentFloat>
           <Len>16</Len>
-          <Data>8A000000A1000000A6010000DD020000</Data>
+          <Data>BE000000D5000000DA01000011030000</Data>
         </RectRecentFloat>
       </Window>
       <Window>
         <RecentRowIndex>0</RecentRowIndex>
         <RectRecentDocked>
           <Len>16</Len>
-          <Data>030000006C020000C80500003F030000</Data>
+          <Data>03000000C0020000C80500004E030000</Data>
         </RectRecentDocked>
         <RectRecentFloat>
           <Len>16</Len>
-          <Data>8A000000A1000000520300002F010000</Data>
+          <Data>BE000000D50000008603000063010000</Data>
         </RectRecentFloat>
       </Window>
       <Window>
         </RectRecentDocked>
         <RectRecentFloat>
           <Len>16</Len>
-          <Data>8A000000A1000000520300002F010000</Data>
+          <Data>BE000000D50000008603000063010000</Data>
         </RectRecentFloat>
       </Window>
       <Window>
         <IsActivated>0</IsActivated>
         <MRUWidth>32767</MRUWidth>
         <PinState>0</PinState>
-        <RecentFrameAlignment>32768</RecentFrameAlignment>
+        <RecentFrameAlignment>4096</RecentFrameAlignment>
         <RecentRowIndex>0</RecentRowIndex>
         <RectRecentDocked>
           <Len>16</Len>
-          <Data>030000006C020000C80500003F030000</Data>
+          <Data>03000000C0020000C80500004E030000</Data>
         </RectRecentDocked>
         <RectRecentFloat>
           <Len>16</Len>
-          <Data>8A000000A1000000520300002F010000</Data>
+          <Data>BE000000D50000008603000063010000</Data>
         </RectRecentFloat>
       </Window>
       <Window>
         <RecentRowIndex>0</RecentRowIndex>
         <RectRecentDocked>
           <Len>16</Len>
-          <Data>97010000660000008D050000C4000000</Data>
+          <Data>F7000000660000008D050000C4000000</Data>
         </RectRecentDocked>
         <RectRecentFloat>
           <Len>16</Len>
-          <Data>8A000000A1000000520300002F010000</Data>
+          <Data>BE000000D50000008603000063010000</Data>
         </RectRecentFloat>
       </Window>
       <Window>
         <RecentRowIndex>0</RecentRowIndex>
         <RectRecentDocked>
           <Len>16</Len>
-          <Data>97010000660000008D050000C4000000</Data>
+          <Data>F7000000660000008D050000C4000000</Data>
         </RectRecentDocked>
         <RectRecentFloat>
           <Len>16</Len>
-          <Data>8A000000A1000000520300002F010000</Data>
+          <Data>BE000000D50000008603000063010000</Data>
         </RectRecentFloat>
       </Window>
       <Window>
         <RecentRowIndex>0</RecentRowIndex>
         <RectRecentDocked>
           <Len>16</Len>
-          <Data>03040000660000008D0500000C020000</Data>
+          <Data>A3040000660000008D0500000C020000</Data>
         </RectRecentDocked>
         <RectRecentFloat>
           <Len>16</Len>
-          <Data>8A000000A10000001A02000031020000</Data>
+          <Data>BE000000D5000000AE0100009E010000</Data>
         </RectRecentFloat>
       </Window>
       <Window>
         </RectRecentDocked>
         <RectRecentFloat>
           <Len>16</Len>
-          <Data>8A000000A1000000520300002F010000</Data>
+          <Data>BE000000D50000008603000063010000</Data>
         </RectRecentFloat>
       </Window>
       <Window>
         <RecentRowIndex>0</RecentRowIndex>
         <RectRecentDocked>
           <Len>16</Len>
-          <Data>97010000660000008D050000C4000000</Data>
+          <Data>F7000000660000008D050000C4000000</Data>
         </RectRecentDocked>
         <RectRecentFloat>
           <Len>16</Len>
-          <Data>8A000000A1000000520300002F010000</Data>
+          <Data>BE000000D50000008603000063010000</Data>
         </RectRecentFloat>
       </Window>
       <Window>
         <RecentRowIndex>0</RecentRowIndex>
         <RectRecentDocked>
           <Len>16</Len>
-          <Data>97010000660000008D050000C4000000</Data>
+          <Data>F7000000660000008D050000C4000000</Data>
         </RectRecentDocked>
         <RectRecentFloat>
           <Len>16</Len>
-          <Data>8A000000A1000000520300002F010000</Data>
+          <Data>BE000000D50000008603000063010000</Data>
+        </RectRecentFloat>
+      </Window>
+      <Window>
+        <RegID>35141</RegID>
+        <PaneID>35141</PaneID>
+        <IsVisible>0</IsVisible>
+        <IsFloating>0</IsFloating>
+        <IsTabbed>0</IsTabbed>
+        <IsActivated>0</IsActivated>
+        <MRUWidth>32767</MRUWidth>
+        <PinState>0</PinState>
+        <RecentFrameAlignment>4096</RecentFrameAlignment>
+        <RecentRowIndex>0</RecentRowIndex>
+        <RectRecentDocked>
+          <Len>16</Len>
+          <Data>F7000000660000008D050000C4000000</Data>
+        </RectRecentDocked>
+        <RectRecentFloat>
+          <Len>16</Len>
+          <Data>BE000000D5000000AE0100009E010000</Data>
         </RectRecentFloat>
       </Window>
       <Window>
         <RecentRowIndex>0</RecentRowIndex>
         <RectRecentDocked>
           <Len>16</Len>
-          <Data>97010000660000008D050000C4000000</Data>
+          <Data>F7000000660000008D050000C4000000</Data>
         </RectRecentDocked>
         <RectRecentFloat>
           <Len>16</Len>
-          <Data>8A000000A1000000520300002F010000</Data>
+          <Data>BE000000D50000008603000063010000</Data>
         </RectRecentFloat>
       </Window>
       <Window>
         <RecentRowIndex>0</RecentRowIndex>
         <RectRecentDocked>
           <Len>16</Len>
-          <Data>03040000660000008D0500000C020000</Data>
+          <Data>A3040000660000008D0500000C020000</Data>
         </RectRecentDocked>
         <RectRecentFloat>
           <Len>16</Len>
-          <Data>8A000000A10000001A02000031020000</Data>
+          <Data>BE000000D5000000AE0100009E010000</Data>
         </RectRecentFloat>
       </Window>
       <Window>
         <RecentRowIndex>0</RecentRowIndex>
         <RectRecentDocked>
           <Len>16</Len>
-          <Data>03040000660000008D0500000C020000</Data>
+          <Data>A3040000660000008D0500000C020000</Data>
         </RectRecentDocked>
         <RectRecentFloat>
           <Len>16</Len>
-          <Data>8A000000A10000001A02000031020000</Data>
+          <Data>BE000000D5000000AE0100009E010000</Data>
         </RectRecentFloat>
       </Window>
       <Window>
         <RecentRowIndex>0</RecentRowIndex>
         <RectRecentDocked>
           <Len>16</Len>
-          <Data>03040000660000008D0500000C020000</Data>
+          <Data>A3040000660000008D0500000C020000</Data>
         </RectRecentDocked>
         <RectRecentFloat>
           <Len>16</Len>
-          <Data>8A000000A10000001A02000031020000</Data>
+          <Data>BE000000D5000000AE0100009E010000</Data>
         </RectRecentFloat>
       </Window>
       <Window>
         <RecentRowIndex>0</RecentRowIndex>
         <RectRecentDocked>
           <Len>16</Len>
-          <Data>03040000660000008D0500000C020000</Data>
+          <Data>A3040000660000008D0500000C020000</Data>
         </RectRecentDocked>
         <RectRecentFloat>
           <Len>16</Len>
-          <Data>8A000000A10000001A02000031020000</Data>
+          <Data>BE000000D5000000AE0100009E010000</Data>
         </RectRecentFloat>
       </Window>
       <Window>
         <RecentRowIndex>0</RecentRowIndex>
         <RectRecentDocked>
           <Len>16</Len>
-          <Data>03040000660000008D0500000C020000</Data>
+          <Data>A3040000660000008D0500000C020000</Data>
         </RectRecentDocked>
         <RectRecentFloat>
           <Len>16</Len>
-          <Data>8A000000A10000001A02000031020000</Data>
+          <Data>BE000000D5000000AE0100009E010000</Data>
         </RectRecentFloat>
       </Window>
       <Window>
         <RecentRowIndex>0</RecentRowIndex>
         <RectRecentDocked>
           <Len>16</Len>
-          <Data>03040000660000008D0500000C020000</Data>
+          <Data>A3040000660000008D0500000C020000</Data>
         </RectRecentDocked>
         <RectRecentFloat>
           <Len>16</Len>
-          <Data>8A000000A10000001A02000031020000</Data>
+          <Data>BE000000D5000000AE0100009E010000</Data>
         </RectRecentFloat>
       </Window>
       <Window>
         <RecentRowIndex>0</RecentRowIndex>
         <RectRecentDocked>
           <Len>16</Len>
-          <Data>03040000660000008D0500000C020000</Data>
+          <Data>A3040000660000008D0500000C020000</Data>
         </RectRecentDocked>
         <RectRecentFloat>
           <Len>16</Len>
-          <Data>8A000000A10000001A02000031020000</Data>
+          <Data>BE000000D5000000AE0100009E010000</Data>
         </RectRecentFloat>
       </Window>
       <Window>
         <RecentRowIndex>0</RecentRowIndex>
         <RectRecentDocked>
           <Len>16</Len>
-          <Data>03040000660000008D0500000C020000</Data>
+          <Data>A3040000660000008D0500000C020000</Data>
         </RectRecentDocked>
         <RectRecentFloat>
           <Len>16</Len>
-          <Data>8A000000A10000001A02000031020000</Data>
+          <Data>BE000000D5000000AE0100009E010000</Data>
         </RectRecentFloat>
       </Window>
       <Window>
         <RecentRowIndex>0</RecentRowIndex>
         <RectRecentDocked>
           <Len>16</Len>
-          <Data>03040000660000008D0500000C020000</Data>
+          <Data>A3040000660000008D0500000C020000</Data>
         </RectRecentDocked>
         <RectRecentFloat>
           <Len>16</Len>
-          <Data>8A000000A10000001A02000031020000</Data>
+          <Data>BE000000D5000000AE0100009E010000</Data>
         </RectRecentFloat>
       </Window>
       <Window>
         <RecentRowIndex>0</RecentRowIndex>
         <RectRecentDocked>
           <Len>16</Len>
-          <Data>03040000660000008D0500000C020000</Data>
+          <Data>A3040000660000008D0500000C020000</Data>
         </RectRecentDocked>
         <RectRecentFloat>
           <Len>16</Len>
-          <Data>8A000000A10000001A02000031020000</Data>
+          <Data>BE000000D5000000AE0100009E010000</Data>
         </RectRecentFloat>
       </Window>
       <Window>
         <RecentRowIndex>0</RecentRowIndex>
         <RectRecentDocked>
           <Len>16</Len>
-          <Data>03040000660000008D0500000C020000</Data>
+          <Data>A3040000660000008D0500000C020000</Data>
         </RectRecentDocked>
         <RectRecentFloat>
           <Len>16</Len>
-          <Data>8A000000A10000001A02000031020000</Data>
+          <Data>BE000000D5000000AE0100009E010000</Data>
         </RectRecentFloat>
       </Window>
       <Window>
         <RecentRowIndex>0</RecentRowIndex>
         <RectRecentDocked>
           <Len>16</Len>
-          <Data>03040000660000008D0500000C020000</Data>
+          <Data>A3040000660000008D0500000C020000</Data>
         </RectRecentDocked>
         <RectRecentFloat>
           <Len>16</Len>
-          <Data>8A000000A10000001A02000031020000</Data>
+          <Data>BE000000D5000000AE0100009E010000</Data>
         </RectRecentFloat>
       </Window>
       <Window>
         <RecentRowIndex>0</RecentRowIndex>
         <RectRecentDocked>
           <Len>16</Len>
-          <Data>03040000660000008D0500000C020000</Data>
+          <Data>A3040000660000008D0500000C020000</Data>
         </RectRecentDocked>
         <RectRecentFloat>
           <Len>16</Len>
-          <Data>8A000000A10000001A02000031020000</Data>
+          <Data>BE000000D5000000AE0100009E010000</Data>
         </RectRecentFloat>
       </Window>
       <Window>
         <RecentRowIndex>0</RecentRowIndex>
         <RectRecentDocked>
           <Len>16</Len>
-          <Data>03040000660000008D0500000C020000</Data>
+          <Data>A3040000660000008D0500000C020000</Data>
         </RectRecentDocked>
         <RectRecentFloat>
           <Len>16</Len>
-          <Data>8A000000A10000001A02000031020000</Data>
+          <Data>BE000000D5000000AE0100009E010000</Data>
         </RectRecentFloat>
       </Window>
       <Window>
         <RecentRowIndex>0</RecentRowIndex>
         <RectRecentDocked>
           <Len>16</Len>
-          <Data>03040000660000008D0500000C020000</Data>
+          <Data>A3040000660000008D0500000C020000</Data>
         </RectRecentDocked>
         <RectRecentFloat>
           <Len>16</Len>
-          <Data>8A000000A10000001A02000031020000</Data>
+          <Data>BE000000D5000000AE0100009E010000</Data>
         </RectRecentFloat>
       </Window>
       <Window>
         <RecentRowIndex>0</RecentRowIndex>
         <RectRecentDocked>
           <Len>16</Len>
-          <Data>03040000660000008D0500000C020000</Data>
+          <Data>A3040000660000008D0500000C020000</Data>
         </RectRecentDocked>
         <RectRecentFloat>
           <Len>16</Len>
-          <Data>8A000000A10000001A02000031020000</Data>
+          <Data>BE000000D5000000AE0100009E010000</Data>
         </RectRecentFloat>
       </Window>
       <Window>
         <RecentRowIndex>0</RecentRowIndex>
         <RectRecentDocked>
           <Len>16</Len>
-          <Data>03040000660000008D0500000C020000</Data>
+          <Data>A3040000660000008D0500000C020000</Data>
         </RectRecentDocked>
         <RectRecentFloat>
           <Len>16</Len>
-          <Data>8A000000A10000001A02000031020000</Data>
+          <Data>BE000000D5000000AE0100009E010000</Data>
         </RectRecentFloat>
       </Window>
       <Window>
         <RecentRowIndex>0</RecentRowIndex>
         <RectRecentDocked>
           <Len>16</Len>
-          <Data>03040000660000008D0500000C020000</Data>
+          <Data>A3040000660000008D0500000C020000</Data>
         </RectRecentDocked>
         <RectRecentFloat>
           <Len>16</Len>
-          <Data>8A000000A10000001A02000031020000</Data>
+          <Data>BE000000D5000000AE0100009E010000</Data>
         </RectRecentFloat>
       </Window>
       <Window>
         <RecentRowIndex>0</RecentRowIndex>
         <RectRecentDocked>
           <Len>16</Len>
-          <Data>03040000660000008D0500000C020000</Data>
+          <Data>A3040000660000008D0500000C020000</Data>
         </RectRecentDocked>
         <RectRecentFloat>
           <Len>16</Len>
-          <Data>8A000000A10000001A02000031020000</Data>
+          <Data>BE000000D5000000AE0100009E010000</Data>
         </RectRecentFloat>
       </Window>
       <Window>
         <RecentRowIndex>0</RecentRowIndex>
         <RectRecentDocked>
           <Len>16</Len>
-          <Data>03040000660000008D0500000C020000</Data>
+          <Data>A3040000660000008D0500000C020000</Data>
         </RectRecentDocked>
         <RectRecentFloat>
           <Len>16</Len>
-          <Data>8A000000A10000001A02000031020000</Data>
+          <Data>BE000000D5000000AE0100009E010000</Data>
         </RectRecentFloat>
       </Window>
       <Window>
         <RecentRowIndex>0</RecentRowIndex>
         <RectRecentDocked>
           <Len>16</Len>
-          <Data>03040000660000008D0500000C020000</Data>
+          <Data>A3040000660000008D0500000C020000</Data>
         </RectRecentDocked>
         <RectRecentFloat>
           <Len>16</Len>
-          <Data>8A000000A10000001A02000031020000</Data>
+          <Data>BE000000D5000000AE0100009E010000</Data>
         </RectRecentFloat>
       </Window>
       <Window>
         <RecentRowIndex>0</RecentRowIndex>
         <RectRecentDocked>
           <Len>16</Len>
-          <Data>03000000660000008D01000038020000</Data>
+          <Data>0300000066000000ED0000008C020000</Data>
         </RectRecentDocked>
         <RectRecentFloat>
           <Len>16</Len>
-          <Data>8A000000A1000000A6010000DD020000</Data>
+          <Data>BE000000D5000000DA01000011030000</Data>
         </RectRecentFloat>
       </Window>
       <Window>
         <IsActivated>0</IsActivated>
         <MRUWidth>32767</MRUWidth>
         <PinState>0</PinState>
-        <RecentFrameAlignment>32768</RecentFrameAlignment>
+        <RecentFrameAlignment>4096</RecentFrameAlignment>
         <RecentRowIndex>0</RecentRowIndex>
         <RectRecentDocked>
           <Len>16</Len>
-          <Data>030000006C020000C80500003F030000</Data>
+          <Data>03000000C0020000C80500004E030000</Data>
         </RectRecentDocked>
         <RectRecentFloat>
           <Len>16</Len>
-          <Data>8A000000A1000000520300002F010000</Data>
+          <Data>BE000000D50000008603000063010000</Data>
         </RectRecentFloat>
       </Window>
       <Window>
         <IsActivated>0</IsActivated>
         <MRUWidth>32767</MRUWidth>
         <PinState>0</PinState>
-        <RecentFrameAlignment>32768</RecentFrameAlignment>
+        <RecentFrameAlignment>4096</RecentFrameAlignment>
         <RecentRowIndex>0</RecentRowIndex>
         <RectRecentDocked>
           <Len>16</Len>
-          <Data>030000006C020000C80500003F030000</Data>
+          <Data>03000000C0020000C80500004E030000</Data>
         </RectRecentDocked>
         <RectRecentFloat>
           <Len>16</Len>
-          <Data>8A000000A1000000A6010000DD020000</Data>
+          <Data>BE000000D5000000DA01000011030000</Data>
         </RectRecentFloat>
       </Window>
       <Window>
         </RectRecentDocked>
         <RectRecentFloat>
           <Len>16</Len>
-          <Data>8A000000A10000001A02000031020000</Data>
+          <Data>BE000000D5000000AE0100009E010000</Data>
         </RectRecentFloat>
       </Window>
       <Window>
         </RectRecentDocked>
         <RectRecentFloat>
           <Len>16</Len>
-          <Data>8A000000A10000001A02000031020000</Data>
+          <Data>BE000000D5000000AE0100009E010000</Data>
+        </RectRecentFloat>
+      </Window>
+      <Window>
+        <RegID>463</RegID>
+        <PaneID>463</PaneID>
+        <IsVisible>0</IsVisible>
+        <IsFloating>0</IsFloating>
+        <IsTabbed>0</IsTabbed>
+        <IsActivated>0</IsActivated>
+        <MRUWidth>32767</MRUWidth>
+        <PinState>0</PinState>
+        <RecentFrameAlignment>4096</RecentFrameAlignment>
+        <RecentRowIndex>0</RecentRowIndex>
+        <RectRecentDocked>
+          <Len>16</Len>
+          <Data>03000000C0020000C80500004E030000</Data>
+        </RectRecentDocked>
+        <RectRecentFloat>
+          <Len>16</Len>
+          <Data>BE000000D5000000DA01000011030000</Data>
+        </RectRecentFloat>
+      </Window>
+      <Window>
+        <RegID>466</RegID>
+        <PaneID>466</PaneID>
+        <IsVisible>0</IsVisible>
+        <IsFloating>0</IsFloating>
+        <IsTabbed>0</IsTabbed>
+        <IsActivated>0</IsActivated>
+        <MRUWidth>32767</MRUWidth>
+        <PinState>0</PinState>
+        <RecentFrameAlignment>4096</RecentFrameAlignment>
+        <RecentRowIndex>0</RecentRowIndex>
+        <RectRecentDocked>
+          <Len>16</Len>
+          <Data>03000000C0020000C80500004E030000</Data>
+        </RectRecentDocked>
+        <RectRecentFloat>
+          <Len>16</Len>
+          <Data>BE000000D5000000DA01000011030000</Data>
+        </RectRecentFloat>
+      </Window>
+      <Window>
+        <RegID>470</RegID>
+        <PaneID>470</PaneID>
+        <IsVisible>0</IsVisible>
+        <IsFloating>0</IsFloating>
+        <IsTabbed>0</IsTabbed>
+        <IsActivated>0</IsActivated>
+        <MRUWidth>32767</MRUWidth>
+        <PinState>0</PinState>
+        <RecentFrameAlignment>4096</RecentFrameAlignment>
+        <RecentRowIndex>0</RecentRowIndex>
+        <RectRecentDocked>
+          <Len>16</Len>
+          <Data>F7000000660000008D050000C4000000</Data>
+        </RectRecentDocked>
+        <RectRecentFloat>
+          <Len>16</Len>
+          <Data>BE000000D50000008603000063010000</Data>
+        </RectRecentFloat>
+      </Window>
+      <Window>
+        <RegID>50000</RegID>
+        <PaneID>50000</PaneID>
+        <IsVisible>0</IsVisible>
+        <IsFloating>0</IsFloating>
+        <IsTabbed>0</IsTabbed>
+        <IsActivated>0</IsActivated>
+        <MRUWidth>32767</MRUWidth>
+        <PinState>0</PinState>
+        <RecentFrameAlignment>4096</RecentFrameAlignment>
+        <RecentRowIndex>0</RecentRowIndex>
+        <RectRecentDocked>
+          <Len>16</Len>
+          <Data>A3040000660000008D0500000C020000</Data>
+        </RectRecentDocked>
+        <RectRecentFloat>
+          <Len>16</Len>
+          <Data>BE000000D5000000AE0100009E010000</Data>
+        </RectRecentFloat>
+      </Window>
+      <Window>
+        <RegID>50001</RegID>
+        <PaneID>50001</PaneID>
+        <IsVisible>0</IsVisible>
+        <IsFloating>0</IsFloating>
+        <IsTabbed>0</IsTabbed>
+        <IsActivated>0</IsActivated>
+        <MRUWidth>32767</MRUWidth>
+        <PinState>0</PinState>
+        <RecentFrameAlignment>4096</RecentFrameAlignment>
+        <RecentRowIndex>0</RecentRowIndex>
+        <RectRecentDocked>
+          <Len>16</Len>
+          <Data>A3040000660000008D0500000C020000</Data>
+        </RectRecentDocked>
+        <RectRecentFloat>
+          <Len>16</Len>
+          <Data>BE000000D5000000AE0100009E010000</Data>
+        </RectRecentFloat>
+      </Window>
+      <Window>
+        <RegID>50002</RegID>
+        <PaneID>50002</PaneID>
+        <IsVisible>0</IsVisible>
+        <IsFloating>0</IsFloating>
+        <IsTabbed>0</IsTabbed>
+        <IsActivated>0</IsActivated>
+        <MRUWidth>32767</MRUWidth>
+        <PinState>0</PinState>
+        <RecentFrameAlignment>4096</RecentFrameAlignment>
+        <RecentRowIndex>0</RecentRowIndex>
+        <RectRecentDocked>
+          <Len>16</Len>
+          <Data>A3040000660000008D0500000C020000</Data>
+        </RectRecentDocked>
+        <RectRecentFloat>
+          <Len>16</Len>
+          <Data>BE000000D5000000AE0100009E010000</Data>
+        </RectRecentFloat>
+      </Window>
+      <Window>
+        <RegID>50003</RegID>
+        <PaneID>50003</PaneID>
+        <IsVisible>0</IsVisible>
+        <IsFloating>0</IsFloating>
+        <IsTabbed>0</IsTabbed>
+        <IsActivated>0</IsActivated>
+        <MRUWidth>32767</MRUWidth>
+        <PinState>0</PinState>
+        <RecentFrameAlignment>4096</RecentFrameAlignment>
+        <RecentRowIndex>0</RecentRowIndex>
+        <RectRecentDocked>
+          <Len>16</Len>
+          <Data>A3040000660000008D0500000C020000</Data>
+        </RectRecentDocked>
+        <RectRecentFloat>
+          <Len>16</Len>
+          <Data>BE000000D5000000AE0100009E010000</Data>
+        </RectRecentFloat>
+      </Window>
+      <Window>
+        <RegID>50004</RegID>
+        <PaneID>50004</PaneID>
+        <IsVisible>0</IsVisible>
+        <IsFloating>0</IsFloating>
+        <IsTabbed>0</IsTabbed>
+        <IsActivated>0</IsActivated>
+        <MRUWidth>32767</MRUWidth>
+        <PinState>0</PinState>
+        <RecentFrameAlignment>4096</RecentFrameAlignment>
+        <RecentRowIndex>0</RecentRowIndex>
+        <RectRecentDocked>
+          <Len>16</Len>
+          <Data>A3040000660000008D0500000C020000</Data>
+        </RectRecentDocked>
+        <RectRecentFloat>
+          <Len>16</Len>
+          <Data>BE000000D5000000AE0100009E010000</Data>
+        </RectRecentFloat>
+      </Window>
+      <Window>
+        <RegID>50005</RegID>
+        <PaneID>50005</PaneID>
+        <IsVisible>0</IsVisible>
+        <IsFloating>0</IsFloating>
+        <IsTabbed>0</IsTabbed>
+        <IsActivated>0</IsActivated>
+        <MRUWidth>32767</MRUWidth>
+        <PinState>0</PinState>
+        <RecentFrameAlignment>4096</RecentFrameAlignment>
+        <RecentRowIndex>0</RecentRowIndex>
+        <RectRecentDocked>
+          <Len>16</Len>
+          <Data>A3040000660000008D0500000C020000</Data>
+        </RectRecentDocked>
+        <RectRecentFloat>
+          <Len>16</Len>
+          <Data>BE000000D5000000AE0100009E010000</Data>
+        </RectRecentFloat>
+      </Window>
+      <Window>
+        <RegID>50006</RegID>
+        <PaneID>50006</PaneID>
+        <IsVisible>0</IsVisible>
+        <IsFloating>0</IsFloating>
+        <IsTabbed>0</IsTabbed>
+        <IsActivated>0</IsActivated>
+        <MRUWidth>32767</MRUWidth>
+        <PinState>0</PinState>
+        <RecentFrameAlignment>4096</RecentFrameAlignment>
+        <RecentRowIndex>0</RecentRowIndex>
+        <RectRecentDocked>
+          <Len>16</Len>
+          <Data>A3040000660000008D0500000C020000</Data>
+        </RectRecentDocked>
+        <RectRecentFloat>
+          <Len>16</Len>
+          <Data>BE000000D5000000AE0100009E010000</Data>
+        </RectRecentFloat>
+      </Window>
+      <Window>
+        <RegID>50007</RegID>
+        <PaneID>50007</PaneID>
+        <IsVisible>0</IsVisible>
+        <IsFloating>0</IsFloating>
+        <IsTabbed>0</IsTabbed>
+        <IsActivated>0</IsActivated>
+        <MRUWidth>32767</MRUWidth>
+        <PinState>0</PinState>
+        <RecentFrameAlignment>4096</RecentFrameAlignment>
+        <RecentRowIndex>0</RecentRowIndex>
+        <RectRecentDocked>
+          <Len>16</Len>
+          <Data>A3040000660000008D0500000C020000</Data>
+        </RectRecentDocked>
+        <RectRecentFloat>
+          <Len>16</Len>
+          <Data>BE000000D5000000AE0100009E010000</Data>
+        </RectRecentFloat>
+      </Window>
+      <Window>
+        <RegID>50008</RegID>
+        <PaneID>50008</PaneID>
+        <IsVisible>0</IsVisible>
+        <IsFloating>0</IsFloating>
+        <IsTabbed>0</IsTabbed>
+        <IsActivated>0</IsActivated>
+        <MRUWidth>32767</MRUWidth>
+        <PinState>0</PinState>
+        <RecentFrameAlignment>4096</RecentFrameAlignment>
+        <RecentRowIndex>0</RecentRowIndex>
+        <RectRecentDocked>
+          <Len>16</Len>
+          <Data>A3040000660000008D0500000C020000</Data>
+        </RectRecentDocked>
+        <RectRecentFloat>
+          <Len>16</Len>
+          <Data>BE000000D5000000AE0100009E010000</Data>
+        </RectRecentFloat>
+      </Window>
+      <Window>
+        <RegID>50009</RegID>
+        <PaneID>50009</PaneID>
+        <IsVisible>0</IsVisible>
+        <IsFloating>0</IsFloating>
+        <IsTabbed>0</IsTabbed>
+        <IsActivated>0</IsActivated>
+        <MRUWidth>32767</MRUWidth>
+        <PinState>0</PinState>
+        <RecentFrameAlignment>4096</RecentFrameAlignment>
+        <RecentRowIndex>0</RecentRowIndex>
+        <RectRecentDocked>
+          <Len>16</Len>
+          <Data>A3040000660000008D0500000C020000</Data>
+        </RectRecentDocked>
+        <RectRecentFloat>
+          <Len>16</Len>
+          <Data>BE000000D5000000AE0100009E010000</Data>
+        </RectRecentFloat>
+      </Window>
+      <Window>
+        <RegID>50010</RegID>
+        <PaneID>50010</PaneID>
+        <IsVisible>0</IsVisible>
+        <IsFloating>0</IsFloating>
+        <IsTabbed>0</IsTabbed>
+        <IsActivated>0</IsActivated>
+        <MRUWidth>32767</MRUWidth>
+        <PinState>0</PinState>
+        <RecentFrameAlignment>4096</RecentFrameAlignment>
+        <RecentRowIndex>0</RecentRowIndex>
+        <RectRecentDocked>
+          <Len>16</Len>
+          <Data>A3040000660000008D0500000C020000</Data>
+        </RectRecentDocked>
+        <RectRecentFloat>
+          <Len>16</Len>
+          <Data>BE000000D5000000AE0100009E010000</Data>
+        </RectRecentFloat>
+      </Window>
+      <Window>
+        <RegID>50011</RegID>
+        <PaneID>50011</PaneID>
+        <IsVisible>0</IsVisible>
+        <IsFloating>0</IsFloating>
+        <IsTabbed>0</IsTabbed>
+        <IsActivated>0</IsActivated>
+        <MRUWidth>32767</MRUWidth>
+        <PinState>0</PinState>
+        <RecentFrameAlignment>4096</RecentFrameAlignment>
+        <RecentRowIndex>0</RecentRowIndex>
+        <RectRecentDocked>
+          <Len>16</Len>
+          <Data>A3040000660000008D0500000C020000</Data>
+        </RectRecentDocked>
+        <RectRecentFloat>
+          <Len>16</Len>
+          <Data>BE000000D5000000AE0100009E010000</Data>
+        </RectRecentFloat>
+      </Window>
+      <Window>
+        <RegID>50012</RegID>
+        <PaneID>50012</PaneID>
+        <IsVisible>0</IsVisible>
+        <IsFloating>0</IsFloating>
+        <IsTabbed>0</IsTabbed>
+        <IsActivated>0</IsActivated>
+        <MRUWidth>32767</MRUWidth>
+        <PinState>0</PinState>
+        <RecentFrameAlignment>4096</RecentFrameAlignment>
+        <RecentRowIndex>0</RecentRowIndex>
+        <RectRecentDocked>
+          <Len>16</Len>
+          <Data>A3040000660000008D0500000C020000</Data>
+        </RectRecentDocked>
+        <RectRecentFloat>
+          <Len>16</Len>
+          <Data>BE000000D5000000AE0100009E010000</Data>
+        </RectRecentFloat>
+      </Window>
+      <Window>
+        <RegID>50013</RegID>
+        <PaneID>50013</PaneID>
+        <IsVisible>0</IsVisible>
+        <IsFloating>0</IsFloating>
+        <IsTabbed>0</IsTabbed>
+        <IsActivated>0</IsActivated>
+        <MRUWidth>32767</MRUWidth>
+        <PinState>0</PinState>
+        <RecentFrameAlignment>4096</RecentFrameAlignment>
+        <RecentRowIndex>0</RecentRowIndex>
+        <RectRecentDocked>
+          <Len>16</Len>
+          <Data>A3040000660000008D0500000C020000</Data>
+        </RectRecentDocked>
+        <RectRecentFloat>
+          <Len>16</Len>
+          <Data>BE000000D5000000AE0100009E010000</Data>
+        </RectRecentFloat>
+      </Window>
+      <Window>
+        <RegID>50014</RegID>
+        <PaneID>50014</PaneID>
+        <IsVisible>0</IsVisible>
+        <IsFloating>0</IsFloating>
+        <IsTabbed>0</IsTabbed>
+        <IsActivated>0</IsActivated>
+        <MRUWidth>32767</MRUWidth>
+        <PinState>0</PinState>
+        <RecentFrameAlignment>4096</RecentFrameAlignment>
+        <RecentRowIndex>0</RecentRowIndex>
+        <RectRecentDocked>
+          <Len>16</Len>
+          <Data>A3040000660000008D0500000C020000</Data>
+        </RectRecentDocked>
+        <RectRecentFloat>
+          <Len>16</Len>
+          <Data>BE000000D5000000AE0100009E010000</Data>
+        </RectRecentFloat>
+      </Window>
+      <Window>
+        <RegID>50015</RegID>
+        <PaneID>50015</PaneID>
+        <IsVisible>0</IsVisible>
+        <IsFloating>0</IsFloating>
+        <IsTabbed>0</IsTabbed>
+        <IsActivated>0</IsActivated>
+        <MRUWidth>32767</MRUWidth>
+        <PinState>0</PinState>
+        <RecentFrameAlignment>4096</RecentFrameAlignment>
+        <RecentRowIndex>0</RecentRowIndex>
+        <RectRecentDocked>
+          <Len>16</Len>
+          <Data>A3040000660000008D0500000C020000</Data>
+        </RectRecentDocked>
+        <RectRecentFloat>
+          <Len>16</Len>
+          <Data>BE000000D5000000AE0100009E010000</Data>
+        </RectRecentFloat>
+      </Window>
+      <Window>
+        <RegID>50016</RegID>
+        <PaneID>50016</PaneID>
+        <IsVisible>0</IsVisible>
+        <IsFloating>0</IsFloating>
+        <IsTabbed>0</IsTabbed>
+        <IsActivated>0</IsActivated>
+        <MRUWidth>32767</MRUWidth>
+        <PinState>0</PinState>
+        <RecentFrameAlignment>4096</RecentFrameAlignment>
+        <RecentRowIndex>0</RecentRowIndex>
+        <RectRecentDocked>
+          <Len>16</Len>
+          <Data>A3040000660000008D0500000C020000</Data>
+        </RectRecentDocked>
+        <RectRecentFloat>
+          <Len>16</Len>
+          <Data>BE000000D5000000AE0100009E010000</Data>
+        </RectRecentFloat>
+      </Window>
+      <Window>
+        <RegID>50017</RegID>
+        <PaneID>50017</PaneID>
+        <IsVisible>0</IsVisible>
+        <IsFloating>0</IsFloating>
+        <IsTabbed>0</IsTabbed>
+        <IsActivated>0</IsActivated>
+        <MRUWidth>32767</MRUWidth>
+        <PinState>0</PinState>
+        <RecentFrameAlignment>4096</RecentFrameAlignment>
+        <RecentRowIndex>0</RecentRowIndex>
+        <RectRecentDocked>
+          <Len>16</Len>
+          <Data>A3040000660000008D0500000C020000</Data>
+        </RectRecentDocked>
+        <RectRecentFloat>
+          <Len>16</Len>
+          <Data>BE000000D5000000AE0100009E010000</Data>
+        </RectRecentFloat>
+      </Window>
+      <Window>
+        <RegID>50018</RegID>
+        <PaneID>50018</PaneID>
+        <IsVisible>0</IsVisible>
+        <IsFloating>0</IsFloating>
+        <IsTabbed>0</IsTabbed>
+        <IsActivated>0</IsActivated>
+        <MRUWidth>32767</MRUWidth>
+        <PinState>0</PinState>
+        <RecentFrameAlignment>4096</RecentFrameAlignment>
+        <RecentRowIndex>0</RecentRowIndex>
+        <RectRecentDocked>
+          <Len>16</Len>
+          <Data>A3040000660000008D0500000C020000</Data>
+        </RectRecentDocked>
+        <RectRecentFloat>
+          <Len>16</Len>
+          <Data>BE000000D5000000AE0100009E010000</Data>
+        </RectRecentFloat>
+      </Window>
+      <Window>
+        <RegID>50019</RegID>
+        <PaneID>50019</PaneID>
+        <IsVisible>0</IsVisible>
+        <IsFloating>0</IsFloating>
+        <IsTabbed>0</IsTabbed>
+        <IsActivated>0</IsActivated>
+        <MRUWidth>32767</MRUWidth>
+        <PinState>0</PinState>
+        <RecentFrameAlignment>4096</RecentFrameAlignment>
+        <RecentRowIndex>0</RecentRowIndex>
+        <RectRecentDocked>
+          <Len>16</Len>
+          <Data>A3040000660000008D0500000C020000</Data>
+        </RectRecentDocked>
+        <RectRecentFloat>
+          <Len>16</Len>
+          <Data>BE000000D5000000AE0100009E010000</Data>
         </RectRecentFloat>
       </Window>
       <Window>
         <IsFloating>0</IsFloating>
         <IsTabbed>0</IsTabbed>
         <IsActivated>0</IsActivated>
-        <MRUWidth>940</MRUWidth>
+        <MRUWidth>966</MRUWidth>
         <PinState>0</PinState>
         <RecentFrameAlignment>8192</RecentFrameAlignment>
         <RecentRowIndex>0</RecentRowIndex>
         <RectRecentDocked>
           <Len>16</Len>
-          <Data>0000000000000000B70300001C000000</Data>
+          <Data>0000000000000000D10300001C000000</Data>
         </RectRecentDocked>
         <RectRecentFloat>
           <Len>16</Len>
         <RecentRowIndex>0</RecentRowIndex>
         <RectRecentDocked>
           <Len>16</Len>
-          <Data>0000000058030000CB0500006B030000</Data>
+          <Data>0000000067030000CB0500007A030000</Data>
         </RectRecentDocked>
         <RectRecentFloat>
           <Len>16</Len>
         <IsFloating>0</IsFloating>
         <IsTabbed>0</IsTabbed>
         <IsActivated>0</IsActivated>
-        <MRUWidth>463</MRUWidth>
+        <MRUWidth>476</MRUWidth>
         <PinState>0</PinState>
         <RecentFrameAlignment>8192</RecentFrameAlignment>
         <RecentRowIndex>1</RecentRowIndex>
         <RectRecentDocked>
           <Len>16</Len>
-          <Data>000000001C000000DA01000038000000</Data>
+          <Data>000000001C000000E701000038000000</Data>
         </RectRecentDocked>
         <RectRecentFloat>
           <Len>16</Len>
           <Data>0A0000000A0000006E0000006E000000</Data>
         </RectRecentFloat>
       </Window>
+      <Window>
+        <RegID>824</RegID>
+        <PaneID>824</PaneID>
+        <IsVisible>0</IsVisible>
+        <IsFloating>0</IsFloating>
+        <IsTabbed>0</IsTabbed>
+        <IsActivated>0</IsActivated>
+        <MRUWidth>32767</MRUWidth>
+        <PinState>0</PinState>
+        <RecentFrameAlignment>4096</RecentFrameAlignment>
+        <RecentRowIndex>0</RecentRowIndex>
+        <RectRecentDocked>
+          <Len>16</Len>
+          <Data>030000002C0200008D0500009E020000</Data>
+        </RectRecentDocked>
+        <RectRecentFloat>
+          <Len>16</Len>
+          <Data>BE000000D5000000AE0100009E010000</Data>
+        </RectRecentFloat>
+      </Window>
       <DockMan>
-        <Len>2619</Len>
-        <Data>000000000B000000000000000020000000000000FFFFFFFFFFFFFFFF94010000DD00000090050000E1000000000000000100000004000000010000000000000000000000FFFFFFFF06000000CB00000057010000CC000000F08B00005A01000079070000FFFF02000B004354616262656450616E650020000000000000FE010000F5000000FA05000083010000940100004F00000090050000DD0000000000000040280046060000000B446973617373656D626C7900000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFFFC0300004F0000000004000025020000000000000200000004000000010000000000000000000000FFFFFFFF17000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C0000018000400000000000006A040000F5000000FA050000CB020000000400004F00000090050000250200000000000040410046170000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFF900100004F0000009401000051020000010000000200001004000000010000000000000000000000FFFFFFFF05000000ED0300006D000000C3000000C400000073940000018000100000010000006A000000F5000000FA010000F7020000000000004F00000090010000510200000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73000000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7300000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657300000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273000000007394000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000000000000FFFFFFFFFFFFFFFF0000000011020000900500001502000000000000010000000400000001000000000000000000000000000000000000000000000001000000C6000000FFFFFFFF0E0000008F070000930700009407000095070000960700009007000091070000B5010000B8010000B9050000BA050000BB050000BC050000CB090000018000800000000000006A000000BB020000FA0500005D030000000000001502000090050000B702000000000000404100460E0000001343616C6C20537461636B202B204C6F63616C73000000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031000000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF084D656D6F7279203100000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFFFFFFFFFF0000000001000000000000000000000001000000FFFFFFFFC802000015020000CC020000B702000000000000020000000400000000000000000000000000000000000000000000000000000002000000C6000000FFFFFFFF8F07000001000000FFFFFFFF8F07000001000000C6000000000000000080000001000000FFFFFFFFFFFFFFFF0000000051020000CB050000550200000100000001000010040000000100000061FEFFFF25010000FFFFFFFF04000000C5000000C7000000B401000077940000018000800000010000006A000000FB02000035060000FE0300000000000055020000CB050000580300000000000040820056040000000C4275696C64204F757470757401000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657301000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF0742726F77736572000000007794000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000000000000000000</Data>
+        <Len>3312</Len>
+        <Data>000000000B000000000000000020000000000000FFFFFFFFFFFFFFFFF4000000DD00000090050000E1000000000000000100000004000000010000000000000000000000FFFFFFFF08000000CB00000057010000CC000000F08B00005A01000079070000D601000045890000FFFF02000B004354616262656450616E6500200000000000001901000030010000B5050000BE010000F40000004F00000090050000DD0000000000000040280046080000000B446973617373656D626C7900000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFF0F53797374656D20416E616C797A657200000000D601000001000000FFFFFFFFFFFFFFFF104576656E742053746174697374696373000000004589000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFF9C0400004F000000A004000025020000000000000200000004000000010000000000000000000000FFFFFFFF2B000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C000050C3000051C3000052C3000053C3000054C3000055C3000056C3000057C3000058C3000059C300005AC300005BC300005CC300005DC300005EC300005FC3000060C3000061C3000062C3000063C3000001800040000000000000C504000030010000B505000006030000A00400004F000000900500002502000000000000404100462B0000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFF000000000050C3000001000000FFFFFFFFFFFFFFFF000000000051C3000001000000FFFFFFFFFFFFFFFF000000000052C3000001000000FFFFFFFFFFFFFFFF000000000053C3000001000000FFFFFFFFFFFFFFFF000000000054C3000001000000FFFFFFFFFFFFFFFF000000000055C3000001000000FFFFFFFFFFFFFFFF000000000056C3000001000000FFFFFFFFFFFFFFFF000000000057C3000001000000FFFFFFFFFFFFFFFF000000000058C3000001000000FFFFFFFFFFFFFFFF000000000059C3000001000000FFFFFFFFFFFFFFFF00000000005AC3000001000000FFFFFFFFFFFFFFFF00000000005BC3000001000000FFFFFFFFFFFFFFFF00000000005CC3000001000000FFFFFFFFFFFFFFFF00000000005DC3000001000000FFFFFFFFFFFFFFFF00000000005EC3000001000000FFFFFFFFFFFFFFFF00000000005FC3000001000000FFFFFFFFFFFFFFFF000000000060C3000001000000FFFFFFFFFFFFFFFF000000000061C3000001000000FFFFFFFFFFFFFFFF000000000062C3000001000000FFFFFFFFFFFFFFFF000000000063C3000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFFF00000004F000000F4000000A50200000100000002000010040000000100000082FEFFFF42040000FFFFFFFF05000000ED0300006D000000C3000000C4000000739400000180001000000100000025000000300100001501000086030000000000004F000000F0000000A50200000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73010000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7301000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657301000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273000000007394000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000000000000FFFFFFFFFFFFFFFF0000000011020000900500001502000000000000010000000400000001000000000000000000000000000000000000000000000001000000C6000000FFFFFFFF0F0000008F070000930700009407000095070000960700009007000091070000B5010000B801000038030000B9050000BA050000BB050000BC050000CB0900000180008000000000000025000000F6020000B505000098030000000000001502000090050000B702000000000000404100460F0000001343616C6C20537461636B202B204C6F63616C73000000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031000000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF09554C494E4B706C7573000000003803000001000000FFFFFFFFFFFFFFFF084D656D6F7279203100000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFFFFFFFFFF0000000001000000000000000000000001000000FFFFFFFFC802000015020000CC020000B702000000000000020000000400000000000000000000000000000000000000000000000000000002000000C6000000FFFFFFFF8F07000001000000FFFFFFFF8F07000001000000C6000000000000000080000001000000FFFFFFFFFFFFFFFF00000000A5020000CB050000A9020000010000000100001004000000010000007FFDFFFF8C000000FFFFFFFF06000000C5000000C7000000B4010000D2010000CF0100007794000001800080000001000000250000008A030000F00500004804000000000000A9020000CB050000670300000000000040820056060000000C4275696C64204F757470757401000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657301000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF0E536F757263652042726F7773657200000000D201000001000000FFFFFFFFFFFFFFFF0E416C6C205265666572656E63657300000000CF01000001000000FFFFFFFFFFFFFFFF0742726F77736572000000007794000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000000000000000000</Data>
       </DockMan>
       <ToolBar>
         <RegID>59392</RegID>
         <Name>File</Name>
         <Buttons>
-          <Len>2432</Len>
-          <Data>00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000004000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000000000C0000000000000000000000000000000001000000010000000180F4B00000000000000D000000000000000000000000000000000100000001000000018036B10000000000000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE8030000000000000000000000000000000000000000000000010000000100000096000000020020500000000018737065616B65725F676174745F6164645F736572766963659600000000000000140018737065616B65725F676174745F6164645F736572766963650D6F735F74696D65725F696E69740D706D755F6973725F72616D5F430E7379735F74696D65725F696E69740B636F6E6669675F666C616717534C5F5343374132305F4932635F5370695F5772697465117472616E73706172656E745F73746172740D6170705F61745F726563765F630D75617274305F6973725F72616D0A756172745F706172616D0D75617274315F6973725F72616D15766353706F72744D6F74696F6E416C676F496E69741273656E645F6872735F646174615F666C61670D554152545F73656E645F62756616766353706F72744D6F74696F6E43616C63756C61746509636F5F7072696E74660D7274635F6765745F76616C7565087265616C5F73706F1964656275675F73656E645F74696D65725F63616C6C6261636B0D7663393230325F636F6D6D6F6E0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018022800000020000001500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000000180C8880000000000001700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E4C010000020001001A0000000F50726F6A6563742057696E646F7773000000000000000000000000010000000100000000000000000000000100000008002880DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002880DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002880E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002880E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000288018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000028800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002880D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002880E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65AC030000</Data>
+          <Len>2946</Len>
+          <Data>00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000004000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000004000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE803000000000000000000000000000000000000000000000001000000010000009600000002002050000000000E534C5F535741595F535441545553960000000000000014000E534C5F535741595F53544154555313534C5F444952454354494F4E5F5354415455530B534C5F44495354414E4345096D6573685F696E697412646563696D616C5F706F696E745F7365656E0D75617274315F6973725F72616D0F696E7465726E616C5F6D616C6C6F630648415F42554618737065616B65725F676174745F6164645F736572766963650D6F735F74696D65725F696E69740D706D755F6973725F72616D5F430E7379735F74696D65725F696E69740B636F6E6669675F666C616717534C5F5343374132305F4932635F5370695F5772697465117472616E73706172656E745F73746172740D6170705F61745F726563765F630D75617274305F6973725F72616D0A756172745F706172616D15766353706F72744D6F74696F6E416C676F496E69741273656E645F6872735F646174615F666C61670000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E2280000002000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B46350000000000000000000000000100000001000000000000000000000001000000020021802280000000000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B4635000000000000000000000000010000000100000000000000000000000100000000002180E0010000000000007500000021456E65726779204D6561737572656D656E742026776974686F75742044656275670000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000003002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000000002180E50100000000000078000000264B696C6C20416C6C20427265616B706F696E747320696E204163746976652050726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180E601000000000000790000002F4B696C6C20416C6C20427265616B706F696E747320696E204D756C74692D50726F6A65637420576F726B73706163650000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000021804C010000020001001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002180DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002180E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002180E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000218018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000021800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002180D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002180E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65C6030000</Data>
         </Buttons>
         <OriginalItems>
           <Len>1423</Len>
         <RegID>59399</RegID>
         <Name>Build</Name>
         <Buttons>
-          <Len>678</Len>
-          <Data>00200000010000001000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F0000000000001C0000000000000000000000000000000001000000010000000180D07F0000000000001D000000000000000000000000000000000100000001000000018030800000000000001E00000000000000000000000000000000010000000100000001809E8A0000000000001F0000000000000000000000000000000001000000010000000180D17F0000000004002000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000002100000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6EBA000000000000000000000000000000000000000000000000010000000100000096000000030020500000000008626C655F6D6573689600000000000000010008626C655F6D657368000000000180EB880000000000002200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000230000000000000000000000000000000001000000010000000180B08A000000000400240000000000000000000000000000000001000000010000000180A8010000000000004E00000000000000000000000000000000010000000100000001807202000000000000530000000000000000000000000000000001000000010000000180BE010000000000005000000000000000000000000000000000010000000100000000000000054275696C64CF010000</Data>
+          <Len>976</Len>
+          <Data>00200000010000001000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F0000000000001C0000000000000000000000000000000001000000010000000180D07F0000000000001D000000000000000000000000000000000100000001000000018030800000000002001E000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6EC7040000000000006A0000000C4261746368204275696C2664000000000000000000000000010000000100000000000000000000000100000004000580C7040000000000006A0000000C4261746368204275696C266400000000000000000000000001000000010000000000000000000000010000000000058046070000000000006B0000000D42617463682052656275696C640000000000000000000000000100000001000000000000000000000001000000000005804707000000000000FFFFFFFF0B426174636820436C65616E0100000000000000000000000100000001000000000000000000000001000000000005809E8A0000000000001F0000000F4261746326682053657475702E2E2E000000000000000000000000010000000100000000000000000000000100000000000180D17F0000000004002000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000002100000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6EBA000000000000000000000000000000000000000000000000010000000100000096000000030020500000000008626C655F6D6573689600000000000000010008626C655F6D657368000000000180EB880000000000002200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000230000000000000000000000000000000001000000010000000180B08A000000000400240000000000000000000000000000000001000000010000000180A8010000000000004E00000000000000000000000000000000010000000100000001807202000000000000530000000000000000000000000000000001000000010000000180BE010000000000005000000000000000000000000000000000010000000100000000000000054275696C64DC010000</Data>
         </Buttons>
         <OriginalItems>
           <Len>583</Len>
         <RegID>59400</RegID>
         <Name>Debug</Name>
         <Buttons>
-          <Len>2220</Len>
-          <Data>00200000000000001900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000000002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000000002A00000000000000000000000000000000010000000100000001801C800000000000002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000000000002D0000000000000000000000000000000001000000010000000180F07F0000000000002E0000000000000000000000000000000001000000010000000180E8880000000000003700000000000000000000000000000000010000000100000001803B010000000000002F0000000000000000000000000000000001000000010000000180BB8A00000000000030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000000000000310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000002001380D88B000000000000310000000757617463682031000000000000000000000000010000000100000000000000000000000100000000001380D98B0000000000003100000007576174636820320000000000000000000000000100000001000000000000000000000001000000000013800F01000000000000320000000E4D656D6F72792057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000084D656D6F72792031000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000084D656D6F72792032000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000084D656D6F72792033000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000084D656D6F727920340000000000000000000000000100000001000000000000000000000001000000000013801001000000000000330000000E53657269616C2057696E646F77730000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000755415254202331000000000000000000000000010000000100000000000000000000000100000000001380940700000000000033000000075541525420233200000000000000000000000001000000010000000000000000000000010000000000138095070000000000003300000007554152542023330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000000E49544D2F525441205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000000000003400000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380658A000000000000340000000E4C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E00000014506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000D436F646520436F76657261676500000000000000000000000001000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720000000000000000010000000000000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720000000000000000010000000000000001000000000000000000000001000000000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000138001890000000000003600000007546F6F6C626F7800000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730000000000000000010000000000000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000010000000000000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F72000000000000000001000000000000000100000000000000000000000100000000000000000005446562756764020000</Data>
+          <Len>2373</Len>
+          <Data>00200000000000001900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000000002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000000002A00000000000000000000000000000000010000000100000001801C800000000000002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000000000002D0000000000000000000000000000000001000000010000000180F07F0000000000002E0000000000000000000000000000000001000000010000000180E8880000000000003700000000000000000000000000000000010000000100000001803B010000000000002F0000000000000000000000000000000001000000010000000180BB8A00000000000030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000000000000310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380D88B00000000000031000000085761746368202631000000000000000000000000010000000100000000000000000000000100000000001380D98B00000000000031000000085761746368202632000000000000000000000000010000000100000000000000000000000100000000001380CE01000000000000FFFFFFFF0C576174636820416E63686F720100000000000000010000000000000001000000000000000000000001000000000013800F01000000000000320000000E4D656D6F72792057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000094D656D6F7279202632000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000094D656D6F7279202633000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000094D656D6F72792026340000000000000000000000000100000001000000000000000000000001000000000013801001000000000000330000000E53657269616C2057696E646F77730000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000000013809407000000000000330000000855415254202326320000000000000000000000000100000001000000000000000000000001000000000013809507000000000000330000000855415254202326330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000001626446562756720287072696E746629205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000000000007200000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380658A000000000000340000000F264C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E0000001526506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000E26436F646520436F766572616765000000000000000000000000010000000100000000000000000000000100000000001380CD01000000000000FFFFFFFF0F416E616C7973697320416E63686F7201000000000000000100000000000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720100000000000000010000000000000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720100000000000000010000000000000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000013800189000000000000360000000F26546F6F6C626F782057696E646F7700000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730100000000000000010000000000000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000010000000000000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F72010000000000000001000000000000000100000000000000000000000100000000000000000005446562756764020000</Data>
         </Buttons>
         <OriginalItems>
           <Len>898</Len>
     <ActiveMDIGroup>0</ActiveMDIGroup>
     <MDIGroup>
       <Size>100</Size>
-      <ActiveTab>0</ActiveTab>
+      <ActiveTab>3</ActiveTab>
+      <Doc>
+        <Name>.\VC9202\vc9202_driver_testmode.c</Name>
+        <ColumnNumber>16</ColumnNumber>
+        <TopLine>8</TopLine>
+        <CurrentLine>18</CurrentLine>
+        <Folding>1</Folding>
+        <ContractedFolders></ContractedFolders>
+        <PaneID>0</PaneID>
+      </Doc>
+      <Doc>
+        <Name>.\SL_Watch_Pedo_Kcal_Wrist_Sleep_Sway_L_Application.c</Name>
+        <ColumnNumber>0</ColumnNumber>
+        <TopLine>213</TopLine>
+        <CurrentLine>244</CurrentLine>
+        <Folding>1</Folding>
+        <ContractedFolders></ContractedFolders>
+        <PaneID>0</PaneID>
+      </Doc>
+      <Doc>
+        <Name>..\components\ble\include\mesh\mesh_api.h</Name>
+        <ColumnNumber>14</ColumnNumber>
+        <TopLine>350</TopLine>
+        <CurrentLine>389</CurrentLine>
+        <Folding>1</Folding>
+        <ContractedFolders></ContractedFolders>
+        <PaneID>0</PaneID>
+      </Doc>
+      <Doc>
+        <Name>.\VC9202\vc9202_user.c</Name>
+        <ColumnNumber>4</ColumnNumber>
+        <TopLine>347</TopLine>
+        <CurrentLine>357</CurrentLine>
+        <Folding>1</Folding>
+        <ContractedFolders></ContractedFolders>
+        <PaneID>0</PaneID>
+      </Doc>
+      <Doc>
+        <Name>..\code\sensor_drive.c</Name>
+        <ColumnNumber>33</ColumnNumber>
+        <TopLine>218</TopLine>
+        <CurrentLine>243</CurrentLine>
+        <Folding>1</Folding>
+        <ContractedFolders></ContractedFolders>
+        <PaneID>0</PaneID>
+      </Doc>
+      <Doc>
+        <Name>..\components\ble\profiles\ble_ota\ota.c</Name>
+        <ColumnNumber>20</ColumnNumber>
+        <TopLine>1</TopLine>
+        <CurrentLine>27</CurrentLine>
+        <Folding>1</Folding>
+        <ContractedFolders></ContractedFolders>
+        <PaneID>0</PaneID>
+      </Doc>
       <Doc>
         <Name>..\code\proj_main.c</Name>
-        <ColumnNumber>36</ColumnNumber>
-        <TopLine>216</TopLine>
-        <CurrentLine>237</CurrentLine>
+        <ColumnNumber>0</ColumnNumber>
+        <TopLine>317</TopLine>
+        <CurrentLine>358</CurrentLine>
         <Folding>1</Folding>
         <ContractedFolders></ContractedFolders>
         <PaneID>0</PaneID>
       </Doc>
       <Doc>
-        <Name>.\Imitate_IIC.c</Name>
-        <ColumnNumber>32</ColumnNumber>
-        <TopLine>569</TopLine>
-        <CurrentLine>583</CurrentLine>
+        <Name>H:\1.work\3.ASR\3.Z5\1.doc\K18\BLE_Watch\keil\ble_5_0.sct</Name>
+        <ColumnNumber>5</ColumnNumber>
+        <TopLine>8</TopLine>
+        <CurrentLine>35</CurrentLine>
         <Folding>1</Folding>
         <ContractedFolders></ContractedFolders>
         <PaneID>0</PaneID>
     </MDIGroup>
   </MDIGroups>
 
-  <Bookmarks>
-    <ListItem>..\components\driver\driver_pmu.c 997</ListItem>
-    <ListItem>..\components\driver\driver_pmu.c 1003</ListItem>
-    <ListItem>..\components\driver\driver_pmu.c 1004</ListItem>
-    <ListItem>..\components\driver\driver_pmu.c 871</ListItem>
-    <ListItem>..\components\driver\driver_pmu.c 998</ListItem>
-  </Bookmarks>
-
 </ProjectGui>
index df24604..5871850 100644 (file)
@@ -10,7 +10,7 @@
     <aExt>*.s*; *.src; *.a*</aExt>
     <oExt>*.obj; *.o</oExt>
     <lExt>*.lib</lExt>
-    <tExt>*.txt; *.h; *.inc</tExt>
+    <tExt>*.txt; *.h; *.inc; *.md</tExt>
     <pExt>*.plm</pExt>
     <CppX>*.cpp</CppX>
     <nMigrate>0</nMigrate>
         <tRSysVw>1</tRSysVw>
         <sRunDeb>0</sRunDeb>
         <sLrtime>0</sLrtime>
+        <bEvRecOn>1</bEvRecOn>
+        <bSchkAxf>0</bSchkAxf>
+        <bTchkAxf>0</bTchkAxf>
         <nTsel>6</nTsel>
         <sDll></sDll>
         <sDllPa></sDllPa>
       </DebugFlag>
       <LintExecutable></LintExecutable>
       <LintConfigFile></LintConfigFile>
+      <bLintAuto>0</bLintAuto>
+      <bAutoGenD>0</bAutoGenD>
+      <LntExFlags>0</LntExFlags>
+      <pMisraName></pMisraName>
+      <pszMrule></pszMrule>
+      <pSingCmds></pSingCmds>
+      <pMultCmds></pMultCmds>
+      <pMisraNamep></pMisraNamep>
+      <pszMrulep></pszMrulep>
+      <pSingCmdsp></pSingCmdsp>
+      <pMultCmdsp></pMultCmdsp>
     </TargetOption>
   </Target>
 
       <FileNumber>1</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
-      <Focus>1</Focus>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
       <PathWithFileName>..\code\proj_main.c</PathWithFileName>
       <FileNumber>2</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
-      <Focus>1</Focus>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
       <PathWithFileName>.\Imitate_IIC.c</PathWithFileName>
       <FileNumber>3</FileNumber>
       <FileType>5</FileType>
       <tvExp>0</tvExp>
-      <Focus>1</Focus>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
       <PathWithFileName>.\Imitate_IIC.h</PathWithFileName>
       <FileNumber>4</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
-      <Focus>1</Focus>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
       <PathWithFileName>.\SL_Watch_Pedo_Kcal_Wrist_Sleep_Sway_L_Application.c</PathWithFileName>
       <FileNumber>5</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
-      <Focus>1</Focus>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
       <PathWithFileName>.\uart.c</PathWithFileName>
       <FileNumber>6</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
-      <Focus>1</Focus>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
       <PathWithFileName>..\code\ble_simple_central.c</PathWithFileName>
       <FileNumber>7</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
-      <Focus>0</Focus>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
       <PathWithFileName>..\code\sensor_drive.c</PathWithFileName>
       <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>
       <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>
       <FileNumber>10</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
-      <Focus>1</Focus>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
       <PathWithFileName>..\components\modules\platform\source\core_cm3_isr.c</PathWithFileName>
       <FileNumber>11</FileNumber>
       <FileType>2</FileType>
       <tvExp>0</tvExp>
-      <Focus>1</Focus>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
       <PathWithFileName>..\components\modules\platform\source\app_boot_vectors.s</PathWithFileName>
       <FileNumber>12</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
-      <Focus>1</Focus>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
       <PathWithFileName>..\components\modules\patch\patch.c</PathWithFileName>
       <FileNumber>13</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
-      <Focus>1</Focus>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
       <PathWithFileName>..\components\modules\sha256\sha256.c</PathWithFileName>
       <FileNumber>14</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
-      <Focus>1</Focus>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
       <PathWithFileName>..\components\modules\aes_cbc\aes_cbc.c</PathWithFileName>
       <FileNumber>15</FileNumber>
       <FileType>4</FileType>
       <tvExp>0</tvExp>
-      <Focus>1</Focus>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
       <PathWithFileName>.\SL_Watch_Pedo_Kcal_Wrist_Sleep_Sway_L_Algorithm.lib</PathWithFileName>
       <FileNumber>16</FileNumber>
       <FileType>4</FileType>
       <tvExp>0</tvExp>
-      <Focus>1</Focus>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
       <PathWithFileName>..\components\ble\library\fr8010h_stack.lib</PathWithFileName>
       <FileNumber>17</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
-      <Focus>1</Focus>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
       <PathWithFileName>..\components\driver\driver_efuse.c</PathWithFileName>
       <FileNumber>18</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
-      <Focus>1</Focus>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
       <PathWithFileName>..\components\driver\driver_exti.c</PathWithFileName>
       <FileNumber>19</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
-      <Focus>1</Focus>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
       <PathWithFileName>..\components\driver\driver_i2s.c</PathWithFileName>
       <FileNumber>20</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
-      <Focus>1</Focus>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
       <PathWithFileName>..\components\driver\driver_iic.c</PathWithFileName>
       <FileNumber>21</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
-      <Focus>1</Focus>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
       <PathWithFileName>..\components\driver\driver_keyscan.c</PathWithFileName>
       <FileNumber>22</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
-      <Focus>1</Focus>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
       <PathWithFileName>..\components\driver\driver_pmu.c</PathWithFileName>
       <FileNumber>23</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
-      <Focus>1</Focus>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
       <PathWithFileName>..\components\driver\driver_pmu_qdec.c</PathWithFileName>
       <FileNumber>24</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
-      <Focus>1</Focus>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
       <PathWithFileName>..\components\driver\driver_rtc.c</PathWithFileName>
       <FileNumber>25</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
-      <Focus>1</Focus>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
       <PathWithFileName>..\components\driver\driver_timer.c</PathWithFileName>
       <FileNumber>26</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
-      <Focus>1</Focus>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
       <PathWithFileName>..\components\driver\driver_uart.c</PathWithFileName>
       <FileNumber>27</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
-      <Focus>1</Focus>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
       <PathWithFileName>..\components\driver\driver_wdt.c</PathWithFileName>
       <FileNumber>28</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
-      <Focus>1</Focus>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
       <PathWithFileName>..\components\driver\driver_system.c</PathWithFileName>
       <FileNumber>29</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
-      <Focus>1</Focus>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
       <PathWithFileName>..\components\ble\profiles\ble_simple_profile\simple_gatt_service.c</PathWithFileName>
       <FileNumber>30</FileNumber>
       <FileType>5</FileType>
       <tvExp>0</tvExp>
-      <Focus>1</Focus>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
       <PathWithFileName>..\components\ble\profiles\ble_simple_profile\simple_gatt_service.h</PathWithFileName>
       <FileNumber>31</FileNumber>
       <FileType>4</FileType>
       <tvExp>0</tvExp>
-      <Focus>0</Focus>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
       <PathWithFileName>.\VC9202\lib_BIO_V141_8763ECM3_NA_01.lib</PathWithFileName>
       <FileNumber>32</FileNumber>
       <FileType>4</FileType>
       <tvExp>0</tvExp>
-      <Focus>0</Focus>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
       <PathWithFileName>.\VC9202\lib_hr_v630_8763ECM3_NA_01.lib</PathWithFileName>
       <FileNumber>33</FileNumber>
       <FileType>4</FileType>
       <tvExp>0</tvExp>
-      <Focus>0</Focus>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
       <PathWithFileName>.\VC9202\lib_SP_int_8763ECM3_NA_01.lib</PathWithFileName>
       <FileNumber>34</FileNumber>
       <FileType>4</FileType>
       <tvExp>0</tvExp>
-      <Focus>0</Focus>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
       <PathWithFileName>.\VC9202\lib_spo2_vp60a2_int_8763ECM3_NA_01.lib</PathWithFileName>
       <FileNumber>35</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
-      <Focus>0</Focus>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
       <PathWithFileName>.\VC9202\vc9202_driver.c</PathWithFileName>
       <FileNumber>36</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
-      <Focus>0</Focus>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
       <PathWithFileName>.\VC9202\vc9202_driver_testmode.c</PathWithFileName>
       <FileNumber>37</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
-      <Focus>0</Focus>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
       <PathWithFileName>.\VC9202\vc9202_user.c</PathWithFileName>
       <FileNumber>38</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
-      <Focus>0</Focus>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
       <PathWithFileName>.\VC9202\vc9202_user_debug.c</PathWithFileName>
       <FileNumber>39</FileNumber>
       <FileType>4</FileType>
       <tvExp>0</tvExp>
-      <Focus>0</Focus>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
       <PathWithFileName>.\VC9202\lib_hr_yll_v0.5.3.012424.lib</PathWithFileName>
index 2e6d034..56474a9 100644 (file)
@@ -10,6 +10,8 @@
       <TargetName>ble_mesh</TargetName>
       <ToolsetNumber>0x4</ToolsetNumber>
       <ToolsetName>ARM-ADS</ToolsetName>
+      <pCCUsed>5060960::V5.06 update 7 (build 960)::ARMCC</pCCUsed>
+      <uAC6>0</uAC6>
       <TargetOption>
         <TargetCommonOption>
           <Device>Cortex-M3</Device>
@@ -82,6 +84,8 @@
             <UserProg2Name>fromelf.exe  --bin -o Output/BLE_Watch.bin  Objects/BLE_Watch.axf</UserProg2Name>
             <UserProg1Dos16Mode>0</UserProg1Dos16Mode>
             <UserProg2Dos16Mode>0</UserProg2Dos16Mode>
+            <nStopA1X>0</nStopA1X>
+            <nStopA2X>0</nStopA2X>
           </AfterMake>
           <SelectedForBatchBuild>0</SelectedForBatchBuild>
           <SVCSIdString></SVCSIdString>
             <hadXRAM>0</hadXRAM>
             <uocXRam>0</uocXRam>
             <RvdsVP>0</RvdsVP>
+            <RvdsMve>0</RvdsMve>
+            <RvdsCdeCp>0</RvdsCdeCp>
             <hadIRAM2>0</hadIRAM2>
             <hadIROM2>0</hadIROM2>
             <StupSel>0</StupSel>
-            <useUlib>0</useUlib>
+            <useUlib>1</useUlib>
             <EndSel>1</EndSel>
             <uLtcg>0</uLtcg>
+            <nSecure>0</nSecure>
             <RoSelD>0</RoSelD>
             <RwSelD>0</RwSelD>
             <CodeSel>0</CodeSel>
             <uThumb>0</uThumb>
             <uSurpInc>0</uSurpInc>
             <uC99>1</uC99>
+            <uGnu>0</uGnu>
             <useXO>0</useXO>
+            <v6Lang>1</v6Lang>
+            <v6LangP>1</v6LangP>
+            <vShortEn>1</vShortEn>
+            <vShortWch>1</vShortWch>
+            <v6Lto>0</v6Lto>
+            <v6WtE>0</v6WtE>
+            <v6Rtti>0</v6Rtti>
             <VariousControls>
               <MiscControls></MiscControls>
               <Define></Define>
             <NoWarn>0</NoWarn>
             <uSurpInc>0</uSurpInc>
             <useXO>0</useXO>
+            <ClangAsOpt>1</ClangAsOpt>
             <VariousControls>
               <MiscControls></MiscControls>
               <Define></Define>
index a2494e6..4533112 100644 (file)
@@ -5,6 +5,7 @@
 #include "co_printf.h"
 #include "sys_utils.h"
 #include "imitate_iic.h"
+#include "string.h"
 #define IO_I2C_TEST
 
  
@@ -508,9 +509,8 @@ uint8_t IIC0_Read_handle(uint8_t iic_addr,uint8_t read_reg,uint8_t * buff,uint8_
 uint8_t IIC0_Write_handle(uint8_t iic_addr,uint8_t write_reg,uint8_t * buff,uint8_t len)
 {
     uint8_t i = 0;
-    uint8_t write_addr = 0,read_addr = 0;
+    uint8_t write_addr = 0;
     write_addr = (iic_addr<<1);
-    read_addr = (iic_addr<<1)|0x01;
        IIC0_Start_I2c();
        IIC0_Write_One_Byte(write_addr);
        if(!IIC0_Read_Ack())
@@ -579,7 +579,8 @@ void user_i2c0_init(void)
     //IIC0_Write_handle(0x42,0x01,write_data,2);
                
 }
-uint8_t bp_data[49];
+uint8_t bp_data[250];
+uint16_t bp_data_len = 0;
 uint8_t bp_data_reuse_count = 0;
 //返回1为正常数据,返回0为重复数据,需丢弃
 uint8_t read_BP_data(void)
@@ -616,14 +617,25 @@ uint8_t read_BP_data(void)
        //      return 0;
        // }else
        // {
-               memcpy(bp_data,bp_data_tmp,sizeof(bp_data));
-               #if 1
+               if(bp_data_len+48 < sizeof(bp_data))
+               {
+                       memcpy(bp_data+bp_data_len,bp_data_tmp,48);
+                       bp_data_len += 48;
+               }else
+               {
+                       bp_data_len = 0;
+                       memcpy(bp_data+bp_data_len,bp_data_tmp,48);
+                       bp_data_len += 48;
+               }
+               
+               #if 0
                co_printf("BP_DATA : ");        
                for(uint8_t i=0;i<48;i++)
                {
                        co_printf("%02X ",bp_data[i]);
                }
                co_printf("\n");        
+               
                #endif
                return 1;
        //}
index 717b4a9..f327989 100644 (file)
@@ -44,7 +44,7 @@ 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 = 1} BOOL;
 
 /********客户需要进行的IIC接口封包函数****************/
 //extern unsigned char SL_SC7A20_I2c_Spi_Write(BOOL sl_spi_iic,unsigned char reg, unsigned char dat);
index 38e88fb..10a57dd 100644 (file)
@@ -44,9 +44,9 @@ signed char SL_SC7A20_PEDO_KCAL_WRIST_SLEEP_SWAY_L_INIT(void)  //
 #if SL_Sensor_Algo_Release_Enable==0x00
        unsigned char sl_version_value=0x00;
 #endif
-       bool sl_cal_xy_flag=0;
-       unsigned char sl_cal_fifo=0;    
-       signed char sl_cal_value_xy[2]={0,0};
+       //bool sl_cal_xy_flag=0;
+       //unsigned char sl_cal_fifo=0;  
+       //signed char sl_cal_value_xy[2]={0,0};
        
 //     bool  fifo_status       =0;
        unsigned char  sl_person_para[4] ={178,60,26,1};
@@ -69,11 +69,11 @@ signed char SL_SC7A20_PEDO_KCAL_WRIST_SLEEP_SWAY_L_INIT(void)  //
 /*****if use spi mode please config first******/    
 #if SL_SC7A20_SPI_IIC_MODE == 0//spi
        //init sensor
-       sl_init_status=SL_SC7A20_Driver_Init(0,0x04,1);//spi or iic select
+       sl_init_status=SL_SC7A20_Driver_Init(FALSE,0x04,TRUE);//spi or iic select
        //0x04-->close i2c pull up resister (must)
 #else//i2c
        //init sensor
-       sl_init_status=SL_SC7A20_Driver_Init(1,0x08,1);//spi or iic select   
+       sl_init_status=SL_SC7A20_Driver_Init(TRUE,0x08,TRUE);//spi or iic select   
        //0x08-->close sdo pull up resister
 #endif
     /**********sc7a20 fifo test***************/
@@ -84,7 +84,7 @@ signed char SL_SC7A20_PEDO_KCAL_WRIST_SLEEP_SWAY_L_INIT(void)  //
        /*which axis used to pedo depend on algo**/
        SL_PEDO_SET_AXIS(3);
        /**********set int para*******************/
-       SL_PEDO_INT_SET(2,1,1);//0 or 1 sleep is different
+       SL_PEDO_INT_SET(2,1,TRUE);//0 or 1 sleep is different
        /**********set motion para****************/
        SL_Pedo_Person_Inf_Init(&sl_person_para[0]);//personal para init
     /**********set turn wrist para************/
@@ -112,13 +112,13 @@ void sl_fifo_delay(void)
 
 static unsigned int   SL_STEP                  = 0;
 static unsigned int   SL_STEP_TEMP             = 0;
-static unsigned char  SL_STEP_MOTION           = 0;
-static unsigned int      SL_DISTANCE              = 0;
-static unsigned int      SL_KCAL                  = 0;
-static unsigned char  SL_CADENCE_STEP          = 0;//step per minutes
-static unsigned short SL_CADENCE_AMP           = 0;//Equal scale scaling 
-static unsigned char  SL_CADENCE_DEGREE        = 0;//degree
-static signed char    SL_WRIST                 = 0;
+//static unsigned char  SL_STEP_MOTION           = 0;
+//static unsigned int    SL_DISTANCE              = 0;
+//static unsigned int    SL_KCAL                  = 0;
+//static unsigned char  SL_CADENCE_STEP          = 0;//step per minutes
+//static unsigned short SL_CADENCE_AMP           = 0;//Equal scale scaling 
+//static unsigned char  SL_CADENCE_DEGREE        = 0;//degree
+//static signed char    SL_WRIST                 = 0;
 
 static unsigned char  SL_SLEEP_ACTIVE          = 0;
 static unsigned char  SL_SLEEP_STATUS          = 0;
@@ -151,7 +151,7 @@ unsigned int  SL_SC7A20_PEDO_KCAL_WRIST_SLEEP_SWAY_L_ALGO(void)
        SC7A20_INT_STATUS=SL_INT_STATUS_READ();
        if((SC7A20_INT_STATUS==1)||(SL_STEP_TEMP!= SL_STEP))
        {
-               if(SL_INT_TIME_CNT>=SL_INT_TIME_TH)  SC7A20_ODR_SET(1);
+               if(SL_INT_TIME_CNT>=SL_INT_TIME_TH)  SC7A20_ODR_SET(TRUE);
                SL_INT_TIME_CNT =0;
                SL_STEP_TEMP    =SL_STEP;
        }
@@ -168,35 +168,35 @@ unsigned int  SL_SC7A20_PEDO_KCAL_WRIST_SLEEP_SWAY_L_ALGO(void)
            /*******get sc7a20 FIFO data******/
                SC7A20_FIFO_NUM= SL_SC7A20_Read_FIFO();
         /*******get pedo value************/
-           SL_STEP= SL_Watch_Kcal_Pedo_Algo(0);//²»´ò¿ªÂí´ï»òÒôÀÖʱµ÷Óøú¯Êý
-           //SL_STEP= SL_Watch_Kcal_Pedo_Algo(1);//´ò¿ªÂí´ï»òÒôÀÖʱµ÷Óøú¯Êý
+           SL_STEP= SL_Watch_Kcal_Pedo_Algo(FALSE);//²»´ò¿ªÂí´ï»òÒôÀÖʱµ÷Óøú¯Êý
+           //SL_STEP= SL_Watch_Kcal_Pedo_Algo(TRUE);//´ò¿ªÂí´ï»òÒôÀÖʱµ÷Óøú¯Êý
 
            /*********get sleep active degree value*********/
-               SL_SLEEP_ACTIVE      = SL_Sleep_Active_Degree(0);
+               //SL_SLEEP_ACTIVE      = SL_Sleep_Active_Degree(0);
                
            /*******get accel orginal data and length*******/
-           SC7A20_FIFO_NUM      = SL_SC7A20_GET_FIFO_Buf(&SC7A20_XYZ_Buf[0][0],&SC7A20_XYZ_Buf[1][0],&SC7A20_XYZ_Buf[2][0],0);
+           SC7A20_FIFO_NUM      = SL_SC7A20_GET_FIFO_Buf(&SC7A20_XYZ_Buf[0][0],&SC7A20_XYZ_Buf[1][0],&SC7A20_XYZ_Buf[2][0],FALSE);
 #if SL_Sensor_Algo_Release_Enable==0x00                
 //             for(sl_i=0;sl_i<SC7A20_FIFO_NUM;sl_i++)
 //             { 
 //                     USART_printf( USART1, "FIFO dat_x=%d dat_y=%d dat_z=%d!\r\n",SC7A20_XYZ_Buf[0][sl_i],SC7A20_XYZ_Buf[1][sl_i],SC7A20_XYZ_Buf[2][sl_i]);
 //             }
 #endif
-               
-               SL_SC7A20_GET_DATA(&SC7A20_XYZ_Dat[0],&SC7A20_XYZ_Dat[1],&SC7A20_XYZ_Dat[2]);
+               if(SC7A20_FIFO_NUM>0)
+                       SL_SC7A20_GET_DATA(&SC7A20_XYZ_Dat[0],&SC7A20_XYZ_Dat[1],&SC7A20_XYZ_Dat[2]);
 
                /* SL_Pedo_GetMotion_Status */
-               SL_STEP_MOTION       = SL_Pedo_GetMotion_Status();
+               //SL_STEP_MOTION       = SL_Pedo_GetMotion_Status();
                /* SL_Pedo_Step_Get_Distance */
-               SL_DISTANCE          = SL_Pedo_Step_Get_Distance();
+               //SL_DISTANCE          = SL_Pedo_Step_Get_Distance();
                /* SL_Pedo_Step_Get_KCal */
-               SL_KCAL              = SL_Pedo_Step_Get_KCal();
+               //SL_KCAL              = SL_Pedo_Step_Get_KCal();
                /*****average step per minutes****/    
-               SL_CADENCE_STEP      = SL_Pedo_Step_Get_Step_Per_Min();
+               //SL_CADENCE_STEP      = SL_Pedo_Step_Get_Step_Per_Min();
                /*****average amp per step****/    
-               SL_CADENCE_AMP       = SL_Pedo_Step_Get_Avg_Amp();
+               //SL_CADENCE_AMP       = SL_Pedo_Step_Get_Avg_Amp();
                /*****motion degree****/    
-               SL_CADENCE_DEGREE    = SL_Pedo_Step_Get_Motion_Degree();
+               //SL_CADENCE_DEGREE    = SL_Pedo_Step_Get_Motion_Degree();
     
 //         if(SL_STEP>200)
 //         {
@@ -205,13 +205,13 @@ unsigned int  SL_SC7A20_PEDO_KCAL_WRIST_SLEEP_SWAY_L_ALGO(void)
 //         }
     
            /*******get wrist value******/
-           SL_WRIST= SL_Watch_Wrist_Algo();
+           //SL_WRIST= SL_Watch_Wrist_Algo();
     
            /*******get overturn value******/
-           SL_CLOCK_STATUS=SL_Get_Clock_Status(1);//open overturn monitor
+           SL_CLOCK_STATUS=SL_Get_Clock_Status(TRUE);//open overturn monitor
            if(SL_CLOCK_STATUS==1)//overturn success
            {
-               SL_Get_Clock_Status(0);//close overturn monitor
+               SL_Get_Clock_Status(FALSE);//close overturn monitor
            }
 
            /*******get sway value******/
@@ -219,7 +219,7 @@ unsigned int  SL_SC7A20_PEDO_KCAL_WRIST_SLEEP_SWAY_L_ALGO(void)
            {
                /**this function will disable pedo function**/        
                SL_SWAY_STATUS=SL_Get_Phone_Answer_Status(3,4);//get sway value
-#if SL_Sensor_Algo_Release_Enable==0x00                
+#if 1          
                        if(SL_SWAY_STATUS==1)
                        { 
 //                             USART_printf( USART1, "############sway happen!!!!\r\n");
@@ -229,6 +229,8 @@ unsigned int  SL_SC7A20_PEDO_KCAL_WRIST_SLEEP_SWAY_L_ALGO(void)
                        
            }
                SL_DIRECTION_STATUS= SL_Get_Direction_Status();
+               if(SL_DIRECTION_STATUS)
+                       co_printf("SL_DIRECTION_STATUS:%d\r\n",SL_DIRECTION_STATUS);
        }
        else
        {
@@ -239,8 +241,10 @@ unsigned int  SL_SC7A20_PEDO_KCAL_WRIST_SLEEP_SWAY_L_ALGO(void)
                SL_Pedo_WorkMode_Reset();
                //SL_Turn_Wrist_WorkMode_Reset();please not use this function
                SC7A20_FIFO_NUM=0;
-               SC7A20_ODR_SET(0);//data for 10Hz 0.5S=5'S data //for heart rate algo
-               //SC7A20_ODR_SET(1);//data for 25Hz 0.5S=12-13'S data //for heart rate algo
+               SC7A20_ODR_SET(FALSE);//data for 10Hz 0.5S=5'S data //for heart rate algo
+               if(SC7A20_FIFO_NUM)
+                       SC7A20_FIFO_NUM = 0;
+               //SC7A20_ODR_SET(TRUE);//data for 25Hz 0.5S=12-13'S data //for heart rate algo
        }
 
        /*******get sleep status value******/
@@ -305,8 +309,11 @@ unsigned char SL_MCU_SLEEP_ALGO_FUNCTION(void)
        /*******get sleep status value******/
        SL_SLEEP_STATUS= SL_Sleep_GetStatus(sl_sleep_sys_hour);
        SL_SLEEP_ACTIVE= SL_Sleep_Get_Active_Degree();
+       if(SL_SLEEP_ACTIVE == 0)
+               __nop();
        SL_SLEEP_ADOM  = SL_Adom_GetStatus();
-       
+       if(SL_SLEEP_ADOM == 0)
+               __nop();
 #if SL_Sensor_Algo_Release_Enable==0x00
        sl_sleep_counter++;
 //     USART_printf( USART1, "step=%d! sys_time=%d!\r\n",SL_STEP,sl_sleep_sys_hour);
index 888cecd..b2dca36 100644 (file)
@@ -16,4 +16,4 @@ uint8_t f_BIOdetect(int32_t inputBIO, int32_t inputPS, int32_t PSth);
 
 char* version_info_Bio(void);
 
-#endif /* BIODETECT */
\ No newline at end of file
+#endif /* BIODETECT */
index 06fcd50..162bef3 100644 (file)
@@ -22,7 +22,7 @@
 /* 0:rising edge 1:descending edge */
 #define VC9202_CFG_INTERRUPT_MODE (0)
 
-#define VC9202_CFG_CLK_CHECK_FREQUENCY (32000)      //counter 32K
+#define VC9202_CFG_CLK_CHECK_FREQUENCY (1000)      //counter 32K
 #define VC9202_CFG_CLK_CHECK_MAX       (0xFFFFFF) //24bits counter
 #define VC9202_CFG_CLK_CHECK_GAPTIME   (10)        //seconds 
 #define VC9202_CFG_CLK_CHECK_DEVIATION (3)
index 3e31300..9fa7d65 100644 (file)
@@ -10,7 +10,7 @@
  *********************************************************************************************************/
 #include "vc9202_common.h"
 #include "vc9202_driver.h"
-//#include "f_BIODetect_V14_1.h"
+#include "BIODetect_V14_1.h"
 #include "stdio.h"
 #include "string.h"
 #include "stdlib.h"
@@ -322,7 +322,7 @@ WearStatusTypeDef vc9202_drv_get_wear_status(void)
        unsigned char event = 0;
        unsigned char en_int = 0;
        unsigned char env_value = 0, ps_value = 0;
-       unsigned char bio_buffer[4] = {0};
+       
        unsigned short int bio_value = 0;
        unsigned char wear_interrupt = 0;
        unsigned char slot_index = 0;
@@ -358,6 +358,7 @@ WearStatusTypeDef vc9202_drv_get_wear_status(void)
        {
 /* 读取佩戴检测所需的数据 */
 #if 0
+               unsigned char bio_buffer[4] = {0};
                usr_iic_read_bytes(0x43, &env_value, 1);
                usr_iic_read_bytes(0x46, &ps_value, 1);
                usr_iic_read_bytes(0x4B, bio_buffer, 4);
index d84a5a0..4706f52 100644 (file)
@@ -13,7 +13,9 @@
 //如果不需要,删除本文件和其他报错的地方即可
 #include "vc9202_common.h"
 #include "vc9202_driver.h"
-
+#include "stdio.h"
+#include <stdlib.h>
+#include <string.h>
 VC9202TestInfoTypeDef vc9202_test_info = {0};
 
 const static unsigned char disp_green[17] = {0xC5, 0x30, 0x8A, 0x40, 0x03, 0x1F, 0x00,
@@ -31,7 +33,7 @@ void vc9202_test_init(VC9202TestInfoTypeDef *ptest_info)
        mcu_cnt[1] = 0;
        chip_cnt[0] = 0;
        chip_cnt[1] = 0;
-       memset(ptest_info, 0, sizeof(VC9202TestInfoTypeDef));
+       memset((void *)ptest_info, 0, sizeof(VC9202TestInfoTypeDef));
 }
 
 static unsigned int vc9202_test_real_frequency(void)
@@ -48,7 +50,7 @@ static unsigned int vc9202_test_real_frequency(void)
        chip_cnt[0] = (cnt_reg[0] << 8) + cnt_reg[1];
        unsigned short cnt1 = (cnt_reg[0] << 8) + cnt_reg[1];
        unsigned short cnt2 = (cnt_reg[2] << 8) + cnt_reg[3];
-       if (abs(cnt1 - cnt2) >= 10)
+       if (abs((int)(cnt1 - cnt2)) >= 10)
        {
                return 0xffff;
        }
index 4af404a..62a9b6f 100644 (file)
 #include "yyl_pfev01.h"
 #include "driver_gpio.h"
 #include "SL_Watch_Pedo_Kcal_Wrist_Sleep_Sway_L_Algorithm.h"
+#include "uart.h"
 static WorkModeTypeDef work_mode = WORK_MODE_NONE;
 AlgoCalcResultsTypeDef vc9202_alg_results = {0};
-
+extern unsigned char *UART_send_buf;
+extern int UART_send_buf_len ;
 /* 蓝牙发送原始数据接口 */
 //extern void vc9202_debug_send_heart_rate_data( SamplingDataTypeDef* presult ,GsensorTypeDef* paxis, unsigned char heart_rate, unsigned char algo_mode,  unsigned char ppgsize );
 //extern void vc9202_debug_send_spo2_data( SamplingDataTypeDef* presult ,GsensorTypeDef* paxis, unsigned char spo2_val,  unsigned char ppgsize );
@@ -173,7 +175,7 @@ unsigned char usr_iic_read_bytes(unsigned char reg_addr, unsigned char *pBuffer,
   */
 unsigned int usr_get_clock_ticks(void)
 {
-       return  rtc_get_value();
+       return  system_get_curr_time();//rtc_get_value();
 }
 
 /*********************************************************************************************************
@@ -342,7 +344,7 @@ typedef struct
        int16_t AXIS_Y;
        int16_t AXIS_Z;
 } AxesRaw_t;
-static void gsensor_data_match(AxesRaw_t *org_data, GsensorTypeDef *pGsensorParam, unsigned char ppg_size)
+void gsensor_data_match(AxesRaw_t *org_data, GsensorTypeDef *pGsensorParam, unsigned char ppg_size)
 {
        const unsigned char arry10[] = {0, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12};
        const unsigned char arry20[] = {0, 2, 3, 5, 6, 8, 9, 11, 12, 14, 15, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30};
@@ -385,7 +387,7 @@ static void get_gsensor_data( GsensorTypeDef *pGsensorParam, unsigned char *pgse
        //unsigned char SC7A20_FIFO_NUM = 0;
        signed short SC7A20_XYZ_Buf[3][32];
        gsensor_len= SL_SC7A20_Read_FIFO();     
-       gsensor_len= SL_SC7A20_GET_FIFO_Buf(&SC7A20_XYZ_Buf[0][0],&SC7A20_XYZ_Buf[1][0],&SC7A20_XYZ_Buf[2][0],0);       
+       gsensor_len= SL_SC7A20_GET_FIFO_Buf(&SC7A20_XYZ_Buf[0][0],&SC7A20_XYZ_Buf[1][0],&SC7A20_XYZ_Buf[2][0],FALSE);   
        if(ppg_size>sizeof(gsensor_buff)/sizeof(AxesRaw_t))
        {
                ppg_size = sizeof(gsensor_buff)/sizeof(AxesRaw_t);
@@ -396,17 +398,17 @@ static void get_gsensor_data( GsensorTypeDef *pGsensorParam, unsigned char *pgse
        {
                for(i=0;i<ppg_size;i++)
                {
-                               gsensor_buff[i].AXIS_X= SC7A20_XYZ_Buf[0][i/(ppg_size/gsensor_len+1)];
-                               gsensor_buff[i].AXIS_Y = SC7A20_XYZ_Buf[1][i/(ppg_size/gsensor_len+1)];
-                               gsensor_buff[i].AXIS_Z = SC7A20_XYZ_Buf[2][i/(ppg_size/gsensor_len+1)];
+                               gsensor_buff[i].AXIS_X= SC7A20_XYZ_Buf[0][i/(ppg_size/gsensor_len+1)]>>5;
+                               gsensor_buff[i].AXIS_Y = SC7A20_XYZ_Buf[1][i/(ppg_size/gsensor_len+1)]>>5;
+                               gsensor_buff[i].AXIS_Z = SC7A20_XYZ_Buf[2][i/(ppg_size/gsensor_len+1)]>>5;
                }
        }else
        {
                for(i=0;i<ppg_size;i++)
                {
-                               gsensor_buff[i].AXIS_X= SC7A20_XYZ_Buf[0][i];
-                               gsensor_buff[i].AXIS_Y = SC7A20_XYZ_Buf[1][i];
-                               gsensor_buff[i].AXIS_Z = SC7A20_XYZ_Buf[2][i];
+                               gsensor_buff[i].AXIS_X= SC7A20_XYZ_Buf[0][i]>>4;
+                               gsensor_buff[i].AXIS_Y = SC7A20_XYZ_Buf[1][i]>>4;
+                               gsensor_buff[i].AXIS_Z = SC7A20_XYZ_Buf[2][i]>>4;
                }
        }
 
@@ -452,6 +454,14 @@ static void get_gsensor_data( GsensorTypeDef *pGsensorParam, unsigned char *pgse
                        pGsensorParam->gsensor_z_axis[i] = gsensor_buff[gsensor_len-1].AXIS_Z;
                }
        }
+#else
+       for (int i = 0; i < ppg_size; i++)
+       {
+               pGsensorParam->gsensor_x_axis[i] = 0;
+               pGsensorParam->gsensor_y_axis[i] = 0;
+               pGsensorParam->gsensor_z_axis[i] = 256;
+       } 
+       *pgsensor_len = ppg_size;
 #endif
 }
 
@@ -708,8 +718,8 @@ 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);
        }
-       if(ppg_size)
-               co_printf("  interrupt ppg_size:%d!! \n",ppg_size);
+       // if(ppg_size)
+       //      co_printf("  interrupt ppg_size:%d!! \n",ppg_size);
        switch ( work_mode )
        {
                case WORK_MODE_HR:
@@ -764,35 +774,39 @@ void vc9202_usr_interrupt_handler( AlgoSportMode hr_alg_mode, unsigned char spo2
                                yylPFE_InputData_t yyl_in_data = {0};
                                if(wear_status)
                                {
-                                       //co_printf("WORK_MODE_HRV2\n");
-                                       vc9202_alg_results.hr_rate = alg_calculate_hrv_handler( vc9202_alg_results.hr_rate, &data, ppg_size, &gsensor_data, hr_alg_mode );
-                                       /* 校验+算法HRV */
-                                       co_printf("WORK_MODE_HRV hr:%d \nPPG:",vc9202_alg_results.hr_rate);
-                                       for(int i=0;i<ppg_size;i++)
+                                       if(yyl_in_data_len< 3000-1)
                                        {
-                                               //data.ppg_data[i] = 1008;
-                                               //vc9202_alg_results.hr_rate = 91;
-                                               memset(&yyl_in_data,0,sizeof(yyl_in_data)) ;
-                                               co_printf("%d ",data.ppg_data[i]);
-                                               yyl_in_data.axes.x = gsensor_data.gsensor_x_axis[i];
-                                               yyl_in_data.axes.y = gsensor_data.gsensor_y_axis[i];
-                                               yyl_in_data.axes.z = gsensor_data.gsensor_z_axis[i];
-                                               yyl_in_data.ppgSample = data.ppg_data[i];
-                                               
-                                               if(data.ppg_data[i])
+                                               //co_printf("WORK_MODE_HRV2\n");
+                                               vc9202_alg_results.hr_rate = alg_calculate_hrv_handler( vc9202_alg_results.hr_rate, &data, ppg_size, &gsensor_data, hr_alg_mode );
+                                               /* 校验+算法HRV */
+                                               co_printf("WORK_MODE_HRV hr:%d ppg_size:%d \r\nPPG:",vc9202_alg_results.hr_rate,ppg_size);
+                                               for(int i=0;i<ppg_size;i++)
                                                {
+                                                       //data.ppg_data[i] = 1008;
+                                                       //vc9202_alg_results.hr_rate = 91;
+                                                       memset(&yyl_in_data,0,sizeof(yyl_in_data)) ;
+                                                       
+                                                       yyl_in_data.axes.x = gsensor_data.gsensor_x_axis[i];
+                                                       yyl_in_data.axes.y = gsensor_data.gsensor_y_axis[i];
+                                                       yyl_in_data.axes.z = gsensor_data.gsensor_z_axis[i];
+                                                       yyl_in_data.ppgSample = data.ppg_data[i];
+                                                       co_printf("H:%d,P:%d,X:%d,Y:%d,Z:%d ||",vc9202_alg_results.hr_rate,data.ppg_data[i],yyl_in_data.axes.x,yyl_in_data.axes.y,yyl_in_data.axes.z);
+                                                       //co_printf("%d ",data.ppg_data[i]);
+                                                       //if(data.ppg_data[i])
                                                        YYL_Input_PFE(&yyl_in_data,vc9202_alg_results.hr_rate);
                                                        yyl_in_data_len++;
+                                                       
                                                }
-                                       }
 
-                                       co_printf(" !\n");
-                                       //co_printf("WORK_MODE_HRV4 yyl_in_data_len:%d\n",yyl_in_data_len);
+                                               co_printf(" \n");
+                                               //co_printf("WORK_MODE_HRV4 yyl_in_data_len:%d\n",yyl_in_data_len);
+                                       }
+                                       
                                        
                                }
                                else
                                {
-                                       co_printf("wear_status error!!!!\n");
+                                       //co_printf("wear_status error!!!!\n");
                                        vc9202_alg_results.hr_rate = 0;
                                        Algo_Init();
                                        /* 清空数据+初始化算法 */
@@ -835,7 +849,11 @@ void vc9202_usr_interrupt_handler( AlgoSportMode hr_alg_mode, unsigned char spo2
                        }
                        break;
                case WORK_MODE_FACTORY:
-                       factory_test_function( &data );
+                       sensor_INT();//唤醒上位机
+                       factory_test_function(&data);
+                       co_printf("WORK_MODE_FACTORY:apre_val[0]:%d,apre_val[1]:%d,aps_val:%d\n",data.apre_val[0],data.apre_val[1],data.aps_val);
+                       UART_send_buf_len = snprintf((char *)UART_send_buf,UART_SEND_MAX,"{\"cmd\":\"2\",\"factory_data\":\"%d,%d,%d\"}\n",data.apre_val[0],data.apre_val[1],data.aps_val);
+                       uart0_write_for_hci(UART_send_buf,UART_send_buf_len,NULL, NULL);
                        break;
                case WORK_MODE_FPC_TEST:
                        fpc_test_function(&data);
index 8723d23..67e1ec4 100644 (file)
@@ -31,11 +31,6 @@ ROM 0x01000000  0x30000
                *(ram_code)
     }
        
-    ER_STACK +0 ALIGN(4)
-    {
-        *(stack_space)
-    }
-       
     ER_RW +0
     {
         *(+RW)
@@ -49,10 +44,5 @@ ROM 0x01000000  0x30000
        HEAP_KE +0 
        {
         *(heap_ke)
-    }  
-       
-       HEAP_USER +0 
-       {
-        *(heap_user)
     }
 }
index e12aea5..3455406 100644 (file)
@@ -1,4 +1,4 @@
-;#<FEEDBACK># ARM Linker, 5050106: Last Updated: Fri Feb 23 11:18:07 2024
+;#<FEEDBACK># ARM Linker, 5060960: Last Updated: Sat Mar 16 10:02:04 2024
 ;VERSION 0.2
 ;FILE acpower_add_doublefre.o
 acPower_add_doublefre_init <= USED 0
@@ -167,6 +167,7 @@ __asm___12_driver_rtc_c_rtc_init____REVSH <= USED 0
 __asm___12_driver_rtc_c_rtc_init____RRX <= USED 0
 rtc_alarm <= USED 0
 rtc_disalarm <= USED 0
+rtc_init <= USED 0
 ;FILE driver_timer.o
 __asm___14_driver_timer_c_89f15fa2____REV16 <= USED 0
 __asm___14_driver_timer_c_89f15fa2____REVSH <= USED 0
@@ -857,9 +858,6 @@ 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,9 +869,7 @@ __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
@@ -986,7 +982,6 @@ 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
@@ -1022,6 +1017,7 @@ vc9202_drv_stop_sampling <= USED 0
 __asm___13_vc9202_user_c_a664f2b1____REV16 <= USED 0
 __asm___13_vc9202_user_c_a664f2b1____REVSH <= USED 0
 __asm___13_vc9202_user_c_a664f2b1____RRX <= USED 0
+gsensor_data_match <= USED 0
 vc9202_usr_channel_switch <= USED 0
 vc9202_usr_get_int_reason <= USED 0
 vc9202_usr_soft_reset <= USED 0
index 9f80642..21f2979 100644 (file)
@@ -5,6 +5,7 @@ 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_factory_data_flag= 0;//工厂模式标致位
 char send_yyl_data_flag= 0;//中医标致位
 char send_emo_data_flag= 0;//情绪标致位
 char send_temp_data_flag= 0;//温度标致位
@@ -70,6 +71,7 @@ unsigned int find_c(char *data,char c)
         if(count > 65532)
             return 0;
     }
+               return 0;
 } 
 
 /***************************模块接收处理**********************************/
@@ -113,9 +115,11 @@ __attribute__((section("ram_code"))) void uart0_isr_ram(void)
         uart_reg_ram->u2.ier.erlsi = 0;
     }
 }
-
+#include "vc9202_user.h"
 unsigned int uart0_timer = 0;  
-               
+extern  uint8_t bp_data[100];
+extern uint16_t bp_data_len ;
+extern AlgoCalcResultsTypeDef vc9202_alg_results;      
 void uart0_receive(void)
 { 
        
@@ -135,7 +139,7 @@ void uart0_receive(void)
        if(uart0_data_len >0)
                co_printf("uart_read:%s\n",uart0_rivce_data);
        //co_printf("uart0_receive:%s\n",uart0_rivce_data);
-       if(strstr(uart0_rivce_data,"\"cmd\":\"1\""))//{"cmd":"
+       if(strstr((char *)uart0_rivce_data,"\"cmd\":\"1\""))//{"cmd":"
        {
                //////////////////////////////执行工作模式///////////////////////////{"cmd":"1","work_mode":"hrs"}
                send_bp_data_flag=0;//发送血压数据标致位   
@@ -148,51 +152,56 @@ void uart0_receive(void)
                send_sleep_data_flag=0;//发送sleep数据标致位
                send_step_data_flag=0;//发送step数据标致位
                send_wear_data_flag=0;//发送wear数据标致位
-               if(strstr(uart0_rivce_data,"\"bp\""))//bp:血压模式
+               sensor_INT();//唤醒上位机
+               if(strstr((char *)uart0_rivce_data,"\"bp\""))//bp:血压模式
                {
                        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:心率模式
+               else if(strstr((char *)uart0_rivce_data,"\"hrs\""))//:"hrs"}//hrs:心率模式
                {
                        uart0_write_for_hci("{\"cmd\":\"1\",\"work_mode\":\"1\"}\r\n", sizeof("{\"cmd\":\"1\",\"work_mode\":\"1\"}\r\n")-1,  NULL, NULL);
 
-               HRS_open();//心率
+                       HRS_open();//心率
 
                }
-               else if(strstr(uart0_rivce_data,"\"hrv\""))//:"hrv"}//hrv:HRV模式
+               else if(strstr((char *)uart0_rivce_data,"\"hrv\""))//:"hrv"}//hrv:HRV模式
                {
                        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:血氧模式
+               else if(strstr((char *)uart0_rivce_data,"\"spo2\""))//:"spo2"}//spo2:血氧模式
                {
                        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:中医模式
+               }else if(strstr((char *)uart0_rivce_data,"\"yyl\""))//yyl:中医模式
                {
                        
                        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:情绪模式
+               }else if(strstr((char *)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);
                        EMO_open();//情绪
                }
-               else if(strstr(uart0_rivce_data,"\"wear\""))//:"wear"}//wear:佩戴模式
+               else if(strstr((char *)uart0_rivce_data,"\"wear\""))//:"wear"}//wear:佩戴模式
                { 
                        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:温度模式
+               else if(strstr((char *)uart0_rivce_data,"\"temp\""))//:"temp"}//temp:温度模式
                { 
                        uart0_write_for_hci("{\"cmd\":\"1\",\"work_mode\":\"1\"}\r\n", sizeof("{\"cmd\":\"1\",\"work_mode\":\"1\"}\r\n")-1,  NULL, NULL);
                        send_temp_data_flag=1;
+               }else if(strstr((char *)uart0_rivce_data,"\"factory\""))//:"factory"}//factory:工厂模式
+               { 
+                       uart0_write_for_hci("{\"cmd\":\"1\",\"work_mode\":\"1\"}\r\n", sizeof("{\"cmd\":\"1\",\"work_mode\":\"1\"}\r\n")-1,  NULL, NULL);
+                       factory_open();//工厂模式
                }
-               else if(strstr(uart0_rivce_data,"\"close\""))//:"close"}//close:关闭所有测试,进入低功耗待机模式
+               else if(strstr((char *)uart0_rivce_data,"\"close\""))//:"close"}//close:关闭所有测试,进入低功耗待机模式
                {
                        uart0_write_for_hci("{\"cmd\":\"1\",\"work_mode\":\"1\"}\r\n", sizeof("{\"cmd\":\"1\",\"work_mode\":\"1\"}\r\n")-1,  NULL, NULL);
                        ///////////////////////////////// 关闭测量//////////////////////////////////////////////
@@ -200,71 +209,129 @@ void uart0_receive(void)
                }
        }
                //////////////////////////////获取测试数值///////////////////////////主控->血压模块{"cmd":"2","get_data":"bp"}
-       if(strstr(uart0_rivce_data,"\"cmd\":\"2\""))//2"//2:获取测试数值
+       if(strstr((char *)uart0_rivce_data,"\"cmd\":\"2\""))//2"//2:获取测试数值
        {
                
-               if(strstr(uart0_rivce_data,"\"get_data\":\"bp\""))//:"bp"}//bp:获取血压数值
+               if(strstr((char *)uart0_rivce_data,"\"get_data\":\"bp\""))//:"bp"}//bp:获取血压数值
                { 
-                       send_bp_data_flag=1;
+                       send_bp_data_flag = 1;
+                       if(bp_data_len != 0)
+                       {
+                               sensor_INT();//唤醒上位机
+                               //输出血压数据到串口0  
+                               co_printf("bp_data_len:%d\n",bp_data_len);
+                               uart0_write_for_hci("{\"cmd\":\"2\",\"bp_data\":\"",strlen("{\"cmd\":\"2\",\"bp_data\":\""),NULL, NULL);
+                               UART_send_buf_len = 0;
+                               
+                               for(uint8_t i=0;i<bp_data_len;i++)//转码
+                               {
+                                       UART_send_buf_len += snprintf((char *)UART_send_buf+i*2,UART_SEND_MAX,"%02X",bp_data[i]);
+                                       // uintTOstr(bp_data[i]);
+                                       // uart_putc_noint(UART0,str_high);
+                                       // uart_putc_noint(UART0,str_low);
+                               }
+                               uart0_write_for_hci(UART_send_buf,UART_send_buf_len,NULL, NULL);
+                               uart0_write_for_hci("\"}\n", 3,  NULL, NULL);
+                               memset(bp_data,0,sizeof(bp_data));
+                               bp_data_len =0;
+                       }
+                               
+                       
                }
-               if(strstr(uart0_rivce_data,"\"get_data\":\"hrs\""))//:"hrs"}//hrs:获取心率数值
+               if(strstr((char *)uart0_rivce_data,"\"get_data\":\"hrs\""))//:"hrs"}//hrs:获取心率数值
                {  
-                       send_hrs_data_flag=1;
+                       send_hrs_data_flag = 1;
+                       if(vc9202_alg_results.hr_rate >0)
+                       {
+                               //co_printf("HRS_test3!!!!!!!!\n");
+                               //co_printf("hr_rate0:%d UART_send_buf:0x%x\n",vc9202_alg_results.hr_rate,UART_send_buf);
+                               memset(UART_send_buf,0,UART_SEND_MAX);
+                               sensor_INT();//唤醒上位机
+                               co_printf("hr_rate:%d \n",vc9202_alg_results.hr_rate);
+                               UART_send_buf_len = snprintf((char *)UART_send_buf,UART_SEND_MAX,"{\"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; 
+                               //co_printf("hr_rate2:%d \n",vc9202_alg_results.hr_rate);
+                       }       
                }
-               if(strstr(uart0_rivce_data,"\"get_data\":\"hrv\""))//:"hrv"}//hrv:获取HRV数值(暂不做)
+               if(strstr((char *)uart0_rivce_data,"\"get_data\":\"hrv\""))//:"hrv"}//hrv:获取HRV数值(暂不做)
                {
                        send_hrv_data_flag=1;
                }
-               if(strstr(uart0_rivce_data,"\"get_data\":\"spo2\""))//:"spo2"}//spo2:获取血氧模式
+               if(strstr((char *)uart0_rivce_data,"\"get_data\":\"spo2\""))//:"spo2"}//spo2:获取血氧模式
                {
-                       send_spo2_data_flag=1;
+                       send_spo2_data_flag = 1;
+                       if(vc9202_alg_results.spo2_val >0)
+                       {
+                               sensor_INT();//唤醒上位机
+                               co_printf("spo2_val:%d \n",vc9202_alg_results.spo2_val);
+                               memset(UART_send_buf,0,UART_SEND_MAX);
+                               UART_send_buf_len = snprintf((char *)UART_send_buf,UART_SEND_MAX,"{\"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;        
+                       }
+               }if(strstr((char *)uart0_rivce_data,"\"get_data\":\"yyl\""))//:"yyl"}//yyl:获取中医数据
+               { 
+                       send_yyl_data_flag=1;
+                       YYL_out_data();//发送中医数据
                }
-               if(strstr(uart0_rivce_data,"\"get_data\":\"wear\""))//:"wear"}//wear:获取佩戴模式
+               if(strstr((char *)uart0_rivce_data,"\"get_data\":\"wear\""))//:"wear"}//wear:获取佩戴模式
                { 
-                       send_wear_data_flag=1;
+                       // unsigned char wear = vc9202_usr_get_wear_status();//获取佩戴状态
+                       // co_printf("wear_val:%d \n",wear);
+                       // memset(UART_send_buf,0,UART_SEND_MAX);
+                       // UART_send_buf_len = snprintf((char *)UART_send_buf,UART_SEND_MAX,"{\"cmd\":\"2\",\"wear_data\":\"%d\"}\n",wear);
+                       // uart0_write_for_hci(UART_send_buf,UART_send_buf_len,NULL, NULL);
                }
-               if(strstr(uart0_rivce_data,"\"get_data\":\"step\""))//:"step"}//step:获取累计步数
+               if(strstr((char *)uart0_rivce_data,"\"get_data\":\"step\""))//:"step"}//step:获取累计步数
                {
                        send_step_data_flag=1;
                }
-               if(strstr(uart0_rivce_data,"\"get_data\":\"sleep\""))//:"sleep"}//sleep:获取当前睡眠等级
+               if(strstr((char *)uart0_rivce_data,"\"get_data\":\"sleep\""))//:"sleep"}//sleep:获取当前睡眠等级
                {
                        send_sleep_data_flag=1;
                }
 
-               if(strstr(uart0_rivce_data,"\"get_data\":\"gsensor\""))//:"gsensor"}//gsensor:获取当前重力传感器数值(每秒25个)
+               if(strstr((char *)uart0_rivce_data,"\"get_data\":\"gsensor\""))//:"gsensor"}//gsensor:获取当前重力传感器数值(每秒25个)
                {
                        gsensor_test();
                }
-               if(strstr(uart0_rivce_data,"\"get_data\":\"temp\""))//:"temp"}//temp:获取当前温度数值
+               if(strstr((char *)uart0_rivce_data,"\"get_data\":\"temp\""))//:"temp"}//temp:获取当前温度数值
                {
                        temp_test();
                }       
-               if(strstr(uart0_rivce_data,"\"get_data\":\"is_HA_activate\""))//:获取恒爱库是否激活状态
+               if(strstr((char *)uart0_rivce_data,"\"get_data\":\"is_HA_activate\""))//:获取恒爱库是否激活状态
                {
-                       UART_send_buf_len = snprintf(UART_send_buf,UART_SEND_MAX,"{\"cmd\":\"2\",\"is_HA_activate\":\"%d\"}\n",is_HA_activate);
+                       sensor_INT();//唤醒上位机
+                       UART_send_buf_len = snprintf((char *)UART_send_buf,UART_SEND_MAX,"{\"cmd\":\"2\",\"is_HA_activate\":\"%d\"}\n",is_HA_activate);
                        uart0_write_for_hci(UART_send_buf, UART_send_buf_len,  NULL, NULL);
                }       
-               if(strstr(uart0_rivce_data,"\"get_data\":\"HA_req_code\""))//:获取恒爱库请求码
+               if(strstr((char *)uart0_rivce_data,"\"get_data\":\"HA_req_code\""))//:获取恒爱库请求码
                {
                        unsigned int req_len = 0;
-                       request_validation("ZHSX",4,sys_config.IMEI,strlen(sys_config.IMEI),sys_config.HA_req_code,&req_len);
+                       sensor_INT();//唤醒上位机
+                       request_validation((unsigned char *)"ZHSX",4,(unsigned char *)sys_config.IMEI,strlen(sys_config.IMEI),(unsigned char *)sys_config.HA_req_code,&req_len);
                        sys_config.HA_req_code[req_len] = 0;
-                       UART_send_buf_len = snprintf(UART_send_buf,UART_SEND_MAX,"{\"cmd\":\"2\",\"HA_req_code\":\"%s\"}\n",sys_config.HA_req_code);
+                       UART_send_buf_len = snprintf((char *)UART_send_buf,UART_SEND_MAX,"{\"cmd\":\"2\",\"HA_req_code\":\"%s\"}\n",sys_config.HA_req_code);
                        uart0_write_for_hci(UART_send_buf, UART_send_buf_len,  NULL, NULL);
                        co_printf("HA_req_code:HA_req_code:%s \n",sys_config.HA_req_code);      
                        save_sys_config();//保存配置
                }
+               
+               // memset(UART_send_buf,0,UART_SEND_MAX);
+               // UART_send_buf_len = snprintf((char *)UART_send_buf,UART_SEND_MAX,"{\"cmd\":\"2\",\"wear_data\":\"%d\"}\n",wear);
+               // uart0_write_for_hci(UART_send_buf,UART_send_buf_len,NULL, NULL);
        } 
        //////////////////////////////执行设置参数命令///////////////////////////
-       if(strstr(uart0_rivce_data,"\"cmd\":\"3\""))//3"//3:执行设置参数命令
+       if(strstr((char *)uart0_rivce_data,"\"cmd\":\"3\""))//3"//3:执行设置参数命令
        {
                char *str_tmp = NULL;
                int len_tmp = 0;
                char data_tmp[30] = {0};
-               str_tmp = strstr(uart0_rivce_data,"\"set_IMEI\":\"");//设置IMEI号
+               str_tmp = strstr((char *)uart0_rivce_data,"\"set_IMEI\":\"");//设置IMEI号
                if(str_tmp)
                {
+                       sensor_INT();//唤醒上位机
                        str_tmp+=strlen("\"set_IMEI\":\"");
                        len_tmp = find_c(str_tmp,'\"');
                        if(len_tmp >= sizeof(sys_config.IMEI))
@@ -280,12 +347,13 @@ void uart0_receive(void)
                        }
                        
                        
-                       UART_send_buf_len = snprintf(UART_send_buf,UART_SEND_MAX,"{\"cmd\":\"3\",\"set_config\":\"1\"}\n");
+                       UART_send_buf_len = snprintf((char *)UART_send_buf,UART_SEND_MAX,"{\"cmd\":\"3\",\"set_config\":\"1\"}\n");
                        uart0_write_for_hci(UART_send_buf, UART_send_buf_len,  NULL, NULL);
                }
-               str_tmp = strstr(uart0_rivce_data,"\"set_time\":\"");//设置时间戳
+               str_tmp = strstr((char *)uart0_rivce_data,"\"set_time\":\"");//设置时间戳
                if(str_tmp)
                {
+                       sensor_INT();//唤醒上位机
                        str_tmp+=strlen("\"set_time\":\"");
                        len_tmp = find_c(str_tmp,'\"');
                        
@@ -296,22 +364,23 @@ void uart0_receive(void)
                        timestamp_d = atoi(data_tmp);
                        co_printf("timestamp_d:%d\n",timestamp_d);
 
-                       UART_send_buf_len = snprintf(UART_send_buf,UART_SEND_MAX,"{\"cmd\":\"3\",\"set_config\":\"1\"}\n");
+                       UART_send_buf_len = snprintf((char *)UART_send_buf,UART_SEND_MAX,"{\"cmd\":\"3\",\"set_config\":\"1\"}\n");
                        uart0_write_for_hci(UART_send_buf, UART_send_buf_len,  NULL, NULL);
                }
-               str_tmp = strstr(uart0_rivce_data,"\"set_HA_key_code\":\"");//设置恒爱算法库激活码
+               str_tmp = strstr((char *)uart0_rivce_data,"\"set_HA_key_code\":\"");//设置恒爱算法库激活码
                if(str_tmp)
                {
+                       sensor_INT();//唤醒上位机
                        str_tmp+=strlen("\"set_HA_key_code\":\"");
                        len_tmp = find_c(str_tmp,'\"');
                        if(len_tmp < sizeof(sys_config.HA_key_code))
                        {
                                memcpy(sys_config.HA_key_code,str_tmp,len_tmp);
-                               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("set_HA_key_code:HA_key_code:%s is_HA_activate:%d\n",sys_config.HA_key_code,is_HA_activate);  
                                save_sys_config();//保存配置
                        }
-                       UART_send_buf_len = snprintf(UART_send_buf,UART_SEND_MAX,"{\"cmd\":\"3\",\"HA_activate\":\"%d\"}\n",is_HA_activate);
+                       UART_send_buf_len = snprintf((char *)UART_send_buf,UART_SEND_MAX,"{\"cmd\":\"3\",\"HA_activate\":\"%d\"}\n",is_HA_activate);
                        uart0_write_for_hci(UART_send_buf, UART_send_buf_len,  NULL, NULL);
                }
        }