Index: firmware/App/Services/SystemComm.h =================================================================== diff -u -ra303cd4258157a8fbcbd8af4dd2bbaadec1a736c -r7d4711edd7b40cd3e29f43e766f79a8a09586fe9 --- firmware/App/Services/SystemComm.h (.../SystemComm.h) (revision a303cd4258157a8fbcbd8af4dd2bbaadec1a736c) +++ firmware/App/Services/SystemComm.h (.../SystemComm.h) (revision 7d4711edd7b40cd3e29f43e766f79a8a09586fe9) @@ -1,41 +1,65 @@ -/************************************************************************** - * - * Copyright (c) 2019-2020 Diality Inc. - All Rights Reserved. - * - * THIS CODE MAY NOT BE COPIED OR REPRODUCED IN ANY FORM, IN PART OR IN - * WHOLE, WITHOUT THE EXPLICIT PERMISSION OF THE COPYRIGHT OWNER. - * - * @file SystemComm.h - * - * @date 08-Oct-2019 - * @author S. Nash - * - * @brief header file for System Communication service . - * - **************************************************************************/ +/************************************************************************** +* +* Copyright (c) 2019-2024 Diality Inc. - All Rights Reserved. +* +* THIS CODE MAY NOT BE COPIED OR REPRODUCED IN ANY FORM, IN PART OR IN +* WHOLE, WITHOUT THE EXPLICIT PERMISSION OF THE COPYRIGHT OWNER. +* +* @file SystemComm.h +* +* @author (last) Michael Garthwaite +* @date (last) 17-Aug-2023 +* +* @author (original) Dara Navaei +* @date (original) 05-Nov-2019 +* +***************************************************************************/ #ifndef __SYSTEM_COMM_H__ #define __SYSTEM_COMM_H__ -#include "Common.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 + * @{ + */ + // ********** public definitions ********** -#define MESSAGE_SYNC_BYTE 0xA5 +#define MESSAGE_SYNC_BYTE 0xA5 ///< Denali message syncronization byte. -#define CAN_MESSAGE_PAYLOAD_SIZE 8 -#define PC_MESSAGE_PACKET_SIZE 8 +#define CAN_MESSAGE_PAYLOAD_SIZE 8 ///< CAN frame payload size (in bytes). -typedef COMM_BUFFER_T CAN_MESSAGE_BOX_T; // the first 10 comm buffers align with the 10 active CAN message boxes +#define MSG_ID_ACK_MESSAGE_THAT_REQUIRES_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) + +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 ); -void handleUARTMsgRecvPacketInterrupt( void ); -void handleUARTMsgXmitPacketInterrupt( void ); +BOOL isCANBoxForXmit( CAN_MESSAGE_BOX_T srcCANBox ); +BOOL isCANBoxForRecv( CAN_MESSAGE_BOX_T srcCANBox ); +BOOL isHDCommunicating( void ); +BOOL isDGOnlyCANNode( void ); +BOOL addMsgToPendingACKList( MESSAGE_T *msg, COMM_BUFFER_T channel, U08 *msgData, U32 len ); +BOOL testSetHDCommunicationStatus( U32 value ); +BOOL testResetHDCommuncationStatus( void ); +BOOL testSetPendingACKOverride( U32 value ); +BOOL testResetPendingACKOverride( void ); + +/**@}*/ #endif