/** * MIL-STD 1553B Library - Carlo Gavazzi Space * * Filename : \file MilRt.h * * Purposes : \brief MIL-STD 1553B Library - Carlo Gavazzi Space * * Logical Task : * * Author : CGSpace * * Last Developer : $Author: lorenzo $ * * Revision : $Revision: 1.3 * * Checkout Tag : $Name: $ * * Last Modification : $Date: 2006/10/20 09:22:14 $ * * Location : $RCSfile: MilRt.h,v $ * * \version : $Header: /home/local/cvsrep/OBS_FM/1553_Lib/MilRt.h,v 1.10 2006/10/20 09:22:14 lorenzo Exp $ */ /* * Commitments History : * As reported in Main cvs Documentation * ( https://www.cvshome.org/docs/manual/cvs-1.11.18/cvs_12.html#SEC102 ) * The Modification Log has been posted at End Of File. */ // ---------------------------------------------------------------------------// /* MilRT.h - */ /* modification history -------------------- moved at EOF */ /* Purpose: The module contains the routine for the dynamic allocation of ACE memory Content: The module contains the following functions: - SUBHEADINGS Project : HSO/FIRST BASIC S/W Component : HSO/FIRST DRIVERS S/W Filename : $RCSfile: MilRt.h,v $ CI Number : Revision : $Revision: 1.10 $ Company : Carlo Gavazzi Space S.P.A. Author : Andrea Bertoli Creation Date : 2000/05/15 Last ChangeDate: $Date: 2006/10/20 09:22:14 $ SEE ALSO: ADD Ref: Inserted here reference with Architectural Design and Detail Document. Other Ref: Notes: */ #ifndef __MILRT__ #define __MILRT__ /* alternate status word bitmap */ #define RT_AltSta_S00 0X0002 #define RT_AltSta_S01 0X0004 #define RT_AltSta_S02 0X0008 #define RT_AltSta_S03 0X0010 #define RT_AltSta_S04 0X0020 #define RT_AltSta_S05 0X0040 #define RT_AltSta_RTFLAG 0X0080 #define RT_AltSta_SUBSYS_FLAG 0X0100 #define RT_AltSta_SRVC_REQST 0X0200 #define RT_AltSta_BUSY 0X0400 #define RT_AltSta_DYN_BUS_CTRL 0X0800 /* assigned mode codes */ #define RT_MODE_DYN_BUS_CTRL 0X0000 #define RT_MODE_SYNCHRONIZE 0X0001 #define RT_MODE_TX_STAT_WORD 0X0002 #define RT_MODE_INIT_SELF_TST 0X0003 #define RT_MODE_TXS_SHUTDN 0X0004 #define RT_MODE_OVER_TXS_SHUTDN 0X0005 #define RT_MODE_INH_TERM_FLAG 0X0006 #define RT_MODE_OVER_INH_TERM_FLAG 0X0007 #define RT_MODE_RESET_REMOTE_TERM 0X0008 #define RT_MODE_TXS_VECTOR_WORD 0X0010 #define RT_MODE_SYNCHRONIZE_DATA 0X0011 #define RT_MODE_TX_LAST_COMMAND 0X0012 #define RT_MODE_TX_BIT_WORD 0X0013 #define RT_MODE_SEL_TRANS_SHUTDN 0X0014 #define RT_MODE_OVER_SEL_TRANS_SHUTDN 0X0015 /* enhanced mode code data locations */ #define RtEmod_SYNC_WITH_DATA 0X0111 #define RtEmod_SEL_TXM_SHUT 0X0114 #define RtEmod_OVER_SEL_TXM_SHUT 0X0115 #define RtEmod_TRANSMIT_VECTOR_WORD 0X0120 #define RtEmod_TRANSMIT_LAST_COMMAND 0X0122 #define RtEmod_TRANSMIT_BIT_WORD 0X0123 #define RtEmod_BCST_SYNC_WITH_DATA 0X0131 #define RtEmod_BCST_SEL_TXM_SHUT 0X0134 #define RtEmod_BCST_OVER_SEL_TXM_SHUT 0X0135 /* rt bit word */ #define RtBitwd_CMD_WRD_CNTENTS_ERR 0X0001 #define RtBitwd_RT_RT_2ND_CMD_WD_ERR 0X0002 #define RtBitwd_RT_RT_NO_RESPONS_ERR 0X0004 #define RtBitwd_RT_RT_GP_SYNC_ADR_ER 0X0008 #define RtBitwd_PAR_MAN_ERR_WD_RXD 0X0010 #define RtBitwd_INCORRECT_SYNC_RXD 0X0020 #define RtBitwd_LOW_WORD_COUNT 0X0040 #define RtBitwd_HIGH_WORD_COUNT 0X0080 #define RtBitwd_CHANN_B_CHANN_A 0X0100 #define RtBitwd_TERMINAL_FLAG_INHD 0X0200 #define RtBitwd_TXTTR_SHUTDOWN_A 0X0400 #define RtBitwd_TXTTR_SHUTDOWN_B 0X0800 #define RtBitwd_HANDSHAKE_FAILURE 0X1000 #define RtBitwd_LOOP_TEST_FAILURE_A 0X2000 #define RtBitwd_LOOP_TEST_FAILURE_B 0X4000 #define RtBitwd_TRANSMITTER_TIMEOUT 0X8000 /* used with sa illegalization tables */ #define ALL 0xffff #define TX_CMD 0x0400 #define RX_CMD 0x0000 /* rt mode constants */ #define LOOKUP_A 0x0140 #define ILLEGALIZATION_TABLE 0x0300 #define STACK_A 0x0000 #define STACK_POINTER_A 0x0100 #define ENH_MODE_TABLE_START 0x0110 #define ENH_MODE_TABLE_END 0x013F #define ENH_MODE_IRQ_TABLE 0x0108 #define LAST_MESSAGE 0xFFFF #define RT_ENH_BIT_WORD_ADDR 0x0123 #define ENH_SA_BUSY_TABLE 0x0240 #define LOOK_UP_TABLE_TX_MSG 0x0160 #define LOOK_UP_TABLE_RX_MSG 0x0140 #define LOOK_UP_TABLE_BCST_MSG 0x0180 #define LOOK_UP_TABLE_SACW 0x01A0 /* types of rt buffers */ #define SINGLE_MESSAGE 0 #define RTBUFFER128 1 #define RTBUFFER256 2 #define RTBUFFER512 3 #define RTBUFFER1024 4 #define RTBUFFER2048 5 #define RTBUFFER4096 6 #define RTBUFFER8192 7 #define DOUBLE_MESSAGE 8 #define NO_BUFFER 0xFF /* buffer types */ #define RECEIVE 0 #define TRANSMIT 1 #define BROADCAST 2 /* rx buffer options */ #define SINGLEBUFFER 0 #define DOUBLEBUFFER 1 #define RT_CIRCULAR_BUFFER 1 #define RT_END_OF_MESSAGE 0 #define RT_ENABLE 1 #define RT_DISABLE 0 /* mode command interrupt lookup table entries */ #define RTMIRQ_DYNAMIC_BUS_CONTROL 0X0001 #define RTMIRQ_SYNCHRONIZE 0X0002 #define RTMIRQ_TRANSMIT_STATUS 0X0004 #define RTMIRQ_INITIATE_SELF_TEST 0X0008 #define RTMIRQ_TRANSMITTER_SHUTDOWN 0X0010 #define RTMIRQ_OVERRIDE_TX_SHUTDOWN 0X0020 #define RTMIRQ_INHIBIT_TERMINAL_FLAG 0X0041 #define RTMIRQ_OVERRIDE_INHIBIT_TF 0X0080 #define RTMIRQ_RESET_REMOTE_TERMINAL 0X0100 #define MIL_NUM_MESSAGE_SIZE 16 #define MIL_FRAME_CREATION_SUCCESS 0 #define MIL_SUCCESS_FRAME_READ 0 #define MIL_FRAME_NOT_READY 3 #define MIL_FRAME_READ_FAILED 4 #define MIL_FRAME_BAD_SETTING 5 #define MIL_FRAME_WRITE_SUCCESS 0 /* command word type definition */ typedef struct { unsigned int b_Spare:16; unsigned int b_RTaddr:5; unsigned int b_TR:1; unsigned int b_SubAddr:5; unsigned int b_WordCount:5; } CmdWordType; /* subaddress control word type definition */ typedef struct { unsigned BcstMm:3, BcstBuffInt:1, BcstEomInt:1, RxMm:3, RxBuffInt:1, RxEomInt:1, TxMm:3, TxBuffInt:1, TxEomInt:1, RcvBufferType:1, Spare:16; } SubAddrCtrlWrd; /* union to convert from structures to 16 bit words */ typedef union { unsigned int j_Word; SubAddrCtrlWrd w_Sacw; CmdWordType w_Cmd; } RTWords; /* rt uses dynamically allocated memory blocks */ typedef MemBlockHandle RTBlkHandle; typedef MemBlockType RTBlkType; /* frame element */ struct FrameElement { struct FrameElement *pw_NextFrameElement;/* pointer to the next element */ RxMsgPointerType *pw_CurrMsg; RxMsgPointerType *pw_InitMsg; unsigned int pm_WriteMsg; unsigned int j_Words; unsigned int j_Sa; unsigned int j_MemMng; }; typedef struct FrameElement FrameElementType; struct Frame { FrameElementType *pw_InitFrame; unsigned char d_FrameStatus; unsigned char j_PacketLenght; }; typedef struct Frame FrameType; struct MsgBlockStruct { unsigned int j_BlockStatus; unsigned int j_TimeTag; unsigned int j_DataPtr; RTWords u_Cw; unsigned int j_MilStackSize; }; typedef struct MsgBlockStruct MsgBlockStructType; struct ConfigDDCMemStruct { unsigned int j_Broadcast; unsigned int j_Transmit; unsigned int j_Receive; }; typedef struct ConfigDDCMemStruct ConfigDDCMemType; /* RT FUNCTION PROTOTYPES -------------------------------------------------*/ /* allows internal or external BIT word */ unsigned char MilReadParityBit( MilConf_p pw_MilConf ); /* sets RT address */ unsigned char MilRTAddress( MilConf_p pw_MilConf ); /* converts sacw struct to word */ unsigned int Sacw2Word( MilConf_p pw_MilConf, SubAddrCtrlWrd *pw_Sacw ); /* converts word to sacw struct */ SubAddrCtrlWrd Word2Sacw ( MilConf_p pw_MilConf, unsigned int j_Word ); MilError_t MilRTDefSA( MilConf_p pw_MilConf, unsigned int j_SubAddr, SubAddrCtrlWrd *pw_Sacw ); unsigned long MilRTMapBlk( MilConf_p pw_MilConf, unsigned int j_SubAddr, unsigned int j_t_r, RTBlkHandle pw_BlockHdl, unsigned int j_Offset ); MilError_t MilRTRun( MilConf_p pw_MilConf ); RTBlkHandle MilRTAllocBlk( MilConf_p pw_MilConf, unsigned char d_BlkType ); MilError_t MilRTFreeBlk( MilConf_p pw_MilConf, RTBlkHandle pw_BlockHdl ); MilError_t MilRTOpen( MilConf_p pw_MilConf ); MilError_t MilRTClose( MilConf_p pw_MilConf ); unsigned char MilRTMsgOK( MilConf_p pw_MilConf, MsgType *pw_Message ); MilError_t MilRTReadMsg( MilConf_p pw_MilConf, unsigned int j_MessageNum, MsgType *pw_Message ); MilError_t MilRTReadInactive( MilConf_p pw_MilConf, RTBlkHandle pw_MilBlockHdl, unsigned int *pw_Buffer ); MilError_t MilRTDefMsgLegal( MilConf_p pw_MilConf, unsigned int MessType, unsigned int j_Subaddr, unsigned int j_Wc ); MilError_t MilRTDefMsgIllegal( MilConf_p pw_MilConf, unsigned int j_MessType, unsigned int j_Subaddr, unsigned int j_Wc ); MilError_t MilRTAltStatusEna( MilConf_p pw_MilConf, unsigned int j_Selection ); MilError_t MilRTBusyTableEna( MilConf_p pw_MilConf, unsigned int j_Selection ); MilError_t MilRTExtBITWord( MilConf_p pw_MilConf, unsigned int j_Selection ); MilError_t MilRTBitInhibit( MilConf_p pw_MilConf, unsigned int j_Selection ); MilError_t MilRTBrdcst( MilConf_p pw_MilConf, unsigned int j_Selection ); MilError_t MilRTModeCode( MilConf_p pw_MilConf, unsigned int j_Enhanced, unsigned int j_OverRideEnable ); MilError_t MilRTAltStat( MilConf_p pw_MilConf, unsigned int j_Selection ); MilError_t MilRTMsgErrValid( MilConf_p pw_MilConf, unsigned int j_Selection ); MilError_t MilRTBusyValid( MilConf_p pw_MilConf, unsigned int j_Selection ); MilError_t MilRTIllegal(MilConf_p pw_MilConf, unsigned int j_Selection); MilError_t MilRTFlagWrap(MilConf_p pw_MilConf, unsigned int j_Selection); MilError_t MilRTFlag(MilConf_p pw_MilConf, unsigned int j_Selection); MilError_t MilRTSetSSflag(MilConf_p pw_MilConf, unsigned int j_Selection); MilError_t MilRTSetSvcReq(MilConf_p pw_MilConf, unsigned int j_Selection); MilError_t MilRTSetBusy(MilConf_p pw_MilConf, unsigned int j_Selection); MilError_t MilRTSetDba(MilConf_p pw_MilConf, unsigned int j_Selection); MilError_t MilRTEnhMM(MilConf_p pw_MilConf, unsigned int j_Selection); MilError_t MilRTEnhModeCode(MilConf_p pw_MilConf, unsigned int j_Selection); MilError_t MilRTSeparateBcst(MilConf_p pw_MilConf, unsigned int j_Selection); unsigned int MilRTReadEnhMCData(MilConf_p pw_MilConf, unsigned int j_Addr); MilError_t MilRTWriteEnhMCData(MilConf_p pw_MilConf, unsigned int j_Addr, unsigned int j_Data); MilError_t MilRTModeIrqEnable( MilConf_p pw_MilConf, unsigned int j_Broadcast, unsigned char d_t_r, unsigned char d_Data, unsigned int j_Map); MilError_t MilRTModeIrqDisable( MilConf_p pw_MilConf, unsigned char d_Broadcast, unsigned char d_t_r, unsigned char d_Data, unsigned int j_Map); MilError_t MilRTExtBITWrite( MilConf_p pw_MilConf, unsigned int j_Map); unsigned int MilRTBITRead(MilConf_p pw_MilConf); MilError_t MilRTBusyBitEnable( MilConf_p pw_MilConf, unsigned char d_Broadcast, unsigned char d_t_r, unsigned char d_Sa); MilError_t MilRTBusyBitDisable( MilConf_p pw_MilConf, unsigned char d_Broadcast, unsigned char d_t_r, unsigned char d_Sa); MilError_t MilRTAltStatusWrite( MilConf_p pw_MilConf, unsigned int j_Map); unsigned int MilRTAltStatusRead(MilConf_p pw_MilConf); void MilRTStop(MilConf_p pw_MilConf); MilError_t MilRTIrqMsgSaEnable( MilConf_p pw_MilConf, unsigned int j_SubAddr, unsigned char d_t_r, unsigned char d_Selection ); MilError_t MilRTIrqMsgSaDisable( MilConf_p pw_MilConf, unsigned int j_SubAddr, unsigned char d_t_r, unsigned char d_Selection ); MilError_t MilRTCreateMsgStruct( MilConf_p pw_MilConf, RxMsgPointerStructType *bw_VectorMsg ); MilError_t MilRTDeleteMsgStruct( MilConf_p pw_MilConf, RxMsgPointerStructType *bw_VectorMsg ); FrameType *MilRTCreateFrame( MilConf_p pw_MilConf ); MilError_t MilRTDeleteFrame( MilConf_p pw_MilConf, FrameType *pw_FrameID ); MilError_t MilRTAddMsgtoFrame( MilConf_p pw_MilConf, FrameType *pw_FrameID, unsigned int j_Sa, unsigned char d_t_r, unsigned int j_Words ); MilError_t MilRTFrameRead( MilConf_p pw_MilConf, FrameType *pw_FrameID, unsigned int *pj_Buffer ); MilError_t MilRTFrameWrite( MilConf_p pw_MilConf, FrameType *pw_FrameID, unsigned int *pj_Buffer ); MilError_t MilRTReadSingleMsg( MilConf_p pw_MilConf, unsigned int *pj_Buffer, unsigned int j_Sa, unsigned int j_WordCount ); MilError_t MilRTWriteSingleMsg( MilConf_p pw_MilConf, unsigned int *pj_Buffer, unsigned int j_Sa, unsigned int j_WordCount ); MilError_t MilRTCreateSingleMsg(MilConf_p pw_MilConf, unsigned int j_Sa, unsigned char d_t_r, unsigned int j_Words); MilError_t MilRTDeleteSingleMsg(MilConf_p pw_MilConf, unsigned int j_Sa, unsigned char d_t_r); MilError_t MilRTConfigMemory( MilConf_p pw_MilConf ); #endif /* __MILINIT__ */ // ---------------------------------------------------------------------------// /* * modification history * -------------------- * $Log: MilRt.h,v $ * Revision 1.10 2006/10/20 09:22:14 lorenzo * 1553 library updated * * Revision 1.9 2006/06/07 11:44:56 scige * Some More Comment * by Scige John Liu IFSI * * Revision 1.8 2006/04/27 10:21:44 scige * Some more Comment alignement before STRONG COMMENTING * * Revision 1.7 2006/02/15 14:56:57 scige * Abstract comment reformatted * History log replaced or moved at end of file * * Revision 1.6 2006/02/15 14:34:03 scige * Some more comments restored * * Revision 1.3 2005/09/16 13:09:39 scige * *** empty log message *** * * Revision 1.1 2005/08/10 12:53:39 scige * Communication Library: 1553 * com1553 * Base Common Version of Spire/Pacs OBS * */