From: @CHENG <2393524978@qq.com> Date: Thu, 11 Apr 2024 09:11:02 +0000 (+0800) Subject: K18 X-Git-Url: http://git.snicker.com.cn/?a=commitdiff_plain;h=37742724b7f6f631585c61352ae463390b46ce99;p=mirrors%2FASR3603_Z5.git K18 --- diff --git a/1.doc/K18/BLE_Watch/code/sensor_drive.c b/1.doc/K18/BLE_Watch/code/sensor_drive.c index 4b5210e8..39718355 100644 --- a/1.doc/K18/BLE_Watch/code/sensor_drive.c +++ b/1.doc/K18/BLE_Watch/code/sensor_drive.c @@ -441,6 +441,7 @@ char HRS_test(void) vc9202_usr_interrupt_handler(SPORT_TYPE_NORMAL,1); //co_printf("HRS_test2!!!!!!!!\n"); uart0_receive();//串口0接收数据处理 + irq_flag = 0; } } return send_hrs_data_flag; @@ -641,6 +642,7 @@ char YYL_test(void) // sensor_INT();//唤醒上位机 // co_delay_10us(100*1000); } + irq_flag = 0; //co_printf("YYL_test2!!\n"); } } @@ -689,6 +691,7 @@ void get_tp_data() co_delay_100us(500); // } } +#if 0 void temp_test(void) { @@ -723,6 +726,55 @@ void temp_test(void) //co_delay_100us(1000); } +#else + +void send_temp_data(void) +{ + //co_printf("[CHENG]:send_temp_data\r\n"); + get_tp_data(); + UART_send_buf_len = snprintf((char *)UART_send_buf,UART_SEND_MAX,"{\"cmd\":\"2\",\"temp_data\":\""); + uart0_write_for_hci(UART_send_buf,UART_send_buf_len,NULL, NULL); + float shi=0.00,ge=0.00; + shi=(temper_data/256)/10; + ge=(temper_data/256)%10; + uart_putc_noint(UART0,(int)(shi+48)); //0x30 + uart_putc_noint(UART0,(int)(ge+48)); + uart_putc_noint(UART0,'.'); + shi = temper_data; + shi = shi/256; + shi = (int)(shi*100)%100/10; + uart_putc_noint(UART0,(int)shi+48); //0x30 + ge= temper_data; + ge = ge/256; + ge = (int)(ge*100)%100%10; + uart_putc_noint(UART0,(int)ge+48); //0x30 + uart0_write_for_hci(uart0_residue_data, 3, NULL, NULL); + //co_delay_100us(1000); +} + +char temp_test(void) +{ + bool irq_flag=0; + while(send_temp_data_flag) + { + while(gpio_get_pin_value(GPIO_PORT_C, GPIO_BIT_7)==1&&send_temp_data_flag)//等待HR_INT变低 + { + //vcHr02IRQHandler(); + co_delay_100us(10); + uart0_receive();//串口0接收数据处理 + irq_flag = 1; + } + while((gpio_get_pin_value(GPIO_PORT_C, GPIO_BIT_7)==0)&&irq_flag&&send_temp_data_flag)//等待HR_INT变高 //高电平获取数据 + { + vc9202_usr_interrupt_handler(SPORT_TYPE_NORMAL,1); + uart0_receive();//串口0接收数据处理 + irq_flag = 0; + } + } + return send_temp_data_flag; +} +#endif + void gsensor_test(void) { @@ -863,6 +915,18 @@ void SPO2_open(void)//血氧 //vc9202_usr_interrupt_handler(SPORT_TYPE_NORMAL,1); } + +void temp_open(void) +{ + gpio_set_pin_value(GPIO_PORT_A, GPIO_BIT_0, 1); //心率使能 + gpio_set_pin_value(GPIO_PORT_A, GPIO_BIT_1, 0); //血压使能 + //pmu_port_wakeup_func_set(GPIO_PC7);//使能心率中断 + pInit_Param.work_mode = WORK_MODE_WEAR; // WORK_MODE_TEMPERATURE; + vc9202_usr_init(&pInit_Param); + send_temp_data_flag = 1; + //co_printf("[CHENG]:temp_open\r\n"); +} + void wear_open(void)//佩戴 { @@ -935,6 +999,8 @@ void sensor_while(void) wear_test(); // /////////////////////工厂模式///////////////////////////// factory_test(); + + temp_test(); } //if(BP_IRQ_FLAG == 1) { diff --git a/1.doc/K18/BLE_Watch/code/sensor_drive.h b/1.doc/K18/BLE_Watch/code/sensor_drive.h index 72b540bd..05da1447 100644 --- a/1.doc/K18/BLE_Watch/code/sensor_drive.h +++ b/1.doc/K18/BLE_Watch/code/sensor_drive.h @@ -20,6 +20,7 @@ void YYL_open(void);//中医 void HRS_open(void);//心率 void SPO2_open(void);//血氧 void wear_open(void);//佩戴 +void temp_open(void); void sensor_close(void); void gsensor_init(void); char BP_test(void); @@ -31,7 +32,8 @@ char YYL_test(void); void YYL_test_timer(void); char EMO_test(void); void get_tp_data(void); -void temp_test(void); +//void temp_test(void); +void send_temp_data(void); void gsensor_test(void); void VC9202_init(void); void HA_lib_init(void); diff --git a/1.doc/K18/BLE_Watch/keil/VC9202/vc9202_driver.c b/1.doc/K18/BLE_Watch/keil/VC9202/vc9202_driver.c index 7a1adca6..f15c78d3 100644 --- a/1.doc/K18/BLE_Watch/keil/VC9202/vc9202_driver.c +++ b/1.doc/K18/BLE_Watch/keil/VC9202/vc9202_driver.c @@ -345,12 +345,39 @@ WearStatusTypeDef vc9202_drv_get_wear_status(void) if ((event & VC9202_EVENT_PS_MARK) && (en_int & (1 << 4))) { wear_interrupt = 1; + //co_printf("[10]:000000\r\n"); } /* 未使能PsInt下,ps_ppg同频通过fifo中断去识别摘配带 */ if (event & VC9202_EVENT_FIFO_MARK) { wear_interrupt = 1; + //co_printf("[11]:111111\r\n"); } + //co_printf("[12]:222222=%d\r\n", event); + + /* WORK_MODE_HRV 100HZ, wear off status check error */ + if (WORK_MODE_HRV == dev9202_info.work_mode) + { + static unsigned char wear_int_counter = 0; + if(0 == wear_interrupt) + { + wear_int_counter++; + //co_printf("[13]:333333=%d\r\n", wear_int_counter); + } + else + { + wear_int_counter = 0; + //co_printf("[14]:444444=%d\r\n", wear_int_counter); + } + if(10 <= wear_int_counter) + { + wear_interrupt = 1; + wear_int_counter = 0; + //co_printf("[15]:555555=%d\r\n", wear_int_counter); + } + } + /* WORK_MODE_HRV 100HZ, wear off status check error */ + #endif /* 非心率模式,就算使能了运动量,也没有去做处理,直接置1忽略 */ if (dev9202_info.work_mode != WORK_MODE_HR && dev9202_info.work_mode != WORK_MODE_WEAR) diff --git a/1.doc/K18/BLE_Watch/keil/VC9202/vc9202_user.c b/1.doc/K18/BLE_Watch/keil/VC9202/vc9202_user.c index 09cbe194..f0986960 100644 --- a/1.doc/K18/BLE_Watch/keil/VC9202/vc9202_user.c +++ b/1.doc/K18/BLE_Watch/keil/VC9202/vc9202_user.c @@ -747,16 +747,16 @@ void vc9202_usr_interrupt_handler( AlgoSportMode hr_alg_mode, unsigned char spo2 break; case WORK_MODE_HRV: - if( vc9202_usr_get_int_reason()&(VC9202_EVENT_PS_MARK|VC9202_EVENT_FIFO_MARK) ) + /* WORK_MODE_HRV 100HZ, wear off status check error */ + // if( vc9202_usr_get_int_reason()&(VC9202_EVENT_PS_MARK|VC9202_EVENT_FIFO_MARK) ) + /* WORK_MODE_HRV 100HZ, wear off status check error */ { //co_printf("WORK_MODE_HRV0\n"); vc9202_alg_results.wear_status = vc9202_usr_get_wear_status(); - //co_printf("WORK_MODE_HRV:wear_status: %d\r\n",vc9202_alg_results.wear_status); - get_gsensor_data(&gsensor_data, &gsensor_size, ppg_size); - //co_printf("WORK_MODE_HRV1\n"); - yylPFE_InputData_t yyl_in_data = {0}; if(vc9202_alg_results.wear_status ) { + yylPFE_InputData_t yyl_in_data = {0}; + get_gsensor_data(&gsensor_data, &gsensor_size, ppg_size); //co_printf("WORK_MODE_HRV2\n"); vc9202_alg_results.hr_rate = alg_calculate_hrv_handler( vc9202_alg_results.hr_rate, &data, ppg_size, &gsensor_data, hr_alg_mode ); if(yyl_in_data_len< 3000-1 && ppg_size != 0) diff --git a/1.doc/K18/BLE_Watch/keil/uart.c b/1.doc/K18/BLE_Watch/keil/uart.c index cc730fff..7d198070 100644 --- a/1.doc/K18/BLE_Watch/keil/uart.c +++ b/1.doc/K18/BLE_Watch/keil/uart.c @@ -197,7 +197,7 @@ void uart0_receive(void) else if(strstr((char *)uart0_rivce_data,"\"temp\""))//:"temp"}//temp:温度模式 { uart0_write_for_hci("{\"cmd\":\"1\",\"work_mode\":\"1\"}\r\n", sizeof("{\"cmd\":\"1\",\"work_mode\":\"1\"}\r\n")-1, NULL, NULL); - send_temp_data_flag=1; + temp_open(); }else if(strstr((char *)uart0_rivce_data,"\"factory\""))//:"factory"}//factory:工厂模式 { uart0_write_for_hci("{\"cmd\":\"1\",\"work_mode\":\"1\"}\r\n", sizeof("{\"cmd\":\"1\",\"work_mode\":\"1\"}\r\n")-1, NULL, NULL); @@ -301,7 +301,8 @@ void uart0_receive(void) } if(strstr((char *)uart0_rivce_data,"\"get_data\":\"temp\""))//:"temp"}//temp:获取当前温度数值 { - temp_test(); + //temp_test(); + send_temp_data(); } if(strstr((char *)uart0_rivce_data,"\"get_data\":\"is_HA_activate\""))//:获取恒爱库是否激活状态 { @@ -320,6 +321,7 @@ void uart0_receive(void) co_printf("HA_req_code:HA_req_code:%s \n",sys_config.HA_req_code); save_sys_config();//保存配置 } + //co_printf("[CHENG]:send_wear_status=%d\r\n", vc9202_alg_results.wear_status); UART_send_buf_len = snprintf((char *)UART_send_buf,UART_SEND_MAX,"{\"cmd\":\"2\",\"wear_data\":\"%d\"}\n",vc9202_alg_results.wear_status); uart0_write_for_hci(UART_send_buf,UART_send_buf_len,NULL, NULL); // memset(UART_send_buf,0,UART_SEND_MAX);