Rev 42 | Details | Compare with Previous | Last modification | View Log | RSS feed
| Rev | Author | Line No. | Line | 
|---|---|---|---|
| 16 | f9daq | 1 | //------------------------------------------------------------------------------------------- | 
        
| 2 | // pcivme_ni.c - a ni labview dll skeleton for the ARW pcivme interface | 
        ||
| 3 | // | 
        ||
| 4 | // (c) 1999-2004 ARW Elektronik, Germany | 
        ||
| 5 | // | 
        ||
| 6 | // this source code is published under GPL (Open Source). You can use, redistrubute and  | 
        ||
| 7 | // modify it unless this header  is  not modified or deleted. No warranty is given that  | 
        ||
| 8 | // this software will work like expected. | 
        ||
| 9 | // This product is not authorized for use as critical component in life support systems | 
        ||
| 10 | // wihout the express written approval of ARW Elektronik Germany. | 
        ||
| 11 | // | 
        ||
| 12 | // Please announce changes and hints to ARW Elektronik | 
        ||
| 13 | //  | 
        ||
| 14 | // | 
        ||
| 15 | // $Log: pcivme_ni.c,v $ | 
        ||
| 16 | // Revision 1.2  2004/07/24 07:47:00  klaus | 
        ||
| 17 | // Update copyright to 2004 | 
        ||
| 18 | // | 
        ||
| 19 | // Revision 1.1.1.1  2003/11/14 23:17:18  klaus | 
        ||
| 20 | // First put into repository | 
        ||
| 21 | // | 
        ||
| 22 | // Revision 1.2  2002/10/27 17:05:33  klaus | 
        ||
| 23 | // CVS log added, file addressing bug > 2 Gbtye circumvent | 
        ||
| 24 | // | 
        ||
| 25 | // what                                                              who    when | 
        ||
| 26 | // first steps                                                       AR     07.11.1999 | 
        ||
| 27 | // | 
        ||
| 28 | //------------------------------------------------------------------------------------------- | 
        ||
| 29 | // INCLUDES | 
        ||
| 30 | // | 
        ||
| 42 | f9daq | 31 | |
| 32 | |||
| 16 | f9daq | 33 | #include <windows.h> | 
        
| 34 | #include <os_info.h> | 
        ||
| 35 | #include <pcivme_ni_NT.h> | 
        ||
| 36 | #include <pcivme_ni.h> | 
        ||
| 42 | f9daq | 37 | #include <stdio.h> | 
        
| 16 | f9daq | 38 | |
| 39 | //------------------------------------------------------------------------------------------- | 
        ||
| 40 | // DEFINES | 
        ||
| 41 | // | 
        ||
| 42 | |||
| 43 | //------------------------------------------------------------------------------------------- | 
        ||
| 44 | // TYPEDEFS | 
        ||
| 45 | // | 
        ||
| 46 | typedef struct  | 
        ||
| 47 | { | 
        ||
| 48 | int (*VMEinit)(const char *cszDeviceName, unsigned short nVMEMM, unsigned char ubAddressModifier, int *pnHandle);  | 
        ||
| 49 | int (*VMEread)(int nHandle, unsigned long ulAddress, unsigned char ubAccessWidth, unsigned long ulElementCount, void *pvBuffer);  | 
        ||
| 50 | int (*VMEwrite)(int nHandle, unsigned long ulAddress, unsigned char ubAccessWidth, unsigned long ulElementCount, void *pvBuffer);  | 
        ||
| 51 | int (*VMEaccessVIC)(int Handle, unsigned char ubAccessMode, unsigned short uwAddress, unsigned char *ubContent);  | 
        ||
| 52 | int (*VMEreset)(int Handle);  | 
        ||
| 53 | int (*VMETAS)(int Handle, unsigned long ulAddress, unsigned char *ubResult);  | 
        ||
| 54 | int (*VMEinterrupt)(int Handle, unsigned char *ubVector);  | 
        ||
| 55 | int (*VMEsysfailGet)(int nHandle, BOOLEAN *bResult);  | 
        ||
| 56 | int (*VMEsysfailSet)(int nHandle, BOOLEAN bForce);  | 
        ||
| 57 | int (*VMEclose)(int nHandle);  | 
        ||
| 58 | } MY_ACTIONS;  | 
        ||
| 59 | |||
| 60 | //------------------------------------------------------------------------------------------- | 
        ||
| 61 | // LOCALS | 
        ||
| 62 | // | 
        ||
| 63 | static MY_ACTIONS ma; // the selected actions  | 
        ||
| 64 | static BOOLEAN firstTime = TRUE;  | 
        ||
| 65 | |||
| 66 | //------------------------------------------------------------------------------------------- | 
        ||
| 67 | // EXTERNALS | 
        ||
| 68 | // | 
        ||
| 69 | |||
| 70 | //------------------------------------------------------------------------------------------- | 
        ||
| 71 | // GLOBALS | 
        ||
| 72 | // | 
        ||
| 73 | |||
| 74 | //------------------------------------------------------------------------------------------- | 
        ||
| 75 | // FUNCTIONS | 
        ||
| 76 | // | 
        ||
| 77 | int __declspec(dllexport) VMEinit(const char *cszDeviceName, unsigned short nVMEMM, unsigned char ubAddressModifier, int *pnHandle)  | 
        ||
| 78 | { | 
        ||
| 42 | f9daq | 79 | |
| 16 | f9daq | 80 | if (firstTime)  | 
        
| 81 |         { | 
        ||
| 82 | if (IsWindowsNT())  | 
        ||
| 83 |                 { | 
        ||
| 84 | ma.VMEinit = VMEinitNT;  | 
        ||
| 85 | ma.VMEread = VMEreadNT;  | 
        ||
| 86 | ma.VMEwrite = VMEwriteNT;  | 
        ||
| 87 | ma.VMEaccessVIC = VMEaccessVICNT;  | 
        ||
| 88 | ma.VMEreset = VMEresetNT;  | 
        ||
| 89 | ma.VMETAS = VMETASNT;  | 
        ||
| 90 | ma.VMEinterrupt = VMEinterruptNT;  | 
        ||
| 91 | ma.VMEsysfailGet = VMEsysfailGetNT;  | 
        ||
| 92 | ma.VMEsysfailSet = VMEsysfailSetNT;  | 
        ||
| 93 | ma.VMEclose = VMEcloseNT;  | 
        ||
| 94 |                 } | 
        ||
| 95 | |||
| 96 |                         else | 
        ||
| 97 | return -1;  | 
        ||
| 98 | |||
| 99 | firstTime = FALSE;  | 
        ||
| 100 |         } | 
        ||
| 101 | |||
| 102 | return ma.VMEinit(cszDeviceName, nVMEMM, ubAddressModifier, pnHandle);  | 
        ||
| 103 | } | 
        ||
| 104 | |||
| 105 | int __declspec(dllexport) VMEread(int nHandle, unsigned long ulAddress, unsigned char ubAccessWidth, unsigned long ulElementCount, void *pvBuffer)  | 
        ||
| 106 | { | 
        ||
| 107 | return ma.VMEread(nHandle, ulAddress, ubAccessWidth, ulElementCount, pvBuffer);  | 
        ||
| 108 | }       | 
        ||
| 109 | |||
| 110 | int __declspec(dllexport) VMEwrite(int nHandle, unsigned long ulAddress, unsigned char ubAccessWidth, unsigned long ulElementCount, void *pvBuffer)  | 
        ||
| 111 | { | 
        ||
| 112 | return ma.VMEwrite(nHandle, ulAddress, ubAccessWidth, ulElementCount, pvBuffer);  | 
        ||
| 113 | } | 
        ||
| 114 | |||
| 115 | int __declspec(dllexport) VMEaccessVIC(int nHandle, unsigned char ubAccessMode, unsigned short uwAddress, unsigned char *ubContent)  | 
        ||
| 116 | { | 
        ||
| 117 | return ma.VMEaccessVIC(nHandle, ubAccessMode, uwAddress, ubContent);  | 
        ||
| 118 | } | 
        ||
| 119 | |||
| 120 | int __declspec(dllexport) VMEreset(int nHandle)  | 
        ||
| 121 | { | 
        ||
| 122 | return ma.VMEreset(nHandle);  | 
        ||
| 123 | } | 
        ||
| 124 | |||
| 125 | int __declspec(dllexport) VMETAS(int nHandle, unsigned long ulAddress, unsigned char *ubResult)  | 
        ||
| 126 | { | 
        ||
| 127 | return ma.VMETAS(nHandle, ulAddress, ubResult);  | 
        ||
| 128 | } | 
        ||
| 129 | |||
| 130 | int __declspec(dllexport) VMEsysfailGet(int nHandle, BOOLEAN *bResult)  | 
        ||
| 131 | { | 
        ||
| 132 | return ma.VMEsysfailGet(nHandle, bResult);  | 
        ||
| 133 | } | 
        ||
| 134 | |||
| 135 | int __declspec(dllexport) VMEsysfailSet(int nHandle, BOOLEAN bForce)  | 
        ||
| 136 | { | 
        ||
| 137 | return ma.VMEsysfailSet(nHandle, bForce);  | 
        ||
| 138 | } | 
        ||
| 139 | |||
| 140 | int __declspec(dllexport) VMEinterrupt(int nHandle, unsigned char *ubVector)  | 
        ||
| 141 | { | 
        ||
| 142 | return ma.VMEinterrupt(nHandle, ubVector);  | 
        ||
| 143 | } | 
        ||
| 144 | |||
| 145 | int __declspec(dllexport) VMEclose(int nHandle)  | 
        ||
| 146 | { | 
        ||
| 147 | return ma.VMEclose(nHandle);  | 
        ||
| 148 | } |