foxBMS - Unit Tests  1.6.0
The foxBMS Unit Tests API Documentation
diag_cfg.h File Reference

Diagnostic module configuration header. More...

#include "battery_system_cfg.h"
#include "database_cfg.h"
#include <stdbool.h>
#include <stdint.h>
Include dependency graph for diag_cfg.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  DIAG_DATABASE_SHIM_s
 
struct  DIAG_ID_CFG_s
 
struct  DIAG_DEV_s
 

Macros

#define DIAG_ERROR_SENSITIVITY_FIRST_EVENT   (0)
 
#define DIAG_ERROR_SENSITIVITY_THIRD_EVENT   (2)
 
#define DIAG_ERROR_SENSITIVITY_FIFTH_EVENT   (4)
 
#define DIAG_ERROR_SENSITIVITY_TENTH_EVENT   (9)
 
#define DIAG_ERROR_SENSITIVITY_HIGH   (0)
 
#define DIAG_ERROR_SENSITIVITY_MID   (5)
 
#define DIAG_ERROR_SENSITIVITY_LOW   (10)
 
#define DIAG_ERROR_INTERLOCK_SENSITIVITY   (10)
 
#define DIAG_ERROR_VOLTAGE_SENSITIVITY_MSL   (500)
 
#define DIAG_ERROR_VOLTAGE_SENSITIVITY_RSL   (500)
 
#define DIAG_ERROR_VOLTAGE_SENSITIVITY_MOL   (500)
 
#define DIAG_ERROR_TEMPERATURE_SENSITIVITY_MSL   (500)
 
#define DIAG_ERROR_TEMPERATURE_SENSITIVITY_RSL   (500)
 
#define DIAG_ERROR_TEMPERATURE_SENSITIVITY_MOL   (500)
 
#define DIAG_ERROR_CURRENT_SENSITIVITY_MSL   (500)
 
#define DIAG_ERROR_CURRENT_SENSITIVITY_RSL   (500)
 
#define DIAG_ERROR_CURRENT_SENSITIVITY_MOL   (500)
 
#define DIAG_ERROR_LTC_PEC_SENSITIVITY   (5)
 
#define DIAG_ERROR_LTC_MUX_SENSITIVITY   (5)
 
#define DIAG_ERROR_LTC_SPI_SENSITIVITY   (5)
 
#define DIAG_ERROR_CAN_TIMING_SENSITIVITY   (100)
 
#define DIAG_ERROR_CAN_TIMING_CC_SENSITIVITY   (100)
 
#define DIAG_ERROR_CAN_SENSOR_SENSITIVITY   (100)
 
#define DIAG_ERROR_CONTACTOR_FEEDBACK_SENSITIVITY   (20)
 
#define DIAG_DELAY_DISCARDED   (UINT32_MAX)
 
#define DIAG_NO_DELAY   (0u)
 
#define DIAG_DELAY_INTERLOCK_ms   (100u)
 
#define DIAG_DELAY_OVERVOLTAGE_ms   (200u)
 
#define DIAG_DELAY_UNDERVOLTAGE_ms   (200u)
 
#define DIAG_DELAY_TEMPERATURE_ms   (1000u)
 
#define DIAG_DELAY_OVERCURRENT_ms   (100u)
 
#define DIAG_DELAY_AFE_ms   (100u)
 
#define DIAG_DELAY_CAN_TIMING_ms   (200u)
 
#define DIAG_DELAY_EC_CC_TIMING_ms   (2000u)
 
#define DIAG_DELAY_CURRENT_SENSOR_ms   (200u)
 
#define DIAG_DELAY_SBC_ms   (100u)
 
#define DIAG_DELAY_PL_PACK_VOLTAGE_ms   (100u)
 
#define DIAG_DELAY_CONTACTOR_FEEDBACK_ms   (100u)
 
#define DIAG_DELAY_DEEP_DISCHARGE_ms   (100u)
 
#define DIAG_DELAY_REDUNDANCY_MEAS_TIMEOUT_ms   (100u)
 
#define DIAG_DELAY_REDUNDANCY_MEAS_ERROR_ms   (100u)
 
#define DIAG_MAX_ENTRIES_OF_ERROR   (5)
 
#define DIAG_CAN_TIMING   (DIAG_EVALUATION_ENABLED)
 Value that is written into the field that describes whether CAN timing diag entries should be generated. More...
 
#define DIAG_CAN_SENSOR_PRESENT   (DIAG_EVALUATION_ENABLED)
 Value that is written into the field that describes whether current sensor diag entries should be generated if it is not present. More...
 

Typedefs

typedef void DIAG_CALLBACK_FUNCTION_f(DIAG_ID_e diagId, DIAG_EVENT_e event, const DIAG_DATABASE_SHIM_s *const kpkDiagShim, uint32_t data)
 function type for diag callbacks More...
 

Enumerations

enum  DIAG_ID_e {
  DIAG_ID_FLASHCHECKSUM , DIAG_ID_SYSTEM_MONITORING , DIAG_ID_CONFIGASSERT , DIAG_ID_AFE_SPI ,
  DIAG_ID_AFE_COM_INTEGRITY , DIAG_ID_AFE_MUX , DIAG_ID_AFE_CONFIG , DIAG_ID_CAN_TIMING ,
  DIAG_ID_CAN_RX_QUEUE_FULL , DIAG_ID_CAN_TX_QUEUE_FULL , DIAG_ID_CAN_CC_RESPONDING , DIAG_ID_CAN_EC_RESPONDING ,
  DIAG_ID_CURRENT_SENSOR_RESPONDING , DIAG_ID_PLAUSIBILITY_CELL_VOLTAGE , DIAG_ID_AFE_CELL_VOLTAGE_MEAS_ERROR , DIAG_ID_AFE_CELL_TEMPERATURE_MEAS_ERROR ,
  DIAG_ID_PLAUSIBILITY_CELL_TEMP , DIAG_ID_PLAUSIBILITY_CELL_VOLTAGE_SPREAD , DIAG_ID_PLAUSIBILITY_CELL_TEMPERATURE_SPREAD , DIAG_ID_CELL_VOLTAGE_OVERVOLTAGE_MSL ,
  DIAG_ID_CELL_VOLTAGE_OVERVOLTAGE_RSL , DIAG_ID_CELL_VOLTAGE_OVERVOLTAGE_MOL , DIAG_ID_CELL_VOLTAGE_UNDERVOLTAGE_MSL , DIAG_ID_CELL_VOLTAGE_UNDERVOLTAGE_RSL ,
  DIAG_ID_CELL_VOLTAGE_UNDERVOLTAGE_MOL , DIAG_ID_TEMP_OVERTEMPERATURE_CHARGE_MSL , DIAG_ID_TEMP_OVERTEMPERATURE_CHARGE_RSL , DIAG_ID_TEMP_OVERTEMPERATURE_CHARGE_MOL ,
  DIAG_ID_TEMP_OVERTEMPERATURE_DISCHARGE_MSL , DIAG_ID_TEMP_OVERTEMPERATURE_DISCHARGE_RSL , DIAG_ID_TEMP_OVERTEMPERATURE_DISCHARGE_MOL , DIAG_ID_TEMP_UNDERTEMPERATURE_CHARGE_MSL ,
  DIAG_ID_TEMP_UNDERTEMPERATURE_CHARGE_RSL , DIAG_ID_TEMP_UNDERTEMPERATURE_CHARGE_MOL , DIAG_ID_TEMP_UNDERTEMPERATURE_DISCHARGE_MSL , DIAG_ID_TEMP_UNDERTEMPERATURE_DISCHARGE_RSL ,
  DIAG_ID_TEMP_UNDERTEMPERATURE_DISCHARGE_MOL , DIAG_ID_OVERCURRENT_CHARGE_CELL_MSL , DIAG_ID_OVERCURRENT_CHARGE_CELL_RSL , DIAG_ID_OVERCURRENT_CHARGE_CELL_MOL ,
  DIAG_ID_OVERCURRENT_DISCHARGE_CELL_MSL , DIAG_ID_OVERCURRENT_DISCHARGE_CELL_RSL , DIAG_ID_OVERCURRENT_DISCHARGE_CELL_MOL , DIAG_ID_STRING_OVERCURRENT_CHARGE_MSL ,
  DIAG_ID_STRING_OVERCURRENT_CHARGE_RSL , DIAG_ID_STRING_OVERCURRENT_CHARGE_MOL , DIAG_ID_STRING_OVERCURRENT_DISCHARGE_MSL , DIAG_ID_STRING_OVERCURRENT_DISCHARGE_RSL ,
  DIAG_ID_STRING_OVERCURRENT_DISCHARGE_MOL , DIAG_ID_PACK_OVERCURRENT_CHARGE_MSL , DIAG_ID_PACK_OVERCURRENT_DISCHARGE_MSL , DIAG_ID_CURRENT_ON_OPEN_STRING ,
  DIAG_ID_DEEP_DISCHARGE_DETECTED , DIAG_ID_AFE_OPEN_WIRE , DIAG_ID_PLAUSIBILITY_PACK_VOLTAGE , DIAG_ID_INTERLOCK_FEEDBACK ,
  DIAG_ID_STRING_MINUS_CONTACTOR_FEEDBACK , DIAG_ID_STRING_PLUS_CONTACTOR_FEEDBACK , DIAG_ID_PRECHARGE_CONTACTOR_FEEDBACK , DIAG_ID_SBC_FIN_STATE ,
  DIAG_ID_SBC_RSTB_STATE , DIAG_ID_BASE_CELL_VOLTAGE_MEASUREMENT_TIMEOUT , DIAG_ID_REDUNDANCY0_CELL_VOLTAGE_MEASUREMENT_TIMEOUT , DIAG_ID_BASE_CELL_TEMPERATURE_MEASUREMENT_TIMEOUT ,
  DIAG_ID_REDUNDANCY0_CELL_TEMPERATURE_MEASUREMENT_TIMEOUT , DIAG_ID_PRECHARGE_ABORT_REASON_VOLTAGE , DIAG_ID_PRECHARGE_ABORT_REASON_CURRENT , DIAG_ID_CURRENT_MEASUREMENT_TIMEOUT ,
  DIAG_ID_CURRENT_MEASUREMENT_ERROR , DIAG_ID_CURRENT_SENSOR_V1_MEASUREMENT_TIMEOUT , DIAG_ID_CURRENT_SENSOR_V2_MEASUREMENT_TIMEOUT , DIAG_ID_CURRENT_SENSOR_V3_MEASUREMENT_TIMEOUT ,
  DIAG_ID_CURRENT_SENSOR_POWER_MEASUREMENT_TIMEOUT , DIAG_ID_POWER_MEASUREMENT_ERROR , DIAG_ID_INSULATION_MEASUREMENT_VALID , DIAG_ID_LOW_INSULATION_RESISTANCE_ERROR ,
  DIAG_ID_LOW_INSULATION_RESISTANCE_WARNING , DIAG_ID_INSULATION_GROUND_ERROR , DIAG_ID_I2C_PEX_ERROR , DIAG_ID_I2C_RTC_ERROR ,
  DIAG_ID_RTC_CLOCK_INTEGRITY_ERROR , DIAG_ID_RTC_BATTERY_LOW_ERROR , DIAG_ID_FRAM_READ_CRC_ERROR , DIAG_ID_ALERT_MODE ,
  DIAG_ID_AEROSOL_ALERT , DIAG_ID_MAX
}
 
enum  DIAG_EVENT_e { DIAG_EVENT_OK , DIAG_EVENT_NOT_OK , DIAG_EVENT_RESET }
 
enum  DIAG_EVALUATE_e { DIAG_EVALUATION_ENABLED , DIAG_EVALUATION_DISABLED }
 
enum  DIAG_IMPACT_LEVEL_e { DIAG_SYSTEM , DIAG_STRING }
 
enum  DIAG_SEVERITY_LEVEL_e { DIAG_FATAL_ERROR , DIAG_WARNING , DIAG_INFO }
 
enum  DIAG_RECORDING_e { DIAG_RECORDING_ENABLED , DIAG_RECORDING_DISABLED }
 

Functions

void DIAG_UpdateFlags (void)
 update function for diagnosis flags More...
 

Variables

const DIAG_DATABASE_SHIM_s diag_kDatabaseShim
 
DIAG_DEV_s diag_device
 
DIAG_ID_CFG_s diag_diagnosisIdConfiguration [DIAG_ID_MAX]
 

Detailed Description

Diagnostic module configuration header.

SPDX-License-Identifier: BSD-3-Clause

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

  1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
  2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
  3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

We kindly request you to use one or more of the following phrases to refer to foxBMS in your hardware, software, documentation or advertising materials:

  • ″This product uses parts of foxBMS®″
  • ″This product includes parts of foxBMS®″
  • ″This product is derived from foxBMS®″
Author
foxBMS Team
Date
2019-11-28 (date of creation)
Updated
2023-10-12 (date of last update)
Version
v1.6.0
Prefix
DIAG

In this header filer are the different diagnosis channel defines assigned to different diagnosis IDs. Furthermore are the diagnosis error log settings be configured here.

Definition in file diag_cfg.h.

Macro Definition Documentation

◆ DIAG_CAN_SENSOR_PRESENT

#define DIAG_CAN_SENSOR_PRESENT   (DIAG_EVALUATION_ENABLED)

Value that is written into the field that describes whether current sensor diag entries should be generated if it is not present.

Definition at line 301 of file diag_cfg.h.

◆ DIAG_CAN_TIMING

#define DIAG_CAN_TIMING   (DIAG_EVALUATION_ENABLED)

Value that is written into the field that describes whether CAN timing diag entries should be generated.

Definition at line 290 of file diag_cfg.h.

◆ DIAG_DELAY_AFE_ms

#define DIAG_DELAY_AFE_ms   (100u)

delay for AFE related errors

Definition at line 141 of file diag_cfg.h.

◆ DIAG_DELAY_CAN_TIMING_ms

#define DIAG_DELAY_CAN_TIMING_ms   (200u)

delay for can timing error

Definition at line 143 of file diag_cfg.h.

◆ DIAG_DELAY_CONTACTOR_FEEDBACK_ms

#define DIAG_DELAY_CONTACTOR_FEEDBACK_ms   (100u)

delay for contactor feedback errors

Definition at line 153 of file diag_cfg.h.

◆ DIAG_DELAY_CURRENT_SENSOR_ms

#define DIAG_DELAY_CURRENT_SENSOR_ms   (200u)

delay for current sensor response error

Definition at line 147 of file diag_cfg.h.

◆ DIAG_DELAY_DEEP_DISCHARGE_ms

#define DIAG_DELAY_DEEP_DISCHARGE_ms   (100u)

delay for deep-discharge error

Definition at line 155 of file diag_cfg.h.

◆ DIAG_DELAY_DISCARDED

#define DIAG_DELAY_DISCARDED   (UINT32_MAX)

-------------— DEFINES FOR ERROR STATE TRANSITION DELAY-------------— These defines configure the delay before the transition to the error state occurs if a fault is detected. During this time the BMS can alert a superordinate control unit that the contactors will be opened soon. The superior control unit can take action and e.g., reduce the current until the transition to error state takes place.

The delay is not taken into account if severity level DIAG_FATAL_ERROR of type DIAG_SEVERITY_LEVEL_e is configured in config array diag_diagnosisIdConfiguration. For any other severity, DIAG_DELAY_DISCARDED can be used as a dummy value.

Definition at line 127 of file diag_cfg.h.

◆ DIAG_DELAY_EC_CC_TIMING_ms

#define DIAG_DELAY_EC_CC_TIMING_ms   (2000u)

delay for energy counting/coulomb counting timing error

Definition at line 145 of file diag_cfg.h.

◆ DIAG_DELAY_INTERLOCK_ms

#define DIAG_DELAY_INTERLOCK_ms   (100u)

delay for interlock error

Definition at line 131 of file diag_cfg.h.

◆ DIAG_DELAY_OVERCURRENT_ms

#define DIAG_DELAY_OVERCURRENT_ms   (100u)

delay for overcurrent errors

Definition at line 139 of file diag_cfg.h.

◆ DIAG_DELAY_OVERVOLTAGE_ms

#define DIAG_DELAY_OVERVOLTAGE_ms   (200u)

delay for overvoltage errors

Definition at line 133 of file diag_cfg.h.

◆ DIAG_DELAY_PL_PACK_VOLTAGE_ms

#define DIAG_DELAY_PL_PACK_VOLTAGE_ms   (100u)

delay for pack voltage plausibility error

Definition at line 151 of file diag_cfg.h.

◆ DIAG_DELAY_REDUNDANCY_MEAS_ERROR_ms

#define DIAG_DELAY_REDUNDANCY_MEAS_ERROR_ms   (100u)

delay redundancy measurement errors

Definition at line 159 of file diag_cfg.h.

◆ DIAG_DELAY_REDUNDANCY_MEAS_TIMEOUT_ms

#define DIAG_DELAY_REDUNDANCY_MEAS_TIMEOUT_ms   (100u)

delay redundancy measurement timeout errors

Definition at line 157 of file diag_cfg.h.

◆ DIAG_DELAY_SBC_ms

#define DIAG_DELAY_SBC_ms   (100u)

delay for SBC related errors

Definition at line 149 of file diag_cfg.h.

◆ DIAG_DELAY_TEMPERATURE_ms

#define DIAG_DELAY_TEMPERATURE_ms   (1000u)

delay for temperature errors

Definition at line 137 of file diag_cfg.h.

◆ DIAG_DELAY_UNDERVOLTAGE_ms

#define DIAG_DELAY_UNDERVOLTAGE_ms   (200u)

delay for undervoltage errors

Definition at line 135 of file diag_cfg.h.

◆ DIAG_ERROR_CAN_SENSOR_SENSITIVITY

#define DIAG_ERROR_CAN_SENSOR_SENSITIVITY   (100)

logging level of CAN errors on the current sensor

Definition at line 104 of file diag_cfg.h.

◆ DIAG_ERROR_CAN_TIMING_CC_SENSITIVITY

#define DIAG_ERROR_CAN_TIMING_CC_SENSITIVITY   (100)

logging level of CAN timing errors on the current sensor

Definition at line 103 of file diag_cfg.h.

◆ DIAG_ERROR_CAN_TIMING_SENSITIVITY

#define DIAG_ERROR_CAN_TIMING_SENSITIVITY   (100)

logging level of CAN timing errors

Definition at line 102 of file diag_cfg.h.

◆ DIAG_ERROR_CONTACTOR_FEEDBACK_SENSITIVITY

#define DIAG_ERROR_CONTACTOR_FEEDBACK_SENSITIVITY   (20)

Logging after 20th event for errors connected related to the contactor feedback. This value is chosen to be so large because of the time delay between the request for a state and the actual physical response. It is caused by the SPI transaction to the SPS module, the rise time of the control signal and the actual opening/closing of the contactor. Only then can the feedback be read correctly, which also take some additional delay depending on the feedback source.

Definition at line 114 of file diag_cfg.h.

◆ DIAG_ERROR_CURRENT_SENSITIVITY_MOL

#define DIAG_ERROR_CURRENT_SENSITIVITY_MOL   (500)

MOL level for event occurrence if over/under current event

Definition at line 96 of file diag_cfg.h.

◆ DIAG_ERROR_CURRENT_SENSITIVITY_MSL

#define DIAG_ERROR_CURRENT_SENSITIVITY_MSL   (500)

MSL level for event occurrence if over/under current event

Definition at line 92 of file diag_cfg.h.

◆ DIAG_ERROR_CURRENT_SENSITIVITY_RSL

#define DIAG_ERROR_CURRENT_SENSITIVITY_RSL   (500)

RSL level for event occurrence if over/under current event

Definition at line 94 of file diag_cfg.h.

◆ DIAG_ERROR_INTERLOCK_SENSITIVITY

#define DIAG_ERROR_INTERLOCK_SENSITIVITY   (10)

logging level of interlock

Definition at line 78 of file diag_cfg.h.

◆ DIAG_ERROR_LTC_MUX_SENSITIVITY

#define DIAG_ERROR_LTC_MUX_SENSITIVITY   (5)

logging level of LTC MUX errors

Definition at line 99 of file diag_cfg.h.

◆ DIAG_ERROR_LTC_PEC_SENSITIVITY

#define DIAG_ERROR_LTC_PEC_SENSITIVITY   (5)

logging level of LTC PEC errors

Definition at line 98 of file diag_cfg.h.

◆ DIAG_ERROR_LTC_SPI_SENSITIVITY

#define DIAG_ERROR_LTC_SPI_SENSITIVITY   (5)

logging level of LTC SPI errors

Definition at line 100 of file diag_cfg.h.

◆ DIAG_ERROR_SENSITIVITY_FIFTH_EVENT

#define DIAG_ERROR_SENSITIVITY_FIFTH_EVENT   (4)

logging at fifth event

Definition at line 71 of file diag_cfg.h.

◆ DIAG_ERROR_SENSITIVITY_FIRST_EVENT

#define DIAG_ERROR_SENSITIVITY_FIRST_EVENT   (0)

logging at first event

Definition at line 69 of file diag_cfg.h.

◆ DIAG_ERROR_SENSITIVITY_HIGH

#define DIAG_ERROR_SENSITIVITY_HIGH   (0)

logging at first event

Definition at line 74 of file diag_cfg.h.

◆ DIAG_ERROR_SENSITIVITY_LOW

#define DIAG_ERROR_SENSITIVITY_LOW   (10)

logging at tenth event

Definition at line 76 of file diag_cfg.h.

◆ DIAG_ERROR_SENSITIVITY_MID

#define DIAG_ERROR_SENSITIVITY_MID   (5)

logging at fifth event

Definition at line 75 of file diag_cfg.h.

◆ DIAG_ERROR_SENSITIVITY_TENTH_EVENT

#define DIAG_ERROR_SENSITIVITY_TENTH_EVENT   (9)

logging at tenth event

Definition at line 72 of file diag_cfg.h.

◆ DIAG_ERROR_SENSITIVITY_THIRD_EVENT

#define DIAG_ERROR_SENSITIVITY_THIRD_EVENT   (2)

logging at third event

Definition at line 70 of file diag_cfg.h.

◆ DIAG_ERROR_TEMPERATURE_SENSITIVITY_MOL

#define DIAG_ERROR_TEMPERATURE_SENSITIVITY_MOL   (500)

MOL level for event occurrence if over/under temperature event

Definition at line 89 of file diag_cfg.h.

◆ DIAG_ERROR_TEMPERATURE_SENSITIVITY_MSL

#define DIAG_ERROR_TEMPERATURE_SENSITIVITY_MSL   (500)

MSL level for event occurrence if over/under temperature event

Definition at line 85 of file diag_cfg.h.

◆ DIAG_ERROR_TEMPERATURE_SENSITIVITY_RSL

#define DIAG_ERROR_TEMPERATURE_SENSITIVITY_RSL   (500)

RSL level for event occurrence if over/under temperature event

Definition at line 87 of file diag_cfg.h.

◆ DIAG_ERROR_VOLTAGE_SENSITIVITY_MOL

#define DIAG_ERROR_VOLTAGE_SENSITIVITY_MOL   (500)

MOL level for event occurrence if over/under voltage event

Definition at line 82 of file diag_cfg.h.

◆ DIAG_ERROR_VOLTAGE_SENSITIVITY_MSL

#define DIAG_ERROR_VOLTAGE_SENSITIVITY_MSL   (500)

MSL level for event occurrence if over/under voltage event

Definition at line 80 of file diag_cfg.h.

◆ DIAG_ERROR_VOLTAGE_SENSITIVITY_RSL

#define DIAG_ERROR_VOLTAGE_SENSITIVITY_RSL   (500)

RSL level for event occurrence if over/under voltage event

Definition at line 81 of file diag_cfg.h.

◆ DIAG_MAX_ENTRIES_OF_ERROR

#define DIAG_MAX_ENTRIES_OF_ERROR   (5)

Maximum number of the same errors that are logged

Definition at line 162 of file diag_cfg.h.

◆ DIAG_NO_DELAY

#define DIAG_NO_DELAY   (0u)

no delay after error is detected, open contactors instantaneous

Definition at line 129 of file diag_cfg.h.

Typedef Documentation

◆ DIAG_CALLBACK_FUNCTION_f

typedef void DIAG_CALLBACK_FUNCTION_f(DIAG_ID_e diagId, DIAG_EVENT_e event, const DIAG_DATABASE_SHIM_s *const kpkDiagShim, uint32_t data)

function type for diag callbacks

Parameters
[in]diagIdID of diag entry
[in]eventDIAG_EVENT_e
[in]kpkDiagShimshim to the database entries
[in]datadata

Definition at line 326 of file diag_cfg.h.

Enumeration Type Documentation

◆ DIAG_EVALUATE_e

enable or disable the diagnosis handling for an event

Enumerator
DIAG_EVALUATION_ENABLED 

enables evaluation of diagnosis handling

DIAG_EVALUATION_DISABLED 

disables evaluation of diagnosis handling

Definition at line 273 of file diag_cfg.h.

◆ DIAG_EVENT_e

diagnosis check result (event)

Enumerator
DIAG_EVENT_OK 

diag channel event OK

DIAG_EVENT_NOT_OK 

diag channel event NOK

DIAG_EVENT_RESET 

reset diag channel event counter to 0

Definition at line 266 of file diag_cfg.h.

◆ DIAG_ID_e

enum DIAG_ID_e

list of diag IDs

Enumerator
DIAG_ID_FLASHCHECKSUM 

the checksum of the flashed software could not be validated

DIAG_ID_SYSTEM_MONITORING 

the system monitoring module has detected a deviation from task timing limits

DIAG_ID_CONFIGASSERT 

TODO

DIAG_ID_AFE_SPI 

issues with the SPI communication of the AFE

DIAG_ID_AFE_COM_INTEGRITY 

error on the communication integrity of the AFE, e.g. PEC error for LTC

DIAG_ID_AFE_MUX 

the multiplexer that is connected to the AFE does not react in an expected way

DIAG_ID_AFE_CONFIG 

the AFE driver has recognized a configuration error

DIAG_ID_CAN_TIMING 

the BMS does not receive CAN messages or they are not inside the expected timing constraints

DIAG_ID_CAN_RX_QUEUE_FULL 

the reception queue of the driver is full; no new messages can be received

DIAG_ID_CAN_TX_QUEUE_FULL 

the transmission queue of the driver is full; all new messages will be lost

DIAG_ID_CAN_CC_RESPONDING 

current counter measurements on the CAN bus are missing or not inside expected timing constraints

DIAG_ID_CAN_EC_RESPONDING 

energy counter measurements on the CAN bus are missing or not inside expected timing constraints

DIAG_ID_CURRENT_SENSOR_RESPONDING 

current sensor measurements on the CAN bus are missing or not inside expected timing constraints

DIAG_ID_PLAUSIBILITY_CELL_VOLTAGE 

redundant measurement of the cell voltages has returned implausible values

DIAG_ID_AFE_CELL_VOLTAGE_MEAS_ERROR 

the AFE driver has determined a cell voltage measurement to be implausible

DIAG_ID_AFE_CELL_TEMPERATURE_MEAS_ERROR 

the AFE driver has determined a cell temperature measurement to be implausible

DIAG_ID_PLAUSIBILITY_CELL_TEMP 

redundant measurement of the cell temperatures has returned implausible values

DIAG_ID_PLAUSIBILITY_CELL_VOLTAGE_SPREAD 

the spread (difference between min and max values) of the cell voltages is implausibly high

DIAG_ID_PLAUSIBILITY_CELL_TEMPERATURE_SPREAD 

the spread (difference between min and max values) of the cell temperatures is implausibly high

DIAG_ID_CELL_VOLTAGE_OVERVOLTAGE_MSL 

Cell voltage limits violated

DIAG_ID_CELL_VOLTAGE_OVERVOLTAGE_RSL 

Cell voltage limits violated

DIAG_ID_CELL_VOLTAGE_OVERVOLTAGE_MOL 

Cell voltage limits violated

DIAG_ID_CELL_VOLTAGE_UNDERVOLTAGE_MSL 

Cell voltage limits violated

DIAG_ID_CELL_VOLTAGE_UNDERVOLTAGE_RSL 

Cell voltage limits violated

DIAG_ID_CELL_VOLTAGE_UNDERVOLTAGE_MOL 

Cell voltage limits violated

DIAG_ID_TEMP_OVERTEMPERATURE_CHARGE_MSL 

Temperature limits violated

DIAG_ID_TEMP_OVERTEMPERATURE_CHARGE_RSL 

Temperature limits violated

DIAG_ID_TEMP_OVERTEMPERATURE_CHARGE_MOL 

Temperature limits violated

DIAG_ID_TEMP_OVERTEMPERATURE_DISCHARGE_MSL 

Temperature limits violated

DIAG_ID_TEMP_OVERTEMPERATURE_DISCHARGE_RSL 

Temperature limits violated

DIAG_ID_TEMP_OVERTEMPERATURE_DISCHARGE_MOL 

Temperature limits violated

DIAG_ID_TEMP_UNDERTEMPERATURE_CHARGE_MSL 

Temperature limits violated

DIAG_ID_TEMP_UNDERTEMPERATURE_CHARGE_RSL 

Temperature limits violated

DIAG_ID_TEMP_UNDERTEMPERATURE_CHARGE_MOL 

Temperature limits violated

DIAG_ID_TEMP_UNDERTEMPERATURE_DISCHARGE_MSL 

Temperature limits violated

DIAG_ID_TEMP_UNDERTEMPERATURE_DISCHARGE_RSL 

Temperature limits violated

DIAG_ID_TEMP_UNDERTEMPERATURE_DISCHARGE_MOL 

Temperature limits violated

DIAG_ID_OVERCURRENT_CHARGE_CELL_MSL 

Overcurrent on cell-level

DIAG_ID_OVERCURRENT_CHARGE_CELL_RSL 

Overcurrent on cell-level

DIAG_ID_OVERCURRENT_CHARGE_CELL_MOL 

Overcurrent on cell-level

DIAG_ID_OVERCURRENT_DISCHARGE_CELL_MSL 

Overcurrent on cell-level

DIAG_ID_OVERCURRENT_DISCHARGE_CELL_RSL 

Overcurrent on cell-level

DIAG_ID_OVERCURRENT_DISCHARGE_CELL_MOL 

Overcurrent on cell-level

DIAG_ID_STRING_OVERCURRENT_CHARGE_MSL 

Overcurrent on string-level

DIAG_ID_STRING_OVERCURRENT_CHARGE_RSL 

Overcurrent on string-level

DIAG_ID_STRING_OVERCURRENT_CHARGE_MOL 

Overcurrent on string-level

DIAG_ID_STRING_OVERCURRENT_DISCHARGE_MSL 

Overcurrent on string-level

DIAG_ID_STRING_OVERCURRENT_DISCHARGE_RSL 

Overcurrent on string-level

DIAG_ID_STRING_OVERCURRENT_DISCHARGE_MOL 

Overcurrent on string-level

DIAG_ID_PACK_OVERCURRENT_CHARGE_MSL 

Overcurrent on string-level

DIAG_ID_PACK_OVERCURRENT_DISCHARGE_MSL 

Overcurrent on pack-level

DIAG_ID_CURRENT_ON_OPEN_STRING 

Current flowing on open string

DIAG_ID_DEEP_DISCHARGE_DETECTED 

the deep discharge flag has been set in persistent memory

DIAG_ID_AFE_OPEN_WIRE 

an open (broken) sense wire has been detected on the battery cell measurement

DIAG_ID_PLAUSIBILITY_PACK_VOLTAGE 

the plausibility module has decided that the pack voltage is implausible

DIAG_ID_INTERLOCK_FEEDBACK 

the interlock feedback indicates it to be open (but it is expected to be closed)

DIAG_ID_STRING_MINUS_CONTACTOR_FEEDBACK 

the feedback on a string minus contactor does not match the expected value

DIAG_ID_STRING_PLUS_CONTACTOR_FEEDBACK 

the feedback on a string plus contactor does not match the expected value

DIAG_ID_PRECHARGE_CONTACTOR_FEEDBACK 

the feedback on a precharge contactor does not match the expected value

DIAG_ID_SBC_FIN_STATE 

the state of the FIN signal in the SBC is not ok

DIAG_ID_SBC_RSTB_STATE 

an activation of the RSTB pin of the SBC has been detected

DIAG_ID_BASE_CELL_VOLTAGE_MEASUREMENT_TIMEOUT 

the redundancy module has detected that the base cell voltage measurements are missing

DIAG_ID_REDUNDANCY0_CELL_VOLTAGE_MEASUREMENT_TIMEOUT 

the redundancy module has detected that the redundancy0 cell voltage measurements are missing

DIAG_ID_BASE_CELL_TEMPERATURE_MEASUREMENT_TIMEOUT 

the redundancy module has detected that the base cell temperature measurements are missing

DIAG_ID_REDUNDANCY0_CELL_TEMPERATURE_MEASUREMENT_TIMEOUT 

the redundancy module has detected that the redundancy0 temperature measurements are missing

DIAG_ID_PRECHARGE_ABORT_REASON_VOLTAGE 

precharging aborted due to a too high voltage difference

DIAG_ID_PRECHARGE_ABORT_REASON_CURRENT 

precharging aborted because measured current was too high

DIAG_ID_CURRENT_MEASUREMENT_TIMEOUT 

the redundancy module has detected that the current measurement on a string is not updated

DIAG_ID_CURRENT_MEASUREMENT_ERROR 

the redundancy module has detected a current measurement to be invalid

DIAG_ID_CURRENT_SENSOR_V1_MEASUREMENT_TIMEOUT 

the redundancy module has detected that the voltage 1 measurement of a current sensor is not updated

DIAG_ID_CURRENT_SENSOR_V2_MEASUREMENT_TIMEOUT 

the redundancy module has detected that the voltage 2 measurement of a current sensor is not updated

DIAG_ID_CURRENT_SENSOR_V3_MEASUREMENT_TIMEOUT 

the redundancy module has detected that the voltage 3 measurement of a current sensor is not updated

DIAG_ID_CURRENT_SENSOR_POWER_MEASUREMENT_TIMEOUT 

the redundancy module has detected that the power measurement of a current sensor is not updated

DIAG_ID_POWER_MEASUREMENT_ERROR 

the redundancy module has detected a power measurement to be invalid

DIAG_ID_INSULATION_MEASUREMENT_VALID 

the insulation measurement is valid or invalid

DIAG_ID_LOW_INSULATION_RESISTANCE_ERROR 

a critical low insulation resistance has been measured

DIAG_ID_LOW_INSULATION_RESISTANCE_WARNING 

a warnable low insulation resistance has been measured

DIAG_ID_INSULATION_GROUND_ERROR 

insulation monitoring has detected a ground error

DIAG_ID_I2C_PEX_ERROR 

general error with the port expanders

DIAG_ID_I2C_RTC_ERROR 

i2c communication error with the RTC

DIAG_ID_RTC_CLOCK_INTEGRITY_ERROR 

clock integrity not garanteed error in RTC IC

DIAG_ID_RTC_BATTERY_LOW_ERROR 

RTC IC battery low flag set

DIAG_ID_FRAM_READ_CRC_ERROR 

CRC does not match when reading from the FRAM

DIAG_ID_ALERT_MODE 

Critical error while opening the contactors. Fuse has not triggered

DIAG_ID_AEROSOL_ALERT 

high aerosol concentration detected

DIAG_ID_MAX 

MAX indicator - do not change

Definition at line 176 of file diag_cfg.h.

◆ DIAG_IMPACT_LEVEL_e

impact level of diagnosis event, e.g., influences the event the whole system or only a string

Enumerator
DIAG_SYSTEM 

diag event impact is system related e.g., can timing

DIAG_STRING 

diag event impact is string related e.g., overvoltage in string x

Definition at line 279 of file diag_cfg.h.

◆ DIAG_RECORDING_e

diagnosis recording activation

Enumerator
DIAG_RECORDING_ENABLED 

enable diagnosis event recording

DIAG_RECORDING_DISABLED 

disable diagnosis event recording

Definition at line 314 of file diag_cfg.h.

◆ DIAG_SEVERITY_LEVEL_e

diagnosis severity level

Enumerator
DIAG_FATAL_ERROR 

severity level fatal error

DIAG_WARNING 

severity level warning

DIAG_INFO 

severity level info

Definition at line 307 of file diag_cfg.h.

Function Documentation

◆ DIAG_UpdateFlags()

void DIAG_UpdateFlags ( void  )

update function for diagnosis flags

TODO

Definition at line 250 of file diag_cfg.c.

Variable Documentation

◆ diag_device

DIAG_DEV_s diag_device
extern

diag device configuration struct

Definition at line 240 of file diag_cfg.c.

◆ diag_diagnosisIdConfiguration

DIAG_ID_CFG_s diag_diagnosisIdConfiguration[DIAG_ID_MAX]
extern

variable tracking the state of the diag channels

Definition at line 124 of file diag_cfg.c.

◆ diag_kDatabaseShim

const DIAG_DATABASE_SHIM_s diag_kDatabaseShim
extern

variable for storing and passing on the local database table handles

Definition at line 113 of file diag_cfg.c.