Просмотр исходного кода

如果在底座或者车上(有充电器),只要温度超过允许的充电温度,提前置位过高/低温充电标志

Signed-off-by: huhui <huhui@sharkgulf.com>
huhui 5 лет назад
Родитель
Сommit
d48ec9ba58

+ 3 - 0
Application/app/bms_message.c

@@ -79,6 +79,9 @@ void process_bms_message(can_frame_t *frame, int len){
 				}
 			}
 			bresp.health = *((uint32_t *)bms_health());
+			if (bms_is_ps_charger_in()) {/*如果在底座或者车上(有充电器),提前置位过高/低温充电标志*/
+				bresp.health |= (bms_health()->lower_temp_deny_charger << 12 | bms_health()->over_temp_deny_charger << 14);
+			}
 			bresp.health &= ~(1 << 8);
 			bresp.health |= ((get_soc()->flags & SOC_FLAG_CALIBRATED) != 0) << 8;
 			stat_cmd_resp_t sresp;

+ 3 - 0
Application/app/protocol_old.c

@@ -68,6 +68,9 @@ static int get_response_data(uint8_t *data, uint8_t operate, uint8_t result){
 	}
 	
 	response->health_state = *((uint16_t *)bms_health()) | (bms_health()->sigle_cell_lower_voltage << 1);
+	if (bms_is_ps_charger_in()) {
+		response->health_state |= (bms_health()->lower_temp_deny_charger << 12 | bms_health()->over_temp_deny_charger << 14);
+	}
 	response->balance_mask = 0x0;
 	response->misc_status = (ml5238_is_discharging() << 1) | (ml5238_is_charging() << 2);
 	response->misc_status |= (AUX_VOL_IS_OPEN() << 3) |(io_state()->aux_lock_detect << 5);

+ 4 - 0
Application/app/sox/state.c

@@ -93,6 +93,10 @@ void bms_set_ps_charger_in(uint16_t mask, uint16_t in){
 	_bms_state.ps_charger_mask = mask;
 }
 
+int bms_is_ps_charger_in(void){
+	return _bms_state.ps_charger_mask && _bms_state.ps_charger_in;
+}
+
 void bms_state_log(void){
 	state_debug("Life Time: %d\n", shark_get_seconds());
 	state_debug("Sleep Time: %ds\n", get_system_sleep_time());

+ 1 - 0
Application/app/sox/state.h

@@ -95,6 +95,7 @@ void charger_open(int open);
 void discharger_open(int open);
 void start_aux_power(int start);
 void bms_set_ps_charger_in(uint16_t mask, uint16_t in);
+int bms_is_ps_charger_in(void);
 void system_power_down(void);
 void bms_state_log(void);