FreeCalypso > hg > freecalypso-citrine
view g23m-aci/l2p/l2p_types.h @ 26:51e1a3b213a3
started re-adding documentation
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Sat, 11 Jun 2016 07:01:34 +0000 |
parents | 75a11d740a02 |
children |
line wrap: on
line source
/* +----------------------------------------------------------------------------- | Project : BAT L2P () | Modul : L2P Types +----------------------------------------------------------------------------- | Copyright 2005 Texas Instruments Berlin, AG | All rights reserved. | | This file is confidential and a trade secret of Texas | Instruments Berlin, AG | The receipt of or possession of this file does not convey | any rights to reproduce or disclose its contents or to | manufacture, use, or sell anything it may describe, in | whole, or in part, without the specific written consent of | Texas Instruments Berlin, AG. +----------------------------------------------------------------------------- | Purpose : L2P type definitions definitions +----------------------------------------------------------------------------- */ #ifndef L2P_TYPES_H #define L2P_TYPES_H #include "typedefs.h" /********************************************************** ** ** Enumerated Type definitions ** ***********************************************************/ typedef enum { L2P_STAT_SUCCESS = 0, L2P_STAT_UNKNOWN_ERROR = -1, L2P_STAT_MSG_SEND_FAIL = -2, L2P_STAT_INVALID_PARAMETER = -3, L2P_STAT_NO_SUCH_BAT_ID = -4, L2P_STAT_NO_SUCH_MUX_ID = -5, L2P_STAT_UNABLE_TO_GET_BUFFER = -6, L2P_STAT_BAT_ID_ALREADY_EXISTS = -7, L2P_STAT_UNEXPECTED_FRAME_RXD = -8, L2P_STAT_CRC_FAIL = -9 } T_L2P_STATUS; typedef enum { L2P_FT_UNKNOWN_FRAME_TYPE=0, L2P_FT_START_FRAME, L2P_FT_CONTINUATION_FRAME, L2P_FT_END_FRAME, L2P_FT_COMPLETE_FRAME } T_L2P_FRAME_TYPE; typedef enum { L2P_SP_PSI, L2P_SP_MAX_NUM }T_L2P_SUPPORTED_PROTOCOLS; /********************************************************** ** ** Callback function type definitions ** ***********************************************************/ typedef void *(* L2P_Get_Rx_Buf_CB)(U8 batId); /* Data Size not needed - The user will always return a maximum size buffer */ typedef void *(* L2P_Get_Tx_Buf_CB)(U8 batId, U16 dataSize, void **seg_hdr_ptr, U16 *totalSize, U16 *segSize); typedef void *(* L2P_Get_Next_Seg_CB)(U8 batId, void *last_seg_hdr, void **seg_hdr_ptr, U16 *segSize); typedef int (* L2P_Send_Frame_CB)(U8 batId); typedef void (* L2P_Msg_Rxd_CB)(U8 batId , U8 muxId, U32 dataTag, void *dataPtr, U16 dataSize); /********************************************************** ** ** L2P Structure definitions ** ***********************************************************/ typedef struct { L2P_Get_Tx_Buf_CB Get_TxBuf_Cb; L2P_Get_Rx_Buf_CB Get_RxBuf_Cb; L2P_Get_Next_Seg_CB Get_Next_Seg_Cb; L2P_Send_Frame_CB Send_Frame_Cb; L2P_Msg_Rxd_CB Msg_Rxd_Cb; } T_L2P_CALLBACK_BLOCK; /* ** NDH : 20/06/05 : Modified the order of the fields in the L2P Control Block Structure ** to ensure that the compiler Byte Alignment is efficient so that the ** compiler does not add unnecessary padding bytes. ** ** In the following Comments the Bytes Alignment is show with the notation bN ** where N is 0 - 3. ** 8bit entries can be on any byte ** 16bit entries should be on b0 or b2 only ** 32bit entries should be on b0 only */ typedef struct l2p_control_block_tag { U8 batId; /* b0 : Bat Instance Id */ U8 frameId; /* b1 : Frame Id of last transmitted packet*/ U16 maxMTU; /* b2 : Maximum Transport Unit size */ T_L2P_SUPPORTED_PROTOCOLS protocolId; /* b0 : protocol used for link */ T_L2P_CALLBACK_BLOCK callbacks; /* b0 : Call back functions from calling entity */ char *rxBuf; /* b0 : Pointer to the current receive buffer */ U8 muxId; /* b0 : Client Id of the sender/receipient */ U8 cmdTagReceived; /* b1 : Flag to indicate whether the Cmd Tag has been fully received */ U16 dataSize; /* b2 : Amount of data expected in total (length of the Cmd Data excl the Cmd Tag) */ U32 receivedCmdTag; /* b0 : The value of the Cmd Tag received in the latest message*/ U16 bytesToBeRead; /* b0 : byte read counter must be persistent over several calls to L2P_Receive */ U8 pad_byte1; /* b2 : Padding byte - not used */ U8 pad_byre2; /* b3 : Padding byte - not used */ char *dataToBeRead; /* b0 : data read pointer must be persistent over several calls to L2P_Receive */ struct l2p_control_block_tag *next; /* b0 : Pointer to the next block in the L2P Linked-List */ } T_L2P_CONTROL_BLOCK; typedef struct { U8 frame_type; U8 frame_id; U8 protocol_id; U8 mux_id; UINT16 dataLen; /* length of the Command Data */ U16 frameLen; /* length of the frame, including L2 Frame Control Bytes */ } T_L2P_FRAME_CONTROL_BYTES; /********************************************************** ** ** L2P Size definitions ** ***********************************************************/ #define L2P_CONTROL_BLOCK_HDR_SIZE sizeof(T_L2P_CONTROL_BLOCK) #define L2P_FRAME_CONTROL_SIZE sizeof(T_L2P_FRAME_CONTROL_BYTES) #endif