/************************************************************************** * * Copyright (c) 2019-2022 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 Nash * @date (last) 26-Aug-2020 * * @author (original) Dara Navaei * @date (original) 05-Nov-2019 * ***************************************************************************/ #ifndef __COMM_BUFFERS_H__ #define __COMM_BUFFERS_H__ #include "HDCommon.h" /** * @defgroup CommBuffers CommBuffers * @brief The communication buffers module 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 COMM_BUFFER_OUT_CAN_HD_ALARM, ///< Buffer for outgoing HD alarm messages COMM_BUFFER_IN_CAN_DG_ALARM, ///< Buffer for incoming DG alarm messages COMM_BUFFER_IN_CAN_UI_ALARM, ///< Buffer for incoming UI alarm messages COMM_BUFFER_OUT_CAN_HD_2_DG, ///< Buffer for outgoing HD to DG messages COMM_BUFFER_IN_CAN_DG_2_HD, ///< Buffer for incoming DG to HD messages COMM_BUFFER_OUT_CAN_HD_2_UI, ///< Buffer for outgoing HD to UI messages COMM_BUFFER_OUT_CAN_HD_BROADCAST, ///< Buffer for outgoing HD broadcast messages COMM_BUFFER_IN_CAN_DG_BROADCAST, ///< Buffer for incoming DG broadcast messages COMM_BUFFER_IN_CAN_UI_2_HD, ///< Buffer for incoming UI to HD messages COMM_BUFFER_IN_CAN_UI_BROADCAST, ///< Buffer for incoming UI broadcast messages COMM_BUFFER_IN_CAN_PC, ///< Buffer for incoming PC to HD messages COMM_BUFFER_OUT_CAN_PC, ///< Buffer for outgoing HD to PC messages COMM_BUFFER_LAST_CAN_BUFFER = COMM_BUFFER_OUT_CAN_PC, ///< Last CAN buffer NUM_OF_COMM_BUFFERS ///< Number of CAN communication buffers } COMM_BUFFER_T; // ********** 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