/************************************************************************** * * Copyright (c) 2024-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 CommBuffers.h * * @author (last) Sean * @date (last) 30-Jul-2024 * * @author (original) Sean * @date (original) 30-Jul-2024 * ***************************************************************************/ #ifndef __COMM_BUFFERS_H__ #define __COMM_BUFFERS_H__ /** * @defgroup CommBuffers CommBuffers * @brief The communication buffers unit provides buffering services for * incoming and outgoing CAN data. A separate buffer is provided for each * CAN ID (channel) so that frame order is maintained for a given channel. * * @addtogroup CommBuffers * @{ */ // ********** public definitions ********** /// Enumeration of CAN communication buffers. Buffers are ordered by priority. typedef enum Comm_Buffers { COMM_BUFFER_NOT_USED = 0, ///< CAN message boxes start at 1 so we will not use this buffer #ifdef _TD_ COMM_BUFFER_OUT_CAN_TD_ALARM, ///< Buffer for outgoing TD alarm messages (channel 1) COMM_BUFFER_IN_CAN_DD_ALARM, ///< Buffer for incoming DD alarm messages (channel 2) COMM_BUFFER_IN_CAN_RO_ALARM, ///< Buffer for incoming RO alarm messages (channel 4) COMM_BUFFER_IN_CAN_UI_ALARM, ///< Buffer for incoming UI alarm messages (channel 8) COMM_BUFFER_OUT_CAN_TD_2_DD, ///< Buffer for outgoing TD to DD messages (channel 10) COMM_BUFFER_IN_CAN_DD_2_TD, ///< Buffer for incoming DD to HD messages (channel 11) COMM_BUFFER_OUT_CAN_TD_2_UI, ///< Buffer for outgoing TD to UI messages (channel 40) COMM_BUFFER_IN_CAN_UI_2_TD, ///< Buffer for incoming UI to TD messages (channel 41) COMM_BUFFER_OUT_CAN_TD_BROADCAST, ///< Buffer for outgoing TD broadcast messages (channel 100) COMM_BUFFER_IN_CAN_DD_BROADCAST, ///< Buffer for incoming DD broadcast messages (channel 101) COMM_BUFFER_IN_CAN_RO_BROADCAST, ///< Buffer for incoming RO broadcast messages (channel 102) COMM_BUFFER_IN_CAN_UI_BROADCAST, ///< Buffer for incoming UI broadcast messages (channel 103) COMM_BUFFER_IN_CAN_PC, ///< Buffer for incoming PC messages (channel 400-TD, 402-DD, 404-RO) COMM_BUFFER_OUT_CAN_PC, ///< Buffer for outgoing messages to PC (channel 401-TD, 403-DD, 405-RO) #endif #ifdef _DD_ COMM_BUFFER_IN_CAN_TD_ALARM, ///< Buffer for incoming TD alarm messages (channel 1) COMM_BUFFER_OUT_CAN_DD_ALARM, ///< Buffer for outgoing DD alarm messages (channel 2) COMM_BUFFER_OUT_CAN_FP_ALARM, ///< Buffer for incoming FP alarm messages (channel 4) COMM_BUFFER_IN_CAN_UI_ALARM, ///< Buffer for incoming UI alarm messages (channel 8) COMM_BUFFER_IN_CAN_TD_2_DD, ///< Buffer for incoming TD to DD messages (channel 10) COMM_BUFFER_OUT_CAN_DD_2_TD, ///< Buffer for outgoing DD to TD messages (channel 11) COMM_BUFFER_IN_CAN_TD_BROADCAST, ///< Buffer for incoming TD broadcast messages (channel 100) COMM_BUFFER_OUT_CAN_DD_BROADCAST, ///< Buffer for outgoing DD broadcast messages (channel 101) COMM_BUFFER_OUT_CAN_FP_BROADCAST, ///< Buffer for outgoing FP broadcast messages (channel 102) COMM_BUFFER_IN_CAN_UI_BROADCAST, ///< Buffer for incoming UI broadcast messages (channel 103) COMM_BUFFER_IN_DD_CAN_PC, ///< Buffer for incoming PC messages (channel 400-TD, 402-DD, 404-RO) COMM_BUFFER_OUT_DD_CAN_PC, ///< Buffer for outgoing messages to PC (channel 401-TD, 403-DD, 405-RO) COMM_BUFFER_IN_FP_CAN_PC, ///< Buffer for incoming PC messages (channel 400-TD, 402-DD, 404-RO) COMM_BUFFER_OUT_FP_CAN_PC, ///< Buffer for outgoing messages to PC (channel 401-TD, 403-DD, 405-RO) #endif NUM_OF_COMM_BUFFERS ///< Number of CAN communication buffers } COMM_BUFFER_T; /**@}*/ #ifdef _TD_ #include "TDCommon.h" #endif #ifdef _DD_ #include "DDCommon.h" #include "FPCommon.h" #endif /** * @addtogroup CommBuffers * @{ */ // ********** public function prototypes ********** void initCommBuffers( void ); void clearBuffer( COMM_BUFFER_T buffer ); BOOL addToCommBuffer( COMM_BUFFER_T buffer, U08 *data, U32 len ); U32 getFromCommBuffer( COMM_BUFFER_T buffer, U08 *data, U32 len ); U32 peekFromCommBuffer( COMM_BUFFER_T buffer, U08 *data, U32 len ); U32 numberOfBytesInCommBuffer( COMM_BUFFER_T buffer ); /**@}*/ #endif