Bugfix: Nissan LEAF, move battery-allows-closing writing (#811)

* Move battery-allows-closing writing

* Move so contactor closing is allowed after we get a message from battery
This commit is contained in:
Daniel Öster 2025-01-25 15:15:17 +03:00 committed by GitHub
parent 85c5cd81aa
commit 4e1c04d975
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -237,6 +237,11 @@ void update_values_battery() { /* This function maps all the values fetched via
datalayer.battery.status.max_charge_power_W = (battery_Charge_Power_Limit * 1000); //kW to W datalayer.battery.status.max_charge_power_W = (battery_Charge_Power_Limit * 1000); //kW to W
//Allow contactors to close
if (battery_can_alive) {
datalayer.system.status.battery_allows_contactor_closing = true;
}
/*Extra safety functions below*/ /*Extra safety functions below*/
if (battery_GIDS < 10) //700Wh left in battery! if (battery_GIDS < 10) //700Wh left in battery!
{ //Battery is running abnormally low, some discharge logic might have failed. Zero it all out. { //Battery is running abnormally low, some discharge logic might have failed. Zero it all out.
@ -766,11 +771,6 @@ void handle_incoming_can_frame_battery(CAN_frame rx_frame) {
battery_Relay_Cut_Request = ((rx_frame.data.u8[1] & 0x18) >> 3); battery_Relay_Cut_Request = ((rx_frame.data.u8[1] & 0x18) >> 3);
battery_Failsafe_Status = (rx_frame.data.u8[1] & 0x07); battery_Failsafe_Status = (rx_frame.data.u8[1] & 0x07);
battery_MainRelayOn_flag = (bool)((rx_frame.data.u8[3] & 0x20) >> 5); battery_MainRelayOn_flag = (bool)((rx_frame.data.u8[3] & 0x20) >> 5);
if (battery_MainRelayOn_flag) {
datalayer.system.status.battery_allows_contactor_closing = true;
} else {
datalayer.system.status.battery_allows_contactor_closing = false;
}
battery_Full_CHARGE_flag = (bool)((rx_frame.data.u8[3] & 0x10) >> 4); battery_Full_CHARGE_flag = (bool)((rx_frame.data.u8[3] & 0x10) >> 4);
battery_Interlock = (bool)((rx_frame.data.u8[3] & 0x08) >> 3); battery_Interlock = (bool)((rx_frame.data.u8[3] & 0x08) >> 3);
break; break;
@ -1509,7 +1509,6 @@ void decodeChallengeData(unsigned int incomingChallenge, unsigned char* solvedCh
void setup_battery(void) { // Performs one time setup at startup void setup_battery(void) { // Performs one time setup at startup
strncpy(datalayer.system.info.battery_protocol, "Nissan LEAF battery", 63); strncpy(datalayer.system.info.battery_protocol, "Nissan LEAF battery", 63);
datalayer.system.info.battery_protocol[63] = '\0'; datalayer.system.info.battery_protocol[63] = '\0';
datalayer.battery.info.number_of_cells = 96; datalayer.battery.info.number_of_cells = 96;
datalayer.battery.info.max_design_voltage_dV = MAX_PACK_VOLTAGE_DV; datalayer.battery.info.max_design_voltage_dV = MAX_PACK_VOLTAGE_DV;
datalayer.battery.info.min_design_voltage_dV = MIN_PACK_VOLTAGE_DV; datalayer.battery.info.min_design_voltage_dV = MIN_PACK_VOLTAGE_DV;