|
|
@@ -506,8 +506,6 @@ uint8_t Select_One_BAT(void)
|
|
|
|
|
|
uint8_t Check_CB_BAT_1(void)
|
|
|
{
|
|
|
- uint8_t temp_op = CB_MAX;
|
|
|
-
|
|
|
if(Is_Sub_BMS_1_Normal() == SHARK_BATT_EXIT_SUCCESS)
|
|
|
{
|
|
|
if((sub_bms_info_1.packet_common.bms_status & (BMS_STA_D_OPEN | BMS_STA_C_OPEN)) != (BMS_STA_D_OPEN | BMS_STA_C_OPEN))
|
|
|
@@ -517,7 +515,7 @@ uint8_t Check_CB_BAT_1(void)
|
|
|
if((sub_bms_info_1.packet_common.work_status &(ST_OVRDISCHRG_VOL|ST_PDOWN)) != 0)
|
|
|
;
|
|
|
else
|
|
|
- temp_op = CB_BAT_NO;
|
|
|
+ return CB_BAT1_BAT2_AUTO;
|
|
|
}
|
|
|
|
|
|
//
|
|
|
@@ -529,21 +527,15 @@ uint8_t Check_CB_BAT_1(void)
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- /*if(Is_Sub_BMS_2_Normal())
|
|
|
- temp_op = CB_BAT2;
|
|
|
- else*/
|
|
|
- temp_op = CB_BAT_NO;
|
|
|
+ return CB_BAT1_BAT2_AUTO;
|
|
|
}
|
|
|
|
|
|
- return temp_op;
|
|
|
+ return CB_MAX;
|
|
|
|
|
|
}
|
|
|
|
|
|
-
|
|
|
uint8_t Check_CB_BAT_2(void)
|
|
|
{
|
|
|
- uint8_t temp_op = CB_MAX;
|
|
|
-
|
|
|
if(Is_Sub_BMS_2_Normal() == SHARK_BATT_EXIT_SUCCESS)
|
|
|
{
|
|
|
if((sub_bms_info_2.packet_common.bms_status & (BMS_STA_D_OPEN | BMS_STA_C_OPEN)) != (BMS_STA_D_OPEN | BMS_STA_C_OPEN))
|
|
|
@@ -553,7 +545,7 @@ uint8_t Check_CB_BAT_2(void)
|
|
|
if((sub_bms_info_2.packet_common.work_status &(ST_OVRDISCHRG_VOL|ST_PDOWN)) != 0)
|
|
|
;
|
|
|
else
|
|
|
- temp_op = CB_BAT_NO;
|
|
|
+ return CB_BAT1_BAT2_AUTO;
|
|
|
}
|
|
|
|
|
|
//
|
|
|
@@ -565,24 +557,18 @@ uint8_t Check_CB_BAT_2(void)
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- /*if(Is_Sub_BMS_1_Normal())
|
|
|
- temp_op = CB_BAT1;
|
|
|
- else*/
|
|
|
- temp_op = CB_BAT_NO;
|
|
|
+ return CB_BAT1_BAT2_AUTO;
|
|
|
}
|
|
|
|
|
|
- return temp_op;
|
|
|
+ return CB_MAX;
|
|
|
|
|
|
}
|
|
|
|
|
|
uint8_t Check_CB_BAT1_BAT2_PARRALLEL(void)
|
|
|
{
|
|
|
- uint8_t temp_op = CB_MAX;
|
|
|
-
|
|
|
if (!shark_battery_parrallel_enabled())
|
|
|
{
|
|
|
- temp_op = Select_One_BAT();
|
|
|
- return temp_op;
|
|
|
+ return CB_BAT1_BAT2_AUTO;
|
|
|
}
|
|
|
//
|
|
|
if(Is_Sub_BMS_1_Normal() == SHARK_BATT_EXIT_SUCCESS && Is_Sub_BMS_2_Normal() == SHARK_BATT_EXIT_SUCCESS)
|
|
|
@@ -600,24 +586,21 @@ uint8_t Check_CB_BAT1_BAT2_PARRALLEL(void)
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- temp_op = Select_One_BAT();
|
|
|
- return temp_op;
|
|
|
+ return CB_BAT1_BAT2_AUTO;
|
|
|
}
|
|
|
|
|
|
//
|
|
|
if(sub_bms_info_1.packet_common.m_current > 50000 || sub_bms_info_2.packet_common.m_current > 50000)
|
|
|
{
|
|
|
- temp_op = Select_One_BAT();
|
|
|
- return temp_op;
|
|
|
+ return CB_BAT1_BAT2_AUTO;
|
|
|
}
|
|
|
|
|
|
if (shark_battery_get_voltage_delta() > PARRALLEL_DELTA_VOL)
|
|
|
{
|
|
|
- temp_op = Select_One_BAT();
|
|
|
- return temp_op;
|
|
|
+ return CB_BAT1_BAT2_AUTO;
|
|
|
}
|
|
|
|
|
|
- return temp_op;
|
|
|
+ return CB_MAX;
|
|
|
|
|
|
}
|
|
|
|
|
|
@@ -652,20 +635,16 @@ static u8 shark_battery_get_series_error(void)
|
|
|
|
|
|
uint8_t Check_CB_BAT1_BAT2_SERIES(void)
|
|
|
{
|
|
|
- uint8_t temp_op = CB_MAX;
|
|
|
-
|
|
|
#ifndef CONFIG_SOUTH_KOREA
|
|
|
if (shark_battery_series_locked)
|
|
|
{
|
|
|
- temp_op = Select_One_BAT();
|
|
|
- return temp_op;
|
|
|
+ return CB_BAT1_BAT2_AUTO;
|
|
|
}
|
|
|
#endif
|
|
|
|
|
|
if (shark_charger_state == SHARK_CHG_INSERT)
|
|
|
{
|
|
|
- temp_op = Select_One_BAT();
|
|
|
- return temp_op;
|
|
|
+ return CB_BAT1_BAT2_AUTO;
|
|
|
}
|
|
|
|
|
|
if (shark_battery_get_series_error() != 0)
|
|
|
@@ -679,8 +658,7 @@ uint8_t Check_CB_BAT1_BAT2_SERIES(void)
|
|
|
}
|
|
|
#endif
|
|
|
|
|
|
- temp_op = Select_One_BAT();
|
|
|
- return temp_op;
|
|
|
+ return CB_BAT1_BAT2_AUTO;
|
|
|
}
|
|
|
|
|
|
#ifndef CONFIG_SOUTH_KOREA
|
|
|
@@ -702,17 +680,16 @@ uint8_t Check_CB_BAT1_BAT2_SERIES(void)
|
|
|
{
|
|
|
memset(&Series_delay,0x00,sizeof(Series_delay));
|
|
|
shark_battery_series_locked = shark_true;
|
|
|
- return Select_One_BAT();
|
|
|
+ return CB_BAT1_BAT2_AUTO;
|
|
|
}
|
|
|
|
|
|
if(sub_bms_info_1.packet_common.m_percent < SERIES_EXIT_PERCENT || sub_bms_info_2.packet_common.m_percent < SERIES_EXIT_PERCENT)
|
|
|
{
|
|
|
- temp_op = Select_One_BAT();
|
|
|
- return temp_op;
|
|
|
+ return CB_BAT1_BAT2_AUTO;
|
|
|
}
|
|
|
#endif
|
|
|
|
|
|
- return temp_op;
|
|
|
+ return CB_MAX;
|
|
|
}
|
|
|
|
|
|
uint8_t power_switch_from = 0;
|
|
|
@@ -776,7 +753,7 @@ void Check_CB_Operate_State(void)
|
|
|
{
|
|
|
case CB_BAT_NO:
|
|
|
temp_op = Select_One_BAT();
|
|
|
- if (shark_battery_over_discharge()) {
|
|
|
+ if (temp_op != CB_BAT_NO && shark_battery_over_discharge()) {
|
|
|
QD_Enable_From(0, 1);
|
|
|
}
|
|
|
break;
|
|
|
@@ -812,19 +789,9 @@ void Check_CB_Operate_State(void)
|
|
|
//test-end
|
|
|
return;
|
|
|
}
|
|
|
- else if(temp_op == CB_BAT_NO)
|
|
|
+ else if(temp_op == CB_BAT_NO && work_normal == 1)
|
|
|
{
|
|
|
- if(work_normal == 1)
|
|
|
- {
|
|
|
- Power_On_Normal(0,1);
|
|
|
- }
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- /*if(work_normal == 1)
|
|
|
- {
|
|
|
- Power_On_Normal(0);
|
|
|
- }*/
|
|
|
+ Power_On_Normal(0, 1);
|
|
|
}
|
|
|
|
|
|
Battery_CB_Switch(temp_op);
|