|
@@ -45,6 +45,7 @@ u8 shark_battery_series_times;
|
|
|
|
|
|
|
|
shark_bool shark_battery_switch_busy;
|
|
shark_bool shark_battery_switch_busy;
|
|
|
shark_bool shark_printf_enabled;
|
|
shark_bool shark_printf_enabled;
|
|
|
|
|
+u64 shark_battery_switch_time;
|
|
|
|
|
|
|
|
void Misc_Initial(void)
|
|
void Misc_Initial(void)
|
|
|
{
|
|
{
|
|
@@ -334,6 +335,22 @@ static u8 shark_battery_switch_single(void)
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+static shark_bool shark_battery_switch_allow(void)
|
|
|
|
|
+{
|
|
|
|
|
+ u64 delay;
|
|
|
|
|
+
|
|
|
|
|
+ if (shark_xl_detected != 0) {
|
|
|
|
|
+ return shark_false;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ delay = shark_get_mseconds() - shark_battery_switch_time;
|
|
|
|
|
+ if (delay < 300000) {
|
|
|
|
|
+ return shark_false;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ return shark_true;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
static shark_bool shark_battery_series_enabled(void)
|
|
static shark_bool shark_battery_series_enabled(void)
|
|
|
{
|
|
{
|
|
|
if (shark_charger_state != SHARK_CHG_REMOVE) {
|
|
if (shark_charger_state != SHARK_CHG_REMOVE) {
|
|
@@ -459,6 +476,7 @@ int8_t Battery_CB_Switch(uint8_t cb_operate)
|
|
|
shark_battery_switch_busy = shark_true;
|
|
shark_battery_switch_busy = shark_true;
|
|
|
cb_operate_state = shark_battery_switch_auto(cb_operate);
|
|
cb_operate_state = shark_battery_switch_auto(cb_operate);
|
|
|
shark_battery_switch_busy = shark_false;
|
|
shark_battery_switch_busy = shark_false;
|
|
|
|
|
+ shark_battery_switch_time = shark_get_mseconds();
|
|
|
|
|
|
|
|
sub_bms_info_1.exit_times = 0;
|
|
sub_bms_info_1.exit_times = 0;
|
|
|
sub_bms_info_2.exit_times = 0;
|
|
sub_bms_info_2.exit_times = 0;
|
|
@@ -970,7 +988,7 @@ void Intelligent_Management_Battery(void)
|
|
|
Battery_Change_Mode(CFG_BAT2);
|
|
Battery_Change_Mode(CFG_BAT2);
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
- else if (shark_xl_detected == 0 && shark_battery_get_voltage2() > shark_battery_get_voltage1() + SHARK_BATT_SINGLE_DELTA)
|
|
|
|
|
|
|
+ else if (shark_battery_switch_allow() && shark_battery_get_voltage2() > shark_battery_get_voltage1() + SHARK_BATT_SINGLE_DELTA)
|
|
|
{
|
|
{
|
|
|
Battery_Change_Mode(CFG_BAT2);
|
|
Battery_Change_Mode(CFG_BAT2);
|
|
|
}
|
|
}
|
|
@@ -983,7 +1001,7 @@ void Intelligent_Management_Battery(void)
|
|
|
Battery_Change_Mode(CFG_BAT1);
|
|
Battery_Change_Mode(CFG_BAT1);
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
- else if (shark_xl_detected == 0 && shark_battery_get_voltage1() > shark_battery_get_voltage2() + SHARK_BATT_SINGLE_DELTA)
|
|
|
|
|
|
|
+ else if (shark_battery_switch_allow() && shark_battery_get_voltage1() > shark_battery_get_voltage2() + SHARK_BATT_SINGLE_DELTA)
|
|
|
{
|
|
{
|
|
|
Battery_Change_Mode(CFG_BAT1);
|
|
Battery_Change_Mode(CFG_BAT1);
|
|
|
}
|
|
}
|