From 88b4122a95f79d7bce9026c2f3e52e1223eaf442 Mon Sep 17 00:00:00 2001 From: haped <531618102@qq.com> Date: Thu, 17 Jul 2025 15:20:30 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E4=BA=86=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E6=B8=A9=E5=BA=A6=E6=A0=A1=E5=87=86=E7=9A=84=E5=8D=8F=E8=AE=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../apps/spp_and_le/app_temperature.c | 72 +++++++++++++----- .../apps/spp_and_le/include/W_TRS_CAL.h | 3 +- .../apps/spp_and_le/include/app_temperature.h | 6 ++ fw-AC63_BT_SDK/apps/spp_and_le/trs55d.c | 20 +++-- fw-AC63_BT_SDK/cpu/bd19/liba/libW_TRS_CAL.a | Bin 2792 -> 3456 bytes 5 files changed, 75 insertions(+), 26 deletions(-) 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 b706de5fa7759fc614cf2d4043c1f271769b751d..c684fe56ad5b4f11e6d7b11ed5987bb763850497 100644 GIT binary patch delta 1476 zcmaJ>drVVT82@g2Zn?z^oI*Q`s2o}!s2#a2sFWGKEw#d6u5_Jak;yGkbP)p%mdqH_ z+Y2h1PFrCKMw8Wu8{2eqWAB&&mN25kkr9&_*_e?%+@gEoHfPYC;vVjweaUye_xaBG z<$UK`gPav96s$r4xkpkm0C1E~{vSsxiFtFNrMjlEZbx-XU|SOu`x~kgo*BdE2VW!j zYNC6sDBor)h@P>i=BlILEiTlrRXGpMa&}{zzK}DPCEL91B@sO-cDJ8^Oq+AEBsCH> z4SF0Eq41T~ulA!QZcT*|z|dRDI8jg|T@sD#=?0Rju3UkK84Eoll+rj$WriXt1ZA{^ zx`=)doh`&FfPDl&Ph&PyiI&vuMjfW^Ho9DGI~LKWm+ueHYU?h?o_s)GbNw;SIof5G z_j}M`9V`uqrsz@x1TW*#o$a0JAB1GPMv)GH{-us7wk}wdh9WuUwJv!cPjZI=WPtuu z4c6BIh}2S)`9Jdji1wz(0AbP!fT@yjNW;gehbjq}`y+dqMDa{i&N-+CkpUpo0dsQ7 z*H245S2uhUxOFsZ!FyvjrjF*NjZHk0_vR{h_1HwyjhkgJtnZ7Hj-Auq6JtLJ!;_o( zeAlKP;%!gW?n_bao~;3ROQbtd3AXuNI8#?132PUv8$!j0%z)g`drk8O!z}JN%$c+n zt^&aKlZ)*bXFGT4*SGWmbHPO z+`D@Qa##`wsVU!|U;m%{Jt^Em417B?1M9{;CJ#-YAwL1IQ!N9P%S%})aodid zU^JJ+FDLa`m4Y+7rn1c7zy$+R7?5L>ZMCYJFKie1A@0I&EjJs(;>BIrn!Q%VzWMWP z>TGE~Rb6c~H{GsGq7~xo<{+ZMTWd;hWtp2knHU_PZ2;ma(fEjsa|mUG_d!*RQ5)n3 zBvIShiCwHA$gf0c`R7I6p*`sPvEMRa9T!)PSXwL4$VnYrW;-S1Ry}=-?z=7`u(u~12`Af$w9)MlLR*?WTbV# z=$P}x>ffK&bzixDe8R|ZN=&P%MTArGjA30@^MO{s;BNZp<=29>=+zsyg~G6I#Qyyq zS{^&Hb^4F9#?a-Di#S^GVb^VQB6zp-+=MZ-^Uk8w#4Ce~PZo{iO3Cx$J7Xyl=59Vs z&EOWv*|3s=3=J)gkY9b4S22Q`cX=3Ngq1)^?w9j&g$A+5LEvr8 z+A27ySYv**lBO_)s!BE>#x<^Nq!z}7PA306K?9bM;9+{4a&o`O%E_T65a7H{96-W2 z?xGn9(1Z2F(8W+(<0);KLND*u`TUv$@JB;FBC=bc7p+^eg&1OqoPV)@onp^EM`m|s zt{|?QnOB#X*o}J@dEVt8i#25Sh?i_tOmARRRexSgqRRWNiQ%QRodD2p3B0M;RHtm} zo=aTAlO=YsJ#s9}wsEgGiX63gEW1$s>!awGN_n)X=*u$s^orH?Pq%FySkBPcn(6hC os^zDWx>-KS(&s3@>kKAc{cFycnPbZ!ZV(Lg4gR)6R^F1^60ZxorUhN}l-e6` z-ve@WtewN?$PEMo6{NA@nxZ?#t2_&d+5@0>h zN2lsNazv9^_L6k3>&L41JW?n!qKO)dCPO+7Q1QJ4qIQkrF#bB7(&f6DIfgk#Py6Or ziqD;vGuk6$W>$*L_S|+aZ`4}w%oie}!x|4wswhfg2_YzoOpi7zK(?C&Q6z>0Bfwe4 zGAyD5im7lesFbNthqnD0NG>PtQ;D&A{=$Fr)9P?C1?rjYJgPb@JRaYwI)uI9+rK^W z0C#i*wuJ1`088e=4~*F_%s*aC6wvFj)n@mI$eoz=7Vts8Dm|n%jfx6RMOU+Iqw`!4 z`t+UsAt^_43S7xvnoeWRBQP<_EwNP{nfz1wjEw)=sw*g-F2HFWW2p}fno)`C)iUpJ zO7cKN6{fOd*@~(6zn1y&heV8waGpOKMO@3$6CH10%_G0nxtoR;#rvG)vT0^xJXX25 Gz4R}^MBA|d