Index: firmware/App/Services/SystemComm.h =================================================================== diff -u -r359cf587f2f935ef9f40a16d17c4105efa653c1d -rab304e2ca6e3e40ed8cb12650e9855ae0b9649d8 --- firmware/App/Services/SystemComm.h (.../SystemComm.h) (revision 359cf587f2f935ef9f40a16d17c4105efa653c1d) +++ firmware/App/Services/SystemComm.h (.../SystemComm.h) (revision ab304e2ca6e3e40ed8cb12650e9855ae0b9649d8) @@ -7,51 +7,57 @@ * * @file SystemComm.h * -* @author (last) Sean -* @date (last) 27-Feb-2020 +* @author (last) Quang Nguyen +* @date (last) 24-Aug-2020 * * @author (original) Dara Navaei * @date (original) 05-Nov-2019 * ***************************************************************************/ + +#ifndef __SYSTEM_COMM_H__ +#define __SYSTEM_COMM_H__ + +#include "DGCommon.h" +#include "CommBuffers.h" +#include "MsgQueues.h" + +/** + * @defgroup SystemComm SystemComm + * @brief System communication module. Manages incoming and outgoing CAN frames. + * + * @addtogroup SystemComm + * @{ + */ -#ifndef __SYSTEM_COMM_H__ -#define __SYSTEM_COMM_H__ +// ********** public definitions ********** + +#define MESSAGE_SYNC_BYTE 0xA5 ///< Denali message syncronization byte. + +#define CAN_MESSAGE_PAYLOAD_SIZE 8 ///< CAN frame payload size (in bytes). +#ifdef DEBUG_ENABLED + #define PC_MESSAGE_PACKET_SIZE 8 +#endif + +#define MSG_ID_ACK 0xFFFF ///< Denali message ID for acknowledging received messages (when required). +#define MSG_ACK_BIT 0x8000 ///< ACK bit in sequence number that indicates an ACK is required. +#define MAX_MSG_SEQ_NO 0x7FFF ///< Maximum sequence number for Denali message (then wraps to 1). +#define MIN_MSG_SEQ_NO 0x0001 ///< Minimum sequence number for Denali message. +#define MAX_ACK_MSG_SIZE ( sizeof( MESSAGE_WRAPPER_T ) + 1 + CAN_MESSAGE_PAYLOAD_SIZE ) ///< Maximum size (in bytes) of Denali message including full (wrapped) message + sync + any CAN padding) -#include "DGCommon.h" -#include "CommBuffers.h" -#include "MsgQueues.h" +typedef COMM_BUFFER_T CAN_MESSAGE_BOX_T; ///< the CAN comm buffers align with the active CAN message boxes + +// ********** public function prototypes ********** + +void initSystemComm( void ); +void execSystemCommRx( void ); +void execSystemCommTx( void ); +void handleCANMsgInterrupt( CAN_MESSAGE_BOX_T srcCANBox ); +#ifdef DEBUG_ENABLED + void handleUARTMsgRecvPacketInterrupt( void ); + void handleUARTMsgXmitPacketInterrupt( void ); +#endif -// ********** public definitions ********** - -#define MESSAGE_SYNC_BYTE 0xA5 - -#define CAN_MESSAGE_PAYLOAD_SIZE 8 -#ifdef DEBUG_ENABLED - #define PC_MESSAGE_PACKET_SIZE 8 -#endif - -#define MSG_ID_ACK 0xFFFF -#define MSG_ACK_BIT 0x8000 -#define MAX_MSG_SEQ_NO 0x7FFF -#define MIN_MSG_SEQ_NO 0x0001 -#define MAX_ACK_MSG_SIZE ( sizeof( MESSAGE_WRAPPER_T ) + 1 + CAN_MESSAGE_PAYLOAD_SIZE ) // must hold full (wrapped) message + sync + any CAN padding - -typedef COMM_BUFFER_T CAN_MESSAGE_BOX_T; // the first 12 comm buffers align with the 12 active CAN message boxes - -// ********** public function prototypes ********** - -void initSystemComm( void ); -void execSystemCommRx( void ); -void execSystemCommTx( void ); -void handleCANMsgInterrupt( CAN_MESSAGE_BOX_T srcCANBox ); -#ifdef DEBUG_ENABLED - void handleUARTMsgRecvPacketInterrupt( void ); - void handleUARTMsgXmitPacketInterrupt( void ); -#endif -BOOL isHDCommunicating( void ); -BOOL addMsgToPendingACKList( MESSAGE_T *msg, COMM_BUFFER_T channel, U08 *msgData, U32 len ); - BOOL isCANBoxForXmit( CAN_MESSAGE_BOX_T srcCANBox ); BOOL isCANBoxForRecv( CAN_MESSAGE_BOX_T srcCANBox );