/drivers/wiener_pcivme_dll/Release/pcivme_ni.obj |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
## -0,0 +1 ## |
+application/octet-stream |
\ No newline at end of property |
Index: wiener_pcivme_dll/Release/pcivme_ni_NT.obj |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/wiener_pcivme_dll/Release/pcivme_ni_NT.obj |
---|
Property changes: |
Added: svn:mime-type |
## -0,0 +1 ## |
+application/octet-stream |
\ No newline at end of property |
Index: wiener_pcivme_dll/Release/pcivme_ni.dll |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/wiener_pcivme_dll/Release/pcivme_ni.dll |
---|
Property changes: |
Added: svn:mime-type |
## -0,0 +1 ## |
+application/octet-stream |
\ No newline at end of property |
Index: wiener_pcivme_dll/Release/pcivme_ni.log |
=================================================================== |
--- wiener_pcivme_dll/Release/pcivme_ni.log (nonexistent) |
+++ wiener_pcivme_dll/Release/pcivme_ni.log (revision 218) |
@@ -0,0 +1,17 @@ |
+Build started 14.4.2014 15:35:41. |
+ 1>Project "C:\home\rok\wiener_pcivme_dll\pcivme_ni.vcxproj" on node 2 (Build target(s)). |
+ 1>ClCompile: |
+ C:\Program Files\Microsoft Visual Studio 12.0\VC\bin\CL.exe /c /I. /Zi /nologo /W3 /WX- /O2 /Oy- /D WIN32 /D NDEBUG /D _WINDOWS /D _VC80_UPGRADE=0x0600 /D _WINDLL /GF /Gm- /EHsc /MT /GS /Gy /fp:precise /Zc:wchar_t /Zc:forScope /Fo".\Release\\" /Fd".\Release\vc120.pdb" /Gd /TC /analyze- /errorReport:prompt pcivme_ni.c |
+ pcivme_ni.c |
+ Link: |
+ C:\Program Files\Microsoft Visual Studio 12.0\VC\bin\link.exe /ERRORREPORT:PROMPT /OUT:".\Release\pcivme_ni.dll" /INCREMENTAL:NO /NOLOGO odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /MANIFEST /MANIFESTUAC:"level='asInvoker' uiAccess='false'" /manifest:embed /PDB:".\Release\pcivme_ni.pdb" /SUBSYSTEM:WINDOWS /TLBID:1 /DYNAMICBASE /NXCOMPAT /IMPLIB:".\Release\pcivme_ni.lib" /MACHINE:X86 /SAFESEH /DLL .\Release\Klist.obj |
+ .\Release\os_info.obj |
+ .\Release\pcivme_ni.obj |
+ .\Release\pcivme_ni_NT.obj |
+ Creating library .\Release\pcivme_ni.lib and object .\Release\pcivme_ni.exp |
+ pcivme_ni.vcxproj -> C:\home\rok\wiener_pcivme_dll\.\Release\pcivme_ni.dll |
+ 1>Done Building Project "C:\home\rok\wiener_pcivme_dll\pcivme_ni.vcxproj" (Build target(s)). |
+ |
+Build succeeded. |
+ |
+Time Elapsed 00:00:01.53 |
Index: wiener_pcivme_dll/Release/Klist.obj |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/wiener_pcivme_dll/Release/Klist.obj |
---|
Property changes: |
Added: svn:mime-type |
## -0,0 +1 ## |
+application/octet-stream |
\ No newline at end of property |
Index: wiener_pcivme_dll/Release/pcivme_ni.exp |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/wiener_pcivme_dll/Release/pcivme_ni.exp |
---|
Property changes: |
Added: svn:mime-type |
## -0,0 +1 ## |
+application/octet-stream |
\ No newline at end of property |
Index: wiener_pcivme_dll/Release/os_info.obj |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/wiener_pcivme_dll/Release/os_info.obj |
---|
Property changes: |
Added: svn:mime-type |
## -0,0 +1 ## |
+application/octet-stream |
\ No newline at end of property |
Index: wiener_pcivme_dll/Release/pcivme_ni.lib |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/wiener_pcivme_dll/Release/pcivme_ni.lib |
---|
Property changes: |
Added: svn:mime-type |
## -0,0 +1 ## |
+application/octet-stream |
\ No newline at end of property |
Index: wiener_pcivme_dll/Release/link.write.1.tlog |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/wiener_pcivme_dll/Release/link.write.1.tlog |
---|
Property changes: |
Added: svn:mime-type |
## -0,0 +1 ## |
+application/octet-stream |
\ No newline at end of property |
Index: wiener_pcivme_dll/Release/CL.write.1.tlog |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/wiener_pcivme_dll/Release/CL.write.1.tlog |
---|
Property changes: |
Added: svn:mime-type |
## -0,0 +1 ## |
+application/octet-stream |
\ No newline at end of property |
Index: wiener_pcivme_dll/Release/link-rc.write.1.tlog |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/wiener_pcivme_dll/Release/link-rc.write.1.tlog |
---|
Property changes: |
Added: svn:mime-type |
## -0,0 +1 ## |
+application/octet-stream |
\ No newline at end of property |
Index: wiener_pcivme_dll/Release/pcivme_ni.lastbuildstate |
=================================================================== |
--- wiener_pcivme_dll/Release/pcivme_ni.lastbuildstate (nonexistent) |
+++ wiener_pcivme_dll/Release/pcivme_ni.lastbuildstate (revision 218) |
@@ -0,0 +1,2 @@ |
+#v4.0:v110:false |
+Release|Win32|C:\Users\f9daq\rok\wienerpciada\PciVme\Dll-source\| |
Index: wiener_pcivme_dll/Release/link-cvtres.write.1.tlog |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/wiener_pcivme_dll/Release/link-cvtres.write.1.tlog |
---|
Property changes: |
Added: svn:mime-type |
## -0,0 +1 ## |
+application/octet-stream |
\ No newline at end of property |
Index: wiener_pcivme_dll/Release/vc110.pdb |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/wiener_pcivme_dll/Release/vc110.pdb |
---|
Property changes: |
Added: svn:mime-type |
## -0,0 +1 ## |
+application/octet-stream |
\ No newline at end of property |
Index: wiener_pcivme_dll/Release/pcivme_ni.write.1.tlog |
=================================================================== |
--- wiener_pcivme_dll/Release/pcivme_ni.write.1.tlog (nonexistent) |
+++ wiener_pcivme_dll/Release/pcivme_ni.write.1.tlog (revision 218) |
@@ -0,0 +1,5 @@ |
+^C:\Users\f9daq\rok\wienerpciada\PciVme\Dll-source\pcivme_ni.vcxproj |
+C:\Users\f9daq\rok\wienerpciada\PciVme\Dll-source\Release\pcivme_ni.lib |
+C:\Users\f9daq\rok\wienerpciada\PciVme\Dll-source\Release\pcivme_ni.lib |
+C:\Users\f9daq\rok\wienerpciada\PciVme\Dll-source\Release\pcivme_ni.exp |
+C:\Users\f9daq\rok\wienerpciada\PciVme\Dll-source\Release\pcivme_ni.exp |
Index: wiener_pcivme_dll/Release/link.read.1.tlog |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/wiener_pcivme_dll/Release/link.read.1.tlog |
---|
Property changes: |
Added: svn:mime-type |
## -0,0 +1 ## |
+application/octet-stream |
\ No newline at end of property |
Index: wiener_pcivme_dll/Release/pcivme_ni.Build.CppClean.log |
=================================================================== |
--- wiener_pcivme_dll/Release/pcivme_ni.Build.CppClean.log (nonexistent) |
+++ wiener_pcivme_dll/Release/pcivme_ni.Build.CppClean.log (revision 218) |
@@ -0,0 +1,25 @@ |
+C:\USERS\F9DAQ\ROK\WIENERPCIADA\PCIVME\DLL-SOURCE\RELEASE\PCIVME_NI_NT.OBJ |
+C:\USERS\F9DAQ\ROK\WIENERPCIADA\PCIVME\DLL-SOURCE\RELEASE\PCIVME_NI.OBJ |
+C:\USERS\F9DAQ\ROK\WIENERPCIADA\PCIVME\DLL-SOURCE\RELEASE\OS_INFO.OBJ |
+C:\USERS\F9DAQ\ROK\WIENERPCIADA\PCIVME\DLL-SOURCE\RELEASE\KLIST.OBJ |
+C:\USERS\F9DAQ\ROK\WIENERPCIADA\PCIVME\DLL-SOURCE\RELEASE\VC110.PDB |
+C:\USERS\F9DAQ\ROK\WIENERPCIADA\PCIVME\DLL-SOURCE\RELEASE\PCIVME_NI.DLL |
+C:\Users\f9daq\rok\wienerpciada\PciVme\Dll-source\Release\pcivme_ni.lib |
+C:\Users\f9daq\rok\wienerpciada\PciVme\Dll-source\Release\pcivme_ni.exp |
+C:\Users\f9daq\rok\wienerpciada\PciVme\Dll-source\Release\Klist.obj |
+C:\Users\f9daq\rok\wienerpciada\PciVme\Dll-source\Release\os_info.obj |
+C:\Users\f9daq\rok\wienerpciada\PciVme\Dll-source\Release\pcivme_ni.obj |
+C:\Users\f9daq\rok\wienerpciada\PciVme\Dll-source\Release\pcivme_ni_NT.obj |
+C:\Users\f9daq\rok\wienerpciada\PciVme\Dll-source\Release\cl.command.1.tlog |
+C:\Users\f9daq\rok\wienerpciada\PciVme\Dll-source\Release\CL.read.1.tlog |
+C:\Users\f9daq\rok\wienerpciada\PciVme\Dll-source\Release\CL.write.1.tlog |
+C:\Users\f9daq\rok\wienerpciada\PciVme\Dll-source\Release\link-cvtres.read.1.tlog |
+C:\Users\f9daq\rok\wienerpciada\PciVme\Dll-source\Release\link-cvtres.write.1.tlog |
+C:\Users\f9daq\rok\wienerpciada\PciVme\Dll-source\Release\link-rc.read.1.tlog |
+C:\Users\f9daq\rok\wienerpciada\PciVme\Dll-source\Release\link-rc.write.1.tlog |
+C:\Users\f9daq\rok\wienerpciada\PciVme\Dll-source\Release\link.command.1.tlog |
+C:\Users\f9daq\rok\wienerpciada\PciVme\Dll-source\Release\link.read.1.tlog |
+C:\Users\f9daq\rok\wienerpciada\PciVme\Dll-source\Release\link.write.1.tlog |
+C:\Users\f9daq\rok\wienerpciada\PciVme\Dll-source\Release\pcivme_ni.write.1.tlog |
+C:\Users\f9daq\rok\wienerpciada\PciVme\Dll-source\Release\vc110.pdb |
+C:\Users\f9daq\rok\wienerpciada\PciVme\Dll-source\.\Release\pcivme_ni.dll |
Index: wiener_pcivme_dll/Release/CL.read.1.tlog |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/wiener_pcivme_dll/Release/CL.read.1.tlog |
---|
Property changes: |
Added: svn:mime-type |
## -0,0 +1 ## |
+application/octet-stream |
\ No newline at end of property |
Index: wiener_pcivme_dll/Release/link-rc.read.1.tlog |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/wiener_pcivme_dll/Release/link-rc.read.1.tlog |
---|
Property changes: |
Added: svn:mime-type |
## -0,0 +1 ## |
+application/octet-stream |
\ No newline at end of property |
Index: wiener_pcivme_dll/Release/link.command.1.tlog |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/wiener_pcivme_dll/Release/link.command.1.tlog |
---|
Property changes: |
Added: svn:mime-type |
## -0,0 +1 ## |
+application/octet-stream |
\ No newline at end of property |
Index: wiener_pcivme_dll/Release/link-cvtres.read.1.tlog |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/wiener_pcivme_dll/Release/link-cvtres.read.1.tlog |
---|
Property changes: |
Added: svn:mime-type |
## -0,0 +1 ## |
+application/octet-stream |
\ No newline at end of property |
Index: wiener_pcivme_dll/Release/cl.command.1.tlog |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/wiener_pcivme_dll/Release/cl.command.1.tlog |
---|
Property changes: |
Added: svn:mime-type |
## -0,0 +1 ## |
+application/octet-stream |
\ No newline at end of property |
Index: wiener_pcivme_dll/pcivme_ni.c |
=================================================================== |
--- wiener_pcivme_dll/pcivme_ni.c (nonexistent) |
+++ wiener_pcivme_dll/pcivme_ni.c (revision 218) |
@@ -0,0 +1,148 @@ |
+//------------------------------------------------------------------------------------------- |
+// pcivme_ni.c - a ni labview dll skeleton for the ARW pcivme interface |
+// |
+// (c) 1999-2004 ARW Elektronik, Germany |
+// |
+// this source code is published under GPL (Open Source). You can use, redistrubute and |
+// modify it unless this header is not modified or deleted. No warranty is given that |
+// this software will work like expected. |
+// This product is not authorized for use as critical component in life support systems |
+// wihout the express written approval of ARW Elektronik Germany. |
+// |
+// Please announce changes and hints to ARW Elektronik |
+// |
+// |
+// $Log: pcivme_ni.c,v $ |
+// Revision 1.2 2004/07/24 07:47:00 klaus |
+// Update copyright to 2004 |
+// |
+// Revision 1.1.1.1 2003/11/14 23:17:18 klaus |
+// First put into repository |
+// |
+// Revision 1.2 2002/10/27 17:05:33 klaus |
+// CVS log added, file addressing bug > 2 Gbtye circumvent |
+// |
+// what who when |
+// first steps AR 07.11.1999 |
+// |
+//------------------------------------------------------------------------------------------- |
+// INCLUDES |
+// |
+ |
+ |
+#include <windows.h> |
+#include <os_info.h> |
+#include <pcivme_ni_NT.h> |
+#include <pcivme_ni.h> |
+#include <stdio.h> |
+ |
+//------------------------------------------------------------------------------------------- |
+// DEFINES |
+// |
+ |
+//------------------------------------------------------------------------------------------- |
+// TYPEDEFS |
+// |
+typedef struct |
+{ |
+ int (*VMEinit)(const char *cszDeviceName, unsigned short nVMEMM, unsigned char ubAddressModifier, int *pnHandle); |
+ int (*VMEread)(int nHandle, unsigned long ulAddress, unsigned char ubAccessWidth, unsigned long ulElementCount, void *pvBuffer); |
+ int (*VMEwrite)(int nHandle, unsigned long ulAddress, unsigned char ubAccessWidth, unsigned long ulElementCount, void *pvBuffer); |
+ int (*VMEaccessVIC)(int Handle, unsigned char ubAccessMode, unsigned short uwAddress, unsigned char *ubContent); |
+ int (*VMEreset)(int Handle); |
+ int (*VMETAS)(int Handle, unsigned long ulAddress, unsigned char *ubResult); |
+ int (*VMEinterrupt)(int Handle, unsigned char *ubVector); |
+ int (*VMEsysfailGet)(int nHandle, BOOLEAN *bResult); |
+ int (*VMEsysfailSet)(int nHandle, BOOLEAN bForce); |
+ int (*VMEclose)(int nHandle); |
+} MY_ACTIONS; |
+ |
+//------------------------------------------------------------------------------------------- |
+// LOCALS |
+// |
+static MY_ACTIONS ma; // the selected actions |
+static BOOLEAN firstTime = TRUE; |
+ |
+//------------------------------------------------------------------------------------------- |
+// EXTERNALS |
+// |
+ |
+//------------------------------------------------------------------------------------------- |
+// GLOBALS |
+// |
+ |
+//------------------------------------------------------------------------------------------- |
+// FUNCTIONS |
+// |
+int __declspec(dllexport) VMEinit(const char *cszDeviceName, unsigned short nVMEMM, unsigned char ubAddressModifier, int *pnHandle) |
+{ |
+ |
+ if (firstTime) |
+ { |
+ if (IsWindowsNT()) |
+ { |
+ ma.VMEinit = VMEinitNT; |
+ ma.VMEread = VMEreadNT; |
+ ma.VMEwrite = VMEwriteNT; |
+ ma.VMEaccessVIC = VMEaccessVICNT; |
+ ma.VMEreset = VMEresetNT; |
+ ma.VMETAS = VMETASNT; |
+ ma.VMEinterrupt = VMEinterruptNT; |
+ ma.VMEsysfailGet = VMEsysfailGetNT; |
+ ma.VMEsysfailSet = VMEsysfailSetNT; |
+ ma.VMEclose = VMEcloseNT; |
+ } |
+ |
+ else |
+ return -1; |
+ |
+ firstTime = FALSE; |
+ } |
+ |
+ return ma.VMEinit(cszDeviceName, nVMEMM, ubAddressModifier, pnHandle); |
+} |
+ |
+int __declspec(dllexport) VMEread(int nHandle, unsigned long ulAddress, unsigned char ubAccessWidth, unsigned long ulElementCount, void *pvBuffer) |
+{ |
+ return ma.VMEread(nHandle, ulAddress, ubAccessWidth, ulElementCount, pvBuffer); |
+} |
+ |
+int __declspec(dllexport) VMEwrite(int nHandle, unsigned long ulAddress, unsigned char ubAccessWidth, unsigned long ulElementCount, void *pvBuffer) |
+{ |
+ return ma.VMEwrite(nHandle, ulAddress, ubAccessWidth, ulElementCount, pvBuffer); |
+} |
+ |
+int __declspec(dllexport) VMEaccessVIC(int nHandle, unsigned char ubAccessMode, unsigned short uwAddress, unsigned char *ubContent) |
+{ |
+ return ma.VMEaccessVIC(nHandle, ubAccessMode, uwAddress, ubContent); |
+} |
+ |
+int __declspec(dllexport) VMEreset(int nHandle) |
+{ |
+ return ma.VMEreset(nHandle); |
+} |
+ |
+int __declspec(dllexport) VMETAS(int nHandle, unsigned long ulAddress, unsigned char *ubResult) |
+{ |
+ return ma.VMETAS(nHandle, ulAddress, ubResult); |
+} |
+ |
+int __declspec(dllexport) VMEsysfailGet(int nHandle, BOOLEAN *bResult) |
+{ |
+ return ma.VMEsysfailGet(nHandle, bResult); |
+} |
+ |
+int __declspec(dllexport) VMEsysfailSet(int nHandle, BOOLEAN bForce) |
+{ |
+ return ma.VMEsysfailSet(nHandle, bForce); |
+} |
+ |
+int __declspec(dllexport) VMEinterrupt(int nHandle, unsigned char *ubVector) |
+{ |
+ return ma.VMEinterrupt(nHandle, ubVector); |
+} |
+ |
+int __declspec(dllexport) VMEclose(int nHandle) |
+{ |
+ return ma.VMEclose(nHandle); |
+} |
\ No newline at end of file |
Index: wiener_pcivme_dll/pcivme_ni_NT.c |
=================================================================== |
--- wiener_pcivme_dll/pcivme_ni_NT.c (nonexistent) |
+++ wiener_pcivme_dll/pcivme_ni_NT.c (revision 218) |
@@ -0,0 +1,458 @@ |
+//------------------------------------------------------------------------------------------- |
+// pcivme_ni_NT.c - a ni labview dll skeleton for the ARW pcivme interface, winNT |
+// |
+// (c) 1999-2004 ARW Elektronik, Germany |
+// |
+// this source code is published under GPL (Open Source). You can use, redistrubute and |
+// modify it unless this header is not modified or deleted. No warranty is given that |
+// this software will work like expected. |
+// This product is not authorized for use as critical component in life support systems |
+// wihout the express written approval of ARW Elektronik Germany. |
+// |
+// Please announce changes and hints to ARW Elektronik |
+// |
+// $Log: pcivme_ni_NT.c,v $ |
+// Revision 1.2 2004/07/24 07:47:00 klaus |
+// Update copyright to 2004 |
+// |
+// Revision 1.1.1.1 2003/11/14 23:17:18 klaus |
+// First put into repository |
+// |
+// Revision 1.4 2002/10/27 21:32:35 klaus |
+// compatibility improved |
+// |
+// Revision 1.3 2002/10/27 19:22:58 klaus |
+// backward compatibilty problem for 2 Gbyte limit solved |
+// |
+// Revision 1.2 2002/10/27 17:05:33 klaus |
+// CVS log added, file addressing bug > 2 Gbtye circumvent |
+// |
+// what who when |
+// first steps AR 07.11.1999 |
+// |
+ |
+//------------------------------------------------------------------------------------------- |
+// INCLUDES |
+// |
+#include <windows.h> |
+#include <winioctl.h> |
+#include <pcivme.h> // header for win-NT |
+#include <vic.h> |
+#include <vme.h> |
+#include <pcivme_ni_NT.h> |
+#include <Klist.h> |
+ |
+#include <stdio.h> |
+FILE *vmefp; |
+//------------------------------------------------------------------------------------------- |
+// DEFINES |
+// |
+#define DEFDEVICENAME "\\\\.\\PCIVME:\\VMEMMxx" |
+#define LIMIT_2GBYTE 0x80000000 // 2 GByte addressing limit of WINNT ... |
+ |
+//------------------------------------------------------------------------------------------- |
+// TYPEDEFS |
+// |
+typedef struct // a element associated to a open path (between VMEinit and VMEclose) |
+{ |
+ HANDLE nHandle; |
+ PCIVME_ACCESS_COMMAND access; |
+} OPEN_PATH; |
+ |
+//------------------------------------------------------------------------------------------- |
+// LOCALS |
+// |
+// user initialisation table for pcivme |
+static PCIVME_INIT_COMMAND sUserInitStruct = {2, {{STOP, WORD_ACCESS, 0, 0}}}; |
+// user deinitialisation table |
+static PCIVME_INIT_COMMAND sUserDeInitStruct = {2, {{STOP, WORD_ACCESS, 0, 0}}}; |
+ |
+// the list of Path specific data (a element lives between VMEinit and VMEclose) |
+static LIST liPathList = (LIST)NULL; |
+ |
+//------------------------------------------------------------------------------------------- |
+// EXTERNALS |
+// |
+ |
+//------------------------------------------------------------------------------------------- |
+// GLOBALS |
+// |
+ |
+//------------------------------------------------------------------------------------------- |
+// FUNCTIONS |
+// |
+// not only delete a element - even remove the whole list if it is empty |
+static void removeListElement(OPEN_PATH *open_path) |
+{ |
+ List_Delete((LPVOID)open_path); |
+ |
+ // remove the list if the last item was deleted ---- |
+ if ((liPathList != NULL) && (List_IsEmpty(liPathList) == TRUE)) |
+ { |
+ List_Destroy(&liPathList); |
+ liPathList = (LIST)NULL; |
+ } |
+} |
+ |
+//------------------------------------------------------------------------- |
+// create a DeviceName out of cszDeviceName and nIfcNum |
+static char *DeviceName(const char *cszDeviceName, int nIfcNum) |
+{ |
+ static char buffer[255]; |
+ char *ptr = buffer; |
+ |
+ if (cszDeviceName == NULL) |
+ strcpy_s(buffer, 255 , DEFDEVICENAME); |
+ else |
+ strcpy_s(buffer, 255 , cszDeviceName); |
+ |
+ while (*ptr) ptr++; |
+ |
+ do |
+ { |
+ ptr--; |
+ } while (*ptr != 'M'); |
+ |
+ ptr++; |
+ |
+ if (nIfcNum >= 10) |
+ { |
+ *ptr++ = '1'; |
+ nIfcNum -= 10; |
+ } |
+ |
+ *ptr++ = '0' + nIfcNum; |
+ *ptr = 0; |
+ |
+ return buffer; |
+} |
+ |
+int VMEinitNT(const char *cszDeviceName, unsigned short nVMEMM, unsigned char ubAddressModifier, int *pnHandle) |
+{ |
+ OPEN_PATH *open_path; |
+ DWORD DIOC_count; // count of returned bytes of DeviceIoControl |
+ DWORD result = 0; |
+ vmefp = fopen("pcivme_ni.log","w"); |
+ fprintf(vmefp, "VMEinitNT\n"); |
+ if (liPathList == NULL) // create a list to hold the paths and its variables |
+ { |
+ liPathList = List_Create(); |
+ if (liPathList == (LIST)NULL) |
+ return GetLastError(); |
+ } |
+ |
+ open_path = (OPEN_PATH *)List_NewFirst(liPathList, sizeof(OPEN_PATH)); |
+ |
+ *pnHandle = -1; |
+ |
+ if ((open_path->nHandle = CreateFile( |
+ DeviceName(cszDeviceName, nVMEMM), |
+ GENERIC_READ | GENERIC_WRITE, |
+ 0, |
+ NULL, |
+ OPEN_EXISTING, |
+ FILE_ATTRIBUTE_NORMAL, |
+ NULL)) != ((HANDLE)-1)) |
+ { |
+ // init hardware (only one time after the first init it works OK) |
+ result = DeviceIoControl(open_path->nHandle, |
+ PCIVME_INIT_HARDWARE, |
+ &sUserInitStruct, |
+ (DWORD)sizeof(sUserInitStruct), |
+ NULL, |
+ (DWORD)0, |
+ &DIOC_count, |
+ NULL); |
+ |
+ // set the current access parameters ------------------ |
+ open_path->access.bAddressModifier = ubAddressModifier; |
+ open_path->access.bAccessType = |
+ open_path->access.bIncrement = BYTE_ACCESS; |
+ open_path->access.dwAccessBase = 0; |
+ |
+ result = DeviceIoControl(open_path->nHandle, |
+ PCIVME_SET_ACCESS_PARA, |
+ &open_path->access, |
+ (DWORD)sizeof(open_path->access), |
+ NULL, |
+ 0, |
+ &DIOC_count, |
+ NULL); |
+ |
+ |
+ if (!result) |
+ { |
+ |
+ result = GetLastError(); |
+ fprintf(vmefp, "DeviceIoControl result=%d\n", result); |
+ fclose(vmefp); |
+ CloseHandle(open_path->nHandle); |
+ removeListElement(open_path); |
+ return result; |
+ } |
+ |
+ *pnHandle = (int)open_path; |
+ |
+ return 0; |
+ } |
+ else |
+ { |
+ |
+ result = GetLastError(); |
+ fprintf(vmefp, "CreateFile error result=%d %s\n", result, DeviceName(cszDeviceName, nVMEMM)); |
+ fclose(vmefp); |
+ removeListElement(open_path); |
+ return result; |
+ } |
+} |
+ |
+int VMEreadNT(int nHandle, unsigned long ulAddress, unsigned char ubAccessWidth, unsigned long ulElementCount, void *pvBuffer) |
+{ |
+ DWORD DIOC_count; // count of returned bytes of DeviceIoControl |
+ unsigned long ulNumberOfBytes = ulElementCount * ubAccessWidth; |
+ unsigned long bytesRead; |
+ OPEN_PATH *open_path = (OPEN_PATH *)nHandle; |
+ |
+ if (nHandle == -1) return ERROR_PATH_NOT_FOUND; |
+ |
+ // set the current access parameters ------------------ |
+ open_path->access.bAccessType = |
+ open_path->access.bIncrement = ubAccessWidth; |
+ |
+ // take care of only 2 Gbyte addressing capabilities of WINNT ... |
+ if (ulAddress >= LIMIT_2GBYTE) |
+ { |
+ ulAddress -= LIMIT_2GBYTE; |
+ open_path->access.dwAccessBase = LIMIT_2GBYTE; |
+ } |
+ else |
+ open_path->access.dwAccessBase = 0; |
+ |
+ if (!DeviceIoControl(open_path->nHandle, |
+ PCIVME_SET_ACCESS_PARA, |
+ &open_path->access, |
+ (DWORD)sizeof(open_path->access), |
+ NULL, |
+ 0, |
+ &DIOC_count, |
+ NULL)) |
+ return GetLastError(); |
+ |
+ SetFilePointer(open_path->nHandle, ulAddress, NULL, FILE_BEGIN); |
+ |
+ if (!ReadFile(open_path->nHandle, pvBuffer, ulNumberOfBytes, &bytesRead, NULL)) |
+ return GetLastError(); |
+ |
+ return 0; |
+} |
+ |
+int VMEwriteNT(int nHandle, unsigned long ulAddress, unsigned char ubAccessWidth, unsigned long ulElementCount, void *pvBuffer) |
+{ |
+ DWORD DIOC_count; // count of returned bytes of DeviceIoControl |
+ unsigned long ulNumberOfBytes = ulElementCount * ubAccessWidth; |
+ unsigned long bytesRead; |
+ OPEN_PATH *open_path = (OPEN_PATH *)nHandle; |
+ |
+ if (nHandle == -1) return ERROR_PATH_NOT_FOUND; |
+ |
+ // set the current access parameters ------------------ |
+ open_path->access.bAccessType = |
+ open_path->access.bIncrement = ubAccessWidth; |
+ |
+ // take care of only 2 Gbyte addressing capabilities of WINNT ... |
+ if (ulAddress >= LIMIT_2GBYTE) |
+ { |
+ ulAddress -= LIMIT_2GBYTE; |
+ open_path->access.dwAccessBase = LIMIT_2GBYTE; |
+ } |
+ else |
+ open_path->access.dwAccessBase = 0; |
+ |
+ if (!DeviceIoControl(open_path->nHandle, |
+ PCIVME_SET_ACCESS_PARA, |
+ &open_path->access, |
+ (DWORD)sizeof(open_path->access), |
+ NULL, |
+ 0, |
+ &DIOC_count, |
+ NULL)) |
+ return GetLastError(); |
+ |
+ SetFilePointer(open_path->nHandle, ulAddress, NULL, FILE_BEGIN); |
+ |
+ if (!WriteFile(open_path->nHandle, pvBuffer, ulNumberOfBytes, &bytesRead, NULL)) |
+ return GetLastError(); |
+ |
+ return 0; |
+} |
+ |
+int VMEaccessVICNT(int nHandle, unsigned char ubAccessMode, unsigned short uwAddress, unsigned char *ubContent) |
+{ |
+ DWORD DIOC_count; // count of returned bytes of DeviceIoControl |
+ OPEN_PATH *open_path = (OPEN_PATH *)nHandle; |
+ PCIVME_VIC68A_ACTION sAction; // structure to access vic chip |
+ DWORD result; |
+ |
+ if (nHandle == -1) return ERROR_PATH_NOT_FOUND; |
+ |
+ sAction.wRegisterAddress = uwAddress; |
+ sAction.wAccessMode = ubAccessMode; |
+ sAction.bContent = *ubContent; |
+ |
+ result = DeviceIoControl(open_path->nHandle, PCIVME_ACCESS_VIC68A, |
+ &sAction, sizeof(sAction), &sAction, |
+ sizeof(sAction), &DIOC_count, NULL); |
+ |
+ *ubContent = sAction.bContent; |
+ |
+ if (!result) |
+ return GetLastError(); |
+ else |
+ return 0; |
+} |
+ |
+int VMEresetNT(int nHandle) |
+{ |
+ DWORD DIOC_count; // count of returned bytes of DeviceIoControl |
+ OPEN_PATH *open_path = (OPEN_PATH *)nHandle; |
+ DWORD result; |
+ PCIVME_RESET_COMMAND reset_command; |
+ PCIVME_RESET_RESULT reset_result; |
+ |
+ if (nHandle == -1) return ERROR_PATH_NOT_FOUND; |
+ |
+ reset_command.wCommand = VME_RESET_CMD; |
+ reset_result.wResult = 0; |
+ result = DeviceIoControl(open_path->nHandle, PCIVME_RESET, |
+ &reset_command, sizeof(reset_command), |
+ &reset_result, sizeof(reset_result), |
+ &DIOC_count, NULL); |
+ |
+ if (!result) |
+ return GetLastError(); |
+ else |
+ { |
+ result = 1; |
+ |
+ while (reset_result.wResult && result) |
+ { |
+ reset_command.wCommand = POLL_RESET_CMD; |
+ result = DeviceIoControl(open_path->nHandle, PCIVME_RESET, |
+ &reset_command, sizeof(reset_command), |
+ &reset_result, sizeof(reset_result), |
+ &DIOC_count, NULL); |
+ Sleep(10); |
+ } |
+ } |
+ |
+ if (!result) |
+ return GetLastError(); |
+ else |
+ return 0; |
+} |
+ |
+int VMETASNT(int nHandle, unsigned long ulAddress, unsigned char *ubResult) |
+{ |
+ DWORD DIOC_count; // count of returned bytes of DeviceIoControl |
+ OPEN_PATH *open_path = (OPEN_PATH *)nHandle; |
+ PCIVME_TAS_STRUCT sTAS; // structure to do a Test and Set |
+ DWORD result; |
+ |
+ if (nHandle == -1) return ERROR_PATH_NOT_FOUND; |
+ |
+ sTAS.wModifier = open_path->access.bAddressModifier; |
+ sTAS.dwAddress = ulAddress; |
+ sTAS.bContent = 0x80; |
+ |
+ result = DeviceIoControl(open_path->nHandle, PCIVME_TAS, |
+ &sTAS, (DWORD)sizeof(sTAS), &sTAS, |
+ (DWORD)sizeof(sTAS), &DIOC_count, NULL); |
+ |
+ *ubResult = sTAS.bContent; |
+ |
+ if (!result) |
+ return GetLastError(); |
+ else |
+ return 0; |
+} |
+ |
+int VMEinterruptNT(int nHandle, unsigned char *ubVector) |
+{ |
+// DWORD DIOC_count; // count of returned bytes of DeviceIoControl |
+ OPEN_PATH *open_path = (OPEN_PATH *)nHandle; |
+ |
+ if (nHandle == -1) return ERROR_PATH_NOT_FOUND; |
+ |
+ return 0; |
+} |
+ |
+int VMEsysfailGetNT(int nHandle, BOOLEAN *bResult) |
+{ |
+ DWORD DIOC_count; // count of returned bytes of DeviceIoControl |
+ OPEN_PATH *open_path = (OPEN_PATH *)nHandle; |
+ PCIVME_VIC68A_ACTION sAction; // structure to access vic chip |
+ DWORD result; |
+ |
+ if (nHandle == -1) return ERROR_PATH_NOT_FOUND; |
+ |
+ sAction.wRegisterAddress = EGICR; |
+ sAction.wAccessMode = VIC68A_READ; |
+ sAction.bContent = 0; |
+ |
+ result = DeviceIoControl(open_path->nHandle, PCIVME_ACCESS_VIC68A, |
+ &sAction, sizeof(sAction), &sAction, |
+ sizeof(sAction), &DIOC_count, NULL); |
+ |
+ |
+ *bResult = (sAction.bContent & 0x08) ? FALSE : TRUE; |
+ |
+ if (!result) |
+ return GetLastError(); |
+ else |
+ return 0; |
+} |
+ |
+int VMEsysfailSetNT(int nHandle, BOOLEAN bForce) |
+{ |
+ DWORD DIOC_count; // count of returned bytes of DeviceIoControl |
+ OPEN_PATH *open_path = (OPEN_PATH *)nHandle; |
+ PCIVME_VIC68A_ACTION sAction; // structure to access vic chip |
+ DWORD result; |
+ |
+ if (nHandle == -1) return ERROR_PATH_NOT_FOUND; |
+ |
+ sAction.wRegisterAddress = ICR7; |
+ sAction.wAccessMode = (bForce == TRUE) ? VIC68A_AND : VIC68A_OR; |
+ sAction.bContent = (bForce == TRUE) ? 0x3F : 0x80; |
+ |
+ result = DeviceIoControl(open_path->nHandle, PCIVME_ACCESS_VIC68A, |
+ &sAction, (DWORD)sizeof(sAction), &sAction, |
+ (DWORD)sizeof(sAction), &DIOC_count, NULL); |
+ if (!result) |
+ return GetLastError(); |
+ else |
+ return 0; |
+} |
+ |
+int VMEcloseNT(int nHandle) |
+{ |
+ DWORD DIOC_count; // count of returned bytes of DeviceIoControl |
+ OPEN_PATH *open_path = (OPEN_PATH *)nHandle; |
+ |
+ if (nHandle == -1) return ERROR_PATH_NOT_FOUND; |
+ |
+ DeviceIoControl(open_path->nHandle, |
+ PCIVME_DEINIT_HARDWARE, |
+ &sUserDeInitStruct, |
+ (DWORD)sizeof(sUserDeInitStruct), |
+ NULL, |
+ 0, |
+ &DIOC_count, |
+ NULL); |
+ |
+ CloseHandle(open_path->nHandle); |
+ removeListElement(open_path); |
+ |
+ return 0; |
+} |
+ |
Index: wiener_pcivme_dll/pcivme_ni.vcxproj |
=================================================================== |
--- wiener_pcivme_dll/pcivme_ni.vcxproj (nonexistent) |
+++ wiener_pcivme_dll/pcivme_ni.vcxproj (revision 218) |
@@ -0,0 +1,150 @@ |
+<?xml version="1.0" encoding="utf-8"?> |
+<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> |
+ <ItemGroup Label="ProjectConfigurations"> |
+ <ProjectConfiguration Include="Debug|Win32"> |
+ <Configuration>Debug</Configuration> |
+ <Platform>Win32</Platform> |
+ </ProjectConfiguration> |
+ <ProjectConfiguration Include="Release|Win32"> |
+ <Configuration>Release</Configuration> |
+ <Platform>Win32</Platform> |
+ </ProjectConfiguration> |
+ </ItemGroup> |
+ <PropertyGroup Label="Globals"> |
+ <SccProjectName>pcivme_ni</SccProjectName> |
+ <SccLocalPath>.</SccLocalPath> |
+ <ProjectGuid>{A549E673-98F7-439F-8F28-CDE063B35DD5}</ProjectGuid> |
+ </PropertyGroup> |
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> |
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration"> |
+ <ConfigurationType>DynamicLibrary</ConfigurationType> |
+ <PlatformToolset>v120</PlatformToolset> |
+ <UseOfMfc>false</UseOfMfc> |
+ </PropertyGroup> |
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration"> |
+ <ConfigurationType>DynamicLibrary</ConfigurationType> |
+ <PlatformToolset>v120</PlatformToolset> |
+ <UseOfMfc>false</UseOfMfc> |
+ </PropertyGroup> |
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> |
+ <ImportGroup Label="ExtensionSettings"> |
+ </ImportGroup> |
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets"> |
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> |
+ <Import Project="$(VCTargetsPath)Microsoft.Cpp.UpgradeFromVC60.props" /> |
+ </ImportGroup> |
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets"> |
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> |
+ <Import Project="$(VCTargetsPath)Microsoft.Cpp.UpgradeFromVC60.props" /> |
+ </ImportGroup> |
+ <PropertyGroup Label="UserMacros" /> |
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> |
+ <OutDir>.\Debug\</OutDir> |
+ <IntDir>.\Debug\</IntDir> |
+ <LinkIncremental>true</LinkIncremental> |
+ </PropertyGroup> |
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> |
+ <OutDir>.\Release\</OutDir> |
+ <IntDir>.\Release\</IntDir> |
+ <LinkIncremental>false</LinkIncremental> |
+ </PropertyGroup> |
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> |
+ <ClCompile> |
+ <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary> |
+ <InlineFunctionExpansion>Default</InlineFunctionExpansion> |
+ <FunctionLevelLinking>false</FunctionLevelLinking> |
+ <Optimization>Disabled</Optimization> |
+ <SuppressStartupBanner>true</SuppressStartupBanner> |
+ <WarningLevel>Level3</WarningLevel> |
+ <MinimalRebuild>true</MinimalRebuild> |
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat> |
+ <AdditionalIncludeDirectories>.;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> |
+ <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions> |
+ <AssemblerListingLocation>.\Debug\</AssemblerListingLocation> |
+ <PrecompiledHeaderOutputFile>.\Debug\pcivme_ni.pch</PrecompiledHeaderOutputFile> |
+ <ObjectFileName>.\Debug\</ObjectFileName> |
+ <ProgramDataBaseFileName>.\Debug\</ProgramDataBaseFileName> |
+ </ClCompile> |
+ <Midl> |
+ <SuppressStartupBanner>true</SuppressStartupBanner> |
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> |
+ <TypeLibraryName>.\Debug\pcivme_ni.tlb</TypeLibraryName> |
+ <MkTypLibCompatible>true</MkTypLibCompatible> |
+ <RedirectOutputAndErrors>NUL</RedirectOutputAndErrors> |
+ <TargetEnvironment>Win32</TargetEnvironment> |
+ </Midl> |
+ <ResourceCompile> |
+ <Culture>0x0407</Culture> |
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> |
+ </ResourceCompile> |
+ <Bscmake> |
+ <SuppressStartupBanner>true</SuppressStartupBanner> |
+ <OutputFile>.\Debug\pcivme_ni.bsc</OutputFile> |
+ </Bscmake> |
+ <Link> |
+ <SuppressStartupBanner>true</SuppressStartupBanner> |
+ <LinkDLL>true</LinkDLL> |
+ <GenerateDebugInformation>true</GenerateDebugInformation> |
+ <SubSystem>Windows</SubSystem> |
+ <OutputFile>.\Debug\pcivme_ni.dll</OutputFile> |
+ <ImportLibrary>.\Debug\pcivme_ni.lib</ImportLibrary> |
+ <AdditionalDependencies>odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies> |
+ </Link> |
+ </ItemDefinitionGroup> |
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> |
+ <ClCompile> |
+ <RuntimeLibrary>MultiThreaded</RuntimeLibrary> |
+ <InlineFunctionExpansion>Default</InlineFunctionExpansion> |
+ <StringPooling>true</StringPooling> |
+ <FunctionLevelLinking>true</FunctionLevelLinking> |
+ <Optimization>MaxSpeed</Optimization> |
+ <SuppressStartupBanner>true</SuppressStartupBanner> |
+ <WarningLevel>Level3</WarningLevel> |
+ <AdditionalIncludeDirectories>.;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> |
+ <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions> |
+ <AssemblerListingLocation>.\Release\</AssemblerListingLocation> |
+ <PrecompiledHeaderOutputFile>.\Release\pcivme_ni.pch</PrecompiledHeaderOutputFile> |
+ <ObjectFileName>.\Release\</ObjectFileName> |
+ <ProgramDataBaseFileName>.\Release\</ProgramDataBaseFileName> |
+ </ClCompile> |
+ <Midl> |
+ <SuppressStartupBanner>true</SuppressStartupBanner> |
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> |
+ <TypeLibraryName>.\Release\pcivme_ni.tlb</TypeLibraryName> |
+ <MkTypLibCompatible>true</MkTypLibCompatible> |
+ <RedirectOutputAndErrors>NUL</RedirectOutputAndErrors> |
+ <TargetEnvironment>Win32</TargetEnvironment> |
+ </Midl> |
+ <ResourceCompile> |
+ <Culture>0x0407</Culture> |
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> |
+ </ResourceCompile> |
+ <Bscmake> |
+ <SuppressStartupBanner>true</SuppressStartupBanner> |
+ <OutputFile>.\Release\pcivme_ni.bsc</OutputFile> |
+ </Bscmake> |
+ <Link> |
+ <SuppressStartupBanner>true</SuppressStartupBanner> |
+ <LinkDLL>true</LinkDLL> |
+ <SubSystem>Windows</SubSystem> |
+ <OutputFile>.\Release\pcivme_ni.dll</OutputFile> |
+ <ImportLibrary>.\Release\pcivme_ni.lib</ImportLibrary> |
+ <AdditionalDependencies>odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies> |
+ </Link> |
+ </ItemDefinitionGroup> |
+ <ItemGroup> |
+ <ClCompile Include="Klist.c" /> |
+ <ClCompile Include="os_info.c" /> |
+ <ClCompile Include="pcivme_ni.c" /> |
+ <ClCompile Include="pcivme_ni_NT.c" /> |
+ </ItemGroup> |
+ <ItemGroup> |
+ <ClInclude Include="Klist.h" /> |
+ <ClInclude Include="os_info.h" /> |
+ <ClInclude Include="pcivme_ni.h" /> |
+ <ClInclude Include="pcivme_ni_NT.h" /> |
+ </ItemGroup> |
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> |
+ <ImportGroup Label="ExtensionTargets"> |
+ </ImportGroup> |
+</Project> |
\ No newline at end of file |
Index: wiener_pcivme_dll/os_info.h |
=================================================================== |
--- wiener_pcivme_dll/os_info.h (nonexistent) |
+++ wiener_pcivme_dll/os_info.h (revision 218) |
@@ -0,0 +1,32 @@ |
+#ifndef __OS_INFO_H__ |
+#define __OS_INFO_H__ |
+//------------------------------------------------------------------------------------------- |
+// os_info.h - request the OS type and version - the prototypes |
+// |
+// (c) 1999-2004 ARW Elektronik, Germany |
+// |
+// |
+// this source code is published under GPL (Open Source). You can use, redistrubute and |
+// modify it unless this header is not modified or deleted. No warranty is given that |
+// this software will work like expected. |
+// This product is not authorized for use as critical component in life support systems |
+// wihout the express written approval of ARW Elektronik Germany. |
+// |
+// Please announce changes and hints to ARW Elektronik |
+// |
+// |
+// $Log: os_info.h,v $ |
+// Revision 1.2 2004/07/24 08:05:31 klaus |
+// Update copyright to 2004 |
+// |
+// |
+// what who when |
+// first steps AR 07.11.1999 |
+// |
+ |
+BOOLEAN IsWindowsNT(void); |
+BOOLEAN IsWindows98(void); |
+BOOLEAN IsWindows95(void); |
+ |
+#endif |
+ |
Index: wiener_pcivme_dll/pcivme_ni.v11.suo |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/wiener_pcivme_dll/pcivme_ni.v11.suo |
---|
Property changes: |
Added: svn:mime-type |
## -0,0 +1 ## |
+application/octet-stream |
\ No newline at end of property |
Index: wiener_pcivme_dll/Debug/pcivme_ni.obj |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/wiener_pcivme_dll/Debug/pcivme_ni.obj |
---|
Property changes: |
Added: svn:mime-type |
## -0,0 +1 ## |
+application/octet-stream |
\ No newline at end of property |
Index: wiener_pcivme_dll/Debug/pcivme_ni_NT.obj |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/wiener_pcivme_dll/Debug/pcivme_ni_NT.obj |
---|
Property changes: |
Added: svn:mime-type |
## -0,0 +1 ## |
+application/octet-stream |
\ No newline at end of property |
Index: wiener_pcivme_dll/Debug/pcivme_ni.dll |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/wiener_pcivme_dll/Debug/pcivme_ni.dll |
---|
Property changes: |
Added: svn:mime-type |
## -0,0 +1 ## |
+application/octet-stream |
\ No newline at end of property |
Index: wiener_pcivme_dll/Debug/vc110.idb |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/wiener_pcivme_dll/Debug/vc110.idb |
---|
Property changes: |
Added: svn:mime-type |
## -0,0 +1 ## |
+application/octet-stream |
\ No newline at end of property |
Index: wiener_pcivme_dll/Debug/pcivme_ni.ilk |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/wiener_pcivme_dll/Debug/pcivme_ni.ilk |
---|
Property changes: |
Added: svn:mime-type |
## -0,0 +1 ## |
+application/octet-stream |
\ No newline at end of property |
Index: wiener_pcivme_dll/Debug/pcivme_ni.log |
=================================================================== |
--- wiener_pcivme_dll/Debug/pcivme_ni.log (nonexistent) |
+++ wiener_pcivme_dll/Debug/pcivme_ni.log (revision 218) |
@@ -0,0 +1,18 @@ |
+Build started 10.2.2014 9:28:27. |
+ 1>Project "C:\Users\f9daq\rok\wienerpciada\PciVme\Dll-source\pcivme_ni.vcxproj" on node 2 (Build target(s)). |
+ 1>ClCompile: |
+ C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\bin\CL.exe /c /I. /ZI /nologo /W3 /WX- /Od /Oy- /D WIN32 /D _DEBUG /D _WINDOWS /D _VC80_UPGRADE=0x0600 /D _WINDLL /Gm /EHsc /MTd /GS /Gy- /fp:precise /Zc:wchar_t /Zc:forScope /Fo".\Debug\\" /Fd".\Debug\vc110.pdb" /Gd /TC /analyze- /errorReport:prompt pcivme_ni.c |
+ pcivme_ni.c |
+ Link: |
+ C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\bin\link.exe /ERRORREPORT:PROMPT /OUT:".\Debug\pcivme_ni.dll" /INCREMENTAL /NOLOGO odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /MANIFEST /MANIFESTUAC:"level='asInvoker' uiAccess='false'" /manifest:embed /DEBUG /PDB:".\Debug\pcivme_ni.pdb" /SUBSYSTEM:WINDOWS /TLBID:1 /DYNAMICBASE /NXCOMPAT /IMPLIB:".\Debug\pcivme_ni.lib" /MACHINE:X86 /SAFESEH /DLL .\Debug\Klist.obj |
+ .\Debug\os_info.obj |
+ .\Debug\pcivme_ni.obj |
+ .\Debug\pcivme_ni_NT.obj |
+ 1>Klist.obj : warning LNK4075: ignoring '/EDITANDCONTINUE' due to '/SAFESEH' specification |
+ Creating library .\Debug\pcivme_ni.lib and object .\Debug\pcivme_ni.exp |
+ pcivme_ni.vcxproj -> C:\Users\f9daq\rok\wienerpciada\PciVme\Dll-source\.\Debug\pcivme_ni.dll |
+ 1>Done Building Project "C:\Users\f9daq\rok\wienerpciada\PciVme\Dll-source\pcivme_ni.vcxproj" (Build target(s)). |
+ |
+Build succeeded. |
+ |
+Time Elapsed 00:00:00.64 |
Index: wiener_pcivme_dll/Debug/link.write.1.tlog |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/wiener_pcivme_dll/Debug/link.write.1.tlog |
---|
Property changes: |
Added: svn:mime-type |
## -0,0 +1 ## |
+application/octet-stream |
\ No newline at end of property |
Index: wiener_pcivme_dll/Debug/CL.write.1.tlog |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/wiener_pcivme_dll/Debug/CL.write.1.tlog |
---|
Property changes: |
Added: svn:mime-type |
## -0,0 +1 ## |
+application/octet-stream |
\ No newline at end of property |
Index: wiener_pcivme_dll/Debug/link-rc.write.1.tlog |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/wiener_pcivme_dll/Debug/link-rc.write.1.tlog |
---|
Property changes: |
Added: svn:mime-type |
## -0,0 +1 ## |
+application/octet-stream |
\ No newline at end of property |
Index: wiener_pcivme_dll/Debug/pcivme_ni.lastbuildstate |
=================================================================== |
--- wiener_pcivme_dll/Debug/pcivme_ni.lastbuildstate (nonexistent) |
+++ wiener_pcivme_dll/Debug/pcivme_ni.lastbuildstate (revision 218) |
@@ -0,0 +1,2 @@ |
+#v4.0:v110:false |
+Debug|Win32|C:\Users\f9daq\rok\wienerpciada\PciVme\Dll-source\| |
Index: wiener_pcivme_dll/Debug/link-cvtres.write.1.tlog |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/wiener_pcivme_dll/Debug/link-cvtres.write.1.tlog |
---|
Property changes: |
Added: svn:mime-type |
## -0,0 +1 ## |
+application/octet-stream |
\ No newline at end of property |
Index: wiener_pcivme_dll/Debug/vc110.pdb |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/wiener_pcivme_dll/Debug/vc110.pdb |
---|
Property changes: |
Added: svn:mime-type |
## -0,0 +1 ## |
+application/octet-stream |
\ No newline at end of property |
Index: wiener_pcivme_dll/Debug/Klist.obj |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/wiener_pcivme_dll/Debug/Klist.obj |
---|
Property changes: |
Added: svn:mime-type |
## -0,0 +1 ## |
+application/octet-stream |
\ No newline at end of property |
Index: wiener_pcivme_dll/Debug/pcivme_ni.exp |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/wiener_pcivme_dll/Debug/pcivme_ni.exp |
---|
Property changes: |
Added: svn:mime-type |
## -0,0 +1 ## |
+application/octet-stream |
\ No newline at end of property |
Index: wiener_pcivme_dll/Debug/pcivme_ni.write.1.tlog |
=================================================================== |
--- wiener_pcivme_dll/Debug/pcivme_ni.write.1.tlog (nonexistent) |
+++ wiener_pcivme_dll/Debug/pcivme_ni.write.1.tlog (revision 218) |
@@ -0,0 +1,5 @@ |
+^C:\Users\f9daq\rok\wienerpciada\PciVme\Dll-source\pcivme_ni.vcxproj |
+C:\Users\f9daq\rok\wienerpciada\PciVme\Dll-source\Debug\pcivme_ni.lib |
+C:\Users\f9daq\rok\wienerpciada\PciVme\Dll-source\Debug\pcivme_ni.lib |
+C:\Users\f9daq\rok\wienerpciada\PciVme\Dll-source\Debug\pcivme_ni.exp |
+C:\Users\f9daq\rok\wienerpciada\PciVme\Dll-source\Debug\pcivme_ni.exp |
Index: wiener_pcivme_dll/Debug/os_info.obj |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/wiener_pcivme_dll/Debug/os_info.obj |
---|
Property changes: |
Added: svn:mime-type |
## -0,0 +1 ## |
+application/octet-stream |
\ No newline at end of property |
Index: wiener_pcivme_dll/Debug/link.read.1.tlog |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/wiener_pcivme_dll/Debug/link.read.1.tlog |
---|
Property changes: |
Added: svn:mime-type |
## -0,0 +1 ## |
+application/octet-stream |
\ No newline at end of property |
Index: wiener_pcivme_dll/Debug/CL.read.1.tlog |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/wiener_pcivme_dll/Debug/CL.read.1.tlog |
---|
Property changes: |
Added: svn:mime-type |
## -0,0 +1 ## |
+application/octet-stream |
\ No newline at end of property |
Index: wiener_pcivme_dll/Debug/link-rc.read.1.tlog |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/wiener_pcivme_dll/Debug/link-rc.read.1.tlog |
---|
Property changes: |
Added: svn:mime-type |
## -0,0 +1 ## |
+application/octet-stream |
\ No newline at end of property |
Index: wiener_pcivme_dll/Debug/link.command.1.tlog |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/wiener_pcivme_dll/Debug/link.command.1.tlog |
---|
Property changes: |
Added: svn:mime-type |
## -0,0 +1 ## |
+application/octet-stream |
\ No newline at end of property |
Index: wiener_pcivme_dll/Debug/pcivme_ni.pdb |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/wiener_pcivme_dll/Debug/pcivme_ni.pdb |
---|
Property changes: |
Added: svn:mime-type |
## -0,0 +1 ## |
+application/octet-stream |
\ No newline at end of property |
Index: wiener_pcivme_dll/Debug/link-cvtres.read.1.tlog |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/wiener_pcivme_dll/Debug/link-cvtres.read.1.tlog |
---|
Property changes: |
Added: svn:mime-type |
## -0,0 +1 ## |
+application/octet-stream |
\ No newline at end of property |
Index: wiener_pcivme_dll/Debug/cl.command.1.tlog |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/wiener_pcivme_dll/Debug/cl.command.1.tlog |
---|
Property changes: |
Added: svn:mime-type |
## -0,0 +1 ## |
+application/octet-stream |
\ No newline at end of property |
Index: wiener_pcivme_dll/Debug/pcivme_ni.lib |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/wiener_pcivme_dll/Debug/pcivme_ni.lib |
---|
Property changes: |
Added: svn:mime-type |
## -0,0 +1 ## |
+application/octet-stream |
\ No newline at end of property |
Index: wiener_pcivme_dll/pcivme_ni.plg |
=================================================================== |
--- wiener_pcivme_dll/pcivme_ni.plg (nonexistent) |
+++ wiener_pcivme_dll/pcivme_ni.plg (revision 218) |
@@ -0,0 +1,37 @@ |
+<html> |
+<body> |
+<pre> |
+<h1>Erstellungsprotokoll</h1> |
+<h3> |
+--------------------Konfiguration: pcivme_ni - Win32 Release-------------------- |
+</h3> |
+<h3>Befehlszeilen</h3> |
+Erstellen der temporären Datei "E:\DOKUME~1\klaus\LOKALE~1\Temp\RSPD7.tmp" mit Inhalten |
+[ |
+/nologo /MT /W3 /GX /O2 /I "." /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /Fp"Release/pcivme_ni.pch" /YX /Fo"Release/" /Fd"Release/" /FD /c |
+"E:\Work\projects\pcivme_ni\pcivme_ni.c" |
+] |
+Creating command line "cl.exe @E:\DOKUME~1\klaus\LOKALE~1\Temp\RSPD7.tmp" |
+Erstellen der temporären Datei "E:\DOKUME~1\klaus\LOKALE~1\Temp\RSPD8.tmp" mit Inhalten |
+[ |
+kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /incremental:no /pdb:"Release/pcivme_ni.pdb" /machine:I386 /out:"Release/pcivme_ni.dll" /implib:"Release/pcivme_ni.lib" |
+.\Release\Klist.obj |
+.\Release\os_info.obj |
+.\Release\pcivme_ni.obj |
+.\Release\pcivme_ni_95.obj |
+.\Release\pcivme_ni_NT.obj |
+] |
+Erstellen der Befehlzeile "link.exe @E:\DOKUME~1\klaus\LOKALE~1\Temp\RSPD8.tmp" |
+<h3>Ausgabefenster</h3> |
+Kompilierung läuft... |
+pcivme_ni.c |
+Linker-Vorgang läuft... |
+ Bibliothek Release/pcivme_ni.lib und Objekt Release/pcivme_ni.exp wird erstellt |
+ |
+ |
+ |
+<h3>Ergebnisse</h3> |
+pcivme_ni.dll - 0 Fehler, 0 Warnung(en) |
+</pre> |
+</body> |
+</html> |
Index: wiener_pcivme_dll/pcivme_ni.h |
=================================================================== |
--- wiener_pcivme_dll/pcivme_ni.h (nonexistent) |
+++ wiener_pcivme_dll/pcivme_ni.h (revision 218) |
@@ -0,0 +1,56 @@ |
+#ifndef __PCIVME_NI_H__ |
+#define __PCIVME_NI_H__ |
+ |
+//------------------------------------------------------------------------------------------- |
+// pcivme_ni.h - header for ni-labview dll for ARW pcivme interface |
+// |
+// (c) 1999-2004 ARW Elektronik, Germany |
+// |
+// this source code is published under GPL (Open Source). You can use, redistrubute and |
+// modify it unless this header is not modified or deleted. No warranty is given that |
+// this software will work like expected. |
+// This product is not authorized for use as critical component in life support systems |
+// wihout the express written approval of ARW Elektronik Germany. |
+// |
+// Please announce changes and hints to ARW Elektronik |
+// |
+// |
+// $Log: pcivme_ni.h,v $ |
+// Revision 1.2 2004/07/24 08:05:31 klaus |
+// Update copyright to 2004 |
+// |
+// Revision 1.1.1.1 2003/11/14 23:17:18 klaus |
+// First put into repository |
+// |
+// Revision 1.2 2002/10/27 17:05:33 klaus |
+// CVS log added, file addressing bug > 2 Gbtye circumvent |
+// |
+// what who when |
+// first steps AR 17.11.1999 |
+// modified for use with C++ AR 08.06.2002 |
+// |
+ |
+//------------------------------------------------------------------------------------------- |
+// FUNCTIONS |
+// |
+#ifdef __cplusplus |
+extern "C" |
+{ |
+#endif |
+ |
+int __declspec(dllexport) VMEinit(const char *cszDeviceName, unsigned short nVMEMM, unsigned char ubAddressModifier, int *pnHandle); |
+int __declspec(dllexport) VMEread(int nHandle, unsigned long ulAddress, unsigned char ubAccessWidth, unsigned long ulElementCount, void *pvBuffer); |
+int __declspec(dllexport) VMEwrite(int nHandle, unsigned long ulAddress, unsigned char ubAccessWidth, unsigned long ulElementCount, void *pvBuffer); |
+int __declspec(dllexport) VMEaccessVIC(int nHandle, unsigned char ubAccessMode, unsigned short uwAddress, unsigned char *ubContent); |
+int __declspec(dllexport) VMEreset(int nHandle); |
+int __declspec(dllexport) VMETAS(int nHandle, unsigned long ulAddress, unsigned char *ubResult); |
+int __declspec(dllexport) VMEinterrupt(int nHandle, unsigned char *ubVector); |
+int __declspec(dllexport) VMEsysfailGet(int nHandle, BOOLEAN *bResult); |
+int __declspec(dllexport) VMEsysfailSet(int nHandle, BOOLEAN bForce); |
+int __declspec(dllexport) VMEclose(int nHandle); |
+ |
+#ifdef __cplusplus |
+} |
+#endif |
+ |
+#endif /* __PCIVME_NI_H__ */ |
\ No newline at end of file |
Index: wiener_pcivme_dll/pcivme_ni_NT.h |
=================================================================== |
--- wiener_pcivme_dll/pcivme_ni_NT.h (nonexistent) |
+++ wiener_pcivme_dll/pcivme_ni_NT.h (revision 218) |
@@ -0,0 +1,51 @@ |
+#ifndef __PCIVME_NI_NT_H__ |
+#define __PCIVME_NI_NT_H__ |
+ |
+//------------------------------------------------------------------------------------------- |
+// pcivme_ni_NT.c - a ni labview dll skeleton for the ARW pcivme interface, winNT |
+// |
+// (c) 1999-2004 ARW Elektronik, Germany |
+// |
+// this source code is published under GPL (Open Source). You can use, redistrubute and |
+// modify it unless this header is not modified or deleted. No warranty is given that |
+// this software will work like expected. |
+// This product is not authorized for use as critical component in life support systems |
+// wihout the express written approval of ARW Elektronik Germany. |
+// |
+// Please announce changes and hints to ARW Elektronik |
+// |
+// |
+// $Log: pcivme_ni_NT.h,v $ |
+// Revision 1.2 2004/07/24 07:47:00 klaus |
+// Update copyright to 2004 |
+// |
+// Revision 1.1.1.1 2003/11/14 23:17:18 klaus |
+// First put into repository |
+// |
+// Revision 1.2 2002/10/27 17:05:33 klaus |
+// CVS log added, file addressing bug > 2 Gbtye circumvent |
+// |
+// what who when |
+// first steps AR 07.11.1999 |
+// |
+ |
+//------------------------------------------------------------------------------------------- |
+// FUNCTIONS |
+// |
+#include <windows.h> |
+ |
+//------------------------------------------------------------------------------------------- |
+// FUNCTIONS |
+// |
+int VMEinitNT(const char *cszDeviceName, unsigned short nVMEMM, unsigned char ubAddressModifier, int *pnHandle); |
+int VMEreadNT(int nHandle, unsigned long ulAddress, unsigned char ubAccessWidth, unsigned long ulElementCount, void *pvBuffer); |
+int VMEwriteNT(int nHandle, unsigned long ulAddress, unsigned char ubAccessWidth, unsigned long ulElementCount, void *pvBuffer); |
+int VMEaccessVICNT(int nHandle, unsigned char ubAccessMode, unsigned short uwAddress, unsigned char *ubContent); |
+int VMEresetNT(int nHandle); |
+int VMETASNT(int nHandle, unsigned long ulAddress, unsigned char *ubResult); |
+int VMEinterruptNT(int nHandle, unsigned char *ubVector); |
+int VMEsysfailGetNT(int nHandle, BOOLEAN *bResult); |
+int VMEsysfailSetNT(int nHandle, BOOLEAN bForce); |
+int VMEcloseNT(int nHandle); |
+ |
+#endif /* __PCIVME_NI_NT_H__ */ |
\ No newline at end of file |
Index: wiener_pcivme_dll/pcivme_ni.sln |
=================================================================== |
--- wiener_pcivme_dll/pcivme_ni.sln (nonexistent) |
+++ wiener_pcivme_dll/pcivme_ni.sln (revision 218) |
@@ -0,0 +1,20 @@ |
+ |
+Microsoft Visual Studio Solution File, Format Version 12.00 |
+# Visual Studio Express 2012 for Windows Desktop |
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pcivme_ni", "pcivme_ni.vcxproj", "{A549E673-98F7-439F-8F28-CDE063B35DD5}" |
+EndProject |
+Global |
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution |
+ Debug|Win32 = Debug|Win32 |
+ Release|Win32 = Release|Win32 |
+ EndGlobalSection |
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution |
+ {A549E673-98F7-439F-8F28-CDE063B35DD5}.Debug|Win32.ActiveCfg = Debug|Win32 |
+ {A549E673-98F7-439F-8F28-CDE063B35DD5}.Debug|Win32.Build.0 = Debug|Win32 |
+ {A549E673-98F7-439F-8F28-CDE063B35DD5}.Release|Win32.ActiveCfg = Release|Win32 |
+ {A549E673-98F7-439F-8F28-CDE063B35DD5}.Release|Win32.Build.0 = Release|Win32 |
+ EndGlobalSection |
+ GlobalSection(SolutionProperties) = preSolution |
+ HideSolutionNode = FALSE |
+ EndGlobalSection |
+EndGlobal |
Index: wiener_pcivme_dll/Vic.h |
=================================================================== |
--- wiener_pcivme_dll/Vic.h (nonexistent) |
+++ wiener_pcivme_dll/Vic.h (revision 218) |
@@ -0,0 +1,116 @@ |
+#ifndef __VIC_H__ |
+#define __VIC_H__ |
+ |
+//------------------------------------------------------------------------------------------ |
+// vic.h - some constants about the VIC68A chip from cypress semiconductor |
+// |
+// (c) 1999-2004 ARW Elektronik |
+// |
+// this source code is published under GPL (Open Source). You can use, redistrubute and |
+// modify it unless this header is not modified or deleted. No warranty is given that |
+// this software will work like expected. |
+// This product is not authorized for use as critical component in life support systems |
+// wihout the express written approval of ARW Elektronik Germany. |
+// |
+// Please announce changes and hints to ARW Elektronik |
+// |
+// |
+// $Log: Vic.h,v $ |
+// Revision 1.3 2004/07/24 07:07:26 klaus |
+// Update copyright to 2004 |
+// |
+// Revision 1.2 2003/11/15 19:12:51 klaus |
+// Update copyright to 2003 |
+// |
+// Revision 1.1.1.1 2003/11/14 23:16:33 klaus |
+// First put into repository |
+// |
+// Revision 1.3 2002/10/27 16:17:48 klaus |
+// Typing bug fixed caused at log addition |
+// |
+// Revision 1.2 2002/10/27 16:11:03 klaus |
+// Added CVS log into header |
+// |
+// what who when |
+// finished first release to use with the PCIVME interface of ARW AR 24.11.1997 |
+// SRR corrected from SSR AR 18.04.1999 |
+// |
+ |
+/* all address offsets relative to vic base */ |
+ |
+#define VICR1 (WORD)0x07 /* VMEbus Interrupt Control Register #.. */ |
+#define VICR2 (WORD)0x0b |
+#define VICR3 (WORD)0x0f |
+#define VICR4 (WORD)0x13 |
+#define VICR5 (WORD)0x17 |
+#define VICR6 (WORD)0x1b |
+#define VICR7 (WORD)0x1f |
+ |
+#define LICR1 (WORD)0x27 /* Local interrupt control register .. */ |
+#define LICR2 (WORD)0x2b |
+#define LICR3 (WORD)0x2f |
+#define LICR4 (WORD)0x33 |
+#define LICR5 (WORD)0x37 |
+#define LICR6 (WORD)0x3b |
+#define LICR7 (WORD)0x3f |
+#define LIVBR (WORD)0x57 /* Local interrupt vector base register */ |
+ |
+#define ICGSICR (WORD)0x43 /* ICGS interrupt control register */ |
+#define ICGSVBR (WORD)0x4f /* ICGS vector base register */ |
+ |
+#define ICMSICR (WORD)0x47 /* ICMS interrupt control register */ |
+#define ICMSVBR (WORD)0x53 /* ICMS vector base register */ |
+ |
+#define EGICR (WORD)0x4b /* Error group interrupt control register */ |
+#define EGIVBR (WORD)0x5b /* Error group interrupt vector base rg */ |
+ |
+#define ICSR (WORD)0x5f /* Interprozessor communication switch rg */ |
+#define ICR0 (WORD)0x63 |
+#define ICR1 (WORD)0x67 |
+#define ICR2 (WORD)0x6b |
+#define ICR3 (WORD)0x6f |
+#define ICR4 (WORD)0x73 |
+#define ICR5 (WORD)0x77 |
+#define ICR6 (WORD)0x7b |
+#define ICR7 (WORD)0x7f |
+ |
+#define VIICR (WORD)0x03 /* VMEbus Interrupter Interrupt Control */ |
+#define VIRSR (WORD)0x83 /* VMEbus interrupt request status reg */ |
+#define VIVR1 (WORD)0x87 /* VMEbus interrupt vector register .. */ |
+#define VIVR2 (WORD)0x8b |
+#define VIVR3 (WORD)0x8f |
+#define VIVR4 (WORD)0x93 |
+#define VIVR5 (WORD)0x97 |
+#define VIVR6 (WORD)0x9b |
+#define VIVR7 (WORD)0x9f |
+ |
+#define TTR (WORD)0xa3 /* transfer timeout register */ |
+#define LTR (WORD)0xa7 /* local timing register */ |
+#define ICR (WORD)0xaf /* interface configuration register */ |
+ |
+#define ARCR (WORD)0xb3 /* arbiter/requester configuration register*/ |
+#define AMSR (WORD)0xb7 /* address modifier source register */ |
+#define BESR (WORD)0xbb /* bus error source register */ |
+ |
+#define DSICR (WORD)0x23 /* DMA status interrupt control register */ |
+#define DSR (WORD)0xbf /* DMA status register */ |
+ |
+#define SSCR00 (WORD)0xc3 /* slave select 0 control register 0 */ |
+#define SSCR01 (WORD)0xc7 /* slave select 0 control register 1 */ |
+#define SSCR10 (WORD)0xcb /* slave select 1 control register 0 */ |
+#define SSCR11 (WORD)0xcf /* slave select 1 control register 1 */ |
+ |
+#define RCR (WORD)0xd3 /* release control register */ |
+ |
+#define BTDR (WORD)0xab /* block transfer definition register */ |
+#define BTCR (WORD)0xd7 /* block transfer control register */ |
+#define BTLR0 (WORD)0xdb /* block transfer length register 0 */ |
+#define BTLR1 (WORD)0xdf /* block transfer length register 1 */ |
+ |
+#define SRR (WORD)0xe3 /* system reset register */ |
+ |
+#endif |
+ |
+//------------------------------------------------------------------------------------------- |
+//------------------------------------------------------------------------------------------- |
+//------------------------------------------------------------------------------------------- |
Index: wiener_pcivme_dll/Klist.c |
=================================================================== |
--- wiener_pcivme_dll/Klist.c (nonexistent) |
+++ wiener_pcivme_dll/Klist.c (revision 218) |
@@ -0,0 +1,337 @@ |
+//------------------------------------------------------------------------------------------- |
+// klist.c - parts to maintain a doubly linked list (org microsoft) |
+// |
+// Please announce changes and hints to ARW Elektronik |
+// |
+// |
+// $Log: Klist.c,v $ |
+// Revision 1.2 2004/07/24 07:47:46 klaus |
+// revised, removed wrong license terms |
+// |
+// Revision 1.1.1.1 2003/11/14 23:17:18 klaus |
+// First put into repository |
+// |
+// Revision 1.2 2002/10/27 17:05:33 klaus |
+// CVS log added, file addressing bug > 2 Gbtye circumvent |
+// |
+// what who when |
+// first steps AR 07.11.1999 |
+// |
+ |
+//------------------------------------------------------------------------------------------- |
+// INCLUDES |
+// |
+#include <memory.h> |
+#include <windows.h> |
+#include <Klist.h> |
+ |
+//------------------------------------------------------------------------------------------- |
+// DEFINES |
+// |
+#define memcpy memcpy |
+#define BLOCKSIZE 0x4000 |
+ |
+//------------------------------------------------------------------------------------------- |
+// TYPEDEFS |
+// |
+typedef struct |
+{ |
+ HANDLE hMem; // memory handle for this block |
+ int iInUse; // number of allocations taken out of it. 0 => free it |
+ int iNext; // next byte to use |
+ char chData[BLOCKSIZE]; |
+} BLOCK, FAR *PBLOCK; |
+ |
+/* The following definition tells the truth about what an ITEM is. The |
+| header file says only that there's a structure with the tag item_tag and |
+| that a LIST is a pointer to one. Here we spell out what that structure |
+| is (and a LIST is still a pointer to one). A PLIST is defined as a |
+| pointer to one of those, but is only really used because the C |
+| parameter mechanism demands an extra level of indirection for a |
+| parameter that can be updated. (Modula-2 VAR parameter). |
+*/ |
+typedef struct item_tag |
+{ |
+ struct item_tag FAR *pitNext; /* to next in circular list */ |
+ struct item_tag FAR *pitPrev; /* to prev in circular list */ |
+ PBLOCK pBlock; /* to memory block */ |
+ BOOL bAnchor; /* TRUE iff an anchor block */ |
+ BOOL bOK; /* true unless a list op has failed */ |
+ int iLen; /* length of data only */ |
+ char Data[1]; /* the caller's data. The '1' is a lie */ |
+} ITEM; |
+ |
+/* For an anchor block, only the fields pitNext thru bAnchor are allocated. |
+| For a normal list element, Data may well be longer than 1 byte. |
+| The bOK flag is to support a style of programming where several |
+| successive operations can be done without having to check the return |
+| code at each stage. At the end, the list can be examined to see if |
+| the data in it is valid or if it has been made invalid by the failure |
+| of any of the previous operations. Certain operations may result in |
+| having no list at all if they fail (e.g. create) and for these, you'd |
+| better check the result at once! |
+| ??? Some of this screed belongs in the header!!! |
+*/ |
+ |
+//------------------------------------------------------------------------------------------- |
+// LOCALS |
+// |
+static CRITICAL_SECTION CritSec; /* to protect pCurrent */ |
+ |
+#define List_Enter_Crit(x) EnterCriticalSection(x) |
+#define List_Leave_Crit(x) LeaveCriticalSection(x) |
+ |
+static PBLOCK pCurrent = NULL; // block currently in use |
+ // must always be either NULL or valid |
+ |
+static int iAnchorSize; /* Size of anchor block (no data, no dummy) */ |
+static int iHeaderSize; /* Size of data block not counting Data |
+ and offset from cursor back to item. */ |
+static BOOL bInited = FALSE; /* TRUE <=> iAnchorSize and iHeaderSize are OK*/ |
+ |
+#define MOVEBACK(Curs) \ |
+ { Curs = ((char FAR *)Curs-iHeaderSize); } /*move from Data to pitNext*/ |
+ |
+//------------------------------------------------------------------------------------------- |
+// EXTERNALS |
+// |
+ |
+//------------------------------------------------------------------------------------------- |
+// GLOBALS |
+// |
+ |
+//------------------------------------------------------------------------------------------- |
+// FUNCTIONS |
+// |
+ |
+/* Allocate storage for List elements. n.b. after a call to this |
+ you MUST record the value of pCurrent as you need to hand that in |
+ to Free. You don't hand in the value of the actual storage. |
+ See screed above. |
+ This function Enters the critical section. The caller must Leave it. |
+*/ |
+static LPVOID Alloc(int size) |
+{ |
+ HANDLE hMem; |
+ LPVOID pRet; |
+ List_Enter_Crit(&CritSec); |
+ if ((pCurrent==NULL)||(pCurrent->iNext+size>BLOCKSIZE+1)) |
+ { |
+ hMem = GlobalAlloc(GMEM_MOVEABLE|GMEM_SHARE,(DWORD)(sizeof(BLOCK))); |
+ if (hMem==NULL) |
+ { |
+ pCurrent = NULL; |
+ OutputDebugString("GlobalAlloc failed!!\n"); |
+ return NULL; |
+ } |
+ pCurrent = (PBLOCK)GlobalLock(hMem); |
+ if (pCurrent==NULL) |
+ { |
+ OutputDebugString("GlobalLock failed!!\n"); |
+ return NULL; |
+ } |
+ pCurrent->hMem = hMem; |
+ pCurrent->iInUse = 0; |
+ pCurrent->iNext = 0; |
+ } |
+ pRet = &(pCurrent->chData[pCurrent->iNext]); |
+ ++(pCurrent->iInUse); |
+ pCurrent->iNext += size; |
+ |
+ // ensure that the data is aligned 4 byte |
+ pCurrent->iNext += 3; |
+ pCurrent->iNext -= pCurrent->iNext % 4; |
+ |
+ return pRet; |
+} |
+ |
+static void Free(PBLOCK pBlock, LPVOID p) |
+{ |
+ HANDLE hMem; |
+ List_Enter_Crit(&CritSec); |
+ --pBlock->iInUse; |
+ if (pBlock->iInUse<=0) |
+ { |
+ if (pBlock->iInUse<0) |
+ { |
+ // don't know what to do with it |
+ } |
+ |
+ hMem = pBlock->hMem; |
+ GlobalUnlock(hMem); |
+ GlobalFree(hMem); |
+ if (pCurrent==pBlock) pCurrent = NULL; /* defend the invariant */ |
+ } |
+ List_Leave_Crit(&CritSec); |
+} |
+ |
+ /*================================================================== |
+ || Lists are circular, doubly linked with an anchor block which holds |
+ || pointers to both ends. Every block has a flag which shows whether |
+ || it's an anchor or not. |
+ || |
+ || Empty list: |
+ || |
+ || ------------- |
+ || | | |
+ || | Anchor | |
+ || v ------- | |
+ || Ul--->| Next--+--| |
+ || |-------| | |
+ || | Prev--+-- |
+ || ------- |
+ || |
+ || One entry list: |
+ || |
+ || ------------------------------------ |
+ || | | |
+ || | Anchor | |
+ || v ------- ------ | |
+ || Ul--->| Next--+------------->| Next-+---| |
+ || |-------| | |------| | |
+ || | Prev--+---- | Prev-+--- |
+ || ------- |------| |
+ || | Len | |
+ || |------| |
+ || | Data | |
+ || ------ |
+ || Two entry list: |
+ || |
+ || ------------------------------------------------- |
+ || | --------------- --------------- | |
+ || || | | | | |
+ || || Anchor | | | | |
+ || vv -------- | v ------ | ------ | |
+ || Ul--->| Next--+-----+----->| Next-+----+-->| Next-+-- |
+ || |-------| | |------| | | |------| |
+ || | Prev--+-- ------+-Prev | | ---+-Prev | |
+ || ------- | |------| | |------| |
+ || | | Len | | | Len | |
+ || | |------| | |------|<----Cursor |
+ || | | Data | | | Data | |
+ || | ------ | ------ |
+ || | | |
+ || ------------------- |
+ || |
+ || etc. |
+ || |
+ || Note that an external cursor (i.e one which is seen by the caller) |
+ || points to the Data field, not to the start of the structure. |
+ || This allows easy access to the data by the user at the cost of a |
+ || slightly slower traverse. |
+ || Within this module, we may sometimes traverse a list with a cursor |
+ || that points to the start of an item. This is called an item cursor. |
+ È===================================================================*/ |
+ |
+ /*------------------------------------------------------------------ |
+ | Set iAnchorSize and iHeaderSize. Implementation independent! |
+ -------------------------------------------------------------------*/ |
+void APIENTRY List_Init(void) |
+{ |
+ LIST P; |
+ |
+ P = (LIST)&P; /* really any old address will do */ |
+ iAnchorSize = (char FAR *)&(P->iLen) - (char FAR *)&(P->pitNext); |
+ iHeaderSize = (char FAR *)&(P->Data) - (char FAR *)&(P->pitNext); |
+ InitializeCriticalSection(&CritSec); |
+ /* assumes layout in storage is linear */ |
+} |
+ |
+ /*------------------------------------------------------------------ |
+ | Create a list. It will be initially empty |
+ -------------------------------------------------------------------*/ |
+LIST APIENTRY List_Create(void) |
+{ |
+ LIST lst; |
+ |
+ if (!bInited) {List_Init(); } /* prevent some silly errors */ |
+ lst = Alloc(iAnchorSize); |
+ if (lst==NULL) { return NULL; } |
+ lst->pBlock = pCurrent; |
+ List_Leave_Crit(&CritSec); |
+ lst->bOK = TRUE; |
+ lst->pitNext = lst; |
+ lst->pitPrev = lst; |
+ lst->bAnchor = TRUE; |
+ /* no length field set in an anchor block */ |
+ return lst; |
+} |
+ |
+ /*------------------------------------------------------------------ |
+ | Destroy *plst. It does not need to be empty first |
+ -------------------------------------------------------------------*/ |
+void APIENTRY List_Destroy(PLIST plst) |
+{ |
+ LIST pitP; /* item cursor on * plst */ |
+ LIST pitQ; /* item cursor runs one step ahead of pitQ */ |
+ |
+ if (plst==NULL) |
+ return; |
+ /* There is at least an anchor block to destroy */ |
+ pitP = *plst; |
+ do |
+ { |
+ pitQ = pitP->pitNext; |
+ Free(pitP->pBlock, pitP); |
+ pitP = pitQ; |
+ }while(pitP != *plst); |
+ *plst = NULL; |
+} |
+ |
+ /*------------------------------------------------------------------ |
+ | Return the address of the place for Len bytes of data in a new |
+ | item at the start of lst |
+ -------------------------------------------------------------------*/ |
+LPVOID APIENTRY List_NewFirst(LIST lst, UINT uLen) |
+{ |
+ LIST pit; |
+ |
+ if (lst==NULL) |
+ return NULL; |
+ pit = Alloc(iHeaderSize+uLen); |
+ if (pit==NULL) { lst->bOK = FALSE; return NULL; } |
+ pit->pBlock = pCurrent; |
+ List_Leave_Crit(&CritSec); |
+ pit->iLen = uLen; |
+ pit->pitPrev = lst; |
+ pit->pitNext = lst->pitNext; |
+ lst->pitNext->pitPrev = pit; /* for empty list that set lst->pitPrev */ |
+ lst->pitNext = pit; |
+ pit->bAnchor = FALSE; |
+ return (char FAR *)&(pit->Data); |
+} |
+ |
+ |
+ /*------------------------------------------------------------------ |
+ | Delete the item that Curs identifies. |
+ | This will be only a few (maybe as little as 3) machine instructions |
+ | quicker than DeleteForwards or DeleteBackwards but leaves Curs dangling. |
+ | It is therefore NOT usually to be preferred. |
+ | It may be useful when you have a function which returns an LPVOID |
+ | since the argument does not need to be a variable. |
+ | Trivial example: List_Delete(List_First(L)); |
+ -------------------------------------------------------------------*/ |
+void APIENTRY List_Delete(LPVOID Curs) |
+{ |
+ LIST pit; |
+ |
+ if(Curs==NULL) |
+ return; |
+ MOVEBACK(Curs) |
+ pit = (LIST)Curs; |
+ pit->pitNext->pitPrev = pit->pitPrev; |
+ pit->pitPrev->pitNext = pit->pitNext; |
+ Free(pit->pBlock, pit); |
+} |
+ |
+ |
+ /*--------------------------------------------------------------------- |
+ | Return TRUE if and only if lst is empty |
+ ----------------------------------------------------------------------*/ |
+BOOL APIENTRY List_IsEmpty(LIST lst) |
+{ |
+ if (lst==NULL) |
+ return TRUE; /* well it's sort of true isn't it? */ |
+ return lst->pitNext ==lst; |
+} |
+ |
Index: wiener_pcivme_dll/pcivme.h |
=================================================================== |
--- wiener_pcivme_dll/pcivme.h (nonexistent) |
+++ wiener_pcivme_dll/pcivme.h (revision 218) |
@@ -0,0 +1,289 @@ |
+#ifndef __PCIVME_H__ |
+#define __PCIVME_H__ |
+//------------------------------------------------------------------------- |
+// WINNT driver for PCIVME interface from ARW Elektronik, Germany --------- |
+// IO definitions and common data structures between application and driver |
+// |
+// (c) 1999-2004 ARW Elektronik |
+// |
+// this source code is published under GPL (Open Source). You can use, redistrubute and |
+// modify it unless this header is not modified or deleted. No warranty is given that |
+// this software will work like expected. |
+// This product is not authorized for use as critical component in life support systems |
+// wihout the express written approval of ARW Elektronik Germany. |
+// |
+// Please announce changes and hints to ARW Elektronik |
+// |
+// $Log: pcivme.h,v $ |
+// Revision 1.3 2004/07/24 07:07:26 klaus |
+// Update copyright to 2004 |
+// |
+// Revision 1.2 2003/11/15 19:12:50 klaus |
+// Update copyright to 2003 |
+// |
+// Revision 1.1.1.1 2003/11/14 23:16:33 klaus |
+// First put into repository |
+// |
+// Revision 1.4 2002/10/27 17:02:30 klaus |
+// File addressing bug > 2 Gbtye circumvent |
+// |
+// Revision 1.3 2002/10/27 16:17:48 klaus |
+// Typing bug fixed caused at log addition |
+// |
+// Revision 1.2 2002/10/27 16:11:02 klaus |
+// Added CVS log into header |
+// |
+// what who when |
+// started AR 15.06.99 |
+// |
+ |
+//------------------------------------------------------------------------- |
+// INCLUDES |
+// |
+// #include <devioctl.h> must be declared before inclusion when used for driver |
+// #include <winioctl.h> must be declared before inclusion when used for applications |
+ |
+//------------------------------------------------------------------------- |
+// DEFINES |
+// |
+ |
+// to get a compatible view to WIN95 driver |
+#define USER_CONTROL_CODE(x) (0x800 + x) |
+ |
+// initialise a dedicated VMEMM hardware |
+#define PCIVME_INIT_HARDWARE CTL_CODE(\ |
+ FILE_DEVICE_UNKNOWN,\ |
+ USER_CONTROL_CODE(0),\ |
+ METHOD_BUFFERED,\ |
+ FILE_ANY_ACCESS) |
+ |
+// de-initialise a dedicated VMEMM hardware |
+#define PCIVME_DEINIT_HARDWARE CTL_CODE(\ |
+ FILE_DEVICE_UNKNOWN,\ |
+ USER_CONTROL_CODE(1),\ |
+ METHOD_BUFFERED,\ |
+ FILE_ANY_ACCESS) |
+ |
+// get a static status info from a dedicted VMEMM+PCIADA hardware |
+#define PCIVME_GET_STATIC_STATUS CTL_CODE(\ |
+ FILE_DEVICE_UNKNOWN,\ |
+ USER_CONTROL_CODE(4),\ |
+ METHOD_BUFFERED,\ |
+ FILE_ANY_ACCESS) |
+ |
+// get dynamically changing status from PCIADA+VMEMM |
+#define PCIVME_GET_DYNAMIC_STATUS CTL_CODE(\ |
+ FILE_DEVICE_UNKNOWN,\ |
+ USER_CONTROL_CODE(5),\ |
+ METHOD_BUFFERED,\ |
+ FILE_ANY_ACCESS) |
+ |
+// read a vector in case of interrupt from VMEMM or PCIADA |
+#define PCIVME_READ_VECTOR CTL_CODE(\ |
+ FILE_DEVICE_UNKNOWN,\ |
+ USER_CONTROL_CODE(6),\ |
+ METHOD_BUFFERED,\ |
+ FILE_ANY_ACCESS) |
+ |
+// access VIC68A registers direct |
+#define PCIVME_ACCESS_VIC68A CTL_CODE(\ |
+ FILE_DEVICE_UNKNOWN,\ |
+ USER_CONTROL_CODE(7),\ |
+ METHOD_BUFFERED,\ |
+ FILE_ANY_ACCESS) |
+ |
+// enable or disable interrupts from user space |
+#define PCIVME_CONTROL_INTERRUPTS CTL_CODE(\ |
+ FILE_DEVICE_UNKNOWN,\ |
+ USER_CONTROL_CODE(9),\ |
+ METHOD_BUFFERED,\ |
+ FILE_ANY_ACCESS) |
+ |
+// generate a (undivisible) test-and-set instruction |
+#define PCIVME_TAS CTL_CODE(\ |
+ FILE_DEVICE_UNKNOWN,\ |
+ USER_CONTROL_CODE(10),\ |
+ METHOD_BUFFERED,\ |
+ FILE_ANY_ACCESS) |
+ |
+// generate a reset on VME BUS for a dedicated VMEMM interface |
+#define PCIVME_RESET CTL_CODE(\ |
+ FILE_DEVICE_UNKNOWN,\ |
+ USER_CONTROL_CODE(12),\ |
+ METHOD_BUFFERED,\ |
+ FILE_ANY_ACCESS) |
+ |
+// set the access parameter for this file (vmemm) |
+#define PCIVME_SET_ACCESS_PARA CTL_CODE(\ |
+ FILE_DEVICE_UNKNOWN,\ |
+ USER_CONTROL_CODE(13),\ |
+ METHOD_BUFFERED,\ |
+ FILE_ANY_ACCESS) |
+ |
+// my last usefull control code - change each time you add a ctl_code |
+#define PCIVME_LAST_CTL_CODE PCIVME_SET_ACCESS_PARA |
+ |
+// to make standard entries for not compatible WIN95 call codes |
+#define PCIVME_INCOMPATIBLE CTL_CODE(\ |
+ FILE_DEVICE_UNKNOWN,\ |
+ USER_CONTROL_CODE(255),\ |
+ METHOD_BUFFERED,\ |
+ FILE_ANY_ACCESS) |
+ |
+// to get a compatible view to WIN95 driver |
+#define VPCIVMED_INIT_HARDWARE PCIVME_INIT_HARDWARE |
+#define VPCIVMED_DEINIT_HARDWARE PCIVME_DEINIT_HARDWARE |
+#define VPCIVMED_ATTACH_WINDOW PCIVME_INCOMPATIBLE // no compatibility! |
+#define VPCIVMED_DETACH_WINDOW PCIVME_INCOMPATIBLE // no compatibility! |
+#define VPCIVMED_GET_STATIC_STATUS PCIVME_GET_STATIC_STATUS |
+#define VPCIVMED_GET_DYNAMIC_STATUS PCIVME_GET_DYNAMIC_STATUS |
+#define VPCIVMED_READ_VECTOR PCIVME_READ_VECTOR |
+#define VPCIVMED_ACCESS_VIC68A PCIVME_ACCESS_VIC68A |
+#define VPCIVMED_CONTROL_INTERRUPTS PCIVME_CONTROL_INTERRUPTS |
+#define VPCIVMED_TAS PCIVME_TAS |
+#define VPCIVMED_GET_PCIADA_STATUS PCIVME_GET_PCIADA_STATUS |
+#define VPCIVMED_RESET PCIVME_RESET |
+ |
+// switches for PCIVME_(DE)INIT_HARDWARE ------------------------ |
+#define LCR (UCHAR)0 // destination is LCR register |
+#define IFR (UCHAR)1 // destination is VME-Interface register |
+#define VIC (UCHAR)2 // destination is VIC68A register |
+#define STOP (UCHAR)255 // this command stops the init machine |
+ |
+#define BYTE_ACCESS (UCHAR)1 // write byte wise |
+#define WORD_ACCESS (UCHAR)2 // word |
+#define LONG_ACCESS (UCHAR)4 // long |
+ |
+// switches for PCIVME_ACCESS_VIC68A -------------------------- |
+#define VIC68A_READ 0 // read only access |
+#define VIC68A_WRITE 1 // write and read back access |
+#define VIC68A_OR 2 // read, bitwise 'or' content and read back access |
+#define VIC68A_AND 3 // read, bitwise 'and' content and read back access |
+#define VIC68A_WRITE_ONLY 4 // do not read back after write |
+ |
+// switches for the PCIVME_RESET ------------------------------ |
+#define VME_RESET_CMD 0 // raise a VME reset only |
+#define LOCAL_RESET_CMD 1 // raise a local reset only |
+#define GLOBAL_RESET_CMD 2 // raise a global reset |
+#define POLL_RESET_CMD 3 // ask if reset is finished |
+ |
+#define BOGUSADDRESS 0xFFFFFFFF // compatibilty to WIN95 |
+ |
+#ifndef PHYSICAL_ADDRESS |
+#define PHYSICAL_ADDRESS LARGE_INTEGER |
+#endif |
+ |
+//------------------------------------------------------------------------- |
+// TYPEDEFS |
+// |
+typedef struct // one command element to initialize interface or deinitialize |
+{ |
+ UCHAR range; // 0 = lcr, 1 = vme-interface, -1 = stop, default = vme-if |
+ UCHAR type; // 1 = byte access, 2 = word access, 4 = dword access, default byte |
+ USHORT offset; // offset into interface address range for initialisation |
+ ULONG value; // value to initialize |
+} PCIVME_INIT_ELEMENT; |
+ |
+typedef struct |
+{ |
+ ULONG dwInterface; // here dummy 'cause of compatibility to WIN95 |
+ PCIVME_INIT_ELEMENT sVie[8]; // at least one zero element must be the last |
+} PCIVME_INIT_COMMAND; |
+ |
+typedef struct |
+{ |
+ ULONG dwInterface; // here dummy 'cause of compatibility to WIN95 |
+ UCHAR bAddressModifier; // set the current modifier |
+ UCHAR bAccessType; // set the current access type (1,2,4) |
+ UCHAR bIncrement; // set the current byte increment count |
+ ULONG dwAccessBase; // base address of seek operation (extended modifiers only, else must = 0) |
+} PCIVME_ACCESS_COMMAND; |
+ |
+ |
+typedef struct |
+{ |
+ ULONG dwInterface; // here dummy 'cause of compatibility to WIN95 |
+ USHORT wRegisterAddress; // address offset of vic68a register |
+ USHORT wAccessMode; // read, write, or, and |
+ UCHAR bContent; // content to write, and, or |
+} PCIVME_VIC68A_ACTION; |
+ |
+// includes static information about driver parameters ------ |
+typedef struct |
+{ |
+ ULONG dwInterface; // here dummy 'cause of compatibility to WIN95 |
+ ULONG dwLinkCount; // how often this interface is requested |
+ |
+ USHORT wNumMemWindows; // aus der aktuellen konfiguration |
+ USHORT wNumIOPorts; |
+ USHORT wNumIRQs; |
+ USHORT wNumDMAs; |
+ |
+ USHORT wModuleType; // von der angeschlossenen hardware gelesen |
+ USHORT wFPGAVersion; |
+ USHORT wModuleNumber; |
+ USHORT wWordMode; |
+ |
+ USHORT wSysControl; // if the associated VMEMM has slot 1 function |
+ USHORT wConnected; // is the VMEMM connected (obsolete sometimes) |
+ |
+ PHYSICAL_ADDRESS pvLcr; // physikalische adresse des lcr |
+ PHYSICAL_ADDRESS pvIfr; // physikalische adresse des interfaces ohne vme |
+ |
+ ULONG dwDriverVersion; // highWord.lowWord |
+ ULONG dwDriverVariant; // show customized variants here |
+} PCIVME_STATIC_STATUS; |
+ |
+typedef struct |
+{ |
+ ULONG dwInterface; // here dummy 'cause of compatibility to WIN95 |
+ |
+ USHORT wVMEMM_connected; // status: VMEMM is connected and powered |
+ USHORT wVMEMM_enable; // status: VMEMM access is enabled |
+ USHORT wPCIADAIrq; // status: PCIADA timeout IRQ pending |
+ USHORT wVMEMMIrq; // status: VMEMM IRQ pending |
+} PCIVME_DYNAMIC_STATUS; |
+ |
+typedef struct |
+{ |
+ ULONG dwInterface; // here dummy 'cause of compatibility to WIN95 |
+ ULONG dwAddress; // tas to address |
+ USHORT wModifier; // VME address modifier for this window |
+ UCHAR bContent; // byte content to store and get back |
+} PCIVME_TAS_STRUCT; |
+ |
+typedef struct |
+{ |
+ ULONG dwInterface; // here dummy 'cause of compatibility to WIN95 |
+ USHORT wCommand; // the appropriate reset command |
+} PCIVME_RESET_COMMAND; |
+ |
+typedef struct |
+{ |
+ ULONG dwInterface; // here dummy 'cause of compatibility to WIN95 |
+ USHORT wResult; |
+} PCIVME_RESET_RESULT; // polling result: in progress if (wResult != 0) |
+ |
+typedef struct |
+{ |
+ ULONG dwInterface; // here dummy 'cause of compatibility to WIN95.. |
+ USHORT wEnable; // a 1 enables the queue filling, a 0 disables |
+} PCIVME_IRQ_CONTROL; |
+ |
+typedef struct // to request vectors from a interface |
+{ |
+ ULONG dwInterface; // here dummy 'cause of compatibility to WIN95.. |
+ USHORT wRequestCount; // maximum number of vectors to requests |
+ BOOLEAN bPoll; // no blocking allowed - poll always |
+} PCIVME_VECTOR_REQUEST; |
+ |
+typedef struct // the response to the above request |
+{ |
+ ULONG dwInterface; // here dummy 'cause of compatibility to WIN95.. |
+ USHORT wPendingCount; // represents the number of vectors pending |
+ USHORT wCount; // actual delivered count of vectors |
+ BOOLEAN bOverflow; // there was a irq overflow @ this channel |
+ UCHAR bStatusID; // base of following vector array |
+} PCIVME_VECTOR_RESPONSE; |
+ |
+#endif // __PCIVME_H__ |
Index: wiener_pcivme_dll/pcivme_ni.opt |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/wiener_pcivme_dll/pcivme_ni.opt |
---|
Property changes: |
Added: svn:mime-type |
## -0,0 +1 ## |
+application/octet-stream |
\ No newline at end of property |
Index: wiener_pcivme_dll/pcivme_ni.ncb |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/wiener_pcivme_dll/pcivme_ni.ncb |
---|
Property changes: |
Added: svn:mime-type |
## -0,0 +1 ## |
+application/octet-stream |
\ No newline at end of property |
Index: wiener_pcivme_dll/Klist.h |
=================================================================== |
--- wiener_pcivme_dll/Klist.h (nonexistent) |
+++ wiener_pcivme_dll/Klist.h (revision 218) |
@@ -0,0 +1,52 @@ |
+#ifndef __KLIST_H__ |
+#define __KLIST_H__ |
+ |
+//------------------------------------------------------------------------------------------- |
+// klist.h - header parts to maintain a doubly linked list (org microsoft) |
+// |
+// Please announce changes and hints to ARW Elektronik |
+// |
+// |
+// $Log: Klist.h,v $ |
+// Revision 1.2 2004/07/24 07:47:46 klaus |
+// revised, removed wrong license terms |
+// |
+// |
+// what who when |
+// first steps AR 07.11.1999 |
+// |
+ |
+typedef struct item_tag FAR * LIST; |
+typedef LIST FAR * PLIST; |
+ |
+void APIENTRY List_Init(void); |
+/* MUST BE CALLED BEFORE ANY OF THE OTHER FUNCTIONS. */ |
+ |
+LIST APIENTRY List_Create(void); |
+/* Create a list. It will be initially empty */ |
+ |
+void APIENTRY List_Destroy(PLIST plst); |
+/* Destroy *plst. It does not need to be empty first. |
+| All storage directly in the list wil be freed. |
+*/ |
+ |
+LPVOID APIENTRY List_NewFirst(LIST lst, UINT uLen); |
+/* Return the address of the place for Len bytes of data in a new |
+| item at the start of *plst |
+*/ |
+ |
+void APIENTRY List_Delete(LPVOID Curs); |
+/*------------------------------------------------------------------ |
+| Delete the item that Curs identifies. |
+| This will be only a few (maybe as little as 3) machine instructions |
+| quicker than DeleteAndNext or DeleteAndPrev but leaves Curs dangling. |
+| It is therefore NOT usually to be preferred. |
+| It may be useful when you have a function which returns an LPVOID |
+| since the argument does not need to be a variable. |
+| Trivial example: List_Delete(List_First(L)); |
+-------------------------------------------------------------------*/ |
+ |
+BOOL APIENTRY List_IsEmpty(LIST lst); |
+/* Return TRUE if and only if lst is empty */ |
+ |
+#endif /* __KLIST_H__ */ |
\ No newline at end of file |
Index: wiener_pcivme_dll/os_info.c |
=================================================================== |
--- wiener_pcivme_dll/os_info.c (nonexistent) |
+++ wiener_pcivme_dll/os_info.c (revision 218) |
@@ -0,0 +1,116 @@ |
+//------------------------------------------------------------------------------------------- |
+// os_info.c - request the OS type and version |
+// |
+// (c) 1999-2004 ARW Elektronik, Germany |
+// |
+// this source code is published under GPL (Open Source). You can use, redistrubute and |
+// modify it unless this header is not modified or deleted. No warranty is given that |
+// this software will work like expected. |
+// This product is not authorized for use as critical component in life support systems |
+// wihout the express written approval of ARW Elektronik Germany. |
+// |
+// Please announce changes and hints to ARW Elektronik |
+// |
+// |
+// $Log: os_info.c,v $ |
+// Revision 1.2 2004/07/24 07:47:00 klaus |
+// Update copyright to 2004 |
+// |
+// Revision 1.1.1.1 2003/11/14 23:17:18 klaus |
+// First put into repository |
+// |
+// Revision 1.2 2002/10/27 17:05:33 klaus |
+// CVS log added, file addressing bug > 2 Gbtye circumvent |
+// |
+// what who when |
+// first steps AR 07.11.1999 |
+// small change in OS version recognition AR 21.05.2002 |
+// |
+ |
+//------------------------------------------------------------------------------------------- |
+// INCLUDES |
+// |
+#include <windows.h> |
+ |
+//------------------------------------------------------------------------------------------- |
+// DEFINES |
+// |
+ |
+//------------------------------------------------------------------------------------------- |
+// TYPEDEFS |
+// |
+ |
+//------------------------------------------------------------------------------------------- |
+// LOCALS |
+// |
+ |
+//------------------------------------------------------------------------------------------- |
+// EXTERNALS |
+// |
+ |
+//------------------------------------------------------------------------------------------- |
+// GLOBALS |
+// |
+ |
+//------------------------------------------------------------------------------------------- |
+// FUNCTIONS |
+// |
+BOOLEAN IsWindowsNT(void) |
+{ |
+ OSVERSIONINFO osvi; |
+ |
+ osvi.dwOSVersionInfoSize = sizeof(osvi); |
+ if (!GetVersionEx(&osvi)) return FALSE; // can't get info |
+ |
+ if (osvi.dwPlatformId == VER_PLATFORM_WIN32_NT) |
+ { |
+ return TRUE; |
+ } |
+ else |
+ return FALSE; |
+} |
+ |
+BOOLEAN IsWindows95(void) |
+{ |
+ OSVERSIONINFO osvi; |
+ |
+ osvi.dwOSVersionInfoSize = sizeof(osvi); |
+ if (!GetVersionEx(&osvi)) return FALSE; // can't get info |
+ |
+ if (osvi.dwPlatformId == VER_PLATFORM_WIN32_WINDOWS) |
+ { |
+ if ((osvi.dwMajorVersion == 4) && (osvi.dwMinorVersion == 0)) |
+ return TRUE; |
+ else |
+ return FALSE; |
+ } |
+ else |
+ return FALSE; |
+} |
+ |
+BOOLEAN IsWindows98(void) |
+{ |
+ OSVERSIONINFO osvi; |
+ |
+ osvi.dwOSVersionInfoSize = sizeof(osvi); |
+ if (!GetVersionEx(&osvi)) return FALSE; // can't get info |
+ |
+ if (osvi.dwPlatformId == VER_PLATFORM_WIN32_WINDOWS) |
+ { |
+ if ((osvi.dwMajorVersion > 4) || |
+ ((osvi.dwMajorVersion == 4) && (osvi.dwMinorVersion > 0))) |
+ return TRUE; |
+ else |
+ return FALSE; |
+ } |
+ else |
+ return FALSE; |
+} |
+ |
+/* |
+BOOLEAN IsWindowsBlaBla(void) |
+{ |
+ |
+} |
+*/ |
+ |
Index: wiener_pcivme_dll/Vme.h |
=================================================================== |
--- wiener_pcivme_dll/Vme.h (nonexistent) |
+++ wiener_pcivme_dll/Vme.h (revision 218) |
@@ -0,0 +1,57 @@ |
+#ifndef __VME_H__ |
+#define __VME_H__ |
+ |
+//------------------------------------------------------------------------------------------ |
+// vme.h - some constants about VME address modifiers in a more readable kind |
+// |
+// (c) 1999-2004 ARW Elektronik |
+// |
+// this source code is published under GPL (Open Source). You can use, redistrubute and |
+// modify it unless this header is not modified or deleted. No warranty is given that |
+// this software will work like expected. |
+// This product is not authorized for use as critical component in life support systems |
+// wihout the express written approval of ARW Elektronik Germany. |
+// |
+// Please announce changes and hints to ARW Elektronik |
+// |
+// |
+// $Log: Vme.h,v $ |
+// Revision 1.3 2004/07/24 07:07:26 klaus |
+// Update copyright to 2004 |
+// |
+// Revision 1.2 2003/11/15 19:12:51 klaus |
+// Update copyright to 2003 |
+// |
+// Revision 1.1.1.1 2003/11/14 23:16:33 klaus |
+// First put into repository |
+// |
+// Revision 1.3 2002/10/27 16:17:48 klaus |
+// Typing bug fixed caused at log addition |
+// |
+// Revision 1.2 2002/10/27 16:11:03 klaus |
+// Added CVS log into header |
+// |
+// what who when |
+// finished first release to use with the PCIVME interface of ARW AR 22.03.1999 |
+// |
+ |
+typedef WORD ADDRESS_MODIFIER; |
+ |
+#define Std_Sup_Data (ADDRESS_MODIFIER)0x3d |
+#define Std_Sup_Prog (ADDRESS_MODIFIER)0x3e |
+#define Std_NoPriv_Data (ADDRESS_MODIFIER)0x39 |
+#define Std_NoPriv_Prog (ADDRESS_MODIFIER)0x3a |
+ |
+#define Short_Sup (ADDRESS_MODIFIER)0x2d |
+#define Short_NoPriv (ADDRESS_MODIFIER)0x29 |
+ |
+#define Ext_Sup_Data (ADDRESS_MODIFIER)0x0d |
+#define Ext_Sup_Prog (ADDRESS_MODIFIER)0x0e |
+#define Ext_NoPriv_Data (ADDRESS_MODIFIER)0x09 |
+#define Ext_NoPriv_Prog (ADDRESS_MODIFIER)0x0a |
+ |
+#endif |
+ |
+//------------------------------------------------------------------------------------------- |
+//------------------------------------------------------------------------------------------- |
+//------------------------------------------------------------------------------------------- |