|
|
@@ -341,7 +341,7 @@ void Sub_BMS_1_Initial(void)
|
|
|
sub_bms_info_2.sub_bms_cmd.operate = OP_READ_INFO;
|
|
|
}
|
|
|
|
|
|
-static shark_battery_exit_t shark_battery_is_normal_raw(SUB_BMS_INFO *info)
|
|
|
+static shark_battery_exit_t shark_battery_is_normal_raw(SUB_BMS_INFO *info, shark_battery_power_t power)
|
|
|
{
|
|
|
u16 work_status;
|
|
|
|
|
|
@@ -388,31 +388,27 @@ static shark_battery_exit_t shark_battery_is_normal_raw(SUB_BMS_INFO *info)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ if (!shark_battery_check_power(info, power)) {
|
|
|
+ return SHARK_BATT_EXIT_POWER;
|
|
|
+ }
|
|
|
+
|
|
|
return SHARK_BATT_EXIT_SUCCESS;
|
|
|
}
|
|
|
|
|
|
-shark_battery_exit_t shark_battery_is_normal(SUB_BMS_INFO *info)
|
|
|
+shark_battery_exit_t shark_battery_is_normal(SUB_BMS_INFO *info, shark_battery_power_t power)
|
|
|
{
|
|
|
- info->exit_code = shark_battery_is_normal_raw(info);
|
|
|
- return info->exit_code;
|
|
|
-}
|
|
|
+ shark_battery_exit_t code = shark_battery_is_normal_raw(info, power);
|
|
|
|
|
|
-shark_bool shark_battery_is_normal_power_on(SUB_BMS_INFO *info)
|
|
|
-{
|
|
|
- if (shark_battery_is_normal(info) == SHARK_BATT_EXIT_SUCCESS) {
|
|
|
- if (shark_battery_is_power_full(info)) {
|
|
|
- return shark_true;
|
|
|
- }
|
|
|
-
|
|
|
- info->exit_code = SHARK_BATT_EXIT_POWER;
|
|
|
+ if (code != SHARK_BATT_EXIT_SUCCESS) {
|
|
|
+ info->exit_code = code;
|
|
|
}
|
|
|
|
|
|
- return shark_false;
|
|
|
+ return code;
|
|
|
}
|
|
|
|
|
|
shark_battery_exit_t Is_Sub_BMS_1_Normal(void)
|
|
|
{
|
|
|
- return shark_battery_is_normal(&sub_bms_info_1);
|
|
|
+ return shark_battery_is_normal(&sub_bms_info_1, SHARK_BATT_POWER_ANY);
|
|
|
}
|
|
|
|
|
|
u32 shark_battery_get_voltage(SUB_BMS_INFO *info)
|
|
|
@@ -509,6 +505,9 @@ shark_bool shark_battery_check_power(SUB_BMS_INFO *info, shark_battery_power_t p
|
|
|
case SHARK_BATT_POWER_ALL:
|
|
|
return SHARK_BOOL((info->packet_common.bms_status & BMS_POWER_ALL) == BMS_POWER_ALL);
|
|
|
|
|
|
+ case SHARK_BATT_POWER_ANY:
|
|
|
+ return shark_true;
|
|
|
+
|
|
|
default:
|
|
|
return SHARK_BOOL((info->packet_common.bms_status & BMS_POWER_ALL) == 0);
|
|
|
}
|