|
foxBMS-UnitTests
1.0.0
The foxBMS Unit Tests API Documentation
|
Go to the documentation of this file.
238 #if BS_NR_OF_STRINGS > 1u
248 #if BS_NR_OF_STRINGS > 2u
284 #pragma diag_suppress 880
288 uint64_t message = 0;
292 uint64_t bitStart = 0;
293 uint8_t bitLength = 0;
303 for (uint8_t i = 0u; i < 6u; i++) {
310 tmpVal = (tmpVal + offset) * factor;
324 #pragma diag_suppress 880
327 uint64_t message = 0;
331 uint64_t bitStart = 0;
332 uint8_t bitLength = 0;
338 for (
int i = 0; i < 3; i++) {
343 tmpVal = (tmpVal + offset) * factor;
355 tmpVal = (tmpVal + offset) * factor;
367 #pragma diag_suppress 880
375 uint64_t message = 0;
379 uint64_t bitStart = 0;
380 uint8_t bitLength = 0;
386 for (
int i = 0; i < 3; i++) {
391 tmpVal = (tmpVal + offset) * factor;
403 tmpVal = (tmpVal + offset) * factor;
415 #pragma diag_suppress 880
423 uint64_t message = 0;
427 uint64_t bitStart = 0;
428 uint8_t bitLength = 0;
438 tmpVal = (tmpVal + offset) * factor;
448 tmpVal = (tmpVal + offset) * factor;
458 tmpVal = (tmpVal + offset) * factor;
468 tmpVal = (tmpVal + offset) * factor;
481 #pragma diag_suppress 880
485 uint32_t retVal = 1u;
488 for (uint8_t i = 0; i < dlc; i++) {
489 canMessage.
data[i] = canData[i];
500 #pragma diag_suppress 880
509 uint32_t retVal = 1u;
512 for (uint8_t i = 0; i < dlc; i++) {
513 canMessage.
data[i] = canData[i];
524 #pragma diag_suppress 880
527 uint64_t message = 0;
529 uint64_t bitStart = 0;
530 uint8_t bitLength = 0;
531 uint8_t stateRequest = 0;
540 stateRequest = (uint8_t)signal;
557 #pragma diag_suppress 880
566 #pragma diag_suppress 880
574 uint64_t message = 0u;
575 uint64_t signal = 0u;
576 uint64_t bitStart = 0u;
577 uint8_t bitLength = 0u;
579 int32_t tempValue = 0;
581 uint8_t stringNumber = 0;
589 }
else if (
id <= 0x628u) {
602 dummy = (uint32_t)signal;
604 if ((dummy & 0x10u) == 0x10u) {
607 if ((dummy & 0x20u) == 0x20u) {
647 if (((dummy & 0x40u) == 0x40u) || ((dummy & 0x80u) == 0x80u)) {
667 tempValue = (int32_t)signal;
678 tempValue = (int32_t)signal;
688 tempValue = (int32_t)signal;
698 tempValue = (int32_t)signal;
708 tempValue = (int32_t)signal;
715 tempValue = (int32_t)signal;
726 tempValue = (int32_t)signal;
736 tempValue = (int32_t)signal;
754 #pragma diag_suppress 880
758 uint64_t message = 0;
760 uint64_t bitStart = 0;
761 uint8_t bitLength = 0;
769 switch ((uint8_t)signal) {
771 for (uint8_t stringNumber = 0u; stringNumber <
BS_NR_OF_STRINGS; stringNumber++) {
784 #pragma diag_suppress 880
803 uint64_t mask = 0xFFFFFFFFFFFFFFFFu;
809 if (bitLength <= 8u) {
811 }
else if (bitLength <= 16u) {
814 }
else if (bitLength <= 32u) {
823 if ((bitLength < 64u) && (bitStart < 64u)) {
827 *pMessage |= (signal & mask) << bitStart;
837 pCanData[0] = (uint8_t)(((*pMessage) >> 0u) & 0xFFu);
838 pCanData[1] = (uint8_t)(((*pMessage) >> 8u) & 0xFFu);
839 pCanData[2] = (uint8_t)(((*pMessage) >> 16u) & 0xFFu);
840 pCanData[3] = (uint8_t)(((*pMessage) >> 24u) & 0xFFu);
841 pCanData[4] = (uint8_t)(((*pMessage) >> 32u) & 0xFFu);
842 pCanData[5] = (uint8_t)(((*pMessage) >> 40u) & 0xFFu);
843 pCanData[6] = (uint8_t)(((*pMessage) >> 48u) & 0xFFu);
844 pCanData[7] = (uint8_t)(((*pMessage) >> 56u) & 0xFFu);
854 uint64_t mask = 0xFFFFFFFFFFFFFFFFu;
856 if ((bitLength < 64u) && (bitStart < 64u)) {
860 *pSignal = (message >> bitStart) & mask;
870 if (bitLength <= 8u) {
872 }
else if (bitLength <= 16u) {
875 }
else if (bitLength <= 32u) {
888 *pMessage = ((((uint64_t)pCanData[0]) & 0xFFu) << 0u) | ((((uint64_t)pCanData[1]) & 0xFFu) << 8u) |
889 ((((uint64_t)pCanData[2]) & 0xFFu) << 16u) | ((((uint64_t)pCanData[3]) & 0xFFu) << 24u) |
890 ((((uint64_t)pCanData[4]) & 0xFFu) << 32u) | ((((uint64_t)pCanData[5]) & 0xFFu) << 40u) |
891 ((((uint64_t)pCanData[6]) & 0xFFu) << 48u) | ((((uint64_t)pCanData[7]) & 0xFFu) << 56u);
897 #ifdef UNITY_UNIT_TEST
967 return CAN_RxDebug(
id, dlc, byteOrder, pCanData, pMuxId);
DATA_BLOCK_HEADER_s header
static DATA_BLOCK_STATEREQUEST_s can_tableStateRequest
static DATA_BLOCK_MIN_MAX_s can_tableMinimumMaximumValues
static uint32_t CAN_TxPcbTemperature(uint32_t id, uint8_t dlc, CAN_byteOrder_e byteOrder, uint8_t *canData, uint32_t *pMuxId)
const CAN_MSG_RX_TYPE_s can_rxMessages[]
static uint32_t CAN_TxVoltageMinMax(uint32_t id, uint8_t dlc, CAN_byteOrder_e byteOrder, uint8_t *canData, uint32_t *pMuxId)
static uint32_t CAN_RxSwVersion(uint32_t id, uint8_t dlc, CAN_byteOrder_e byteOrder, uint8_t *canData, uint32_t *pMuxId)
uint32_t TEST_CAN_RxSwReset(uint32_t id, uint8_t dlc, CAN_byteOrder_e byteOrder, uint8_t *pCanData, uint32_t *pMuxId)
DATA_BLOCK_HEADER_s header
DATA_BLOCK_HEADER_s header
@ DATA_BLOCK_ID_OPEN_WIRE_BASE
uint8_t invalidCurrentCountingMeasurement[BS_NR_OF_STRINGS]
int16_t temperatureAdc0_ddegC[BS_NR_OF_TEMP_SENSORS_ON_ADC0]
uint8_t invalidPowerMeasurement[BS_NR_OF_STRINGS]
static DATA_BLOCK_CELL_VOLTAGE_s can_tableCellVoltages
uint16_t nrCellMinimumCellVoltage[BS_NR_OF_STRINGS]
static DATA_BLOCK_CURRENT_SENSOR_s can_tableCurrentSensor
uint8_t stateRequestViaCan
uint32_t previousTimestampEnergyCounting[BS_NR_OF_STRINGS]
#define DATA_WRITE_DATA(...)
const uint8_t can_rxLength
uint32_t MATH_swapBytes_uint32_t(uint32_t val)
Swap bytes of uint32_t value.
uint32_t TEST_CAN_TxExternalTemperature(uint32_t id, uint8_t dlc, CAN_byteOrder_e byteOrder, uint8_t *pCanData, uint32_t *pMuxId)
uint32_t previousTimestampCurrentCounting[BS_NR_OF_STRINGS]
uint8_t invalidEnergyCountingMeasurement[BS_NR_OF_STRINGS]
uint8_t invalidSensorTemperatureMeasurement[BS_NR_OF_STRINGS]
uint32_t previousTimestampHighVoltage[BS_NR_OF_STRINGS][BS_NR_OF_VOLTAGES_FROM_CURRENT_SENSOR]
const uint8_t can_txLength
static uint32_t CAN_RxCurrentSensor(uint32_t id, uint8_t dlc, CAN_byteOrder_e byteOrder, uint8_t *canData, uint32_t *pMuxId)
const CAN_MSG_TX_TYPE_s can_txMessages[]
static DATA_BLOCK_OPEN_WIRE_s can_tableOpenWire
DIAG_RETURNTYPE_e DIAG_Handler(DIAG_ID_e diag_id, DIAG_EVENT_e event, DIAG_IMPACT_LEVEL_e impact, uint32_t data)
DIAG_Handler provides generic error handling, based on diagnosis group.
Headers for the configuration for the CAN module.
static void CAN_RxGetMessageDataFromCanData(uint8_t *pCanData, uint64_t *pMessage)
Copy CAN data from 8 bytes to a 64-bit variable.
uint32_t TEST_CAN_RxRequest(uint32_t id, uint8_t dlc, CAN_byteOrder_e byteOrder, uint8_t *pCanData, uint32_t *pMuxId)
int32_t energyCounter_Wh[BS_NR_OF_STRINGS]
int32_t current_mA[BS_NR_OF_STRINGS]
#define FAS_ASSERT(x)
Assertion macro that asserts that x is true.
uint32_t TEST_CAN_TxVoltageMinMax(uint32_t id, uint8_t dlc, CAN_byteOrder_e byteOrder, uint8_t *pCanData, uint32_t *pMuxId)
static void CAN_TxSetCanDataWithMessageData(uint64_t *pMessage, uint8_t *pCanData)
Copy CAN data from a 64-bit variable to 8 bytes. This function is used to copy a 64-bit CAN message t...
uint8_t invalidCurrentMeasurement[BS_NR_OF_STRINGS]
static uint32_t CAN_RxDebug(uint32_t id, uint8_t dlc, CAN_byteOrder_e byteOrder, uint8_t *canData, uint32_t *pMuxId)
uint32_t TEST_CAN_TxPcbTemperature(uint32_t id, uint8_t dlc, CAN_byteOrder_e byteOrder, uint8_t *pCanData, uint32_t *pMuxId)
uint16_t MATH_swapBytes_uint16_t(uint16_t val)
Swap bytes of uint16_t value.
uint32_t timestampEnergyCounting[BS_NR_OF_STRINGS]
uint32_t OS_GetTickCount(void)
Returns OS based system tick value.
static uint32_t CAN_TxExternalTemperature(uint32_t id, uint8_t dlc, CAN_byteOrder_e byteOrder, uint8_t *canData, uint32_t *pMuxId)
math library for often used math functions
@ DATA_BLOCK_ID_ADC_TEMPERATURE
static uint32_t CAN_TxVoltage(uint32_t id, uint8_t dlc, CAN_byteOrder_e byteOrder, uint8_t *canData, uint32_t *pMuxId)
#define CAN_ID_SOFTWARE_RESET_MSG
static uint32_t CAN_RxImdInfo(uint32_t id, uint8_t dlc, CAN_byteOrder_e byteOrder, uint8_t *canData, uint32_t *pMuxId)
DATA_BLOCK_HEADER_s header
int32_t sensorTemperature_ddegC[BS_NR_OF_STRINGS]
int16_t cellVoltage_mV[BS_NR_OF_STRINGS][BS_NR_OF_BAT_CELLS]
uint16_t nrOpenWires[BS_NR_OF_STRINGS]
uint8_t previousStateRequestViaCan
uint32_t timestampHighVoltage[BS_NR_OF_STRINGS][BS_NR_OF_VOLTAGES_FROM_CURRENT_SENSOR]
uint32_t TEST_CAN_RxDebug(uint32_t id, uint8_t dlc, CAN_byteOrder_e byteOrder, uint8_t *pCanData, uint32_t *pMuxId)
uint32_t timestampCurrent[BS_NR_OF_STRINGS]
DATA_BLOCK_CELL_VOLTAGE_s * TEST_CAN_GetCellvoltageTab(void)
uint8_t stateRequestViaCanPending
int16_t maximumCellVoltage_mV[BS_NR_OF_STRINGS]
static void CAN_TxSetMessageDataWithSignalData(uint64_t *pMessage, uint64_t bitStart, uint8_t bitLength, uint64_t signal, CAN_byteOrder_e byteOrder)
Puts CAN signal data in a 64-bit variable. This function is used to compose a 64-bit CAN message....
@ DATA_BLOCK_ID_STATEREQUEST
static uint32_t CAN_RxRequest(uint32_t id, uint8_t dlc, CAN_byteOrder_e byteOrder, uint8_t *canData, uint32_t *pMuxId)
uint32_t TEST_CAN_RxSwVersion(uint32_t id, uint8_t dlc, CAN_byteOrder_e byteOrder, uint8_t *pCanData, uint32_t *pMuxId)
#define DATA_READ_DATA(...)
uint32_t previousTimestampCurrent[BS_NR_OF_STRINGS]
int32_t highVoltage_mV[BS_NR_OF_STRINGS][BS_NR_OF_VOLTAGES_FROM_CURRENT_SENSOR]
static DATA_BLOCK_ADC_TEMPERATURE_s can_tableAdcTemperatures
static uint32_t CAN_RxImdResponse(uint32_t id, uint8_t dlc, CAN_byteOrder_e byteOrder, uint8_t *canData, uint32_t *pMuxId)
int32_t currentCounter_As[BS_NR_OF_STRINGS]
#define NULL_PTR
Null pointer.
uint64_t MATH_swapBytes_uint64_t(uint64_t val)
Swap bytes of uint64_t value.
API header for the insulation monitoring device.
uint32_t previousTimestampPower[BS_NR_OF_STRINGS]
uint8_t invalidHighVoltageMeasurement[BS_NR_OF_STRINGS][BS_NR_OF_VOLTAGES_FROM_CURRENT_SENSOR]
uint32_t timestampCurrentCounting[BS_NR_OF_STRINGS]
@ DATA_BLOCK_ID_CELL_VOLTAGE
int32_t power_W[BS_NR_OF_STRINGS]
uint16_t nrCellMaximumCellVoltage[BS_NR_OF_STRINGS]
int16_t minimumCellVoltage_mV[BS_NR_OF_STRINGS]
static uint32_t CAN_RxSwReset(uint32_t id, uint8_t dlc, CAN_byteOrder_e byteOrder, uint8_t *canData, uint32_t *pMuxId)
int16_t temperatureAdc1_ddegC[BS_NR_OF_TEMP_SENSORS_ON_ADC1]
QueueHandle_t imd_canDataQueue
@ DATA_BLOCK_ID_CURRENT_SENSOR
#define FAS_TRAP
Define that evaluates to essential boolean false thus tripping an assert.
DATA_BLOCK_HEADER_s header
DATA_BLOCK_HEADER_s header
uint32_t TEST_CAN_RxCurrentSensor(uint32_t id, uint8_t dlc, CAN_byteOrder_e byteOrder, uint8_t *pCanData, uint32_t *pMuxId)
@ DIAG_ID_DEEP_DISCHARGE_DETECTED
static void CAN_RxGetSignalDataFromMessageData(uint64_t message, uint64_t bitStart, uint8_t bitLength, uint64_t *pSignal, CAN_byteOrder_e byteOrder)
Gets CAN signal data from a 64-bit variable. This function is used to get signal data from a 64-bit C...
uint32_t TEST_CAN_TxVoltage(uint32_t id, uint8_t dlc, CAN_byteOrder_e byteOrder, uint8_t *pCanData, uint32_t *pMuxId)
uint32_t timestampPower[BS_NR_OF_STRINGS]