/* ILC Data Device Corp. * * MIL-STD-1553 Simulator/Tester * 'C' Software Library * * BUS-69068 rel 1.0 * * Copyright (c) 1997 by ILC Data Device Corp. * All Rights Reserved. * * INT.H (HARDWARE INTERFACE MODULE) * * ILC Data Device Corp. * 105 Wilbur Place * Bohemia N.Y. 11716 * (516) 567-5600 * * Revision History for INT.H (HEADER FILE) * * Release Date Description * * 1.0 01-DEC-1997 initial release * 1.00.01 19-JUN-1998 increased size of IDEA_INFO.driver_ver from 6 to 10 * 09-SEP-1998 added hClass field to card structure device_t * 04-SEP-2001 Updated Linux support * 27-MAR-2002 Added routine to return RTL core revision. * */ #ifndef INT_H #define INT_H #ifdef LINUX #include #endif /* INTERFACE TYPE DEFINITIONS AND STRUCTURES -----------------------------------*/ /* structure defines the card_state */ typedef struct { S16BIT bc_emulated; /* determines if card specifies a bc or not */ S16BIT bcrt; /* determines bcrt state: INIT_STATE, HALTED, RUNNING*/ S16BIT mon; /* determines mon state: INIT_STATE, HALTED, RUNNING*/ S16BIT card; /* determines card's state: INIT_STATE, HALT_STATE, * RUN_BCRT_STATE, RUN_MONITOR_STATE, RUN_BCRT_MONITOR_STATE */ } CARD_STATE, *CARD_STATE_p; /* structure which defines configuration of card*/ typedef struct { U16BIT paragraph; char *bcrt_code; char *mon_code; char *imrlib; char *idea_sym; U16BIT int_req; char std_1553; U16BIT card_type; } DRV_CONFIG,*DRV_CONFIG_p; /* End of configuration structure */ /* structure which which gives information about the card */ typedef struct { U16BIT paragraph; S16BIT std_1553; S16BIT int_req; S16BIT card_type; S16BIT mon_type; S16BIT bcrt_type; S16BIT self_test; U32BIT part_number; char driver_ver[10]; }IDEA_INFO,*IDEA_INFO_p; /**** structure used to keep track of the context ****/ typedef struct { #ifdef LINUX pthread_t thDispatchInt; void* thResultInt; pthread_t thDispatchDma; void* thResultDma; #endif HANDLE hDriver; /* handle to the VxD */ U32BIT Devnode; /* the device node for the device */ U32BIT AttrBase; /* pointer to attribute memory base addr */ U32BIT MemBase; /* pointer to memory base address */ #ifdef DOS_EMULATION U32BIT MemBase2; /* pointer to second memory base address */ #endif #ifdef VX_WORKS U32BIT IOBase; /* offset to register(i/o map) */ #else U16BIT IOBase; /* offset to register(i/o map) */ #endif U16BIT Irq; /* level of irq */ U32BIT MemoryLength; /* size of ace memory(words) */ U8BIT Socket; /* pcmcia slot installation */ U8BIT CurPage; /* current page of memory */ U8BIT PageMode; /* type of paging desired */ U16BIT IrqMonCount; /* Host count for monitor interrupts */ CARD_STATE_p CardState; /* ptr. structure holds card state info.*/ IDEA_INFO_p IdeaInfo; /* ptr. structure holds card info. */ U16BIT TestFlag; /* flag for testing interrupts */ U32BIT hClass; /* handle to a Class */ /* Pointers to interrupt routines */ S16BIT (__stdcall *oldBCRTHandler)(S16BIT type, S16BIT param);/* ptr BC/RT isr */ S16BIT (__stdcall *oldMONHandler)(void); /* ptr to MON isr */ Error_t (*newBCRTHandler)(LPVOID pCrd, S16BIT type, S16BIT param);/* ptr BC/RT isr */ Error_t (*newBCRTHandlerEx)(LPVOID pCrd, S16BIT Type, S16BIT SubType, S16BIT Param); /* takes extended message IDs */ Error_t (*newMONHandler)(LPVOID pCrd); /* ptr to MON isr */ HANDLE hBlock; FILE *pReplayFile; /* handle to opened Reconstructor file */ HANDLE hBlockEvent; HANDLE hExitEvent; HANDLE hThread[2]; U32BIT dwThreadID[2]; U32BIT bIrqInstalled; U16BIT lastReadMonStkPtr; U8BIT IrigEnabled; HANDLE hThreadDma[2]; U32BIT dwThreadIDDma[2]; U8BIT *pHostDmaBuffer; U32BIT dwHostDmaBufferSplit; U32BIT dwHostDmaBufferSize; U32BIT dwHostDmaBufferHead; U32BIT dwHostDmaBufferTail; HANDLE hDriverDma; HANDLE hDmaBlockEvent; HANDLE hDmaExitEvent; #ifdef VX_WORKS SEM_ID syncSem; SEM_ID syncSemDma; int IsrTID; int DmaTID; U16BIT wModelID; U16BIT wChannel; U16BIT wDmaStatus; U16BIT GlueLogicVersion; U8BIT DoubleReadDualRam; U8BIT CorrectIrigTime; #endif #if (defined( _WIN32 ) || defined( LINUX )) U16BIT GlueLogicVersion; U8BIT DoubleReadDualRam; U8BIT CorrectIrigTime; U8BIT Add1Day; U8BIT VMECloseThreads; U16BIT LogicDevNumber; #endif #ifdef _WIN32 CRITICAL_SECTION crit_sec; #endif }Device_t,*Device_p; /* End of Device Structure */ /* INTERFACE FUNCTION PROTOTYPES ------------------------------------------*/ Error_t __DECL start_init_idea(void); /* dummy routines */ Error_t __DECL end_init_idea(void); /* returns the current state of the card */ Error_t __DECL card_state(CARD_STATE *state); Error_t __DECL ddcCardState(Device_p pCrd, CARD_STATE *state); /* returns information about the card, including part number */ Error_t __DECL get_idea_info(IDEA_INFO *info); IDEA_INFO __DECL ddcGetIdeaInfo(Device_p pCrd); /* halts the BC,RTs and Monitor */ Error_t __DECL halt_idea(void); Error_t __DECL ddcHaltIdea(Device_p pCrd); /* the function is no longer supported */ Error_t __DECL idea_address(S16BIT **bcrt,S16BIT **monitor); /* returns version number for RTL and driver along with part number */ Error_t __DECL idea_version(char *card_ver,char *driver_ver,char *serial_no); Error_t __DECL ddcIdeaVersion(Device_p pCrd,char *rtl_ver,char *driver_ver,char *part_no); Error_t __DECL idea_versionBuilt(U32BIT *built_version); /* returns version number for RTL core */ Error_t __DECL ddcIdeaCoreVersion(Device_p pCrd,char *rtl_core_ver); /* returns version number for FPGA Glue Logic */ Error_t __DECL ddcGetGlueLogicVersion(Device_p pCrd,U16BIT *gl_ver); /* Loads an already created setup file into memory, returns card with correct state */ Error_t __DECL load_setup_to_card(char *file_name,S16BIT card_num,S16BIT part_of_card); Error_t __DECL ddcLoadSetupToCard(Device_p pCrd,char *file_name,S16BIT part_of_card); /* initializes the card with a config structure */ Error_t __DECL reset_card(DRV_CONFIG *config); Error_t __DECL ddcResetCard(Device_p *pCrd,DRV_CONFIG *config, U16BIT LogNum); Error_t __DECL _ddcResetCardFlex(Device_p *ppCrd,DRV_CONFIG *config, U16BIT LogNum, char *i0File, char *embeddedVersion, S16BIT vhdlVersion); Error_t __DECL ddcResetCardSelfBoot(Device_p *ppCrd,DRV_CONFIG *config, U16BIT LogNum); /* reinitialize BC/RT with default values in shared mem */ Error_t __DECL reset_card_bcrt(DRV_CONFIG *config); Error_t __DECL ddcResetCardBCRT(Device_p *pCrd,DRV_CONFIG *config, U16BIT LogNum); /* reinitialize Monitor with default values in shared mem */ Error_t __DECL reset_card_monitor(DRV_CONFIG *config); Error_t __DECL ddcResetCardMonitor(Device_p *pCrd,DRV_CONFIG *config, U16BIT LogNum); /* compatibility "idea" resets (they call "card" resets) */ Error_t __DECL reset_idea(char *bcrt_file,char *mon_file,char *imr_lib_file); Error_t __DECL reset_idea_bcrt(char *bcrt_file,char *mon_file,char *imrlib_file); Error_t __DECL reset_idea_monitor(char *bcrt_file,char *mon_file,char *imrlib_file); /* This function supported on PCI cards */ Error_t __DECL set_amp(S16BIT val); Error_t __DECL ddcSetAmp(Device_p pCrd, S16BIT val); Error_t __DECL ddcReadAmp(Device_p pCrd, S16BIT *val); Error_t __DECL ddcSetCoupling(Device_p pCrd, U16BIT Coupling, U16BIT Termination); Error_t __DECL ddcReadCoupling(Device_p pCrd, S16BIT *val); /* This function set the response timeout value */ Error_t __DECL set_resp_timeout(S16BIT val); Error_t __DECL ddcSetRespTimeout(Device_p pCrd,S16BIT val); /* This function allows the user to change the card that the functions access */ Error_t __DECL set_card_number(S16BIT card_number); /* shuts down the card */ Error_t __DECL shut_down_idea(void); Error_t __DECL ddcShutDownIdea(Device_p *pCrd); Error_t __DECL restore_driver_variables(char *fname); Error_t __DECL ddcRestore_driver_variables(Device_p pCrd,char *fname); Error_t __DECL store_driver_variables(char *fname); Error_t __DECL ddcStore_driver_variables(Device_p pCrd,char *fname); Error_t _CreateBinaryPaths(char *EmbeddedPath, char *VHDLPath, char *EmbeddedFile, char *VHDLFile); Error_t _InitSharedRam(Device_p pCrd); Error_t _setDevActive(U16BIT LogNum, char YesNo); /* * END * INT.H (HARDWARE INTERFACE MODULE) */ #endif /* INT_H */