/************************************************************************/ /* */ /* National Instruments NI-VXI Software Interface */ /* (C) 1996, National Instruments */ /* */ /* Prototype Definitions */ /* */ /************************************************************************/ /* DO NOT MODIFY THIS FILE */ /************************************************************************/ /* The following file contains all of the prototype definitions * for the NI-VXI software specification interface. */ #if !defined(nivxi_h) #define nivxi_h #if defined(__cplusplus) || defined(__cplusplus__) extern "C" { #endif #include "datasize.h" #if defined(VXINT) #pragma pack(2) #endif #include "busacc.h" #include "devinfo.h" #include "sysint.h" #include "trig.h" #include "vxiint.h" #include "ws.h" /* === Return codes common to all NI-VXI functions ==================== */ #if !defined(NIVXI_OK) #define NIVXI_OK (NIVXI_STATUS)( 0) #endif #define NO_HARDWARE_SUPPORT (NIVXI_STATUS)(-1) #define INVALID_MAINFRAME (NIVXI_STATUS)(-2) #define NIVXI_SYSTEM_ERROR (NIVXI_STATUS)(0x8000) #if defined(_CVI_) #pragma EnableLibraryRuntimeChecking #endif /* === Global Variables =============================================== */ #if defined(VXIWIN) || defined(VXIWIN32) || defined(VXINT) typedef struct tag_global_struct { INT32 d_MyResmanTmo; UINT16 d_MyServArea; UINT16 d_MyProtReg; UINT16 d_MyReadProtResp; UINT16 d_MyNumHandlers; UINT16 d_MyNumInterrupters; volatile UINT16 d_MyStatusByte; volatile INT16 d_VXIintController; volatile UINT16 d_VXIintLevel; volatile UINT32 d_VXIintStatusId; volatile UINT32 d_ClockRecv; volatile UINT32 d_SoftResetRecv; volatile UINT32 d_SysfailRecv; volatile UINT32 d_ACfailRecv; volatile UINT32 d_BusErrorRecv; volatile UINT32 d_SysresetRecv; volatile UINT16 d_WSSwrtDone; volatile INT16 d_WSSwrtDoneStatus; volatile UINT32 d_WSSwrtDoneCount; volatile UINT16 d_WSSrdDone; volatile INT16 d_WSSrdDoneStatus; volatile UINT32 d_WSSrdDoneCount; UINT16 d_VXI_type; volatile UINT16 d_Bus_Error_Flag; volatile UINT16 d_Retry_Interrupt_Flag; UINT16 d_Board_Status_Loc; UINT16 d_Int_Status_Loc; volatile UINT16 d_INTCNTRL_COPY; volatile UINT16 d_MyNormalOperation; UINT16 d_MyHandlerToVME1; UINT16 d_MyHandlerToVME2; UINT16 d_MyHandlerToVME3; UINT16 d_MyHandlerToVME4; UINT16 d_MyHandlerToVME5; UINT16 d_MyHandlerToVME6; UINT16 d_MyHandlerToVME7; UINT16 d_MyInterrupterToVME1; UINT16 d_MyInterrupterToVME2; UINT16 d_MyInterrupterToVME3; UINT16 d_MyInterrupterToVME4; UINT16 d_MyInterrupterToVME5; UINT16 d_MyInterrupterToVME6; UINT16 d_MyInterrupterToVME7; volatile UINT32 d_MyEvents00_1F; volatile UINT32 d_MyEvents20_3F; volatile UINT32 d_MyEvents40_5F; volatile UINT32 d_MyEvents60_7F; volatile UINT32 d_WSStrgRecv; INT8 d_nivxi_path[256]; } global_struct; #define MyResmanTmo global_vars->d_MyResmanTmo #define MyServArea global_vars->d_MyServArea #define MyProtReg global_vars->d_MyProtReg #define MyReadProtResp global_vars->d_MyReadProtResp #define MyNumHandlers global_vars->d_MyNumHandlers #define MyNumInterrupters global_vars->d_MyNumInterrupters #define MyStatusByte global_vars->d_MyStatusByte #define VXIintController global_vars->d_VXIintController #define VXIintLevel global_vars->d_VXIintLevel #define VXIintStatusId global_vars->d_VXIintStatusId #define ClockRecv global_vars->d_ClockRecv #define SoftResetRecv global_vars->d_SoftResetRecv #define SysfailRecv global_vars->d_SysfailRecv #define ACfailRecv global_vars->d_ACfailRecv #define BusErrorRecv global_vars->d_BusErrorRecv #define SysresetRecv global_vars->d_SysresetRecv #define WSSwrtDone global_vars->d_WSSwrtDone #define WSSwrtDoneStatus global_vars->d_WSSwrtDoneStatus #define WSSwrtDoneCount global_vars->d_WSSwrtDoneCount #define WSSrdDone global_vars->d_WSSrdDone #define WSSrdDoneStatus global_vars->d_WSSrdDoneStatus #define WSSrdDoneCount global_vars->d_WSSrdDoneCount #define VXI_type global_vars->d_VXI_type #define Bus_Error_Flag global_vars->d_Bus_Error_Flag #define Retry_Interrupt_Flag global_vars->d_Retry_Interrupt_Flag #define Board_Status_Loc global_vars->d_Board_Status_Loc #define Int_Status_Loc global_vars->d_Int_Status_Loc #define INTCNTRL_COPY global_vars->d_INTCNTRL_COPY #define MyNormalOperation global_vars->d_MyNormalOperation #define MyHandlerToVME1 global_vars->d_MyHandlerToVME1 #define MyHandlerToVME2 global_vars->d_MyHandlerToVME2 #define MyHandlerToVME3 global_vars->d_MyHandlerToVME3 #define MyHandlerToVME4 global_vars->d_MyHandlerToVME4 #define MyHandlerToVME5 global_vars->d_MyHandlerToVME5 #define MyHandlerToVME6 global_vars->d_MyHandlerToVME6 #define MyHandlerToVME7 global_vars->d_MyHandlerToVME7 #define MyInterrupterToVME1 global_vars->d_MyInterrupterToVME1 #define MyInterrupterToVME2 global_vars->d_MyInterrupterToVME2 #define MyInterrupterToVME3 global_vars->d_MyInterrupterToVME3 #define MyInterrupterToVME4 global_vars->d_MyInterrupterToVME4 #define MyInterrupterToVME5 global_vars->d_MyInterrupterToVME5 #define MyInterrupterToVME6 global_vars->d_MyInterrupterToVME6 #define MyInterrupterToVME7 global_vars->d_MyInterrupterToVME7 #define MyEvents00_1F global_vars->d_MyEvents00_1F #define MyEvents20_3F global_vars->d_MyEvents20_3F #define MyEvents40_5F global_vars->d_MyEvents40_5F #define MyEvents60_7F global_vars->d_MyEvents60_7F #define WSStrgRecv global_vars->d_WSStrgRecv #define nivxi_path global_vars->d_nivxi_path extern global_struct NIVXI_DT *global_vars; #else extern INT32 MyResmanTmo; extern UINT16 MyServArea; extern UINT16 MyProtReg; extern UINT16 MyReadProtResp; extern UINT16 MyNumHandlers; extern UINT16 MyNumInterrupters; extern volatile UINT16 MyStatusByte; extern volatile INT16 VXIintController; extern volatile UINT16 VXIintLevel; extern volatile UINT32 VXIintStatusId; extern volatile UINT32 ClockRecv; extern volatile UINT32 SoftResetRecv; extern volatile UINT32 SysfailRecv; extern volatile UINT32 ACfailRecv; extern volatile UINT32 BusErrorRecv; extern volatile UINT32 SysresetRecv; extern volatile UINT16 WSSwrtDone; extern volatile INT16 WSSwrtDoneStatus; extern volatile UINT32 WSSwrtDoneCount; extern volatile UINT16 WSSrdDone; extern volatile INT16 WSSrdDoneStatus; extern volatile UINT32 WSSrdDoneCount; extern UINT16 VXI_type; extern volatile UINT16 Bus_Error_Flag; extern volatile UINT16 Retry_Interrupt_Flag; extern UINT16 Board_Status_Loc; extern UINT16 Int_Status_Loc; extern volatile UINT16 INTCNTRL_COPY; extern volatile UINT16 MyNormalOperation; extern UINT16 MyHandlerToVME1; extern UINT16 MyHandlerToVME2; extern UINT16 MyHandlerToVME3; extern UINT16 MyHandlerToVME4; extern UINT16 MyHandlerToVME5; extern UINT16 MyHandlerToVME6; extern UINT16 MyHandlerToVME7; extern UINT16 MyInterrupterToVME1; extern UINT16 MyInterrupterToVME2; extern UINT16 MyInterrupterToVME3; extern UINT16 MyInterrupterToVME4; extern UINT16 MyInterrupterToVME5; extern UINT16 MyInterrupterToVME6; extern UINT16 MyInterrupterToVME7; extern volatile UINT32 MyEvents00_1F; extern volatile UINT32 MyEvents20_3F; extern volatile UINT32 MyEvents40_5F; extern volatile UINT32 MyEvents60_7F; extern volatile UINT32 WSStrgRecv; extern INT8 nivxi_path[256]; #endif #if defined(VXINT) #pragma pack() #endif /* === Main NI-VXI Functions ============================================= */ #if !defined(__NO_PROTOTYPES__) /* === Begin With-Prototype Function Declarations Section =============== */ /* system configuration functions */ extern NIVXI_STATUS NIVXI_FN CloseVXIlibrary(void); extern NIVXI_STATUS NIVXI_FN CreateDevInfo(INT16 la); extern NIVXI_STATUS NIVXI_FN FindDevLA(INT8 NIVXI_DT *namepat, INT16 manid, INT16 modelcode, INT16 devclass, INT16 slot, INT16 mainframe, INT16 cmdrla, INT16 NIVXI_DT *la); extern NIVXI_STATUS NIVXI_FN GetDevInfo(INT16 la, UINT16 field, void NIVXI_DT *fieldvalue); extern NIVXI_STATUS NIVXI_FN GetDevInfoLong(INT16 la, UINT16 field, UINT32 NIVXI_DT *longvalue); extern NIVXI_STATUS NIVXI_FN GetDevInfoShort(INT16 la, UINT16 field, UINT16 NIVXI_DT *shortvalue); extern NIVXI_STATUS NIVXI_FN GetDevInfoStr(INT16 la, UINT16 field, UINT8 NIVXI_DT *stringvalue); extern NIVXI_STATUS NIVXI_FN InitVXIlibrary(void); extern NIVXI_STATUS NIVXI_FN SetDevInfo(INT16 la, UINT16 field, void NIVXI_DT *fieldvalue); extern NIVXI_STATUS NIVXI_FN SetDevInfoLong(INT16 la, UINT16 field, UINT32 longvalue); extern NIVXI_STATUS NIVXI_FN SetDevInfoShort(INT16 la, UINT16 field, UINT16 shortvalue); extern NIVXI_STATUS NIVXI_FN SetDevInfoStr(INT16 la, UINT16 field, UINT8 NIVXI_DT *stringvalue); /* word serial protocol functions -- commander and servant */ extern NIVXI_STATUS NIVXI_FN GenProtError(UINT16 proterr); extern NIVXI_HWSSCMD * NIVXI_FN GetWSScmdHandler(void); extern NIVXI_HWSSECMD * NIVXI_FN GetWSSEcmdHandler(void); extern NIVXI_HWSSLCMD * NIVXI_FN GetWSSLcmdHandler(void); extern NIVXI_HWSSRD * NIVXI_FN GetWSSrdHandler(void); extern NIVXI_HWSSWRT * NIVXI_FN GetWSSwrtHandler(void); extern NIVXI_STATUS NIVXI_FN RespProtError(void); extern NIVXI_STATUS NIVXI_FN SetWSScmdHandler(NIVXI_HWSSCMD *func); extern NIVXI_STATUS NIVXI_FN SetWSSEcmdHandler(NIVXI_HWSSECMD *func); extern NIVXI_STATUS NIVXI_FN SetWSSLcmdHandler(NIVXI_HWSSLCMD *func); extern NIVXI_STATUS NIVXI_FN SetWSSrdHandler(NIVXI_HWSSRD *func); extern NIVXI_STATUS NIVXI_FN SetWSSwrtHandler(NIVXI_HWSSWRT *func); extern NIVXI_STATUS NIVXI_FN WSabort(INT16 la, UINT16 abortop); extern NIVXI_STATUS NIVXI_FN WSclr(INT16 la); extern NIVXI_STATUS NIVXI_FN WScmd(INT16 la, UINT16 cmd, UINT16 respflag, UINT16 NIVXI_DT *response); extern NIVXI_STATUS NIVXI_FN WSEcmd(INT16 la, UINT16 cmdExt, UINT32 cmd, UINT16 respflag, UINT32 NIVXI_DT *response); extern NIVXI_STATUS NIVXI_FN WSgetTmo(INT32 NIVXI_DT *actualtimo); extern NIVXI_STATUS NIVXI_FN WSLcmd(INT16 la, UINT32 cmd, UINT16 respflag, UINT32 NIVXI_DT *response); extern NIVXI_STATUS NIVXI_FN WSLresp(INT16 la, UINT32 NIVXI_DT *response); extern NIVXI_STATUS NIVXI_FN WSrd(INT16 la, UINT8 NIVXI_DT *buf, UINT32 count, UINT16 mode, UINT32 NIVXI_DT *retcount); extern NIVXI_STATUS NIVXI_FN WSrdf(INT16 la, INT8 NIVXI_DT *filename, UINT32 count, UINT16 mode, UINT32 NIVXI_DT *retcount); extern NIVXI_STATUS NIVXI_FN WSrdi(INT16 la, UINT16 NIVXI_DT *buf, UINT32 count, UINT16 mode, UINT32 NIVXI_DT *retcount); extern NIVXI_STATUS NIVXI_FN WSrdl(INT16 la, UINT32 NIVXI_DT *buf, UINT32 count, UINT16 mode, UINT32 NIVXI_DT *retcount); extern NIVXI_STATUS NIVXI_FN WSresp(INT16 la, UINT16 NIVXI_DT *response); extern NIVXI_STATUS NIVXI_FN WSsetTmo(INT32 timo, INT32 NIVXI_DT *actualtimo); extern NIVXI_STATUS NIVXI_FN WStrg(INT16 la); extern NIVXI_STATUS NIVXI_FN WSwrt(INT16 la, UINT8 NIVXI_DT *buf, UINT32 count, UINT16 mode, UINT32 NIVXI_DT *retcount); extern NIVXI_STATUS NIVXI_FN WSwrtf(INT16 la, INT8 NIVXI_DT *filename, UINT32 count, UINT16 mode, UINT32 NIVXI_DT *retcount); extern NIVXI_STATUS NIVXI_FN WSwrti(INT16 la, UINT16 NIVXI_DT *buf, UINT32 count, UINT16 mode, UINT32 NIVXI_DT *retcount); extern NIVXI_STATUS NIVXI_FN WSwrtl(INT16 la, UINT32 NIVXI_DT *buf, UINT32 count, UINT16 mode, UINT32 NIVXI_DT *retcount); extern NIVXI_STATUS NIVXI_FN WSSabort(UINT16 abortop); extern NIVXI_STATUS NIVXI_FN WSSdisable(void); extern NIVXI_STATUS NIVXI_FN WSSenable(void); extern NIVXI_STATUS NIVXI_FN WSSLnoResp(void); extern NIVXI_STATUS NIVXI_FN WSSLsendResp(UINT32 response); extern NIVXI_STATUS NIVXI_FN WSSnoResp(void); extern NIVXI_STATUS NIVXI_FN WSSrd(UINT8 NIVXI_DT *buf, UINT32 count, UINT16 mode); extern NIVXI_STATUS NIVXI_FN WSSrdi(UINT16 NIVXI_DT *buf, UINT32 count, UINT16 mode); extern NIVXI_STATUS NIVXI_FN WSSrdl(UINT32 NIVXI_DT *buf, UINT32 count, UINT16 mode); extern NIVXI_STATUS NIVXI_FN WSSsendResp(UINT16 response); extern NIVXI_STATUS NIVXI_FN WSSwrt(UINT8 NIVXI_DT *buf, UINT32 count, UINT16 mode); extern NIVXI_STATUS NIVXI_FN WSSwrti(UINT16 NIVXI_DT *buf, UINT32 count, UINT16 mode); extern NIVXI_STATUS NIVXI_FN WSSwrtl(UINT32 NIVXI_DT *buf, UINT32 count, UINT16 mode); extern NIVXI_HWSSCMD DefaultWSScmdHandler; extern NIVXI_HWSSECMD DefaultWSSEcmdHandler; extern NIVXI_HWSSLCMD DefaultWSSLcmdHandler; extern NIVXI_HWSSRD DefaultWSSrdHandler; extern NIVXI_HWSSWRT DefaultWSSwrtHandler; /* VXIbus access functions -- high/low level and local resource access */ extern NIVXI_STATUS NIVXI_FN ClearBusError(void); extern NIVXI_STATUS NIVXI_FN GetByteOrder(UINT32 window, UINT16 NIVXI_DT *ordermode); extern NIVXI_STATUS NIVXI_FN GetContext(UINT32 window, UINT32 NIVXI_DT *context); extern INT16 NIVXI_FN GetMyLA(void); extern NIVXI_STATUS NIVXI_FN GetPrivilege(UINT32 window, UINT16 NIVXI_DT *priv); extern NIVXI_STATUS NIVXI_FN GetVXIbusStatus(INT16 controller, BusStatus NIVXI_DT *status); extern NIVXI_STATUS NIVXI_FN GetVXIbusStatusInd(INT16 controller, UINT16 field, INT16 NIVXI_DT *status); extern NIVXI_STATUS NIVXI_FN GetWindowRange(UINT32 window, UINT32 NIVXI_DT *windowbase, UINT32 NIVXI_DT *windowend); extern void NIVXI_DT * NIVXI_FN MapVXIAddress(UINT16 accessparms, UINT32 address, INT32 timo, UINT32 NIVXI_DT *window, NIVXI_STATUS NIVXI_DT *ret); extern NIVXI_STATUS NIVXI_FN MapVXIAddressSize(UINT32 size); extern NIVXI_STATUS NIVXI_FN ReadMODID(UINT16 NIVXI_DT *modid); extern NIVXI_STATUS NIVXI_FN RestoreContext(ContextStruct NIVXI_DT *contextlist); extern NIVXI_STATUS NIVXI_FN SaveContext(ContextStruct NIVXI_DT *contextlist); extern NIVXI_STATUS NIVXI_FN SetByteOrder(UINT32 window, UINT16 ordermode); extern NIVXI_STATUS NIVXI_FN SetContext(UINT32 window, UINT32 context); extern NIVXI_STATUS NIVXI_FN SetMODID(UINT16 enable, UINT16 modid); extern NIVXI_STATUS NIVXI_FN SetPrivilege(UINT32 window, UINT16 priv); extern NIVXI_STATUS NIVXI_FN UnMapVXIAddress(UINT32 window); extern NIVXI_STATUS NIVXI_FN VXIin(UINT16 accessparms, UINT32 address, UINT16 width, void NIVXI_DT *value); extern NIVXI_STATUS NIVXI_FN VXIinLR(UINT16 reg, UINT16 width, void NIVXI_DT *value); extern NIVXI_STATUS NIVXI_FN VXIinReg(INT16 la, UINT16 reg, UINT16 NIVXI_DT *value); extern NIVXI_STATUS NIVXI_FN VXImemAlloc(UINT32 size, void NIVXI_DT * NIVXI_DT *useraddr, UINT32 NIVXI_DT *vxiaddr); extern NIVXI_STATUS NIVXI_FN VXImemCopy(void NIVXI_DT *useraddr, void NIVXI_DT *bufaddr, UINT32 size, UINT16 dir); extern NIVXI_STATUS NIVXI_FN VXImemFree(void NIVXI_DT *useraddr); extern NIVXI_STATUS NIVXI_FN VXImove(UINT16 srcparms, UINT32 srcaddr, UINT16 destparms, UINT32 destaddr, UINT32 length, UINT16 width); extern NIVXI_STATUS NIVXI_FN VXIout(UINT16 accessparms, UINT32 address, UINT16 width, UINT32 value); extern NIVXI_STATUS NIVXI_FN VXIoutLR(UINT16 reg, UINT16 width, UINT32 value); extern NIVXI_STATUS NIVXI_FN VXIoutReg(INT16 la, UINT16 reg, UINT16 value); extern void NIVXI_FN VXIpeek(void NIVXI_DT *addressptr, UINT16 width, void NIVXI_DT *value); extern void NIVXI_FN VXIpoke(void NIVXI_DT *addressptr, UINT16 width, UINT32 value); /* signal functions */ extern NIVXI_STATUS NIVXI_FN DisableSignalInt(void); extern NIVXI_STATUS NIVXI_FN EnableSignalInt(void); extern NIVXI_HSIGNAL * NIVXI_FN GetSignalHandler(INT16 la); extern NIVXI_STATUS NIVXI_FN RouteSignal(INT16 la, UINT32 modemask); extern NIVXI_STATUS NIVXI_FN SetSignalHandler(INT16 la, NIVXI_HSIGNAL *func); extern NIVXI_STATUS NIVXI_FN SignalDeq(INT16 la, UINT32 signalmask, UINT16 NIVXI_DT *signal); extern NIVXI_STATUS NIVXI_FN SignalEnq(UINT16 signal); extern NIVXI_STATUS NIVXI_FN SignalJam(UINT16 signal); extern NIVXI_STATUS NIVXI_FN WaitForSignal(INT16 la, UINT32 signalmask, INT32 timeout, UINT16 NIVXI_DT *retsignal, UINT32 NIVXI_DT *retsignalmask); extern NIVXI_HSIGNAL DefaultSignalHandler; /* interrupt functions */ extern NIVXI_STATUS NIVXI_FN AcknowledgeVXIint(INT16 controller, UINT16 level, UINT32 NIVXI_DT *statusId); extern NIVXI_STATUS NIVXI_FN AssertVXIint(INT16 controller, UINT16 level, UINT32 statusId); extern NIVXI_STATUS NIVXI_FN DeAssertVXIint(INT16 controller, UINT16 level); extern NIVXI_STATUS NIVXI_FN DisableVXIint(INT16 controller, UINT16 levels); extern NIVXI_STATUS NIVXI_FN DisableVXItoSignalInt(INT16 controller, UINT16 levels); extern NIVXI_STATUS NIVXI_FN EnableVXIint(INT16 controller, UINT16 levels); extern NIVXI_STATUS NIVXI_FN EnableVXItoSignalInt(INT16 controller, UINT16 levels); extern NIVXI_HVXIINT * NIVXI_FN GetVXIintHandler(UINT16 level); extern NIVXI_HVXIINT * NIVXI_FN GetVXIintHandlerController(INT16 controller, UINT16 level); extern NIVXI_STATUS NIVXI_FN RouteVXIint(INT16 controller, UINT16 Sroute); extern NIVXI_STATUS NIVXI_FN SetVXIintHandler(UINT16 levels, NIVXI_HVXIINT *func); extern NIVXI_STATUS NIVXI_FN SetVXIintHandlerController(INT16 controller, UINT16 levels, NIVXI_HVXIINT *func); extern NIVXI_STATUS NIVXI_FN VXIintAcknowledgeMode(INT16 controller, UINT16 modes); extern NIVXI_HVXIINT DefaultVXIintHandler; /* trigger functions -- all functions with ECL or TTL in the name are * outdated, and are provided for backward compatability only -- new * functions with similar names (without ECL or TTL) should be used * instead, since the old style MAY NOT be supported in the future!!! */ extern NIVXI_STATUS NIVXI_FN AcknowledgeECLtrig(INT16 controller, UINT16 line); extern NIVXI_STATUS NIVXI_FN AcknowledgeTrig(INT16 controller, UINT16 line); extern NIVXI_STATUS NIVXI_FN AcknowledgeTTLtrig(INT16 controller, UINT16 line); extern NIVXI_STATUS NIVXI_FN DisableECLsense(INT16 controller, UINT16 line); extern NIVXI_STATUS NIVXI_FN DisableTrigSense(INT16 controller, UINT16 line); extern NIVXI_STATUS NIVXI_FN DisableTTLsense(INT16 controller, UINT16 line); extern NIVXI_STATUS NIVXI_FN EnableECLsense(INT16 controller, UINT16 line, UINT16 prot); extern NIVXI_STATUS NIVXI_FN EnableTrigSense(INT16 controller, UINT16 line, UINT16 prot); extern NIVXI_STATUS NIVXI_FN EnableTTLsense(INT16 controller, UINT16 line, UINT16 prot); extern NIVXI_HTRIG * NIVXI_FN GetECLtrigHandler(UINT16 line); extern NIVXI_HTRIG * NIVXI_FN GetTrigHandler(UINT16 line); extern NIVXI_HTRIG * NIVXI_FN GetTrigHandlerController(INT16 controller, UINT16 line); extern NIVXI_HTRIG * NIVXI_FN GetTTLtrigHandler(UINT16 line); extern NIVXI_STATUS NIVXI_FN MapTrigToTrig(INT16 controller, UINT16 srcTrig, UINT16 destTrig, UINT16 mode); extern NIVXI_STATUS NIVXI_FN SetECLtrigHandler(UINT16 lines, NIVXI_HTRIG *func); extern NIVXI_STATUS NIVXI_FN SetTrigHandler(UINT16 lines, NIVXI_HTRIG *func); extern NIVXI_STATUS NIVXI_FN SetTrigHandlerController(INT16 controller, UINT16 lines, NIVXI_HTRIG *func); extern NIVXI_STATUS NIVXI_FN SetTTLtrigHandler(UINT16 lines, NIVXI_HTRIG *func); extern NIVXI_STATUS NIVXI_FN SrcECLtrig(INT16 controller, UINT16 line, UINT16 prot, INT32 timeout); extern NIVXI_STATUS NIVXI_FN SrcTrig(INT16 controller, UINT16 line, UINT16 prot, INT32 timeout); extern NIVXI_STATUS NIVXI_FN SrcTTLtrig(INT16 controller, UINT16 line, UINT16 prot, INT32 timeout); extern NIVXI_STATUS NIVXI_FN TrigAssertConfig(INT16 controller, UINT16 line, UINT16 mode); extern NIVXI_STATUS NIVXI_FN TrigCntrConfig(INT16 controller, UINT16 mode, UINT16 source, UINT16 count); extern NIVXI_STATUS NIVXI_FN TrigExtConfig(INT16 controller, UINT16 extline, UINT16 mode); extern NIVXI_STATUS NIVXI_FN TrigTickConfig(INT16 controller, UINT16 mode, UINT16 source, UINT16 tcount1, UINT16 tcount2); extern NIVXI_STATUS NIVXI_FN UnMapTrigToTrig(INT16 controller, UINT16 srcTrig, UINT16 destTrig); extern NIVXI_STATUS NIVXI_FN WaitForECLtrig(INT16 controller, UINT16 line, INT32 timeout); extern NIVXI_STATUS NIVXI_FN WaitForTrig(INT16 controller, UINT16 line, INT32 timeout); extern NIVXI_STATUS NIVXI_FN WaitForTTLtrig(INT16 controller, UINT16 line, INT32 timeout); extern NIVXI_HTRIG DefaultECLtrigHandler; extern NIVXI_HTRIG DefaultTrigHandler; extern NIVXI_HTRIG DefaultTrigHandler2; extern NIVXI_HTRIG DefaultTTLtrigHandler; /* system interrupt handler functions */ extern NIVXI_STATUS NIVXI_FN AssertSysreset(INT16 controller, UINT16 mode); extern NIVXI_STATUS NIVXI_FN DisableACfail(INT16 controller); extern NIVXI_STATUS NIVXI_FN DisableSoftReset(void); extern NIVXI_STATUS NIVXI_FN DisableSysfail(INT16 controller); extern NIVXI_STATUS NIVXI_FN DisableSysreset(INT16 controller); extern NIVXI_STATUS NIVXI_FN EnableACfail(INT16 controller); extern NIVXI_STATUS NIVXI_FN EnableSoftReset(void); extern NIVXI_STATUS NIVXI_FN EnableSysfail(INT16 controller); extern NIVXI_STATUS NIVXI_FN EnableSysreset(INT16 controller); extern NIVXI_HACFAIL * NIVXI_FN GetACfailHandler(void); extern NIVXI_HACFAIL * NIVXI_FN GetACfailHandlerController(INT16 controller); extern NIVXI_HBUSERROR * NIVXI_FN GetBusErrorHandler(void); extern NIVXI_HSOFTRESET * NIVXI_FN GetSoftResetHandler(void); extern NIVXI_HSYSFAIL * NIVXI_FN GetSysfailHandler(void); extern NIVXI_HSYSFAIL * NIVXI_FN GetSysfailHandlerController(INT16 controller); extern NIVXI_HSYSRESET * NIVXI_FN GetSysresetHandler(void); extern NIVXI_HSYSRESET * NIVXI_FN GetSysresetHandlerController(INT16 controller); extern NIVXI_STATUS NIVXI_FN SetACfailHandler(NIVXI_HACFAIL *func); extern NIVXI_STATUS NIVXI_FN SetACfailHandlerController(INT16 controller, NIVXI_HACFAIL *func); extern NIVXI_STATUS NIVXI_FN SetBusErrorHandler(NIVXI_HBUSERROR *func); extern NIVXI_STATUS NIVXI_FN SetSoftResetHandler(NIVXI_HSOFTRESET *func); extern NIVXI_STATUS NIVXI_FN SetSysfailHandler(NIVXI_HSYSFAIL *func); extern NIVXI_STATUS NIVXI_FN SetSysfailHandlerController(INT16 controller, NIVXI_HSYSFAIL *func); extern NIVXI_STATUS NIVXI_FN SetSysresetHandler(NIVXI_HSYSRESET *func); extern NIVXI_STATUS NIVXI_FN SetSysresetHandlerController(INT16 controller, NIVXI_HSYSRESET *func); extern NIVXI_HACFAIL DefaultACfailHandler; extern NIVXI_HBUSERROR DefaultBusErrorHandler; extern NIVXI_HSOFTRESET DefaultSoftResetHandler; extern NIVXI_HSYSFAIL DefaultSysfailHandler; extern NIVXI_HSYSRESET DefaultSysresetHandler; /* VXIbus extender functions */ extern NIVXI_STATUS NIVXI_FN MapECLtrig(INT16 extender, UINT16 lines, UINT16 directions); extern NIVXI_STATUS NIVXI_FN MapTTLtrig(INT16 extender, UINT16 lines, UINT16 directions); extern NIVXI_STATUS NIVXI_FN MapUtilBus(INT16 extender, UINT16 modes); extern NIVXI_STATUS NIVXI_FN MapVXIint(INT16 extender, UINT16 levels, UINT16 directions); /* other functions available which are not NI-VXI documented */ extern NIVXI_STATUS NIVXI_FN DisableBlockMode(void); extern NIVXI_STATUS NIVXI_FN EnableBlockMode(void); extern NIVXI_HCLOCK * NIVXI_FN GetClockHandler(void); extern NIVXI_STATUS NIVXI_FN LPeek(UINT32 address, UINT16 width, void NIVXI_DT *value); extern NIVXI_STATUS NIVXI_FN LPoke(UINT32 address, UINT16 width, UINT32 value); extern NIVXI_STATUS NIVXI_FN RMCloseVXIlibrary(void); extern NIVXI_STATUS NIVXI_FN RMInitVXIlibrary(void); extern NIVXI_STATUS NIVXI_FN SetClockHandler(NIVXI_HCLOCK *func); extern NIVXI_HCLOCK DefaultClockHandler; /* === End With-Prototype Function Declarations Section =============== */ #else /* === Begin No-Prototype Function Declarations Section =============== */ /* system configuration functions */ extern NIVXI_STATUS NIVXI_FN CloseVXIlibrary(); extern NIVXI_STATUS NIVXI_FN CreateDevInfo(); extern NIVXI_STATUS NIVXI_FN FindDevLA(); extern NIVXI_STATUS NIVXI_FN GetDevInfo(); extern NIVXI_STATUS NIVXI_FN GetDevInfoLong(); extern NIVXI_STATUS NIVXI_FN GetDevInfoShort(); extern NIVXI_STATUS NIVXI_FN GetDevInfoStr(); extern NIVXI_STATUS NIVXI_FN InitVXIlibrary(); extern NIVXI_STATUS NIVXI_FN SetDevInfo(); extern NIVXI_STATUS NIVXI_FN SetDevInfoLong(); extern NIVXI_STATUS NIVXI_FN SetDevInfoShort(); extern NIVXI_STATUS NIVXI_FN SetDevInfoStr(); /* word serial protocol functions -- commander and servant */ extern NIVXI_STATUS NIVXI_FN GenProtError(); extern NIVXI_HWSSCMD * NIVXI_FN GetWSScmdHandler(); extern NIVXI_HWSSECMD * NIVXI_FN GetWSSEcmdHandler(); extern NIVXI_HWSSLCMD * NIVXI_FN GetWSSLcmdHandler(); extern NIVXI_HWSSRD * NIVXI_FN GetWSSrdHandler(); extern NIVXI_HWSSWRT * NIVXI_FN GetWSSwrtHandler(); extern NIVXI_STATUS NIVXI_FN RespProtError(); extern NIVXI_STATUS NIVXI_FN SetWSScmdHandler(); extern NIVXI_STATUS NIVXI_FN SetWSSEcmdHandler(); extern NIVXI_STATUS NIVXI_FN SetWSSLcmdHandler(); extern NIVXI_STATUS NIVXI_FN SetWSSrdHandler(); extern NIVXI_STATUS NIVXI_FN SetWSSwrtHandler(); extern NIVXI_STATUS NIVXI_FN WSabort(); extern NIVXI_STATUS NIVXI_FN WSclr(); extern NIVXI_STATUS NIVXI_FN WScmd(); extern NIVXI_STATUS NIVXI_FN WSEcmd(); extern NIVXI_STATUS NIVXI_FN WSgetTmo(); extern NIVXI_STATUS NIVXI_FN WSLcmd(); extern NIVXI_STATUS NIVXI_FN WSLresp(); extern NIVXI_STATUS NIVXI_FN WSrd(); extern NIVXI_STATUS NIVXI_FN WSrdf(); extern NIVXI_STATUS NIVXI_FN WSrdi(); extern NIVXI_STATUS NIVXI_FN WSrdl(); extern NIVXI_STATUS NIVXI_FN WSresp(); extern NIVXI_STATUS NIVXI_FN WSsetTmo(); extern NIVXI_STATUS NIVXI_FN WStrg(); extern NIVXI_STATUS NIVXI_FN WSwrt(); extern NIVXI_STATUS NIVXI_FN WSwrtf(); extern NIVXI_STATUS NIVXI_FN WSwrti(); extern NIVXI_STATUS NIVXI_FN WSwrtl(); extern NIVXI_STATUS NIVXI_FN WSSabort(); extern NIVXI_STATUS NIVXI_FN WSSdisable(); extern NIVXI_STATUS NIVXI_FN WSSenable(); extern NIVXI_STATUS NIVXI_FN WSSLnoResp(); extern NIVXI_STATUS NIVXI_FN WSSLsendResp(); extern NIVXI_STATUS NIVXI_FN WSSnoResp(); extern NIVXI_STATUS NIVXI_FN WSSrd(); extern NIVXI_STATUS NIVXI_FN WSSrdi(); extern NIVXI_STATUS NIVXI_FN WSSrdl(); extern NIVXI_STATUS NIVXI_FN WSSsendResp(); extern NIVXI_STATUS NIVXI_FN WSSwrt(); extern NIVXI_STATUS NIVXI_FN WSSwrti(); extern NIVXI_STATUS NIVXI_FN WSSwrtl(); extern NIVXI_HWSSCMD DefaultWSScmdHandler; extern NIVXI_HWSSECMD DefaultWSSEcmdHandler; extern NIVXI_HWSSLCMD DefaultWSSLcmdHandler; extern NIVXI_HWSSRD DefaultWSSrdHandler; extern NIVXI_HWSSWRT DefaultWSSwrtHandler; /* VXIbus access functions -- high/low level and local resource access */ extern NIVXI_STATUS NIVXI_FN ClearBusError(); extern NIVXI_STATUS NIVXI_FN GetByteOrder(); extern NIVXI_STATUS NIVXI_FN GetContext(); extern INT16 NIVXI_FN GetMyLA(); extern NIVXI_STATUS NIVXI_FN GetPrivilege(); extern NIVXI_STATUS NIVXI_FN GetVXIbusStatus(); extern NIVXI_STATUS NIVXI_FN GetVXIbusStatusInd(); extern NIVXI_STATUS NIVXI_FN GetWindowRange(); extern void NIVXI_DT * NIVXI_FN MapVXIAddress(); extern NIVXI_STATUS NIVXI_FN MapVXIAddressSize(); extern NIVXI_STATUS NIVXI_FN ReadMODID(); extern NIVXI_STATUS NIVXI_FN RestoreContext(); extern NIVXI_STATUS NIVXI_FN SaveContext(); extern NIVXI_STATUS NIVXI_FN SetByteOrder(); extern NIVXI_STATUS NIVXI_FN SetContext(); extern NIVXI_STATUS NIVXI_FN SetMODID(); extern NIVXI_STATUS NIVXI_FN SetPrivilege(); extern NIVXI_STATUS NIVXI_FN UnMapVXIAddress(); extern NIVXI_STATUS NIVXI_FN VXIin(); extern NIVXI_STATUS NIVXI_FN VXIinLR(); extern NIVXI_STATUS NIVXI_FN VXIinReg(); extern NIVXI_STATUS NIVXI_FN VXImemAlloc(); extern NIVXI_STATUS NIVXI_FN VXImemCopy(); extern NIVXI_STATUS NIVXI_FN VXImemFree(); extern NIVXI_STATUS NIVXI_FN VXImove(); extern NIVXI_STATUS NIVXI_FN VXIout(); extern NIVXI_STATUS NIVXI_FN VXIoutLR(); extern NIVXI_STATUS NIVXI_FN VXIoutReg(); extern void NIVXI_FN VXIpeek(); extern void NIVXI_FN VXIpoke(); /* signal functions */ extern NIVXI_STATUS NIVXI_FN DisableSignalInt(); extern NIVXI_STATUS NIVXI_FN EnableSignalInt(); extern NIVXI_HSIGNAL * NIVXI_FN GetSignalHandler(); extern NIVXI_STATUS NIVXI_FN RouteSignal(); extern NIVXI_STATUS NIVXI_FN SetSignalHandler(); extern NIVXI_STATUS NIVXI_FN SignalDeq(); extern NIVXI_STATUS NIVXI_FN SignalEnq(); extern NIVXI_STATUS NIVXI_FN SignalJam(); extern NIVXI_STATUS NIVXI_FN WaitForSignal(); extern NIVXI_HSIGNAL DefaultSignalHandler; /* interrupt functions */ extern NIVXI_STATUS NIVXI_FN AcknowledgeVXIint(); extern NIVXI_STATUS NIVXI_FN AssertVXIint(); extern NIVXI_STATUS NIVXI_FN DeAssertVXIint(); extern NIVXI_STATUS NIVXI_FN DisableVXIint(); extern NIVXI_STATUS NIVXI_FN DisableVXItoSignalInt(); extern NIVXI_STATUS NIVXI_FN EnableVXIint(); extern NIVXI_STATUS NIVXI_FN EnableVXItoSignalInt(); extern NIVXI_HVXIINT * NIVXI_FN GetVXIintHandler(); extern NIVXI_STATUS NIVXI_FN RouteVXIint(); extern NIVXI_STATUS NIVXI_FN SetVXIintHandler(); extern NIVXI_STATUS NIVXI_FN VXIintAcknowledgeMode(); extern NIVXI_HVXIINT DefaultVXIintHandler; /* trigger functions -- all functions with ECL or TTL in the name are * outdated, and are provided for backward compatability only -- new * functions with similar names (without ECL or TTL) should be used * instead, since the old style MAY NOT be supported in the future!!! */ extern NIVXI_STATUS NIVXI_FN AcknowledgeECLtrig(); extern NIVXI_STATUS NIVXI_FN AcknowledgeTrig(); extern NIVXI_STATUS NIVXI_FN AcknowledgeTTLtrig(); extern NIVXI_STATUS NIVXI_FN DisableECLsense(); extern NIVXI_STATUS NIVXI_FN DisableTrigSense(); extern NIVXI_STATUS NIVXI_FN DisableTTLsense(); extern NIVXI_STATUS NIVXI_FN EnableECLsense(); extern NIVXI_STATUS NIVXI_FN EnableTrigSense(); extern NIVXI_STATUS NIVXI_FN EnableTTLsense(); extern NIVXI_HTRIG * NIVXI_FN GetECLtrigHandler(); extern NIVXI_HTRIG * NIVXI_FN GetTrigHandler(); extern NIVXI_HTRIG * NIVXI_FN GetTTLtrigHandler(); extern NIVXI_STATUS NIVXI_FN MapTrigToTrig(); extern NIVXI_STATUS NIVXI_FN SetECLtrigHandler(); extern NIVXI_STATUS NIVXI_FN SetTrigHandler(); extern NIVXI_STATUS NIVXI_FN SetTTLtrigHandler(); extern NIVXI_STATUS NIVXI_FN SrcECLtrig(); extern NIVXI_STATUS NIVXI_FN SrcTrig(); extern NIVXI_STATUS NIVXI_FN SrcTTLtrig(); extern NIVXI_STATUS NIVXI_FN TrigAssertConfig(); extern NIVXI_STATUS NIVXI_FN TrigCntrConfig(); extern NIVXI_STATUS NIVXI_FN TrigExtConfig(); extern NIVXI_STATUS NIVXI_FN TrigTickConfig(); extern NIVXI_STATUS NIVXI_FN UnMapTrigToTrig(); extern NIVXI_STATUS NIVXI_FN WaitForECLtrig(); extern NIVXI_STATUS NIVXI_FN WaitForTrig(); extern NIVXI_STATUS NIVXI_FN WaitForTTLtrig(); extern NIVXI_HTRIG DefaultECLtrigHandler; extern NIVXI_HTRIG DefaultTrigHandler; extern NIVXI_HTRIG DefaultTrigHandler2; extern NIVXI_HTRIG DefaultTTLtrigHandler; /* system interrupt handler functions */ extern NIVXI_STATUS NIVXI_FN AssertSysreset(); extern NIVXI_STATUS NIVXI_FN DisableACfail(); extern NIVXI_STATUS NIVXI_FN DisableSoftReset(); extern NIVXI_STATUS NIVXI_FN DisableSysfail(); extern NIVXI_STATUS NIVXI_FN DisableSysreset(); extern NIVXI_STATUS NIVXI_FN EnableACfail(); extern NIVXI_STATUS NIVXI_FN EnableSoftReset(); extern NIVXI_STATUS NIVXI_FN EnableSysfail(); extern NIVXI_STATUS NIVXI_FN EnableSysreset(); extern NIVXI_HACFAIL * NIVXI_FN GetACfailHandler(); extern NIVXI_HBUSERROR * NIVXI_FN GetBusErrorHandler(); extern NIVXI_HSOFTRESET * NIVXI_FN GetSoftResetHandler(); extern NIVXI_HSYSFAIL * NIVXI_FN GetSysfailHandler(); extern NIVXI_HSYSRESET * NIVXI_FN GetSysresetHandler(); extern NIVXI_STATUS NIVXI_FN SetACfailHandler(); extern NIVXI_STATUS NIVXI_FN SetBusErrorHandler(); extern NIVXI_STATUS NIVXI_FN SetSoftResetHandler(); extern NIVXI_STATUS NIVXI_FN SetSysfailHandler(); extern NIVXI_STATUS NIVXI_FN SetSysresetHandler(); extern NIVXI_HACFAIL DefaultACfailHandler; extern NIVXI_HBUSERROR DefaultBusErrorHandler; extern NIVXI_HSOFTRESET DefaultSoftResetHandler; extern NIVXI_HSYSFAIL DefaultSysfailHandler; extern NIVXI_HSYSRESET DefaultSysresetHandler; /* VXIbus extender functions */ extern NIVXI_STATUS NIVXI_FN MapECLtrig(); extern NIVXI_STATUS NIVXI_FN MapTTLtrig(); extern NIVXI_STATUS NIVXI_FN MapUtilBus(); extern NIVXI_STATUS NIVXI_FN MapVXIint(); /* other functions available which are not NI-VXI documented */ extern NIVXI_STATUS NIVXI_FN DisableBlockMode(); extern NIVXI_STATUS NIVXI_FN EnableBlockMode(); extern NIVXI_HCLOCK * NIVXI_FN GetClockHandler(); extern NIVXI_STATUS NIVXI_FN LPeek(); extern NIVXI_STATUS NIVXI_FN LPoke(); extern NIVXI_STATUS NIVXI_FN RMCloseVXIlibrary(); extern NIVXI_STATUS NIVXI_FN RMInitVXIlibrary(); extern NIVXI_STATUS NIVXI_FN SetClockHandler(); extern NIVXI_HCLOCK DefaultClockHandler; /* === End No-Prototype Function Declarations Section =============== */ #endif /* === Macro definitions for VXIpeek/VXIpoke, override with () ======== */ #if defined(VXIDOS) || defined(VXIWIN) #if (defined(BINARY_COMPATIBLE)) || (NIVXI_DEVLOCATION == NIVXI_EXTERNAL) #define MXI1AND2_COMPATIBLE #endif #if defined(MXI1_COMPATIBLE) extern UINT8 GetBoardStatus (void); #if defined(M_I386) || defined(_M_I386) || defined(__I386__) #define VXIpeek(p,w,v) \ { \ register UINT8 board_status; \ \ *(v) = *(p); \ \ if (board_status = GetBoardStatus ()) \ { \ while (board_status & 0x05) \ { \ *(v) = *(p); \ board_status = GetBoardStatus (); \ } \ \ if (board_status & 0x0A) \ (*GetBusErrorHandler())(); \ } \ } #define VXIpoke(p,w,v) \ { \ register UINT8 board_status; \ \ *(p) = (v); \ \ if (board_status = GetBoardStatus ()) \ { \ while (board_status & 0x05) \ { \ *(p) = (v); \ board_status = GetBoardStatus (); \ } \ \ if (board_status & 0x0A) \ (*GetBusErrorHandler())(); \ } \ } #else #define VXIpeek(p,w,v) \ { \ if ((w)==4) \ (VXIpeek)(p,w,v); \ else \ { \ register UINT8 board_status; \ \ *(v) = *(p); \ \ if (board_status = GetBoardStatus ()) \ { \ while (board_status & 0x05) \ { \ *(v) = *(p); \ board_status = GetBoardStatus (); \ } \ \ if (board_status & 0x0A) \ (*GetBusErrorHandler())(); \ } \ } \ } #define VXIpoke(p,w,v) \ { \ if ((w)==4) \ (VXIpoke)(p,w,v); \ else \ { \ register UINT8 board_status; \ \ *(p) = (v); \ \ if (board_status = GetBoardStatus ()) \ { \ while (board_status & 0x05) \ { \ *(p) = (v); \ board_status = GetBoardStatus (); \ } \ \ if (board_status & 0x0A) \ (*GetBusErrorHandler())(); \ } \ } \ } #endif #elif defined(MXI1AND2_COMPATIBLE) extern UINT8 GetBoardStatus12 (void); #if defined(M_I386) || defined(_M_I386) || defined(__I386__) #define VXIpeek(p,w,v) \ { \ register UINT8 board_status; \ \ *(v) = *(p); \ \ if (board_status = GetBoardStatus12 ()) \ { \ while (board_status & 0x25) \ { \ *(v) = *(p); \ board_status = GetBoardStatus12 (); \ } \ \ if (board_status & 0x1A) \ (*GetBusErrorHandler())(); \ } \ } #define VXIpoke(p,w,v) \ { \ register UINT8 board_status; \ \ *(p) = (v); \ \ if (board_status = GetBoardStatus12 ()) \ { \ while (board_status & 0x25) \ { \ *(p) = (v); \ board_status = GetBoardStatus12 (); \ } \ \ if (board_status & 0x1A) \ (*GetBusErrorHandler())(); \ } \ } #else #define VXIpeek(p,w,v) \ { \ if ((w)==4) \ (VXIpeek)(p,w,v); \ else \ { \ register UINT8 board_status; \ \ *(v) = *(p); \ \ if (board_status = GetBoardStatus12 ()) \ { \ while (board_status & 0x25) \ { \ *(v) = *(p); \ board_status = GetBoardStatus12 (); \ } \ \ if (board_status & 0x1A) \ (*GetBusErrorHandler())(); \ } \ } \ } #define VXIpoke(p,w,v) \ { \ if ((w)==4) \ (VXIpoke)(p,w,v); \ else \ { \ register UINT8 board_status; \ \ *(p) = (v); \ \ if (board_status = GetBoardStatus12 ()) \ { \ while (board_status & 0x25) \ { \ *(p) = (v); \ board_status = GetBoardStatus12 (); \ } \ \ if (board_status & 0x1A) \ (*GetBusErrorHandler())(); \ } \ } \ } #endif #else /* code specifically for NIVXI_EMBEDDED without binary compatibility */ #if defined(M_I386) || defined(_M_I386) || defined(__I386__) #define VXIpeek(p,w,v) ( *(v) = *(p) ) #define VXIpoke(p,w,v) ( *(p) = (v) ) #else #define VXIpeek(p,w,v) if (w==4) (VXIpeek)(p,w,v); \ else *(v) = *(p); #define VXIpoke(p,w,v) if (w==4) (VXIpoke)(p,w,v); \ else *(p) = (v); #endif #endif #endif /* === End of Declarations =============================================== */ #if defined(__cplusplus) || defined(__cplusplus__) } #endif #endif