static u8 update_dev_battery_level(void)
{
u8 old_dev_battery[3];
memcpy(old_dev_battery, dev_battery_level, 3);
//read bat_level
dev_battery_level[0] = get_device_bat_percent();
u8 sibling_bat_level = dev_battery_level[1];
if (sibling_bat_level == 0xff) {
/* ble_puts("--update_bat_00\n"); */
goto update_dev2;
}
#if TCFG_USER_TWS_ENABLE
sibling_bat_level = get_tws_sibling_bat_persent();
#endif
#if TCFG_CHARGESTORE_ENABLE
if (sibling_bat_level == 0xff) {
/* ble_puts("–update_bat_01\n"); */
sibling_bat_level = chargestore_get_sibling_power_level();
}
#endif
if (sibling_bat_level == 0xff) {
/* ble_puts("--update_bat_02\n"); */
dev_battery_level[1] = dev_battery_level[0];
} else {
dev_battery_level[1] = sibling_bat_level;
}
update_dev2:
if (((dev_battery_level[0] & BIT(7)) && (dev_battery_level[0] != 0xff))
|| ((dev_battery_level[1] & BIT(7)) && (dev_battery_level[1] != 0xff))) {
//earphone in charge
#if TCFG_CHARGESTORE_ENABLE
dev_battery_level[2] = chargestore_get_power_level();
#else
dev_battery_level[2] = 0xff;
#endif
} else {
//all not in charge
dev_battery_level[2] = 0xff;
}
u8 i;
u8 change_flag = 0;
for (i = 0; i < 3; i++) {
if ((dev_battery_level[i]&BIT(7)) != (old_dev_battery[i]&BIT(7))) {
break;
}
if ((dev_battery_level[i] == 0xff) && (old_dev_battery[i] != 0xff)) {
break;
}
if ((dev_battery_level[i] != 0xff) && (old_dev_battery[i] == 0xff)) {
break;
}
}
if (i < 3) {
ble_puts("dev_pos_state have changed:");
ble_put_buf(old_dev_battery, 3);
ble_put_buf(dev_battery_level, 3);
change_flag = 1;
}
return change_flag;
}