234 lines
4.1 KiB
C
234 lines
4.1 KiB
C
#include "canerrorbox.h"
|
|
|
|
CanErrorBox CanErrors;
|
|
|
|
__weak void CanErrorCallbackEWG()
|
|
{
|
|
CanErrors.EWG.counter++;
|
|
}
|
|
|
|
__weak void CanErrorCallbackEPV()
|
|
{
|
|
CanErrors.EPV.counter++;
|
|
}
|
|
|
|
__weak void CanErrorCallbackBOF()
|
|
{
|
|
CanErrors.BOF.counter++;
|
|
}
|
|
|
|
__weak void CanErrorCallbackSTF()
|
|
{
|
|
CanErrors.STF.counter++;
|
|
}
|
|
|
|
__weak void CanErrorCallbackFOR()
|
|
{
|
|
CanErrors.FOR.counter++;
|
|
}
|
|
|
|
__weak void CanErrorCallbackACK()
|
|
{
|
|
CanErrors.ACK.counter++;
|
|
}
|
|
|
|
__weak void CanErrorCallbackBR()
|
|
{
|
|
CanErrors.BR.counter++;
|
|
}
|
|
|
|
__weak void CanErrorCallbackBD()
|
|
{
|
|
CanErrors.BD.counter++;
|
|
}
|
|
|
|
__weak void CanErrorCallbackCRC()
|
|
{
|
|
CanErrors.CRC_ERROR.counter++;
|
|
}
|
|
|
|
__weak void CanErrorCallbackRXFOV0()
|
|
{
|
|
CanErrors.RXFOV0.counter++;
|
|
}
|
|
|
|
__weak void CanErrorCallbackRXFOV1()
|
|
{
|
|
CanErrors.RXFOV1.counter++;
|
|
}
|
|
|
|
__weak void CanErrorCallbackTXALST0()
|
|
{
|
|
CanErrors.TXALST0.counter++;
|
|
}
|
|
|
|
__weak void CanErrorCallbackTXTERR0()
|
|
{
|
|
CanErrors.TXTERR0.counter++;
|
|
}
|
|
|
|
__weak void CanErrorCallbackTXALST1()
|
|
{
|
|
CanErrors.TXALST1.counter++;
|
|
}
|
|
|
|
__weak void CanErrorCallbackTXTERR1()
|
|
{
|
|
CanErrors.TXTERR1.counter++;
|
|
}
|
|
|
|
__weak void CanErrorCallbackTXALST2()
|
|
{
|
|
CanErrors.TXALST2.counter++;
|
|
}
|
|
|
|
__weak void CanErrorCallbackTXTERR2()
|
|
{
|
|
CanErrors.TXTERR2.counter++;
|
|
}
|
|
|
|
__weak void CanErrorCallbackTIMEOUT()
|
|
{
|
|
CanErrors.TIMEOUT.counter++;
|
|
}
|
|
|
|
__weak void CanErrorCallbackNOTINITIALIZED()
|
|
{
|
|
CanErrors.NOTINITIALIZED.counter++;
|
|
}
|
|
|
|
__weak void CanErrorCallbackNOTREADY()
|
|
{
|
|
CanErrors.NOTREADY.counter++;
|
|
}
|
|
|
|
__weak void CanErrorCallbackNOTSTARTED()
|
|
{
|
|
CanErrors.NOTSTARTED.counter++;
|
|
}
|
|
|
|
__weak void CanErrorCallbackPARAM()
|
|
{
|
|
CanErrors.PARAM.counter++;
|
|
}
|
|
|
|
#ifdef CAN_ERROR_BOX_ENABLED
|
|
void HAL_CAN_ErrorCallback(CAN_HandleTypeDef *hcan)
|
|
{
|
|
if(!hcan->ErrorCode)
|
|
{
|
|
// NO ERROR
|
|
return;
|
|
}
|
|
if(hcan->ErrorCode & HAL_CAN_ERROR_EWG)
|
|
{
|
|
// Protocol Error Warning
|
|
CanErrorCallbackEWG();
|
|
}
|
|
if(hcan->ErrorCode & HAL_CAN_ERROR_EPV)
|
|
{
|
|
// Error Passive
|
|
CanErrorCallbackEPV();
|
|
}
|
|
if(hcan->ErrorCode & HAL_CAN_ERROR_BOF)
|
|
{
|
|
// Bus-off error
|
|
CanErrorCallbackBOF();
|
|
}
|
|
if(hcan->ErrorCode & HAL_CAN_ERROR_STF)
|
|
{
|
|
// Stuff error
|
|
CanErrorCallbackSTF();
|
|
}
|
|
if(hcan->ErrorCode & HAL_CAN_ERROR_FOR)
|
|
{
|
|
// Form error
|
|
CanErrorCallbackFOR();
|
|
}
|
|
if(hcan->ErrorCode & HAL_CAN_ERROR_ACK)
|
|
{
|
|
// Acknowledgment error
|
|
CanErrorCallbackACK();
|
|
}
|
|
if(hcan->ErrorCode & HAL_CAN_ERROR_BR)
|
|
{
|
|
// Bit recessive error
|
|
CanErrorCallbackBR();
|
|
}
|
|
if(hcan->ErrorCode & HAL_CAN_ERROR_BD)
|
|
{
|
|
// Bit dominant error
|
|
CanErrorCallbackBD();
|
|
}
|
|
if(hcan->ErrorCode & HAL_CAN_ERROR_CRC)
|
|
{
|
|
// CRC error
|
|
CanErrorCallbackCRC();
|
|
}
|
|
if(hcan->ErrorCode & HAL_CAN_ERROR_RX_FOV0)
|
|
{
|
|
// Rx FIFO0 overrun error
|
|
CanErrorCallbackRXFOV0();
|
|
}
|
|
if(hcan->ErrorCode & HAL_CAN_ERROR_RX_FOV1)
|
|
{
|
|
// Rx FIFO1 overrun error
|
|
CanErrorCallbackRXFOV1();
|
|
}
|
|
if(hcan->ErrorCode & HAL_CAN_ERROR_TX_ALST0)
|
|
{
|
|
// TxMailbox 0 transmit failure due to arbitration lost
|
|
CanErrorCallbackTXALST0();
|
|
}
|
|
if(hcan->ErrorCode & HAL_CAN_ERROR_TX_TERR0)
|
|
{
|
|
// TxMailbox 0 transmit failure due to transmit error
|
|
CanErrorCallbackTXTERR0();
|
|
}
|
|
if(hcan->ErrorCode & HAL_CAN_ERROR_TX_ALST1)
|
|
{
|
|
// TxMailbox 1 transmit failure due to arbitration lost
|
|
CanErrorCallbackTXALST1();
|
|
}
|
|
if(hcan->ErrorCode & HAL_CAN_ERROR_TX_TERR1)
|
|
{
|
|
// TxMailbox 1 transmit failure due to transmit error
|
|
CanErrorCallbackTXTERR1();
|
|
}
|
|
if(hcan->ErrorCode & HAL_CAN_ERROR_TX_ALST2)
|
|
{
|
|
// TxMailbox 2 transmit failure due to arbitration lost
|
|
CanErrorCallbackTXALST2();
|
|
}
|
|
if(hcan->ErrorCode & HAL_CAN_ERROR_TX_TERR2)
|
|
{
|
|
// TxMailbox 2 transmit failure due to transmit error
|
|
CanErrorCallbackTXTERR2();
|
|
}
|
|
if(hcan->ErrorCode & HAL_CAN_ERROR_TIMEOUT)
|
|
{
|
|
// Timeout error
|
|
CanErrorCallbackTIMEOUT();
|
|
}
|
|
if(hcan->ErrorCode & HAL_CAN_ERROR_NOT_INITIALIZED)
|
|
{
|
|
// Peripheral not initialized
|
|
CanErrorCallbackNOTINITIALIZED();
|
|
}
|
|
if(hcan->ErrorCode & HAL_CAN_ERROR_NOT_READY)
|
|
{
|
|
// Peripheral not ready
|
|
CanErrorCallbackNOTREADY();
|
|
}
|
|
if(hcan->ErrorCode & HAL_CAN_ERROR_NOT_STARTED)
|
|
{
|
|
// Peripheral not started
|
|
CanErrorCallbackNOTSTARTED();
|
|
}
|
|
if(hcan->ErrorCode & HAL_CAN_ERROR_PARAM)
|
|
{
|
|
// Parameter error
|
|
CanErrorCallbackPARAM();
|
|
}
|
|
}
|
|
#endif |