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

Header for the driver for the CAN module. More...

#include "can_cfg.h"
#include <stdint.h>
Include dependency graph for can.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  CAN_STATE_s
 

Macros

#define CAN_TOTAL_NUMBER_OF_MESSAGE_BOXES   (64u)
 
#define CAN_NR_OF_TX_MESSAGE_BOX   (32u)
 
#define CAN_TICK_ms   (10u)
 

Functions

STD_RETURN_TYPE_e CAN_DataSend (CAN_NODE_s *pNode, uint32_t id, CAN_IDENTIFIER_TYPE_e idType, uint8 *pData)
 Sends over CAN the data passed in parameters. This function goes over the message boxes and marks the ones that should be sent. More...
 
void CAN_SendMessagesFromQueue (void)
 Reads messages from TX Queue and sends them via CAN. More...
 
void CAN_MainFunction (void)
 Calls the functions to drive the CAN interface. Makes the CAN timing checks and sends the periodic messages. More...
 
void CAN_ReadRxBuffer (void)
 Checks the data received per CAN. A receive buffer is used because CAN frames are received in an interrupt routine. The TMS570LC4357 does not allow nested interrupts, so interrupts are deactivated during receive. Calls to the database do not work when interrupts are disabled. Receive callbacks are made within this function: as it is not called during an interrupt routine, calls to the database can be made. More...
 
void CAN_Initialize (void)
 Enables the CAN transceiver.. This function sets th pins to enable the CAN transceiver. It must be called before using the CAN interface. More...
 
void CAN_EnablePeriodic (bool command)
 Enables periodic sending per CAN. This is used to prevent sending uninitialized data per CAN (e.g., before the first LTC measurement cycle was completed). More...
 
bool CAN_IsCurrentSensorPresent (uint8_t stringNumber)
 set flag for presence of current sensor. More...
 
bool CAN_IsCurrentSensorCcPresent (uint8_t stringNumber)
 get flag if CC message from current sensor is received. More...
 
bool CAN_IsCurrentSensorEcPresent (uint8_t stringNumber)
 get flag if EC message from current sensor is received More...
 
CAN_STATE_sTEST_CAN_GetCANState (void)
 
void TEST_CAN_ValidateConfiguredTxMessagePeriod (void)
 
void TEST_CAN_ValidateConfiguredTxMessagePhase (void)
 
void TEST_CAN_CheckDatabaseNullPointer (CAN_SHIM_s canShim)
 
void TEST_CAN_TxInterrupt (canBASE_t *pNode, uint32 messageBox)
 
void TEST_CAN_RxInterrupt (canBASE_t *pNode, uint32 messageBox)
 
STD_RETURN_TYPE_e TEST_CAN_PeriodicTransmit (void)
 
uint32_t TEST_CAN_CalculateCounterResetValue (void)
 
void TEST_CAN_CheckCanTiming (void)
 
bool TEST_CAN_IsMessagePeriodElapsed (uint32_t ticksSinceStart, uint16_t messageIndex)
 
void TEST_CAN_SetCurrentSensorPresent (bool command, uint8_t stringNumber)
 
void TEST_CAN_SetCurrentSensorCcPresent (bool command, uint8_t stringNumber)
 
void TEST_CAN_SetCurrentSensorEcPresent (bool command, uint8_t stringNumber)
 
void TEST_CAN_CheckCanTimingOfCurrentSensor (void)
 
void TEST_CAN_ConfigureRxMailboxesForExtendedIdentifiers (void)
 
void TEST_CAN_InitializeTransceiver (void)
 
CAN_NODE_sTEST_CAN_GetNodeConfigurationStructFromRegisterAddress (canBASE_t *pNodeRegister)
 

Detailed Description

Header for the driver for the CAN module.

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-12-04 (date of creation)
Updated
2023-10-12 (date of last update)
Version
v1.6.0
Prefix
CAN

Provides the interfaces for initialization, receive and transmit handling

Definition in file can.h.

Macro Definition Documentation

◆ CAN_NR_OF_TX_MESSAGE_BOX

#define CAN_NR_OF_TX_MESSAGE_BOX   (32u)

Half of the 64 message boxes are defined for TX This is used to determined in the CAN interrupt routine if TX or RX case

Definition at line 74 of file can.h.

◆ CAN_TICK_ms

#define CAN_TICK_ms   (10u)

Task time slot where the CAN TX function is called. Repetition time of periodic CAN messages must be multiple of this (e.g., 1u, 10u or 100u)

Definition at line 79 of file can.h.

◆ CAN_TOTAL_NUMBER_OF_MESSAGE_BOXES

#define CAN_TOTAL_NUMBER_OF_MESSAGE_BOXES   (64u)

Total number of message boxes available for TMS570LC4357

Definition at line 69 of file can.h.

Function Documentation

◆ CAN_DataSend()

STD_RETURN_TYPE_e CAN_DataSend ( CAN_NODE_s pNode,
uint32_t  id,
CAN_IDENTIFIER_TYPE_e  idType,
uint8 *  pData 
)

Sends over CAN the data passed in parameters. This function goes over the message boxes and marks the ones that should be sent.

Parameters
[in,out]pNodeCAN interface to use
idID of message to send
idTypestandard or extended identifier
[out]pDatadata to send (8 bytes)
Returns
STD_OK if a message box was free to send, STD_NOT_OK otherwise

Parse all TX message boxes until we find a free one, then use it to send the CAN message. In the HAL, message box numbers start from 1, not 0.

Definition at line 923 of file can.c.

◆ CAN_EnablePeriodic()

void CAN_EnablePeriodic ( bool  command)

Enables periodic sending per CAN. This is used to prevent sending uninitialized data per CAN (e.g., before the first LTC measurement cycle was completed).

Definition at line 1006 of file can.c.

◆ CAN_Initialize()

void CAN_Initialize ( void  )

Enables the CAN transceiver.. This function sets th pins to enable the CAN transceiver. It must be called before using the CAN interface.

Definition at line 910 of file can.c.

Here is the call graph for this function:

◆ CAN_IsCurrentSensorCcPresent()

bool CAN_IsCurrentSensorCcPresent ( uint8_t  stringNumber)

get flag if CC message from current sensor is received.

Parameters
stringNumberaddressed string
Returns
true if CC message is being received, false otherwise

Definition at line 1019 of file can.c.

◆ CAN_IsCurrentSensorEcPresent()

bool CAN_IsCurrentSensorEcPresent ( uint8_t  stringNumber)

get flag if EC message from current sensor is received

Parameters
stringNumberaddressed string
Returns
true if EC message is being received, false otherwise

Definition at line 1024 of file can.c.

◆ CAN_IsCurrentSensorPresent()

bool CAN_IsCurrentSensorPresent ( uint8_t  stringNumber)

set flag for presence of current sensor.

Returns
retval true if a current sensor is present, false otherwise

Definition at line 1014 of file can.c.

◆ CAN_MainFunction()

void CAN_MainFunction ( void  )

Calls the functions to drive the CAN interface. Makes the CAN timing checks and sends the periodic messages.

Definition at line 981 of file can.c.

Here is the call graph for this function:

◆ CAN_ReadRxBuffer()

void CAN_ReadRxBuffer ( void  )

Checks the data received per CAN. A receive buffer is used because CAN frames are received in an interrupt routine. The TMS570LC4357 does not allow nested interrupts, so interrupts are deactivated during receive. Calls to the database do not work when interrupts are disabled. Receive callbacks are made within this function: as it is not called during an interrupt routine, calls to the database can be made.

Definition at line 988 of file can.c.

Here is the call graph for this function:

◆ CAN_SendMessagesFromQueue()

void CAN_SendMessagesFromQueue ( void  )

Reads messages from TX Queue and sends them via CAN.

Definition at line 966 of file can.c.

Here is the call graph for this function:

◆ TEST_CAN_CalculateCounterResetValue()

uint32_t TEST_CAN_CalculateCounterResetValue ( void  )

Definition at line 1068 of file can.c.

Here is the call graph for this function:

◆ TEST_CAN_CheckCanTiming()

void TEST_CAN_CheckCanTiming ( void  )

Definition at line 1071 of file can.c.

Here is the call graph for this function:

◆ TEST_CAN_CheckCanTimingOfCurrentSensor()

void TEST_CAN_CheckCanTimingOfCurrentSensor ( void  )

Definition at line 1087 of file can.c.

Here is the call graph for this function:

◆ TEST_CAN_CheckDatabaseNullPointer()

void TEST_CAN_CheckDatabaseNullPointer ( CAN_SHIM_s  canShim)

Definition at line 1056 of file can.c.

Here is the call graph for this function:

◆ TEST_CAN_ConfigureRxMailboxesForExtendedIdentifiers()

void TEST_CAN_ConfigureRxMailboxesForExtendedIdentifiers ( void  )

Definition at line 1091 of file can.c.

Here is the call graph for this function:

◆ TEST_CAN_GetCANState()

CAN_STATE_s* TEST_CAN_GetCANState ( void  )

Definition at line 1047 of file can.c.

◆ TEST_CAN_GetNodeConfigurationStructFromRegisterAddress()

CAN_NODE_s* TEST_CAN_GetNodeConfigurationStructFromRegisterAddress ( canBASE_t *  pNodeRegister)

Definition at line 1097 of file can.c.

Here is the call graph for this function:

◆ TEST_CAN_InitializeTransceiver()

void TEST_CAN_InitializeTransceiver ( void  )

Definition at line 1094 of file can.c.

Here is the call graph for this function:

◆ TEST_CAN_IsMessagePeriodElapsed()

bool TEST_CAN_IsMessagePeriodElapsed ( uint32_t  ticksSinceStart,
uint16_t  messageIndex 
)

Definition at line 1074 of file can.c.

Here is the call graph for this function:

◆ TEST_CAN_PeriodicTransmit()

STD_RETURN_TYPE_e TEST_CAN_PeriodicTransmit ( void  )

Definition at line 1065 of file can.c.

Here is the call graph for this function:

◆ TEST_CAN_RxInterrupt()

void TEST_CAN_RxInterrupt ( canBASE_t *  pNode,
uint32  messageBox 
)

Definition at line 1062 of file can.c.

Here is the call graph for this function:

◆ TEST_CAN_SetCurrentSensorCcPresent()

void TEST_CAN_SetCurrentSensorCcPresent ( bool  command,
uint8_t  stringNumber 
)

Definition at line 1081 of file can.c.

Here is the call graph for this function:

◆ TEST_CAN_SetCurrentSensorEcPresent()

void TEST_CAN_SetCurrentSensorEcPresent ( bool  command,
uint8_t  stringNumber 
)

Definition at line 1084 of file can.c.

Here is the call graph for this function:

◆ TEST_CAN_SetCurrentSensorPresent()

void TEST_CAN_SetCurrentSensorPresent ( bool  command,
uint8_t  stringNumber 
)

Definition at line 1078 of file can.c.

Here is the call graph for this function:

◆ TEST_CAN_TxInterrupt()

void TEST_CAN_TxInterrupt ( canBASE_t *  pNode,
uint32  messageBox 
)

Definition at line 1059 of file can.c.

Here is the call graph for this function:

◆ TEST_CAN_ValidateConfiguredTxMessagePeriod()

void TEST_CAN_ValidateConfiguredTxMessagePeriod ( void  )

Definition at line 1050 of file can.c.

Here is the call graph for this function:

◆ TEST_CAN_ValidateConfiguredTxMessagePhase()

void TEST_CAN_ValidateConfiguredTxMessagePhase ( void  )

Definition at line 1053 of file can.c.

Here is the call graph for this function: