home *** CD-ROM | disk | FTP | other *** search
/ Chip 1997 September / CHIP_CD_1997_09_PL.iso / software / testsoft / labwind / demo.6 / main / include / nivxi.h < prev    next >
Encoding:
C/C++ Source or Header  |  1996-08-02  |  58.0 KB  |  1,117 lines

  1. /************************************************************************/
  2. /*                                                                      */
  3. /*             National Instruments NI-VXI Software Interface           */
  4. /*                   (C) 1996,  National Instruments                    */
  5. /*                                                                      */
  6. /*                         Prototype Definitions                        */
  7. /*                                                                      */
  8. /************************************************************************/
  9. /*                       DO NOT MODIFY THIS FILE                        */
  10. /************************************************************************/
  11. /* The following file contains all of the prototype definitions
  12.  * for the NI-VXI software specification interface.
  13.  */
  14.  
  15. #if !defined(nivxi_h)
  16. #define nivxi_h
  17.  
  18. #if defined(__cplusplus) || defined(__cplusplus__)
  19.    extern "C" {
  20. #endif
  21.  
  22. #include "datasize.h"
  23.  
  24. #if defined(VXINT)
  25. #pragma pack(2)
  26. #endif
  27.  
  28. #include "busacc.h"
  29. #include "devinfo.h"
  30. #include "sysint.h"
  31. #include "trig.h"
  32. #include "vxiint.h"
  33. #include "ws.h"
  34.  
  35. /* === Return codes common to all NI-VXI functions ==================== */
  36.  
  37. #if !defined(NIVXI_OK)
  38. #define NIVXI_OK              (NIVXI_STATUS)( 0)
  39. #endif
  40.  
  41. #define NO_HARDWARE_SUPPORT   (NIVXI_STATUS)(-1)
  42. #define INVALID_MAINFRAME     (NIVXI_STATUS)(-2)
  43. #define NIVXI_SYSTEM_ERROR    (NIVXI_STATUS)(0x8000)
  44.  
  45. #if defined(_CVI_)
  46. #pragma EnableLibraryRuntimeChecking
  47. #endif
  48.  
  49. /* === Global Variables =============================================== */
  50.  
  51. #if defined(VXIWIN) || defined(VXIWIN32) || defined(VXINT)
  52.  
  53. typedef struct tag_global_struct
  54. {
  55.             INT32  d_MyResmanTmo;
  56.             UINT16 d_MyServArea;
  57.             UINT16 d_MyProtReg;
  58.             UINT16 d_MyReadProtResp;
  59.             UINT16 d_MyNumHandlers;
  60.             UINT16 d_MyNumInterrupters;
  61.    volatile UINT16 d_MyStatusByte;
  62.    volatile INT16  d_VXIintController;
  63.    volatile UINT16 d_VXIintLevel;
  64.    volatile UINT32 d_VXIintStatusId;
  65.    volatile UINT32 d_ClockRecv;
  66.    volatile UINT32 d_SoftResetRecv;
  67.    volatile UINT32 d_SysfailRecv;
  68.    volatile UINT32 d_ACfailRecv;
  69.    volatile UINT32 d_BusErrorRecv;
  70.    volatile UINT32 d_SysresetRecv;
  71.    volatile UINT16 d_WSSwrtDone;
  72.    volatile INT16  d_WSSwrtDoneStatus;
  73.    volatile UINT32 d_WSSwrtDoneCount;
  74.    volatile UINT16 d_WSSrdDone;
  75.    volatile INT16  d_WSSrdDoneStatus;
  76.    volatile UINT32 d_WSSrdDoneCount;
  77.             UINT16 d_VXI_type;
  78.    volatile UINT16 d_Bus_Error_Flag;
  79.    volatile UINT16 d_Retry_Interrupt_Flag;
  80.             UINT16 d_Board_Status_Loc;
  81.             UINT16 d_Int_Status_Loc;
  82.    volatile UINT16 d_INTCNTRL_COPY;
  83.    volatile UINT16 d_MyNormalOperation;
  84.             UINT16 d_MyHandlerToVME1;
  85.             UINT16 d_MyHandlerToVME2;
  86.             UINT16 d_MyHandlerToVME3;
  87.             UINT16 d_MyHandlerToVME4;
  88.             UINT16 d_MyHandlerToVME5;
  89.             UINT16 d_MyHandlerToVME6;
  90.             UINT16 d_MyHandlerToVME7;
  91.             UINT16 d_MyInterrupterToVME1;
  92.             UINT16 d_MyInterrupterToVME2;
  93.             UINT16 d_MyInterrupterToVME3;
  94.             UINT16 d_MyInterrupterToVME4;
  95.             UINT16 d_MyInterrupterToVME5;
  96.             UINT16 d_MyInterrupterToVME6;
  97.             UINT16 d_MyInterrupterToVME7;
  98.    volatile UINT32 d_MyEvents00_1F;
  99.    volatile UINT32 d_MyEvents20_3F;
  100.    volatile UINT32 d_MyEvents40_5F;
  101.    volatile UINT32 d_MyEvents60_7F;
  102.    volatile UINT32 d_WSStrgRecv;
  103.             INT8   d_nivxi_path[256];
  104. } global_struct;
  105.  
  106. #define MyResmanTmo          global_vars->d_MyResmanTmo
  107. #define MyServArea           global_vars->d_MyServArea
  108. #define MyProtReg            global_vars->d_MyProtReg
  109. #define MyReadProtResp       global_vars->d_MyReadProtResp
  110. #define MyNumHandlers        global_vars->d_MyNumHandlers
  111. #define MyNumInterrupters    global_vars->d_MyNumInterrupters
  112. #define MyStatusByte         global_vars->d_MyStatusByte
  113. #define VXIintController     global_vars->d_VXIintController
  114. #define VXIintLevel          global_vars->d_VXIintLevel
  115. #define VXIintStatusId       global_vars->d_VXIintStatusId
  116. #define ClockRecv            global_vars->d_ClockRecv
  117. #define SoftResetRecv        global_vars->d_SoftResetRecv
  118. #define SysfailRecv          global_vars->d_SysfailRecv
  119. #define ACfailRecv           global_vars->d_ACfailRecv
  120. #define BusErrorRecv         global_vars->d_BusErrorRecv
  121. #define SysresetRecv         global_vars->d_SysresetRecv
  122. #define WSSwrtDone           global_vars->d_WSSwrtDone
  123. #define WSSwrtDoneStatus     global_vars->d_WSSwrtDoneStatus
  124. #define WSSwrtDoneCount      global_vars->d_WSSwrtDoneCount
  125. #define WSSrdDone            global_vars->d_WSSrdDone
  126. #define WSSrdDoneStatus      global_vars->d_WSSrdDoneStatus
  127. #define WSSrdDoneCount       global_vars->d_WSSrdDoneCount
  128. #define VXI_type             global_vars->d_VXI_type
  129. #define Bus_Error_Flag       global_vars->d_Bus_Error_Flag
  130. #define Retry_Interrupt_Flag global_vars->d_Retry_Interrupt_Flag
  131. #define Board_Status_Loc     global_vars->d_Board_Status_Loc
  132. #define Int_Status_Loc       global_vars->d_Int_Status_Loc
  133. #define INTCNTRL_COPY        global_vars->d_INTCNTRL_COPY
  134. #define MyNormalOperation    global_vars->d_MyNormalOperation
  135. #define MyHandlerToVME1      global_vars->d_MyHandlerToVME1
  136. #define MyHandlerToVME2      global_vars->d_MyHandlerToVME2
  137. #define MyHandlerToVME3      global_vars->d_MyHandlerToVME3
  138. #define MyHandlerToVME4      global_vars->d_MyHandlerToVME4
  139. #define MyHandlerToVME5      global_vars->d_MyHandlerToVME5
  140. #define MyHandlerToVME6      global_vars->d_MyHandlerToVME6
  141. #define MyHandlerToVME7      global_vars->d_MyHandlerToVME7
  142. #define MyInterrupterToVME1  global_vars->d_MyInterrupterToVME1
  143. #define MyInterrupterToVME2  global_vars->d_MyInterrupterToVME2
  144. #define MyInterrupterToVME3  global_vars->d_MyInterrupterToVME3
  145. #define MyInterrupterToVME4  global_vars->d_MyInterrupterToVME4
  146. #define MyInterrupterToVME5  global_vars->d_MyInterrupterToVME5
  147. #define MyInterrupterToVME6  global_vars->d_MyInterrupterToVME6
  148. #define MyInterrupterToVME7  global_vars->d_MyInterrupterToVME7
  149. #define MyEvents00_1F        global_vars->d_MyEvents00_1F
  150. #define MyEvents20_3F        global_vars->d_MyEvents20_3F
  151. #define MyEvents40_5F        global_vars->d_MyEvents40_5F
  152. #define MyEvents60_7F        global_vars->d_MyEvents60_7F
  153. #define WSStrgRecv           global_vars->d_WSStrgRecv
  154. #define nivxi_path           global_vars->d_nivxi_path
  155.  
  156. extern global_struct NIVXI_DT *global_vars;
  157.  
  158. #else
  159.  
  160. extern          INT32  MyResmanTmo;
  161. extern          UINT16 MyServArea;
  162. extern          UINT16 MyProtReg;
  163. extern          UINT16 MyReadProtResp;
  164. extern          UINT16 MyNumHandlers;
  165. extern          UINT16 MyNumInterrupters;
  166. extern volatile UINT16 MyStatusByte;
  167. extern volatile INT16  VXIintController;
  168. extern volatile UINT16 VXIintLevel;
  169. extern volatile UINT32 VXIintStatusId;
  170. extern volatile UINT32 ClockRecv;
  171. extern volatile UINT32 SoftResetRecv;
  172. extern volatile UINT32 SysfailRecv;
  173. extern volatile UINT32 ACfailRecv;
  174. extern volatile UINT32 BusErrorRecv;
  175. extern volatile UINT32 SysresetRecv;
  176. extern volatile UINT16 WSSwrtDone;
  177. extern volatile INT16  WSSwrtDoneStatus;
  178. extern volatile UINT32 WSSwrtDoneCount;
  179. extern volatile UINT16 WSSrdDone;
  180. extern volatile INT16  WSSrdDoneStatus;
  181. extern volatile UINT32 WSSrdDoneCount;
  182. extern          UINT16 VXI_type;
  183. extern volatile UINT16 Bus_Error_Flag;
  184. extern volatile UINT16 Retry_Interrupt_Flag;
  185. extern          UINT16 Board_Status_Loc;
  186. extern          UINT16 Int_Status_Loc;
  187. extern volatile UINT16 INTCNTRL_COPY;
  188. extern volatile UINT16 MyNormalOperation;
  189. extern          UINT16 MyHandlerToVME1;
  190. extern          UINT16 MyHandlerToVME2;
  191. extern          UINT16 MyHandlerToVME3;
  192. extern          UINT16 MyHandlerToVME4;
  193. extern          UINT16 MyHandlerToVME5;
  194. extern          UINT16 MyHandlerToVME6;
  195. extern          UINT16 MyHandlerToVME7;
  196. extern          UINT16 MyInterrupterToVME1;
  197. extern          UINT16 MyInterrupterToVME2;
  198. extern          UINT16 MyInterrupterToVME3;
  199. extern          UINT16 MyInterrupterToVME4;
  200. extern          UINT16 MyInterrupterToVME5;
  201. extern          UINT16 MyInterrupterToVME6;
  202. extern          UINT16 MyInterrupterToVME7;
  203. extern volatile UINT32 MyEvents00_1F;
  204. extern volatile UINT32 MyEvents20_3F;
  205. extern volatile UINT32 MyEvents40_5F;
  206. extern volatile UINT32 MyEvents60_7F;
  207. extern volatile UINT32 WSStrgRecv;
  208. extern          INT8   nivxi_path[256];
  209.  
  210. #endif
  211.  
  212. #if defined(VXINT)
  213. #pragma pack()
  214. #endif
  215.  
  216. /* === Main NI-VXI Functions ============================================= */
  217.  
  218. #if !defined(__NO_PROTOTYPES__)
  219.  
  220. /* === Begin With-Prototype Function Declarations Section =============== */
  221.  
  222. /* system configuration functions */
  223.  
  224. extern NIVXI_STATUS       NIVXI_FN CloseVXIlibrary(void);
  225. extern NIVXI_STATUS       NIVXI_FN CreateDevInfo(INT16 la);
  226. extern NIVXI_STATUS       NIVXI_FN FindDevLA(INT8 NIVXI_DT *namepat,
  227.                                              INT16 manid,
  228.                                              INT16 modelcode,
  229.                                              INT16 devclass,
  230.                                              INT16 slot,
  231.                                              INT16 mainframe,
  232.                                              INT16 cmdrla,
  233.                                              INT16 NIVXI_DT *la);
  234. extern NIVXI_STATUS       NIVXI_FN GetDevInfo(INT16 la,
  235.                                               UINT16 field,
  236.                                               void NIVXI_DT *fieldvalue);
  237. extern NIVXI_STATUS       NIVXI_FN GetDevInfoLong(INT16 la,
  238.                                                   UINT16 field,
  239.                                                   UINT32 NIVXI_DT *longvalue);
  240. extern NIVXI_STATUS       NIVXI_FN GetDevInfoShort(INT16 la,
  241.                                                    UINT16 field,
  242.                                                    UINT16 NIVXI_DT *shortvalue);
  243. extern NIVXI_STATUS       NIVXI_FN GetDevInfoStr(INT16 la,
  244.                                                  UINT16 field,
  245.                                                  UINT8 NIVXI_DT *stringvalue);
  246. extern NIVXI_STATUS       NIVXI_FN InitVXIlibrary(void);
  247. extern NIVXI_STATUS       NIVXI_FN SetDevInfo(INT16 la,
  248.                                               UINT16 field,
  249.                                               void NIVXI_DT *fieldvalue);
  250. extern NIVXI_STATUS       NIVXI_FN SetDevInfoLong(INT16 la,
  251.                                                   UINT16 field,
  252.                                                   UINT32 longvalue);
  253. extern NIVXI_STATUS       NIVXI_FN SetDevInfoShort(INT16 la,
  254.                                                    UINT16 field,
  255.                                                    UINT16 shortvalue);
  256. extern NIVXI_STATUS       NIVXI_FN SetDevInfoStr(INT16 la,
  257.                                                  UINT16 field,
  258.                                                  UINT8 NIVXI_DT *stringvalue);
  259.  
  260. /* word serial protocol functions -- commander and servant */
  261.  
  262. extern NIVXI_STATUS       NIVXI_FN GenProtError(UINT16 proterr);
  263. extern NIVXI_HWSSCMD    * NIVXI_FN GetWSScmdHandler(void);
  264. extern NIVXI_HWSSECMD   * NIVXI_FN GetWSSEcmdHandler(void);
  265. extern NIVXI_HWSSLCMD   * NIVXI_FN GetWSSLcmdHandler(void);
  266. extern NIVXI_HWSSRD     * NIVXI_FN GetWSSrdHandler(void);
  267. extern NIVXI_HWSSWRT    * NIVXI_FN GetWSSwrtHandler(void);
  268. extern NIVXI_STATUS       NIVXI_FN RespProtError(void);
  269. extern NIVXI_STATUS       NIVXI_FN SetWSScmdHandler(NIVXI_HWSSCMD *func);
  270. extern NIVXI_STATUS       NIVXI_FN SetWSSEcmdHandler(NIVXI_HWSSECMD *func);
  271. extern NIVXI_STATUS       NIVXI_FN SetWSSLcmdHandler(NIVXI_HWSSLCMD *func);
  272. extern NIVXI_STATUS       NIVXI_FN SetWSSrdHandler(NIVXI_HWSSRD *func);
  273. extern NIVXI_STATUS       NIVXI_FN SetWSSwrtHandler(NIVXI_HWSSWRT *func);
  274. extern NIVXI_STATUS       NIVXI_FN WSabort(INT16 la,
  275.                                            UINT16 abortop);
  276. extern NIVXI_STATUS       NIVXI_FN WSclr(INT16 la);
  277. extern NIVXI_STATUS       NIVXI_FN WScmd(INT16 la,
  278.                                          UINT16 cmd,
  279.                                          UINT16 respflag,
  280.                                          UINT16 NIVXI_DT *response);
  281. extern NIVXI_STATUS       NIVXI_FN WSEcmd(INT16 la,
  282.                                           UINT16 cmdExt,
  283.                                           UINT32 cmd,
  284.                                           UINT16 respflag,
  285.                                           UINT32 NIVXI_DT *response);
  286. extern NIVXI_STATUS       NIVXI_FN WSgetTmo(INT32 NIVXI_DT *actualtimo);
  287. extern NIVXI_STATUS       NIVXI_FN WSLcmd(INT16 la,
  288.                                           UINT32 cmd,
  289.                                           UINT16 respflag,
  290.                                           UINT32 NIVXI_DT *response);
  291. extern NIVXI_STATUS       NIVXI_FN WSLresp(INT16 la,
  292.                                            UINT32 NIVXI_DT *response);
  293. extern NIVXI_STATUS       NIVXI_FN WSrd(INT16 la,
  294.                                         UINT8 NIVXI_DT *buf,
  295.                                         UINT32 count,
  296.                                         UINT16 mode,
  297.                                         UINT32 NIVXI_DT *retcount);
  298. extern NIVXI_STATUS       NIVXI_FN WSrdf(INT16 la,
  299.                                          INT8 NIVXI_DT *filename,
  300.                                          UINT32 count,
  301.                                          UINT16 mode,
  302.                                          UINT32 NIVXI_DT *retcount);
  303. extern NIVXI_STATUS       NIVXI_FN WSrdi(INT16 la,
  304.                                          UINT16 NIVXI_DT *buf,
  305.                                          UINT32 count,
  306.                                          UINT16 mode,
  307.                                          UINT32 NIVXI_DT *retcount);
  308. extern NIVXI_STATUS       NIVXI_FN WSrdl(INT16 la,
  309.                                          UINT32 NIVXI_DT *buf,
  310.                                          UINT32 count,
  311.                                          UINT16 mode,
  312.                                          UINT32 NIVXI_DT *retcount);
  313. extern NIVXI_STATUS       NIVXI_FN WSresp(INT16 la,
  314.                                           UINT16 NIVXI_DT *response);
  315. extern NIVXI_STATUS       NIVXI_FN WSsetTmo(INT32 timo,
  316.                                             INT32 NIVXI_DT *actualtimo);
  317. extern NIVXI_STATUS       NIVXI_FN WStrg(INT16 la);
  318. extern NIVXI_STATUS       NIVXI_FN WSwrt(INT16 la,
  319.                                          UINT8 NIVXI_DT *buf,
  320.                                          UINT32 count,
  321.                                          UINT16 mode,
  322.                                          UINT32 NIVXI_DT *retcount);
  323. extern NIVXI_STATUS       NIVXI_FN WSwrtf(INT16 la,
  324.                                           INT8 NIVXI_DT *filename,
  325.                                           UINT32 count,
  326.                                           UINT16 mode,
  327.                                           UINT32 NIVXI_DT *retcount);
  328. extern NIVXI_STATUS       NIVXI_FN WSwrti(INT16 la,
  329.                                           UINT16 NIVXI_DT *buf,
  330.                                           UINT32 count,
  331.                                           UINT16 mode,
  332.                                           UINT32 NIVXI_DT *retcount);
  333. extern NIVXI_STATUS       NIVXI_FN WSwrtl(INT16 la,
  334.                                           UINT32 NIVXI_DT *buf,
  335.                                           UINT32 count,
  336.                                           UINT16 mode,
  337.                                           UINT32 NIVXI_DT *retcount);
  338. extern NIVXI_STATUS       NIVXI_FN WSSabort(UINT16 abortop);
  339. extern NIVXI_STATUS       NIVXI_FN WSSdisable(void);
  340. extern NIVXI_STATUS       NIVXI_FN WSSenable(void);
  341. extern NIVXI_STATUS       NIVXI_FN WSSLnoResp(void);
  342. extern NIVXI_STATUS       NIVXI_FN WSSLsendResp(UINT32 response);
  343. extern NIVXI_STATUS       NIVXI_FN WSSnoResp(void);
  344. extern NIVXI_STATUS       NIVXI_FN WSSrd(UINT8 NIVXI_DT *buf,
  345.                                          UINT32 count,
  346.                                          UINT16 mode);
  347. extern NIVXI_STATUS       NIVXI_FN WSSrdi(UINT16 NIVXI_DT *buf,
  348.                                           UINT32 count,
  349.                                           UINT16 mode);
  350. extern NIVXI_STATUS       NIVXI_FN WSSrdl(UINT32 NIVXI_DT *buf,
  351.                                           UINT32 count,
  352.                                           UINT16 mode);
  353. extern NIVXI_STATUS       NIVXI_FN WSSsendResp(UINT16 response);
  354. extern NIVXI_STATUS       NIVXI_FN WSSwrt(UINT8 NIVXI_DT *buf,
  355.                                           UINT32 count,
  356.                                           UINT16 mode);
  357. extern NIVXI_STATUS       NIVXI_FN WSSwrti(UINT16 NIVXI_DT *buf,
  358.                                            UINT32 count,
  359.                                            UINT16 mode);
  360. extern NIVXI_STATUS       NIVXI_FN WSSwrtl(UINT32 NIVXI_DT *buf,
  361.                                            UINT32 count,
  362.                                            UINT16 mode);
  363.  
  364. extern NIVXI_HWSSCMD               DefaultWSScmdHandler;
  365. extern NIVXI_HWSSECMD              DefaultWSSEcmdHandler;
  366. extern NIVXI_HWSSLCMD              DefaultWSSLcmdHandler;
  367. extern NIVXI_HWSSRD                DefaultWSSrdHandler;
  368. extern NIVXI_HWSSWRT               DefaultWSSwrtHandler;
  369.  
  370. /* VXIbus access functions -- high/low level and local resource access */
  371.  
  372. extern NIVXI_STATUS       NIVXI_FN ClearBusError(void);
  373. extern NIVXI_STATUS       NIVXI_FN GetByteOrder(UINT32 window,
  374.                                                 UINT16 NIVXI_DT *ordermode);
  375. extern NIVXI_STATUS       NIVXI_FN GetContext(UINT32 window,
  376.                                               UINT32 NIVXI_DT *context);
  377. extern INT16              NIVXI_FN GetMyLA(void);
  378. extern NIVXI_STATUS       NIVXI_FN GetPrivilege(UINT32 window,
  379.                                                 UINT16 NIVXI_DT *priv);
  380. extern NIVXI_STATUS       NIVXI_FN GetVXIbusStatus(INT16 controller,
  381.                                                    BusStatus NIVXI_DT *status);
  382. extern NIVXI_STATUS       NIVXI_FN GetVXIbusStatusInd(INT16 controller,
  383.                                                       UINT16 field,
  384.                                                       INT16 NIVXI_DT *status);
  385. extern NIVXI_STATUS       NIVXI_FN GetWindowRange(UINT32 window,
  386.                                                   UINT32 NIVXI_DT *windowbase,
  387.                                                   UINT32 NIVXI_DT *windowend);
  388. extern void NIVXI_DT    * NIVXI_FN MapVXIAddress(UINT16 accessparms,
  389.                                                  UINT32 address,
  390.                                                  INT32 timo,
  391.                                                  UINT32 NIVXI_DT *window,
  392.                                                  NIVXI_STATUS NIVXI_DT *ret);
  393. extern NIVXI_STATUS       NIVXI_FN MapVXIAddressSize(UINT32 size);
  394. extern NIVXI_STATUS       NIVXI_FN ReadMODID(UINT16 NIVXI_DT *modid);
  395. extern NIVXI_STATUS       NIVXI_FN RestoreContext(ContextStruct NIVXI_DT *contextlist);
  396. extern NIVXI_STATUS       NIVXI_FN SaveContext(ContextStruct NIVXI_DT *contextlist);
  397. extern NIVXI_STATUS       NIVXI_FN SetByteOrder(UINT32 window,
  398.                                                 UINT16 ordermode);
  399. extern NIVXI_STATUS       NIVXI_FN SetContext(UINT32 window,
  400.                                               UINT32 context);
  401. extern NIVXI_STATUS       NIVXI_FN SetMODID(UINT16 enable,
  402.                                             UINT16 modid);
  403. extern NIVXI_STATUS       NIVXI_FN SetPrivilege(UINT32 window,
  404.                                                 UINT16 priv);
  405. extern NIVXI_STATUS       NIVXI_FN UnMapVXIAddress(UINT32 window);
  406. extern NIVXI_STATUS       NIVXI_FN VXIin(UINT16 accessparms,
  407.                                          UINT32 address,
  408.                                          UINT16 width,
  409.                                          void NIVXI_DT *value);
  410. extern NIVXI_STATUS       NIVXI_FN VXIinLR(UINT16 reg,
  411.                                            UINT16 width,
  412.                                            void NIVXI_DT *value);
  413. extern NIVXI_STATUS       NIVXI_FN VXIinReg(INT16 la,
  414.                                             UINT16 reg,
  415.                                             UINT16 NIVXI_DT *value);
  416. extern NIVXI_STATUS       NIVXI_FN VXImemAlloc(UINT32 size,
  417.                                                void NIVXI_DT * NIVXI_DT *useraddr,
  418.                                                UINT32 NIVXI_DT *vxiaddr);
  419. extern NIVXI_STATUS       NIVXI_FN VXImemCopy(void NIVXI_DT *useraddr,
  420.                                               void NIVXI_DT *bufaddr,
  421.                                               UINT32 size,
  422.                                               UINT16 dir);
  423. extern NIVXI_STATUS       NIVXI_FN VXImemFree(void NIVXI_DT *useraddr);
  424. extern NIVXI_STATUS       NIVXI_FN VXImove(UINT16 srcparms,
  425.                                            UINT32 srcaddr,
  426.                                            UINT16 destparms,
  427.                                            UINT32 destaddr,
  428.                                            UINT32 length,
  429.                                            UINT16 width);
  430. extern NIVXI_STATUS       NIVXI_FN VXIout(UINT16 accessparms,
  431.                                           UINT32 address,
  432.                                           UINT16 width,
  433.                                           UINT32 value);
  434. extern NIVXI_STATUS       NIVXI_FN VXIoutLR(UINT16 reg,
  435.                                             UINT16 width,
  436.                                             UINT32 value);
  437. extern NIVXI_STATUS       NIVXI_FN VXIoutReg(INT16 la,
  438.                                              UINT16 reg,
  439.                                              UINT16 value);
  440. extern void               NIVXI_FN VXIpeek(void NIVXI_DT *addressptr,
  441.                                            UINT16 width,
  442.                                            void NIVXI_DT *value);
  443. extern void               NIVXI_FN VXIpoke(void NIVXI_DT *addressptr,
  444.                                            UINT16 width,
  445.                                            UINT32 value);
  446.  
  447. /* signal functions */
  448.  
  449. extern NIVXI_STATUS       NIVXI_FN DisableSignalInt(void);
  450. extern NIVXI_STATUS       NIVXI_FN EnableSignalInt(void);
  451. extern NIVXI_HSIGNAL    * NIVXI_FN GetSignalHandler(INT16 la);
  452. extern NIVXI_STATUS       NIVXI_FN RouteSignal(INT16 la,
  453.                                                UINT32 modemask);
  454. extern NIVXI_STATUS       NIVXI_FN SetSignalHandler(INT16 la,
  455.                                                     NIVXI_HSIGNAL *func);
  456. extern NIVXI_STATUS       NIVXI_FN SignalDeq(INT16 la,
  457.                                              UINT32 signalmask,
  458.                                              UINT16 NIVXI_DT *signal);
  459. extern NIVXI_STATUS       NIVXI_FN SignalEnq(UINT16 signal);
  460. extern NIVXI_STATUS       NIVXI_FN SignalJam(UINT16 signal);
  461. extern NIVXI_STATUS       NIVXI_FN WaitForSignal(INT16 la,
  462.                                                  UINT32 signalmask,
  463.                                                  INT32 timeout,
  464.                                                  UINT16 NIVXI_DT *retsignal,
  465.                                                  UINT32 NIVXI_DT *retsignalmask);
  466.  
  467. extern NIVXI_HSIGNAL               DefaultSignalHandler;
  468.  
  469. /* interrupt functions */
  470.  
  471. extern NIVXI_STATUS       NIVXI_FN AcknowledgeVXIint(INT16 controller,
  472.                                                      UINT16 level,
  473.                                                      UINT32 NIVXI_DT *statusId);
  474. extern NIVXI_STATUS       NIVXI_FN AssertVXIint(INT16 controller,
  475.                                                 UINT16 level,
  476.                                                 UINT32 statusId);
  477. extern NIVXI_STATUS       NIVXI_FN DeAssertVXIint(INT16 controller,
  478.                                                   UINT16 level);
  479. extern NIVXI_STATUS       NIVXI_FN DisableVXIint(INT16 controller,
  480.                                                  UINT16 levels);
  481. extern NIVXI_STATUS       NIVXI_FN DisableVXItoSignalInt(INT16 controller,
  482.                                                          UINT16 levels);
  483. extern NIVXI_STATUS       NIVXI_FN EnableVXIint(INT16 controller,
  484.                                                 UINT16 levels);
  485. extern NIVXI_STATUS       NIVXI_FN EnableVXItoSignalInt(INT16 controller,
  486.                                                         UINT16 levels);
  487. extern NIVXI_HVXIINT    * NIVXI_FN GetVXIintHandler(UINT16 level);
  488. extern NIVXI_HVXIINT    * NIVXI_FN GetVXIintHandlerController(INT16 controller,
  489.                                   UINT16 level);
  490. extern NIVXI_STATUS       NIVXI_FN RouteVXIint(INT16 controller,
  491.                                                UINT16 Sroute);
  492. extern NIVXI_STATUS       NIVXI_FN SetVXIintHandler(UINT16 levels,
  493.                                                     NIVXI_HVXIINT *func);
  494. extern NIVXI_STATUS       NIVXI_FN SetVXIintHandlerController(INT16 controller,
  495.                                   UINT16 levels,
  496.                                   NIVXI_HVXIINT *func);
  497. extern NIVXI_STATUS       NIVXI_FN VXIintAcknowledgeMode(INT16 controller,
  498.                                                          UINT16 modes);
  499.  
  500. extern NIVXI_HVXIINT               DefaultVXIintHandler;
  501.  
  502. /* trigger functions -- all functions with ECL or TTL in the name are
  503.  * outdated,  and are provided for backward compatability only -- new
  504.  * functions with similar names  (without ECL or TTL)  should be used
  505.  * instead, since the old style MAY NOT be supported in the future!!! */
  506.  
  507. extern NIVXI_STATUS       NIVXI_FN AcknowledgeECLtrig(INT16 controller,
  508.                                                       UINT16 line);
  509. extern NIVXI_STATUS       NIVXI_FN AcknowledgeTrig(INT16 controller,
  510.                                                    UINT16 line);
  511. extern NIVXI_STATUS       NIVXI_FN AcknowledgeTTLtrig(INT16 controller,
  512.                                                       UINT16 line);
  513. extern NIVXI_STATUS       NIVXI_FN DisableECLsense(INT16 controller,
  514.                                                    UINT16 line);
  515. extern NIVXI_STATUS       NIVXI_FN DisableTrigSense(INT16 controller,
  516.                                                    UINT16 line);
  517. extern NIVXI_STATUS       NIVXI_FN DisableTTLsense(INT16 controller,
  518.                                                    UINT16 line);
  519. extern NIVXI_STATUS       NIVXI_FN EnableECLsense(INT16 controller,
  520.                                                   UINT16 line,
  521.                                                   UINT16 prot);
  522. extern NIVXI_STATUS       NIVXI_FN EnableTrigSense(INT16 controller,
  523.                                                    UINT16 line,
  524.                                                    UINT16 prot);
  525. extern NIVXI_STATUS       NIVXI_FN EnableTTLsense(INT16 controller,
  526.                                                   UINT16 line,
  527.                                                   UINT16 prot);
  528. extern NIVXI_HTRIG      * NIVXI_FN GetECLtrigHandler(UINT16 line);
  529. extern NIVXI_HTRIG      * NIVXI_FN GetTrigHandler(UINT16 line);
  530. extern NIVXI_HTRIG      * NIVXI_FN GetTrigHandlerController(INT16 controller,
  531.                                 UINT16 line);
  532. extern NIVXI_HTRIG      * NIVXI_FN GetTTLtrigHandler(UINT16 line);
  533. extern NIVXI_STATUS       NIVXI_FN MapTrigToTrig(INT16 controller,
  534.                                                  UINT16 srcTrig,
  535.                                                  UINT16 destTrig,
  536.                                                  UINT16 mode);
  537. extern NIVXI_STATUS       NIVXI_FN SetECLtrigHandler(UINT16 lines,
  538.                                                      NIVXI_HTRIG *func);
  539. extern NIVXI_STATUS       NIVXI_FN SetTrigHandler(UINT16 lines,
  540.                                                   NIVXI_HTRIG *func);
  541. extern NIVXI_STATUS       NIVXI_FN SetTrigHandlerController(INT16 controller,
  542.                                 UINT16 lines,
  543.                                 NIVXI_HTRIG *func);
  544. extern NIVXI_STATUS       NIVXI_FN SetTTLtrigHandler(UINT16 lines,
  545.                                                      NIVXI_HTRIG *func);
  546. extern NIVXI_STATUS       NIVXI_FN SrcECLtrig(INT16 controller,
  547.                                               UINT16 line,
  548.                                               UINT16 prot,
  549.                                               INT32 timeout);
  550. extern NIVXI_STATUS       NIVXI_FN SrcTrig(INT16 controller,
  551.                                            UINT16 line,
  552.                                            UINT16 prot,
  553.                                            INT32 timeout);
  554. extern NIVXI_STATUS       NIVXI_FN SrcTTLtrig(INT16 controller,
  555.                                               UINT16 line,
  556.                                               UINT16 prot,
  557.                                               INT32 timeout);
  558. extern NIVXI_STATUS       NIVXI_FN TrigAssertConfig(INT16 controller,
  559.                                                     UINT16 line,
  560.                                                     UINT16 mode);
  561. extern NIVXI_STATUS       NIVXI_FN TrigCntrConfig(INT16 controller,
  562.                                                   UINT16 mode,
  563.                                                   UINT16 source,
  564.                                                   UINT16 count);
  565. extern NIVXI_STATUS       NIVXI_FN TrigExtConfig(INT16 controller,
  566.                                                  UINT16 extline,
  567.                                                  UINT16 mode);
  568. extern NIVXI_STATUS       NIVXI_FN TrigTickConfig(INT16 controller,
  569.                                                   UINT16 mode,
  570.                                                   UINT16 source,
  571.                                                   UINT16 tcount1,
  572.                                                   UINT16 tcount2);
  573. extern NIVXI_STATUS       NIVXI_FN UnMapTrigToTrig(INT16 controller,
  574.                                                    UINT16 srcTrig,
  575.                                                    UINT16 destTrig);
  576. extern NIVXI_STATUS       NIVXI_FN WaitForECLtrig(INT16 controller,
  577.                                                   UINT16 line,
  578.                                                   INT32 timeout);
  579. extern NIVXI_STATUS       NIVXI_FN WaitForTrig(INT16 controller,
  580.                                                UINT16 line,
  581.                                                INT32 timeout);
  582. extern NIVXI_STATUS       NIVXI_FN WaitForTTLtrig(INT16 controller,
  583.                                                   UINT16 line,
  584.                                                   INT32 timeout);
  585.  
  586. extern NIVXI_HTRIG                 DefaultECLtrigHandler;
  587. extern NIVXI_HTRIG                 DefaultTrigHandler;
  588. extern NIVXI_HTRIG                 DefaultTrigHandler2;
  589. extern NIVXI_HTRIG                 DefaultTTLtrigHandler;
  590.  
  591. /* system interrupt handler functions */
  592.  
  593. extern NIVXI_STATUS       NIVXI_FN AssertSysreset(INT16 controller,
  594.                                                   UINT16 mode);
  595. extern NIVXI_STATUS       NIVXI_FN DisableACfail(INT16 controller);
  596. extern NIVXI_STATUS       NIVXI_FN DisableSoftReset(void);
  597. extern NIVXI_STATUS       NIVXI_FN DisableSysfail(INT16 controller);
  598. extern NIVXI_STATUS       NIVXI_FN DisableSysreset(INT16 controller);
  599. extern NIVXI_STATUS       NIVXI_FN EnableACfail(INT16 controller);
  600. extern NIVXI_STATUS       NIVXI_FN EnableSoftReset(void);
  601. extern NIVXI_STATUS       NIVXI_FN EnableSysfail(INT16 controller);
  602. extern NIVXI_STATUS       NIVXI_FN EnableSysreset(INT16 controller);
  603. extern NIVXI_HACFAIL    * NIVXI_FN GetACfailHandler(void);
  604. extern NIVXI_HACFAIL    * NIVXI_FN GetACfailHandlerController(INT16 controller);
  605. extern NIVXI_HBUSERROR  * NIVXI_FN GetBusErrorHandler(void);
  606. extern NIVXI_HSOFTRESET * NIVXI_FN GetSoftResetHandler(void);
  607. extern NIVXI_HSYSFAIL   * NIVXI_FN GetSysfailHandler(void);
  608. extern NIVXI_HSYSFAIL   * NIVXI_FN GetSysfailHandlerController(INT16 controller);
  609. extern NIVXI_HSYSRESET  * NIVXI_FN GetSysresetHandler(void);
  610. extern NIVXI_HSYSRESET  * NIVXI_FN GetSysresetHandlerController(INT16 controller);
  611. extern NIVXI_STATUS       NIVXI_FN SetACfailHandler(NIVXI_HACFAIL *func);
  612. extern NIVXI_STATUS       NIVXI_FN SetACfailHandlerController(INT16 controller,
  613.                                   NIVXI_HACFAIL *func);
  614. extern NIVXI_STATUS       NIVXI_FN SetBusErrorHandler(NIVXI_HBUSERROR *func);
  615. extern NIVXI_STATUS       NIVXI_FN SetSoftResetHandler(NIVXI_HSOFTRESET *func);
  616.  
  617. extern NIVXI_STATUS       NIVXI_FN SetSysfailHandler(NIVXI_HSYSFAIL *func);
  618. extern NIVXI_STATUS       NIVXI_FN SetSysfailHandlerController(INT16 controller, 
  619.                                    NIVXI_HSYSFAIL *func);
  620. extern NIVXI_STATUS       NIVXI_FN SetSysresetHandler(NIVXI_HSYSRESET *func);
  621. extern NIVXI_STATUS       NIVXI_FN SetSysresetHandlerController(INT16 controller,
  622.                                 NIVXI_HSYSRESET *func);
  623.  
  624. extern NIVXI_HACFAIL               DefaultACfailHandler;
  625. extern NIVXI_HBUSERROR             DefaultBusErrorHandler;
  626. extern NIVXI_HSOFTRESET            DefaultSoftResetHandler;
  627. extern NIVXI_HSYSFAIL              DefaultSysfailHandler;
  628. extern NIVXI_HSYSRESET             DefaultSysresetHandler;
  629.  
  630. /* VXIbus extender functions */
  631.  
  632. extern NIVXI_STATUS       NIVXI_FN MapECLtrig(INT16 extender,
  633.                                               UINT16 lines,
  634.                                               UINT16 directions);
  635. extern NIVXI_STATUS       NIVXI_FN MapTTLtrig(INT16 extender,
  636.                                               UINT16 lines,
  637.                                               UINT16 directions);
  638. extern NIVXI_STATUS       NIVXI_FN MapUtilBus(INT16 extender,
  639.                                               UINT16 modes);
  640. extern NIVXI_STATUS       NIVXI_FN MapVXIint(INT16 extender,
  641.                                              UINT16 levels,
  642.                                              UINT16 directions);
  643.  
  644. /* other functions available which are not NI-VXI documented */
  645.  
  646. extern NIVXI_STATUS       NIVXI_FN DisableBlockMode(void);
  647. extern NIVXI_STATUS       NIVXI_FN EnableBlockMode(void);
  648. extern NIVXI_HCLOCK     * NIVXI_FN GetClockHandler(void);
  649. extern NIVXI_STATUS       NIVXI_FN LPeek(UINT32 address,
  650.                                          UINT16 width,
  651.                                          void NIVXI_DT *value);
  652. extern NIVXI_STATUS       NIVXI_FN LPoke(UINT32 address,
  653.                                          UINT16 width,
  654.                                          UINT32 value);
  655. extern NIVXI_STATUS       NIVXI_FN RMCloseVXIlibrary(void);
  656. extern NIVXI_STATUS       NIVXI_FN RMInitVXIlibrary(void);
  657. extern NIVXI_STATUS       NIVXI_FN SetClockHandler(NIVXI_HCLOCK *func);
  658.  
  659. extern NIVXI_HCLOCK                DefaultClockHandler;
  660.  
  661. /* === End With-Prototype Function Declarations Section =============== */
  662.  
  663. #else
  664.  
  665. /* === Begin No-Prototype Function Declarations Section =============== */
  666.  
  667. /* system configuration functions */
  668.  
  669. extern NIVXI_STATUS       NIVXI_FN CloseVXIlibrary();
  670. extern NIVXI_STATUS       NIVXI_FN CreateDevInfo();
  671. extern NIVXI_STATUS       NIVXI_FN FindDevLA();
  672. extern NIVXI_STATUS       NIVXI_FN GetDevInfo();
  673. extern NIVXI_STATUS       NIVXI_FN GetDevInfoLong();
  674. extern NIVXI_STATUS       NIVXI_FN GetDevInfoShort();
  675. extern NIVXI_STATUS       NIVXI_FN GetDevInfoStr();
  676. extern NIVXI_STATUS       NIVXI_FN InitVXIlibrary();
  677. extern NIVXI_STATUS       NIVXI_FN SetDevInfo();
  678. extern NIVXI_STATUS       NIVXI_FN SetDevInfoLong();
  679. extern NIVXI_STATUS       NIVXI_FN SetDevInfoShort();
  680. extern NIVXI_STATUS       NIVXI_FN SetDevInfoStr();
  681.  
  682. /* word serial protocol functions -- commander and servant */
  683.  
  684. extern NIVXI_STATUS       NIVXI_FN GenProtError();
  685. extern NIVXI_HWSSCMD    * NIVXI_FN GetWSScmdHandler();
  686. extern NIVXI_HWSSECMD   * NIVXI_FN GetWSSEcmdHandler();
  687. extern NIVXI_HWSSLCMD   * NIVXI_FN GetWSSLcmdHandler();
  688. extern NIVXI_HWSSRD     * NIVXI_FN GetWSSrdHandler();
  689. extern NIVXI_HWSSWRT    * NIVXI_FN GetWSSwrtHandler();
  690. extern NIVXI_STATUS       NIVXI_FN RespProtError();
  691. extern NIVXI_STATUS       NIVXI_FN SetWSScmdHandler();
  692. extern NIVXI_STATUS       NIVXI_FN SetWSSEcmdHandler();
  693. extern NIVXI_STATUS       NIVXI_FN SetWSSLcmdHandler();
  694. extern NIVXI_STATUS       NIVXI_FN SetWSSrdHandler();
  695. extern NIVXI_STATUS       NIVXI_FN SetWSSwrtHandler();
  696. extern NIVXI_STATUS       NIVXI_FN WSabort();
  697. extern NIVXI_STATUS       NIVXI_FN WSclr();
  698. extern NIVXI_STATUS       NIVXI_FN WScmd();
  699. extern NIVXI_STATUS       NIVXI_FN WSEcmd();
  700. extern NIVXI_STATUS       NIVXI_FN WSgetTmo();
  701. extern NIVXI_STATUS       NIVXI_FN WSLcmd();
  702. extern NIVXI_STATUS       NIVXI_FN WSLresp();
  703. extern NIVXI_STATUS       NIVXI_FN WSrd();
  704. extern NIVXI_STATUS       NIVXI_FN WSrdf();
  705. extern NIVXI_STATUS       NIVXI_FN WSrdi();
  706. extern NIVXI_STATUS       NIVXI_FN WSrdl();
  707. extern NIVXI_STATUS       NIVXI_FN WSresp();
  708. extern NIVXI_STATUS       NIVXI_FN WSsetTmo();
  709. extern NIVXI_STATUS       NIVXI_FN WStrg();
  710. extern NIVXI_STATUS       NIVXI_FN WSwrt();
  711. extern NIVXI_STATUS       NIVXI_FN WSwrtf();
  712. extern NIVXI_STATUS       NIVXI_FN WSwrti();
  713. extern NIVXI_STATUS       NIVXI_FN WSwrtl();
  714. extern NIVXI_STATUS       NIVXI_FN WSSabort();
  715. extern NIVXI_STATUS       NIVXI_FN WSSdisable();
  716. extern NIVXI_STATUS       NIVXI_FN WSSenable();
  717. extern NIVXI_STATUS       NIVXI_FN WSSLnoResp();
  718. extern NIVXI_STATUS       NIVXI_FN WSSLsendResp();
  719. extern NIVXI_STATUS       NIVXI_FN WSSnoResp();
  720. extern NIVXI_STATUS       NIVXI_FN WSSrd();
  721. extern NIVXI_STATUS       NIVXI_FN WSSrdi();
  722. extern NIVXI_STATUS       NIVXI_FN WSSrdl();
  723. extern NIVXI_STATUS       NIVXI_FN WSSsendResp();
  724. extern NIVXI_STATUS       NIVXI_FN WSSwrt();
  725. extern NIVXI_STATUS       NIVXI_FN WSSwrti();
  726. extern NIVXI_STATUS       NIVXI_FN WSSwrtl();
  727.  
  728. extern NIVXI_HWSSCMD               DefaultWSScmdHandler;
  729. extern NIVXI_HWSSECMD              DefaultWSSEcmdHandler;
  730. extern NIVXI_HWSSLCMD              DefaultWSSLcmdHandler;
  731. extern NIVXI_HWSSRD                DefaultWSSrdHandler;
  732. extern NIVXI_HWSSWRT               DefaultWSSwrtHandler;
  733.  
  734. /* VXIbus access functions -- high/low level and local resource access */
  735.  
  736. extern NIVXI_STATUS       NIVXI_FN ClearBusError();
  737. extern NIVXI_STATUS       NIVXI_FN GetByteOrder();
  738. extern NIVXI_STATUS       NIVXI_FN GetContext();
  739. extern INT16              NIVXI_FN GetMyLA();
  740. extern NIVXI_STATUS       NIVXI_FN GetPrivilege();
  741. extern NIVXI_STATUS       NIVXI_FN GetVXIbusStatus();
  742. extern NIVXI_STATUS       NIVXI_FN GetVXIbusStatusInd();
  743. extern NIVXI_STATUS       NIVXI_FN GetWindowRange();
  744. extern void NIVXI_DT    * NIVXI_FN MapVXIAddress();
  745. extern NIVXI_STATUS       NIVXI_FN MapVXIAddressSize();
  746. extern NIVXI_STATUS       NIVXI_FN ReadMODID();
  747. extern NIVXI_STATUS       NIVXI_FN RestoreContext();
  748. extern NIVXI_STATUS       NIVXI_FN SaveContext();
  749. extern NIVXI_STATUS       NIVXI_FN SetByteOrder();
  750. extern NIVXI_STATUS       NIVXI_FN SetContext();
  751. extern NIVXI_STATUS       NIVXI_FN SetMODID();
  752. extern NIVXI_STATUS       NIVXI_FN SetPrivilege();
  753. extern NIVXI_STATUS       NIVXI_FN UnMapVXIAddress();
  754. extern NIVXI_STATUS       NIVXI_FN VXIin();
  755. extern NIVXI_STATUS       NIVXI_FN VXIinLR();
  756. extern NIVXI_STATUS       NIVXI_FN VXIinReg();
  757. extern NIVXI_STATUS       NIVXI_FN VXImemAlloc();
  758. extern NIVXI_STATUS       NIVXI_FN VXImemCopy();
  759. extern NIVXI_STATUS       NIVXI_FN VXImemFree();
  760. extern NIVXI_STATUS       NIVXI_FN VXImove();
  761. extern NIVXI_STATUS       NIVXI_FN VXIout();
  762. extern NIVXI_STATUS       NIVXI_FN VXIoutLR();
  763. extern NIVXI_STATUS       NIVXI_FN VXIoutReg();
  764. extern void               NIVXI_FN VXIpeek();
  765. extern void               NIVXI_FN VXIpoke();
  766.  
  767. /* signal functions */
  768.  
  769. extern NIVXI_STATUS       NIVXI_FN DisableSignalInt();
  770. extern NIVXI_STATUS       NIVXI_FN EnableSignalInt();
  771. extern NIVXI_HSIGNAL    * NIVXI_FN GetSignalHandler();
  772. extern NIVXI_STATUS       NIVXI_FN RouteSignal();
  773. extern NIVXI_STATUS       NIVXI_FN SetSignalHandler();
  774. extern NIVXI_STATUS       NIVXI_FN SignalDeq();
  775. extern NIVXI_STATUS       NIVXI_FN SignalEnq();
  776. extern NIVXI_STATUS       NIVXI_FN SignalJam();
  777. extern NIVXI_STATUS       NIVXI_FN WaitForSignal();
  778.  
  779. extern NIVXI_HSIGNAL               DefaultSignalHandler;
  780.  
  781. /* interrupt functions */
  782.  
  783. extern NIVXI_STATUS       NIVXI_FN AcknowledgeVXIint();
  784. extern NIVXI_STATUS       NIVXI_FN AssertVXIint();
  785. extern NIVXI_STATUS       NIVXI_FN DeAssertVXIint();
  786. extern NIVXI_STATUS       NIVXI_FN DisableVXIint();
  787. extern NIVXI_STATUS       NIVXI_FN DisableVXItoSignalInt();
  788. extern NIVXI_STATUS       NIVXI_FN EnableVXIint();
  789. extern NIVXI_STATUS       NIVXI_FN EnableVXItoSignalInt();
  790. extern NIVXI_HVXIINT    * NIVXI_FN GetVXIintHandler();
  791. extern NIVXI_STATUS       NIVXI_FN RouteVXIint();
  792. extern NIVXI_STATUS       NIVXI_FN SetVXIintHandler();
  793. extern NIVXI_STATUS       NIVXI_FN VXIintAcknowledgeMode();
  794.  
  795. extern NIVXI_HVXIINT               DefaultVXIintHandler;
  796.  
  797. /* trigger functions -- all functions with ECL or TTL in the name are
  798.  * outdated,  and are provided for backward compatability only -- new
  799.  * functions with similar names  (without ECL or TTL)  should be used
  800.  * instead, since the old style MAY NOT be supported in the future!!! */
  801.  
  802. extern NIVXI_STATUS       NIVXI_FN AcknowledgeECLtrig();
  803. extern NIVXI_STATUS       NIVXI_FN AcknowledgeTrig();
  804. extern NIVXI_STATUS       NIVXI_FN AcknowledgeTTLtrig();
  805. extern NIVXI_STATUS       NIVXI_FN DisableECLsense();
  806. extern NIVXI_STATUS       NIVXI_FN DisableTrigSense();
  807. extern NIVXI_STATUS       NIVXI_FN DisableTTLsense();
  808. extern NIVXI_STATUS       NIVXI_FN EnableECLsense();
  809. extern NIVXI_STATUS       NIVXI_FN EnableTrigSense();
  810. extern NIVXI_STATUS       NIVXI_FN EnableTTLsense();
  811. extern NIVXI_HTRIG      * NIVXI_FN GetECLtrigHandler();
  812. extern NIVXI_HTRIG      * NIVXI_FN GetTrigHandler();
  813. extern NIVXI_HTRIG      * NIVXI_FN GetTTLtrigHandler();
  814. extern NIVXI_STATUS       NIVXI_FN MapTrigToTrig();
  815. extern NIVXI_STATUS       NIVXI_FN SetECLtrigHandler();
  816. extern NIVXI_STATUS       NIVXI_FN SetTrigHandler();
  817. extern NIVXI_STATUS       NIVXI_FN SetTTLtrigHandler();
  818. extern NIVXI_STATUS       NIVXI_FN SrcECLtrig();
  819. extern NIVXI_STATUS       NIVXI_FN SrcTrig();
  820. extern NIVXI_STATUS       NIVXI_FN SrcTTLtrig();
  821. extern NIVXI_STATUS       NIVXI_FN TrigAssertConfig();
  822. extern NIVXI_STATUS       NIVXI_FN TrigCntrConfig();
  823. extern NIVXI_STATUS       NIVXI_FN TrigExtConfig();
  824. extern NIVXI_STATUS       NIVXI_FN TrigTickConfig();
  825. extern NIVXI_STATUS       NIVXI_FN UnMapTrigToTrig();
  826. extern NIVXI_STATUS       NIVXI_FN WaitForECLtrig();
  827. extern NIVXI_STATUS       NIVXI_FN WaitForTrig();
  828. extern NIVXI_STATUS       NIVXI_FN WaitForTTLtrig();
  829.  
  830. extern NIVXI_HTRIG                 DefaultECLtrigHandler;
  831. extern NIVXI_HTRIG                 DefaultTrigHandler;
  832. extern NIVXI_HTRIG                 DefaultTrigHandler2;
  833. extern NIVXI_HTRIG                 DefaultTTLtrigHandler;
  834.  
  835. /* system interrupt handler functions */
  836.  
  837. extern NIVXI_STATUS       NIVXI_FN AssertSysreset();
  838. extern NIVXI_STATUS       NIVXI_FN DisableACfail();
  839. extern NIVXI_STATUS       NIVXI_FN DisableSoftReset();
  840. extern NIVXI_STATUS       NIVXI_FN DisableSysfail();
  841. extern NIVXI_STATUS       NIVXI_FN DisableSysreset();
  842. extern NIVXI_STATUS       NIVXI_FN EnableACfail();
  843. extern NIVXI_STATUS       NIVXI_FN EnableSoftReset();
  844. extern NIVXI_STATUS       NIVXI_FN EnableSysfail();
  845. extern NIVXI_STATUS       NIVXI_FN EnableSysreset();
  846. extern NIVXI_HACFAIL    * NIVXI_FN GetACfailHandler();
  847. extern NIVXI_HBUSERROR  * NIVXI_FN GetBusErrorHandler();
  848. extern NIVXI_HSOFTRESET * NIVXI_FN GetSoftResetHandler();
  849. extern NIVXI_HSYSFAIL   * NIVXI_FN GetSysfailHandler();
  850. extern NIVXI_HSYSRESET  * NIVXI_FN GetSysresetHandler();
  851. extern NIVXI_STATUS       NIVXI_FN SetACfailHandler();
  852. extern NIVXI_STATUS       NIVXI_FN SetBusErrorHandler();
  853. extern NIVXI_STATUS       NIVXI_FN SetSoftResetHandler();
  854. extern NIVXI_STATUS       NIVXI_FN SetSysfailHandler();
  855. extern NIVXI_STATUS       NIVXI_FN SetSysresetHandler();
  856.  
  857. extern NIVXI_HACFAIL               DefaultACfailHandler;
  858. extern NIVXI_HBUSERROR             DefaultBusErrorHandler;
  859. extern NIVXI_HSOFTRESET            DefaultSoftResetHandler;
  860. extern NIVXI_HSYSFAIL              DefaultSysfailHandler;
  861. extern NIVXI_HSYSRESET             DefaultSysresetHandler;
  862.  
  863. /* VXIbus extender functions */
  864.  
  865. extern NIVXI_STATUS       NIVXI_FN MapECLtrig();
  866. extern NIVXI_STATUS       NIVXI_FN MapTTLtrig();
  867. extern NIVXI_STATUS       NIVXI_FN MapUtilBus();
  868. extern NIVXI_STATUS       NIVXI_FN MapVXIint();
  869.  
  870. /* other functions available which are not NI-VXI documented */
  871.  
  872. extern NIVXI_STATUS       NIVXI_FN DisableBlockMode();
  873. extern NIVXI_STATUS       NIVXI_FN EnableBlockMode();
  874. extern NIVXI_HCLOCK     * NIVXI_FN GetClockHandler();
  875. extern NIVXI_STATUS       NIVXI_FN LPeek();
  876. extern NIVXI_STATUS       NIVXI_FN LPoke();
  877. extern NIVXI_STATUS       NIVXI_FN RMCloseVXIlibrary();
  878. extern NIVXI_STATUS       NIVXI_FN RMInitVXIlibrary();
  879. extern NIVXI_STATUS       NIVXI_FN SetClockHandler();
  880.  
  881. extern NIVXI_HCLOCK                DefaultClockHandler;
  882.  
  883. /* === End No-Prototype Function Declarations Section =============== */
  884.  
  885. #endif
  886.  
  887. /* === Macro definitions for VXIpeek/VXIpoke, override with () ======== */
  888.  
  889. #if defined(VXIDOS) || defined(VXIWIN)
  890.  
  891. #if (defined(BINARY_COMPATIBLE)) || (NIVXI_DEVLOCATION == NIVXI_EXTERNAL)
  892. #define MXI1AND2_COMPATIBLE
  893. #endif
  894.  
  895. #if defined(MXI1_COMPATIBLE)
  896.  
  897. extern UINT8 GetBoardStatus (void);
  898.  
  899. #if defined(M_I386) || defined(_M_I386) || defined(__I386__)
  900.  
  901. #define VXIpeek(p,w,v)                                                     \
  902.    {                                                                       \
  903.       register UINT8 board_status;                                         \
  904.                                                                            \
  905.       *(v) = *(p);                                                         \
  906.                                                                            \
  907.       if (board_status = GetBoardStatus ())                                \
  908.       {                                                                    \
  909.          while (board_status & 0x05)                                       \
  910.          {                                                                 \
  911.             *(v) = *(p);                                                   \
  912.             board_status = GetBoardStatus ();                              \
  913.          }                                                                 \
  914.                                                                            \
  915.          if (board_status & 0x0A)                                          \
  916.             (*GetBusErrorHandler())();                                     \
  917.       }                                                                    \
  918.    }
  919.  
  920. #define VXIpoke(p,w,v)                                                     \
  921.    {                                                                       \
  922.       register UINT8 board_status;                                         \
  923.                                                                            \
  924.       *(p) = (v);                                                          \
  925.                                                                            \
  926.       if (board_status = GetBoardStatus ())                                \
  927.       {                                                                    \
  928.          while (board_status & 0x05)                                       \
  929.          {                                                                 \
  930.             *(p) = (v);                                                    \
  931.             board_status = GetBoardStatus ();                              \
  932.          }                                                                 \
  933.                                                                            \
  934.          if (board_status & 0x0A)                                          \
  935.             (*GetBusErrorHandler())();                                     \
  936.       }                                                                    \
  937.    }
  938.  
  939. #else
  940.  
  941. #define VXIpeek(p,w,v)                                                     \
  942.    {                                                                       \
  943.       if ((w)==4)                                                          \
  944.          (VXIpeek)(p,w,v);                                                 \
  945.       else                                                                 \
  946.       {                                                                    \
  947.          register UINT8 board_status;                                      \
  948.                                                                            \
  949.          *(v) = *(p);                                                      \
  950.                                                                            \
  951.          if (board_status = GetBoardStatus ())                             \
  952.          {                                                                 \
  953.             while (board_status & 0x05)                                    \
  954.             {                                                              \
  955.                *(v) = *(p);                                                \
  956.                board_status = GetBoardStatus ();                           \
  957.             }                                                              \
  958.                                                                            \
  959.             if (board_status & 0x0A)                                       \
  960.                (*GetBusErrorHandler())();                                  \
  961.          }                                                                 \
  962.       }                                                                    \
  963.    }
  964.  
  965. #define VXIpoke(p,w,v)                                                     \
  966.    {                                                                       \
  967.       if ((w)==4)                                                          \
  968.          (VXIpoke)(p,w,v);                                                 \
  969.       else                                                                 \
  970.       {                                                                    \
  971.          register UINT8 board_status;                                      \
  972.                                                                            \
  973.          *(p) = (v);                                                       \
  974.                                                                            \
  975.          if (board_status = GetBoardStatus ())                             \
  976.          {                                                                 \
  977.             while (board_status & 0x05)                                    \
  978.             {                                                              \
  979.                *(p) = (v);                                                 \
  980.                board_status = GetBoardStatus ();                           \
  981.             }                                                              \
  982.                                                                            \
  983.             if (board_status & 0x0A)                                       \
  984.                (*GetBusErrorHandler())();                                  \
  985.          }                                                                 \
  986.       }                                                                    \
  987.    }
  988.  
  989. #endif
  990.  
  991. #elif defined(MXI1AND2_COMPATIBLE)
  992.  
  993. extern UINT8 GetBoardStatus12 (void);
  994.  
  995. #if defined(M_I386) || defined(_M_I386) || defined(__I386__)
  996.  
  997. #define VXIpeek(p,w,v)                                                     \
  998.    {                                                                       \
  999.       register UINT8 board_status;                                         \
  1000.                                                                            \
  1001.       *(v) = *(p);                                                         \
  1002.                                                                            \
  1003.       if (board_status = GetBoardStatus12 ())                              \
  1004.       {                                                                    \
  1005.          while (board_status & 0x25)                                       \
  1006.          {                                                                 \
  1007.             *(v) = *(p);                                                   \
  1008.             board_status = GetBoardStatus12 ();                            \
  1009.          }                                                                 \
  1010.                                                                            \
  1011.          if (board_status & 0x1A)                                          \
  1012.             (*GetBusErrorHandler())();                                     \
  1013.       }                                                                    \
  1014.    }
  1015.  
  1016. #define VXIpoke(p,w,v)                                                     \
  1017.    {                                                                       \
  1018.       register UINT8 board_status;                                         \
  1019.                                                                            \
  1020.       *(p) = (v);                                                          \
  1021.                                                                            \
  1022.       if (board_status = GetBoardStatus12 ())                              \
  1023.       {                                                                    \
  1024.          while (board_status & 0x25)                                       \
  1025.          {                                                                 \
  1026.             *(p) = (v);                                                    \
  1027.             board_status = GetBoardStatus12 ();                            \
  1028.          }                                                                 \
  1029.                                                                            \
  1030.          if (board_status & 0x1A)                                          \
  1031.             (*GetBusErrorHandler())();                                     \
  1032.       }                                                                    \
  1033.    }
  1034.  
  1035. #else
  1036.  
  1037. #define VXIpeek(p,w,v)                                                     \
  1038.    {                                                                       \
  1039.       if ((w)==4)                                                          \
  1040.          (VXIpeek)(p,w,v);                                                 \
  1041.       else                                                                 \
  1042.       {                                                                    \
  1043.          register UINT8 board_status;                                      \
  1044.                                                                            \
  1045.          *(v) = *(p);                                                      \
  1046.                                                                            \
  1047.          if (board_status = GetBoardStatus12 ())                           \
  1048.          {                                                                 \
  1049.             while (board_status & 0x25)                                    \
  1050.             {                                                              \
  1051.                *(v) = *(p);                                                \
  1052.                board_status = GetBoardStatus12 ();                         \
  1053.             }                                                              \
  1054.                                                                            \
  1055.             if (board_status & 0x1A)                                       \
  1056.                (*GetBusErrorHandler())();                                  \
  1057.          }                                                                 \
  1058.       }                                                                    \
  1059.    }
  1060.  
  1061. #define VXIpoke(p,w,v)                                                     \
  1062.    {                                                                       \
  1063.       if ((w)==4)                                                          \
  1064.          (VXIpoke)(p,w,v);                                                 \
  1065.       else                                                                 \
  1066.       {                                                                    \
  1067.          register UINT8 board_status;                                      \
  1068.                                                                            \
  1069.          *(p) = (v);                                                       \
  1070.                                                                            \
  1071.          if (board_status = GetBoardStatus12 ())                           \
  1072.          {                                                                 \
  1073.             while (board_status & 0x25)                                    \
  1074.             {                                                              \
  1075.                *(p) = (v);                                                 \
  1076.                board_status = GetBoardStatus12 ();                         \
  1077.             }                                                              \
  1078.                                                                            \
  1079.             if (board_status & 0x1A)                                       \
  1080.                (*GetBusErrorHandler())();                                  \
  1081.          }                                                                 \
  1082.       }                                                                    \
  1083.    }
  1084.  
  1085. #endif
  1086.  
  1087. #else /* code specifically for NIVXI_EMBEDDED without binary compatibility */
  1088.  
  1089. #if defined(M_I386) || defined(_M_I386) || defined(__I386__)
  1090.  
  1091. #define VXIpeek(p,w,v)  ( *(v) = *(p) )
  1092.  
  1093. #define VXIpoke(p,w,v)  ( *(p) =  (v) )
  1094.  
  1095. #else
  1096.  
  1097. #define VXIpeek(p,w,v)  if (w==4) (VXIpeek)(p,w,v);                        \
  1098.                         else      *(v) = *(p);
  1099.  
  1100. #define VXIpoke(p,w,v)  if (w==4) (VXIpoke)(p,w,v);                        \
  1101.                         else      *(p) = (v);
  1102.  
  1103. #endif
  1104.  
  1105. #endif
  1106.  
  1107. #endif
  1108.  
  1109. /* === End of Declarations =============================================== */
  1110.  
  1111. #if defined(__cplusplus) || defined(__cplusplus__)
  1112.    }
  1113. #endif
  1114.  
  1115. #endif
  1116.  
  1117.