广播数据ff增加了mac地址;优化了电池电量曲线

This commit is contained in:
haped 2025-08-04 16:01:15 +08:00
parent 4833a132a0
commit ce8e9da9dd
4 changed files with 707 additions and 10 deletions

View File

@ -249,7 +249,8 @@ static void udelay(u32 usec)
/* } */
}
#ifdef BLE_TEMPERATURE_DEVICE_NST1002
//#ifdef BLE_TEMPERATURE_DEVICE_NST1002
#if 1
//extern void handshake_timer_delay_us(u8 us);
//extern void handshake_timer_delay_ms(u8 ms);
@ -488,7 +489,7 @@ u16 buffer[MAX_SIZE];
printf("battery: %d\r\n",battery);
u8 ff_temp_data[9] = {0};
u8 ff_temp_data[13] = {0};
//body
ff_temp_data[0] = (body >> 8) & 0xFF;
ff_temp_data[1] = (body) & 0xFF;
@ -501,8 +502,21 @@ u16 buffer[MAX_SIZE];
ff_temp_data[6] = battery & 0xFF;
ff_temp_data[7] = (batt_val >> 8) & 0xFF;
ff_temp_data[8] = batt_val & 0xFF;
u8 ble_mac_addr[6] = {0};
bt_get_vm_mac_addr(&ble_mac_addr);
ff_temp_data[7]=ble_mac_addr[5];
ff_temp_data[8]=ble_mac_addr[4];
ff_temp_data[9]=ble_mac_addr[3];
ff_temp_data[10]=ble_mac_addr[2];
ff_temp_data[11]=ble_mac_addr[1];
ff_temp_data[12]=ble_mac_addr[0];
//ff_temp_data[7] = (batt_val >> 8) & 0xFF;
//ff_temp_data[8] = batt_val & 0xFF;
if(body < BLE_TEMPERATURE_LIMIT_MIN || body > BLE_TEMPERATURE_LIMIT_MAX){ //异常温度不发送
printf("error temp_body\r\n");
@ -913,6 +927,7 @@ void temperature_ble_init(){
char ble_name[12] ={0};
sprintf(ble_name,"iT12_%02X%02X",bt_mac_addr[1],bt_mac_addr[0]);
ble_comm_set_config_name(&ble_name, 0);
}
/**
*

View File

@ -740,7 +740,7 @@ int trans_client_adv_data_set_ff(u8*data, int len)
offset += make_eir_packet_val(&buf[offset], offset, HCI_EIR_DATATYPE_FLAGS, FLAGS_GENERAL_DISCOVERABLE_MODE | FLAGS_EDR_NOT_SUPPORTED, 1);
#endif
offset += make_eir_packet_val(&buf[offset], offset, HCI_EIR_DATATYPE_COMPLETE_16BIT_SERVICE_UUIDS, 0xAF30, 2);
//offset += make_eir_packet_val(&buf[offset], offset, HCI_EIR_DATATYPE_COMPLETE_16BIT_SERVICE_UUIDS, 0xAF30, 2);
char *gap_name = ble_comm_get_gap_name();
u8 name_len = strlen(gap_name);

View File

@ -6,8 +6,9 @@
/**
* 1.0.4 2025.07.03
* 1.0.7 2025.08.04 ff增加mac地址
*/
#define BLE_TEMPERATURE_DEVICE_SOFT_VER "1.0.6"
#define BLE_TEMPERATURE_DEVICE_SOFT_VER "1.0.7"
#define BLE_TEMPERATURE_DETECT_INTERVAL 250
#define BLE_TEMPERATURE_WORK_TIMEOUT 10*1000

View File

@ -8,6 +8,7 @@
#include "btstack/avctp_user.h"
#include "user_cfg.h"
#include "asm/charge.h"
#include <math.h>
#define LOG_TAG_CONST APP_POWER
#define LOG_TAG "[APP_POWER]"
@ -17,6 +18,7 @@
/* #define LOG_DUMP_ENABLE */
#define LOG_CLI_ENABLE
#include "debug.h"
#define BATTERY_TABLE_SIZE 638 // 查表法数据点数量
enum {
VBAT_NORMAL = 0,
@ -37,6 +39,651 @@ static volatile u8 cur_battery_level = 0;
static u16 battery_full_value = 0;
static u8 cur_bat_st = VBAT_NORMAL;
static const struct {
u16 voltage; // 电压值(mV)
u16 mah; // 对应电量
} voltage_table[BATTERY_TABLE_SIZE] = {
{4173, 0},
{4167, 80},
{4160, 160},
{4160, 230},
{4157, 310},
{4155, 390},
{4152, 460},
{4150, 540},
{4148, 620},
{4146, 700},
{4142, 770},
{4143, 850},
{4141, 930},
{4137, 1010},
{4136, 1090},
{4134, 1170},
{4133, 1240},
{4131, 1320},
{4129, 1400},
{4128, 1470},
{4126, 1550},
{4124, 1630},
{4122, 1710},
{4121, 1790},
{4120, 1860},
{4118, 1940},
{4115, 2020},
{4114, 2090},
{4112, 2170},
{4110, 2250},
{4109, 2320},
{4105, 2400},
{4103, 2480},
{4104, 2550},
{4102, 2630},
{4100, 2710},
{4098, 2790},
{4098, 2860},
{4096, 2940},
{4094, 3020},
{4092, 3100},
{4091, 3170},
{4089, 3250},
{4088, 3330},
{4086, 3400},
{4084, 3480},
{4084, 3560},
{4082, 3630},
{4080, 3710},
{4079, 3790},
{4078, 3870},
{4075, 3940},
{4075, 4020},
{4073, 4100},
{4072, 4170},
{4071, 4250},
{4069, 4330},
{4067, 4410},
{4065, 4480},
{4064, 4560},
{4063, 4640},
{4061, 4710},
{4059, 4790},
{4056, 4870},
{4057, 4950},
{4055, 5020},
{4054, 5100},
{4053, 5180},
{4051, 5260},
{4049, 5330},
{4048, 5410},
{4047, 5490},
{4047, 5560},
{4045, 5640},
{4043, 5720},
{4042, 5800},
{4042, 5870},
{4040, 5950},
{4039, 6030},
{4038, 6100},
{4038, 6180},
{4036, 6260},
{4036, 6330},
{4034, 6410},
{4032, 6490},
{4031, 6570},
{4030, 6640},
{4028, 6720},
{4027, 6800},
{4027, 6880},
{4024, 6950},
{4022, 7030},
{4022, 7110},
{4020, 7180},
{4016, 7260},
{4016, 7340},
{4013, 7420},
{4012, 7490},
{4010, 7570},
{4009, 7650},
{4006, 7730},
{4005, 7800},
{4004, 7880},
{4002, 7960},
{4000, 8040},
{3998, 8110},
{3997, 8190},
{3996, 8270},
{3993, 8350},
{3992, 8420},
{3990, 8500},
{3989, 8580},
{3986, 8660},
{3986, 8730},
{3983, 8810},
{3982, 8890},
{3981, 8960},
{3979, 9040},
{3978, 9120},
{3977, 9200},
{3975, 9270},
{3974, 9350},
{3973, 9430},
{3971, 9510},
{3970, 9580},
{3969, 9660},
{3968, 9740},
{3966, 9820},
{3965, 9890},
{3963, 9970},
{3961, 10050},
{3961, 10130},
{3960, 10200},
{3959, 10280},
{3958, 10360},
{3956, 10440},
{3955, 10510},
{3954, 10590},
{3953, 10670},
{3952, 10750},
{3952, 10830},
{3951, 10900},
{3951, 10980},
{3950, 11060},
{3947, 11140},
{3948, 11210},
{3947, 11290},
{3947, 11370},
{3946, 11450},
{3945, 11520},
{3945, 11600},
{3943, 11680},
{3942, 11760},
{3941, 11830},
{3941, 11910},
{3939, 11990},
{3938, 12070},
{3934, 12150},
{3935, 12220},
{3934, 12300},
{3934, 12380},
{3932, 12460},
{3931, 12540},
{3931, 12610},
{3929, 12690},
{3928, 12770},
{3927, 12850},
{3925, 12930},
{3924, 13010},
{3923, 13080},
{3921, 13160},
{3921, 13240},
{3920, 13310},
{3919, 13390},
{3917, 13470},
{3915, 13550},
{3915, 13620},
{3913, 13700},
{3912, 13780},
{3910, 13860},
{3910, 13940},
{3909, 14010},
{3908, 14090},
{3906, 14170},
{3906, 14250},
{3905, 14320},
{3903, 14400},
{3902, 14480},
{3901, 14560},
{3899, 14630},
{3897, 14710},
{3896, 14790},
{3895, 14870},
{3894, 14950},
{3892, 15030},
{3891, 15110},
{3890, 15190},
{3889, 15260},
{3888, 15340},
{3886, 15420},
{3886, 15500},
{3883, 15580},
{3882, 15660},
{3881, 15740},
{3880, 15820},
{3879, 15900},
{3877, 15980},
{3877, 16060},
{3877, 16140},
{3875, 16220},
{3875, 16300},
{3872, 16380},
{3872, 16460},
{3871, 16540},
{3870, 16620},
{3868, 16700},
{3867, 16780},
{3866, 16860},
{3865, 16940},
{3864, 17020},
{3863, 17100},
{3861, 17180},
{3860, 17260},
{3859, 17340},
{3858, 17420},
{3856, 17500},
{3855, 17580},
{3855, 17660},
{3854, 17740},
{3853, 17810},
{3852, 17890},
{3851, 17970},
{3850, 18050},
{3848, 18130},
{3847, 18210},
{3846, 18290},
{3846, 18370},
{3845, 18440},
{3844, 18520},
{3843, 18600},
{3841, 18680},
{3841, 18760},
{3839, 18840},
{3838, 18920},
{3837, 19000},
{3836, 19080},
{3836, 19160},
{3835, 19230},
{3834, 19310},
{3833, 19390},
{3832, 19470},
{3829, 19550},
{3830, 19630},
{3829, 19710},
{3829, 19790},
{3828, 19870},
{3826, 19950},
{3826, 20030},
{3825, 20110},
{3824, 20180},
{3823, 20260},
{3822, 20340},
{3821, 20420},
{3820, 20500},
{3819, 20580},
{3818, 20650},
{3818, 20730},
{3817, 20810},
{3815, 20890},
{3814, 21050},
{3814, 21120},
{3814, 21200},
{3813, 21280},
{3812, 21360},
{3810, 21440},
{3810, 21510},
{3811, 21590},
{3810, 21670},
{3809, 21750},
{3808, 21830},
{3807, 21910},
{3807, 21990},
{3805, 22060},
{3805, 22140},
{3804, 22220},
{3804, 22300},
{3804, 22380},
{3803, 22460},
{3803, 22530},
{3801, 22610},
{3800, 22690},
{3800, 22760},
{3799, 22840},
{3799, 22920},
{3799, 22990},
{3798, 23070},
{3797, 23150},
{3796, 23220},
{3795, 23300},
{3795, 23380},
{3795, 23450},
{3795, 23530},
{3795, 23610},
{3794, 23680},
{3792, 23760},
{3792, 23840},
{3789, 23910},
{3790, 23990},
{3790, 24070},
{3790, 24140},
{3788, 24220},
{3788, 24300},
{3788, 24380},
{3786, 24450},
{3786, 24530},
{3786, 24600},
{3785, 24680},
{3784, 24760},
{3784, 24830},
{3783, 24910},
{3783, 24990},
{3782, 25070},
{3780, 25140},
{3780, 25220},
{3779, 25290},
{3779, 25370},
{3779, 25450},
{3779, 25530},
{3779, 25600},
{3779, 25680},
{3778, 25750},
{3777, 25830},
{3777, 25910},
{3776, 25980},
{3777, 26060},
{3776, 26140},
{3776, 26210},
{3775, 26290},
{3774, 26370},
{3774, 26440},
{3774, 26520},
{3773, 26600},
{3772, 26670},
{3770, 26750},
{3770, 26830},
{3770, 26900},
{3770, 26980},
{3770, 27050},
{3769, 27130},
{3770, 27210},
{3769, 27280},
{3768, 27360},
{3766, 27440},
{3766, 27510},
{3765, 27590},
{3764, 27670},
{3764, 27740},
{3764, 27820},
{3764, 27890},
{3763, 27970},
{3763, 28050},
{3763, 28120},
{3762, 28200},
{3761, 28280},
{3761, 28350},
{3761, 28430},
{3760, 28510},
{3759, 28580},
{3760, 28660},
{3759, 28730},
{3760, 28810},
{3759, 28890},
{3759, 28960},
{3758, 29040},
{3757, 29120},
{3758, 29200},
{3756, 29270},
{3756, 29350},
{3756, 29420},
{3755, 29500},
{3754, 29580},
{3753, 29650},
{3754, 29730},
{3754, 29810},
{3753, 29880},
{3752, 29960},
{3753, 30040},
{3752, 30120},
{3752, 30190},
{3752, 30270},
{3752, 30350},
{3750, 30420},
{3750, 30500},
{3750, 30570},
{3750, 30650},
{3749, 30730},
{3749, 30800},
{3749, 30880},
{3748, 30960},
{3748, 31030},
{3746, 31110},
{3747, 31190},
{3746, 31260},
{3745, 31340},
{3745, 31420},
{3746, 31490},
{3745, 31570},
{3745, 31650},
{3745, 31720},
{3745, 31800},
{3744, 31880},
{3744, 31950},
{3744, 32030},
{3743, 32110},
{3743, 32180},
{3742, 32260},
{3743, 32340},
{3740, 32410},
{3740, 32490},
{3740, 32570},
{3739, 32640},
{3739, 32720},
{3739, 32800},
{3738, 32870},
{3739, 32950},
{3738, 33030},
{3736, 33100},
{3737, 33180},
{3736, 33250},
{3736, 33330},
{3735, 33410},
{3735, 33490},
{3735, 33560},
{3735, 33640},
{3734, 33720},
{3734, 33790},
{3734, 33870},
{3734, 33950},
{3734, 34020},
{3734, 34100},
{3734, 34170},
{3733, 34250},
{3732, 34330},
{3733, 34410},
{3732, 34480},
{3731, 34560},
{3730, 34640},
{3729, 34710},
{3730, 34790},
{3730, 34870},
{3729, 34940},
{3729, 35020},
{3729, 35100},
{3728, 35170},
{3727, 35250},
{3727, 35330},
{3727, 35400},
{3727, 35480},
{3727, 35560},
{3726, 35630},
{3726, 35710},
{3726, 35790},
{3725, 35860},
{3725, 35940},
{3725, 36020},
{3725, 36090},
{3723, 36170},
{3722, 36250},
{3722, 36320},
{3721, 36400},
{3722, 36480},
{3721, 36550},
{3720, 36630},
{3720, 36710},
{3719, 36780},
{3719, 36860},
{3719, 36940},
{3719, 37010},
{3718, 37090},
{3718, 37170},
{3718, 37240},
{3717, 37320},
{3717, 37400},
{3717, 37470},
{3715, 37550},
{3714, 37630},
{3714, 37700},
{3714, 37780},
{3714, 37860},
{3712, 37930},
{3711, 38010},
{3711, 38090},
{3710, 38170},
{3710, 38240},
{3710, 38320},
{3710, 38400},
{3710, 38470},
{3709, 38550},
{3709, 38630},
{3709, 38700},
{3708, 38780},
{3707, 38860},
{3707, 38930},
{3706, 39010},
{3704, 39090},
{3704, 39160},
{3704, 39240},
{3703, 39320},
{3702, 39390},
{3701, 39470},
{3700, 39550},
{3700, 39620},
{3699, 39700},
{3698, 39780},
{3697, 39850},
{3697, 39930},
{3696, 40010},
{3695, 40080},
{3695, 40160},
{3695, 40240},
{3694, 40310},
{3692, 40390},
{3692, 40470},
{3691, 40540},
{3690, 40620},
{3690, 40700},
{3689, 40770},
{3688, 40850},
{3687, 40930},
{3686, 41000},
{3686, 41080},
{3686, 41160},
{3685, 41240},
{3683, 41310},
{3683, 41390},
{3681, 41470},
{3681, 41540},
{3680, 41620},
{3679, 41700},
{3678, 41770},
{3676, 41850},
{3675, 41930},
{3675, 42000},
{3674, 42080},
{3673, 42160},
{3670, 42240},
{3670, 42310},
{3669, 42390},
{3669, 42470},
{3668, 42540},
{3667, 42620},
{3666, 42700},
{3666, 42770},
{3665, 42850},
{3665, 42930},
{3664, 43000},
{3664, 43080},
{3664, 43160},
{3664, 43240},
{3664, 43310},
{3663, 43390},
{3663, 43470},
{3660, 43540},
{3661, 43620},
{3659, 43700},
{3660, 43770},
{3660, 43850},
{3660, 43930},
{3660, 44000},
{3659, 44080},
{3659, 44160},
{3659, 44230},
{3659, 44310},
{3659, 44390},
{3658, 44460},
{3657, 44540},
{3655, 44620},
{3655, 44690},
{3654, 44770},
{3654, 44850},
{3653, 45000},
{3650, 45080},
{3651, 45150},
{3650, 45230},
{3650, 45310},
{3649, 45390},
{3649, 45460},
{3647, 45540},
{3645, 45620},
{3644, 45690},
{3643, 45770},
{3643, 45850},
{3641, 45920},
{3639, 46000},
{3637, 46080},
{3635, 46150},
{3633, 46230},
{3630, 46310},
{3626, 46390},
{3624, 46460},
{3620, 46540},
{3616, 46620},
{3612, 46690},
{3608, 46770},
{3604, 46850},
{3598, 46930},
{3593, 47000},
{3586, 47080},
{3582, 47160},
{3575, 47230},
{3568, 47310},
{3561, 47390},
{3554, 47460},
{3547, 47540},
{3538, 47620},
{3529, 47690},
{3519, 47770},
{3511, 47850},
{3501, 47920},
{3491, 48000},
{3480, 48080},
{3469, 48150},
{3456, 48230},
{3443, 48310},
{3431, 48380},
{3417, 48460},
{3401, 48540},
{3385, 48620},
{3368, 48690},
{3349, 48770},
{3331, 48850},
{3309, 48920},
{3284, 49000},
{3257, 49080},
{3226, 49150},
{3192, 49230},
{3147, 49310},
{3083, 49390},
{2997, 49450}
};
void vbat_check(void *priv);
void clr_wdt(void);
@ -101,7 +748,8 @@ int app_power_event_handler(struct device_event *dev, void (*set_soft_poweroff_c
u16 get_vbat_level(void)
{
//return 370; //debug
return (adc_get_voltage(AD_CH_VBAT) * 4 / 10);
//return (adc_get_voltage(AD_CH_VBAT) * 4 / 10);
return (adc_get_voltage(AD_CH_VBAT) * 4 );
}
__attribute__((weak)) u8 remap_calculate_vbat_percent(u16 bat_val)
@ -117,8 +765,8 @@ u16 get_vbat_value(void)
u8 get_vbat_percent(void)
{
u16 tmp_bat_val;
u16 bat_val = get_vbat_level();
app_var.poweroff_tone_v = 360;
/*u16 bat_val = get_vbat_level();
app_var.poweroff_tone_v = 330;
if (battery_full_value == 0) {
#if TCFG_CHARGE_ENABLE
battery_full_value = (get_charge_full_value() - 100) / 10; //防止部分电池充不了这么高电量,充满显示未满的情况
@ -132,11 +780,44 @@ u8 get_vbat_percent(void)
tmp_bat_val = remap_calculate_vbat_percent(bat_val);
if (!tmp_bat_val) {
tmp_bat_val = ((u32)bat_val - app_var.poweroff_tone_v) * 100 / (battery_full_value - app_var.poweroff_tone_v);
if (tmp_bat_val > 100) {
tmp_bat_val = 100;
}
}
return (u8)tmp_bat_val;
return (u8)tmp_bat_val;*/
u16 bat_val = get_vbat_level(); // 获取当前电池电压(mV)
printf("bat_val:%d \r\n", bat_val);
// 电压高于最低高阈值返回100%
if (bat_val >= voltage_table[0].voltage) {
printf("0000000000000000000000000000\r\n");
printf("voltage:%d\r\n",voltage_table[0].voltage);
return 100;
}
// 电压低于最低阈值返回0%
if (bat_val <= voltage_table[BATTERY_TABLE_SIZE-1].voltage) {
printf("11111111111111111111111111111\r\n");
printf("voltage:%d\r\n",voltage_table[BATTERY_TABLE_SIZE-1].voltage);
return 0;
}
// 查表法查找对应的电量百分比
for (int i = 1; i < BATTERY_TABLE_SIZE; i++){
if (bat_val >= voltage_table[i].voltage){
// 线性插值计算百分比
//u16 voltage_range = voltage_table[i].voltage - voltage_table[i-1].voltage;
//u16 voltage_offset = bat_val - voltage_table[i-1].voltage;
tmp_bat_val=(49450-voltage_table[i].mah)*100/49450;
printf("i:%d \r\n", i);
printf("voltage_table[i].mah:%d \r\n", voltage_table[i].voltage);
printf("tmp_bat_val:%d \r\n", tmp_bat_val);
return tmp_bat_val;
}
}
return 100; // 默认返回100%
}
bool get_vbat_need_shutdown(void)