diff --git a/fw-AC63_BT_SDK/apps/spp_and_le/app_temperature.c b/fw-AC63_BT_SDK/apps/spp_and_le/app_temperature.c index e3397f8..e759ddb 100644 --- a/fw-AC63_BT_SDK/apps/spp_and_le/app_temperature.c +++ b/fw-AC63_BT_SDK/apps/spp_and_le/app_temperature.c @@ -21,7 +21,8 @@ //#include "ble_trans_profile.h" static int led_state = 0; static u16 timer_temperature_detect = 0; -static int16_t ADJ_temp = 0; +static int16_t ADJ_obj_temp = 0; +static int16_t ADJ_body_temp = 0; app_dev_info_t dev_info; //struct app_dev_config_t dev_config; @@ -127,21 +128,52 @@ void ble_receive_callback(u8* data,u16 len){ ble_send_data(&str_adj,strlen(str_adj)); u16 temp = dev_info.init_sensor; - ADJ_temp = temp - BLE_ADJUST_TEMP_37 ; - if (ADJ_temp > 3000 || ADJ_temp < -3000) { - ADJ_temp = 0; + ADJ_obj_temp = temp - BLE_ADJUST_TEMP_37 ; + if (ADJ_obj_temp > 3000 || ADJ_obj_temp < -3000) { + ADJ_obj_temp = 0; } - syscfg_write(ADJ_TEMP_CONFIG, &ADJ_temp,sizeof(ADJ_temp)); + syscfg_write(ADJ_OBJ_TEMP_CONFIG, &ADJ_obj_temp,sizeof(ADJ_obj_temp)); } + //物温偏差+1度 + else if(strstr(data,"AT+ADJOBJ=") != NULL){ + u8 str_adj[64] = {0}; + char *end; + long value = strtol(data + strlen("AT+ADJOBJ="), &end, 10); + ADJ_obj_temp -= (int16_t)value; + memset(str_adj,0,sizeof(str_adj)); + sprintf(str_adj,"AT+ADJOBJ=%d",-ADJ_obj_temp); + ble_send_data(&str_adj,strlen(str_adj)); + + + syscfg_write(ADJ_OBJ_TEMP_CONFIG, &ADJ_obj_temp,sizeof(ADJ_obj_temp)); + + } + + //体温偏差+1度 + else if(strstr(data,"AT+ADJBODY=") != NULL){ + u8 str_adj[64] = {0}; + char *end; + long value = strtol(data + strlen("AT+ADJBODY="), &end, 10); + ADJ_body_temp -= (int16_t)value; + memset(str_adj,0,sizeof(str_adj)); + sprintf(str_adj,"AT+ADJBODY=%d",-ADJ_body_temp); + ble_send_data(&str_adj,strlen(str_adj)); + + syscfg_write(ADJ_BODY_TEMP_CONFIG, &ADJ_body_temp,sizeof(ADJ_body_temp)); + + } + else if(strstr(data,"AT+RESET=") != NULL){ u8 str_res[64] = {0}; memset(str_res,0,sizeof(str_res)); sprintf(str_res,"AT+RESET=OK"); ble_send_data(&str_res,strlen(str_res)); - ADJ_temp = 0; - syscfg_write(ADJ_TEMP_CONFIG, &ADJ_temp,sizeof(ADJ_temp)); + ADJ_obj_temp = 0; + ADJ_body_temp = 0; + syscfg_write(ADJ_OBJ_TEMP_CONFIG, &ADJ_obj_temp,sizeof(ADJ_obj_temp)); + syscfg_write(ADJ_BODY_TEMP_CONFIG, &ADJ_body_temp,sizeof(ADJ_body_temp)); } else{ printf("unknow cmd\n"); @@ -322,11 +354,12 @@ u16 buffer[MAX_SIZE]; } int temp_value = t_body; + int Tobj_value = t_ntc; printf("Temp: %d\r\n\r\n", temp_value); //BBOOEEb 2字节体温 2字节物温 2字节环温 1字节电量 u16 body = (u16)temp_value; - u16 obj = (u16)temp_value; + u16 obj = (u16)Tobj_value; u16 ntc = (u16)t_ntc; u8 battery = get_vbat_percent(); u16 batt_val = 0; @@ -339,16 +372,16 @@ u16 buffer[MAX_SIZE]; dev_info.init_sensor = body; //原始温度 - if (ADJ_temp != 0) { - int16_t temp_body = (int16_t)body; + if (ADJ_obj_temp != 0) { int16_t temp_obj = (int16_t)obj; - - temp_body -= ADJ_temp; - temp_obj -= ADJ_temp; - - body = (temp_body > 0) ? (u16)temp_body : 0; + temp_obj -= ADJ_obj_temp; obj = (temp_obj > 0) ? (u16)temp_obj : 0; } + if (ADJ_body_temp != 0) { + int16_t temp_body = (int16_t)body; + temp_body -= ADJ_body_temp; + body = (temp_body > 0) ? (u16)temp_body : 0; + } if(body == 0 && obj == 0 ){ printf("error data ...\r\n"); @@ -791,10 +824,13 @@ void temperature_init(void) tuya_ble_queue_init(&temp_queue, buffer, MAX_SIZE, sizeof(u16)); tuya_ble_queue_flush(&temp_queue); - if (syscfg_read(ADJ_TEMP_CONFIG, &ADJ_temp, sizeof(ADJ_temp)) != sizeof(ADJ_temp)) { - ADJ_temp = 0; + if (syscfg_read(ADJ_OBJ_TEMP_CONFIG, &ADJ_obj_temp, sizeof(ADJ_obj_temp)) != sizeof(ADJ_obj_temp)) { + ADJ_obj_temp = 0; } - printf("ADJ_temp:%d\r\n", ADJ_temp); + if (syscfg_read(ADJ_BODY_TEMP_CONFIG, &ADJ_body_temp, sizeof(ADJ_body_temp)) != sizeof(ADJ_body_temp)) { + ADJ_body_temp = 0; + } + printf("ADJ_obj_temp:%d ADJ_body_temp:%d\r\n", ADJ_obj_temp,ADJ_body_temp); dev_info.batt_percent = get_vbat_percent(); diff --git a/fw-AC63_BT_SDK/apps/spp_and_le/include/W_TRS_CAL.h b/fw-AC63_BT_SDK/apps/spp_and_le/include/W_TRS_CAL.h index 56f578f..6c76454 100644 --- a/fw-AC63_BT_SDK/apps/spp_and_le/include/W_TRS_CAL.h +++ b/fw-AC63_BT_SDK/apps/spp_and_le/include/W_TRS_CAL.h @@ -21,7 +21,8 @@ typedef unsigned int uint32_t; // output: // int16_t tax10 // Ten times the ambient temperature, degree centigrade // int16_t tox10 // Ten times the target temperature, degree centigrade -void Cal_get_temp(int32_t tmp_ad, int32_t corr_k1, int32_t tob_ad, int32_t corr_k2, int16_t *tax10, int16_t *tox10); +// uint16_t tbx10 // Ten times the body temperature, degree centigrade +void Cal_get_temp(int32_t tmp_ad, int32_t corr_k1, int32_t tob_ad, int32_t corr_k2, int16_t *tax10, int16_t *tox10, uint16_t *tbx10); #endif diff --git a/fw-AC63_BT_SDK/apps/spp_and_le/include/app_temperature.h b/fw-AC63_BT_SDK/apps/spp_and_le/include/app_temperature.h index 66ce77f..d222d6b 100644 --- a/fw-AC63_BT_SDK/apps/spp_and_le/include/app_temperature.h +++ b/fw-AC63_BT_SDK/apps/spp_and_le/include/app_temperature.h @@ -28,7 +28,13 @@ //VM用户自定义配置项[1 ~ 49] #define BLE_TEMPERATURE_VM_DEVICE_CONFIG 2 +<<<<<<< Updated upstream #define ADJ_TEMP_CONFIG 4 +======= +#define ADJ_BODY_TEMP_CONFIG 4 +#define ADJ_OBJ_TEMP_CONFIG 6 +#define HELL_WAKEUP 5 +>>>>>>> Stashed changes #define DEVICE_SLEEP_TIMEOUT 10 //设备休眠时间 #define DEVICE_WORK_TIMEOUT 15000 //设备工作时间 diff --git a/fw-AC63_BT_SDK/apps/spp_and_le/trs55d.c b/fw-AC63_BT_SDK/apps/spp_and_le/trs55d.c index 1066049..c23e7d0 100644 --- a/fw-AC63_BT_SDK/apps/spp_and_le/trs55d.c +++ b/fw-AC63_BT_SDK/apps/spp_and_le/trs55d.c @@ -23,6 +23,7 @@ #include "asm/iic_soft.h" #include "trs55d.h" + #define IIC_CHANNEL_1 0 const struct soft_iic_config soft_iic_cfg[] = { //iic0 data @@ -294,8 +295,11 @@ uu32_t obj,tmp_3, vtp_cor; float tamb_temp ,vtp_cor_uv ,Tobj_temp ; //#include "FW_TRS_CAL.h" -uint16_t t_objx10_u16; -int16_t Tambx10_u16; +//uint16_t t_objx10_u16; +//int16_t Tambx10_u16; +int16_t tax10; +int16_t tox10; +uint16_t tbx10; uint16_t Trs_Read(uint16_t *t_body, uint16_t *t_ntc) { @@ -403,14 +407,16 @@ uint16_t Trs_Read(uint16_t *t_body, uint16_t *t_ntc) //printf("tmp_3.i32: %d obj.i32: %d \r\n", tmp_3.i32, obj.i32); - Cal_get_temp(tmp_3.i32, 1000, obj.i32, 1000, &Tambx10_u16, &t_objx10_u16); - Tobj_temp = (float)t_objx10_u16 / 10; - tamb_temp = (float)Tambx10_u16 / 10; + //Cal_get_temp(tmp_3.i32, 1000, obj.i32, 1000, &Tambx10_u16, &t_objx10_u16); + Cal_get_temp(tmp_3.i32, 1000, obj.i32, 1000, &tax10, &tox10, &tbx10); + Tobj_temp = (float)tox10 / 10; + tamb_temp = (float)tbx10 / 10; + printf("tox10: %d tbx10: %d \r\n", tox10,tbx10); - *t_body = (uint16_t)(Tobj_temp * 100); - *t_ntc = (uint16_t)(tamb_temp * 100); + *t_body = (uint16_t)(tamb_temp * 100); + *t_ntc = (uint16_t)(Tobj_temp * 100); return 1; diff --git a/fw-AC63_BT_SDK/cpu/bd19/liba/libW_TRS_CAL.a b/fw-AC63_BT_SDK/cpu/bd19/liba/libW_TRS_CAL.a index b706de5..c684fe5 100644 Binary files a/fw-AC63_BT_SDK/cpu/bd19/liba/libW_TRS_CAL.a and b/fw-AC63_BT_SDK/cpu/bd19/liba/libW_TRS_CAL.a differ