/wiener_pciada/Release/pcivme_ni.obj |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pciada/Release/pcivme_ni_NT.obj |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pciada/Release/pcivme_ni.dll |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pciada/Release/pcivme_ni.log |
---|
0,0 → 1,23 |
Build started 10.2.2014 9:31:30. |
1>Project "C:\Users\f9daq\rok\wienerpciada\PciVme\Dll-source\pcivme_ni.vcxproj" on node 2 (Rebuild target(s)). |
1>ClCompile: |
C:\Program Files (x86)\Microsoft Visual Studio 11.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\vc110.pdb" /Gd /TC /analyze- /errorReport:prompt Klist.c os_info.c pcivme_ni.c pcivme_ni_NT.c |
Klist.c |
os_info.c |
pcivme_ni.c |
pcivme_ni_NT.c |
1>pcivme_ni_NT.c(103): warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. |
1>pcivme_ni_NT.c(105): warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. |
Generating Code... |
Link: |
C:\Program Files (x86)\Microsoft Visual Studio 11.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:\Users\f9daq\rok\wienerpciada\PciVme\Dll-source\.\Release\pcivme_ni.dll |
1>Done Building Project "C:\Users\f9daq\rok\wienerpciada\PciVme\Dll-source\pcivme_ni.vcxproj" (Rebuild target(s)). |
Build succeeded. |
Time Elapsed 00:00:01.17 |
/wiener_pciada/Release/link.write.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pciada/Release/CL.write.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pciada/Release/link-rc.write.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pciada/Release/pcivme_ni.lastbuildstate |
---|
0,0 → 1,2 |
#v4.0:v110:false |
Release|Win32|C:\Users\f9daq\rok\wienerpciada\PciVme\Dll-source\| |
/wiener_pciada/Release/link-cvtres.write.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pciada/Release/vc110.pdb |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pciada/Release/Klist.obj |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pciada/Release/pcivme_ni.exp |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pciada/Release/pcivme_ni.write.1.tlog |
---|
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 |
/wiener_pciada/Release/os_info.obj |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pciada/Release/link.read.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pciada/Release/pcivme_ni.Build.CppClean.log |
---|
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 |
/wiener_pciada/Release/CL.read.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pciada/Release/link-rc.read.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pciada/Release/link.command.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pciada/Release/link-cvtres.read.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pciada/Release/cl.command.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pciada/Release/pcivme_ni.lib |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pciada/os_info.h |
---|
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 |
/wiener_pciada/pcivme_ni.v11.suo |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pciada/pcivme_ni.sdf |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pciada/Debug/pcivme_ni.obj |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pciada/Debug/pcivme_ni_NT.obj |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pciada/Debug/pcivme_ni.dll |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pciada/Debug/vc110.idb |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pciada/Debug/pcivme_ni.ilk |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pciada/Debug/pcivme_ni.log |
---|
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 |
/wiener_pciada/Debug/link.write.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pciada/Debug/CL.write.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pciada/Debug/link-rc.write.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pciada/Debug/pcivme_ni.lastbuildstate |
---|
0,0 → 1,2 |
#v4.0:v110:false |
Debug|Win32|C:\Users\f9daq\rok\wienerpciada\PciVme\Dll-source\| |
/wiener_pciada/Debug/link-cvtres.write.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pciada/Debug/vc110.pdb |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pciada/Debug/Klist.obj |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pciada/Debug/pcivme_ni.exp |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pciada/Debug/pcivme_ni.write.1.tlog |
---|
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 |
/wiener_pciada/Debug/os_info.obj |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pciada/Debug/link.read.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pciada/Debug/CL.read.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pciada/Debug/link-rc.read.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pciada/Debug/link.command.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pciada/Debug/pcivme_ni.pdb |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pciada/Debug/link-cvtres.read.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pciada/Debug/cl.command.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pciada/Debug/pcivme_ni.lib |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pciada/pcivme_ni.plg |
---|
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> |
/wiener_pciada/pcivme_ni.c |
---|
0,0 → 1,145 |
//------------------------------------------------------------------------------------------- |
// 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> |
//------------------------------------------------------------------------------------------- |
// 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); |
} |
/wiener_pciada/pcivme_ni_NT.c |
---|
0,0 → 1,448 |
//------------------------------------------------------------------------------------------- |
// 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> |
//------------------------------------------------------------------------------------------- |
// 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(buffer, DEFDEVICENAME); |
else |
strcpy(buffer, 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; |
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(); |
CloseHandle(open_path->nHandle); |
removeListElement(open_path); |
return result; |
} |
*pnHandle = (int)open_path; |
return 0; |
} |
else |
{ |
result = GetLastError(); |
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; |
} |
/wiener_pciada/pcivme_ni.h.bak |
---|
0,0 → 1,53 |
#ifndef __PCIVME_NI_H__ |
#define __PCIVME_NI_H__ |
//------------------------------------------------------------------------------------------- |
// pcivme_ni.h - header for ni-labview dll for ARW pcivme interface |
// |
// (c) 1999-2002 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.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__ */ |
/wiener_pciada/pcivme_ni.dsp |
---|
0,0 → 1,131 |
# Microsoft Developer Studio Project File - Name="pcivme_ni" - Package Owner=<4> |
# Microsoft Developer Studio Generated Build File, Format Version 6.00 |
# ** NICHT BEARBEITEN ** |
# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 |
CFG=pcivme_ni - Win32 Debug |
!MESSAGE Dies ist kein gültiges Makefile. Zum Erstellen dieses Projekts mit NMAKE |
!MESSAGE verwenden Sie den Befehl "Makefile exportieren" und führen Sie den Befehl |
!MESSAGE |
!MESSAGE NMAKE /f "pcivme_ni.mak". |
!MESSAGE |
!MESSAGE Sie können beim Ausführen von NMAKE eine Konfiguration angeben |
!MESSAGE durch Definieren des Makros CFG in der Befehlszeile. Zum Beispiel: |
!MESSAGE |
!MESSAGE NMAKE /f "pcivme_ni.mak" CFG="pcivme_ni - Win32 Debug" |
!MESSAGE |
!MESSAGE Für die Konfiguration stehen zur Auswahl: |
!MESSAGE |
!MESSAGE "pcivme_ni - Win32 Release" (basierend auf "Win32 (x86) Dynamic-Link Library") |
!MESSAGE "pcivme_ni - Win32 Debug" (basierend auf "Win32 (x86) Dynamic-Link Library") |
!MESSAGE |
# Begin Project |
# PROP AllowPerConfigDependencies 0 |
# PROP Scc_ProjName "pcivme_ni" |
# PROP Scc_LocalPath "." |
CPP=cl.exe |
MTL=midl.exe |
RSC=rc.exe |
!IF "$(CFG)" == "pcivme_ni - Win32 Release" |
# PROP BASE Use_MFC 0 |
# PROP BASE Use_Debug_Libraries 0 |
# PROP BASE Output_Dir "Release" |
# PROP BASE Intermediate_Dir "Release" |
# PROP BASE Target_Dir "" |
# PROP Use_MFC 0 |
# PROP Use_Debug_Libraries 0 |
# PROP Output_Dir "Release" |
# PROP Intermediate_Dir "Release" |
# PROP Ignore_Export_Lib 0 |
# PROP Target_Dir "" |
# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c |
# ADD CPP /nologo /MT /W3 /GX /O2 /I "." /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c |
# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32 |
# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32 |
# ADD BASE RSC /l 0x407 /d "NDEBUG" |
# ADD RSC /l 0x407 /d "NDEBUG" |
BSC32=bscmake.exe |
# ADD BASE BSC32 /nologo |
# ADD BSC32 /nologo |
LINK32=link.exe |
# ADD BASE LINK32 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 /machine:I386 |
# ADD LINK32 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 /machine:I386 |
!ELSEIF "$(CFG)" == "pcivme_ni - Win32 Debug" |
# PROP BASE Use_MFC 0 |
# PROP BASE Use_Debug_Libraries 1 |
# PROP BASE Output_Dir "Debug" |
# PROP BASE Intermediate_Dir "Debug" |
# PROP BASE Target_Dir "" |
# PROP Use_MFC 0 |
# PROP Use_Debug_Libraries 1 |
# PROP Output_Dir "Debug" |
# PROP Intermediate_Dir "Debug" |
# PROP Ignore_Export_Lib 0 |
# PROP Target_Dir "" |
# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c |
# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c |
# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32 |
# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32 |
# ADD BASE RSC /l 0x407 /d "_DEBUG" |
# ADD RSC /l 0x407 /d "_DEBUG" |
BSC32=bscmake.exe |
# ADD BASE BSC32 /nologo |
# ADD BSC32 /nologo |
LINK32=link.exe |
# ADD BASE LINK32 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 /debug /machine:I386 /pdbtype:sept |
# ADD LINK32 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 /debug /machine:I386 /pdbtype:sept |
!ENDIF |
# Begin Target |
# Name "pcivme_ni - Win32 Release" |
# Name "pcivme_ni - Win32 Debug" |
# Begin Source File |
SOURCE=.\Klist.c |
# End Source File |
# Begin Source File |
SOURCE=.\Klist.h |
# End Source File |
# Begin Source File |
SOURCE=.\os_info.c |
# End Source File |
# Begin Source File |
SOURCE=.\os_info.h |
# End Source File |
# Begin Source File |
SOURCE=.\pcivme_ni.c |
# End Source File |
# Begin Source File |
SOURCE=.\pcivme_ni.h |
# End Source File |
# Begin Source File |
SOURCE=.\pcivme_ni_95.c |
# End Source File |
# Begin Source File |
SOURCE=.\pcivme_ni_95.h |
# End Source File |
# Begin Source File |
SOURCE=.\pcivme_ni_NT.c |
# End Source File |
# Begin Source File |
SOURCE=.\pcivme_ni_NT.h |
# End Source File |
# End Target |
# End Project |
/wiener_pciada/pcivme_ni.h |
---|
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__ */ |
/wiener_pciada/pcivme_ni_NT.h |
---|
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__ */ |
/wiener_pciada/pcivme_ni.vcxproj |
---|
0,0 → 1,150 |
<?xml version="1.0" encoding="utf-8"?> |
<Project DefaultTargets="Build" ToolsVersion="4.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>v110</PlatformToolset> |
<UseOfMfc>false</UseOfMfc> |
</PropertyGroup> |
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration"> |
<ConfigurationType>DynamicLibrary</ConfigurationType> |
<PlatformToolset>v110</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> |
/wiener_pciada/pcivme_ni.sln |
---|
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 |
/wiener_pciada/pcivme_ni.dsw |
---|
0,0 → 1,33 |
Microsoft Developer Studio Workspace File, Format Version 6.00 |
# WARNUNG: DIESE ARBEITSBEREICHSDATEI DARF NICHT BEARBEITET ODER GELÖSCHT WERDEN! |
############################################################################### |
Project: "pcivme_ni"=.\pcivme_ni.dsp - Package Owner=<4> |
Package=<5> |
{{{ |
begin source code control |
pcivme_ni |
..\..\..\programme\devstudio\myprojects\pcivme_ni |
end source code control |
}}} |
Package=<4> |
{{{ |
}}} |
############################################################################### |
Global: |
Package=<5> |
{{{ |
}}} |
Package=<3> |
{{{ |
}}} |
############################################################################### |
/wiener_pciada/Vic.h |
---|
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 |
//------------------------------------------------------------------------------------------- |
//------------------------------------------------------------------------------------------- |
//------------------------------------------------------------------------------------------- |
/wiener_pciada/Klist.c |
---|
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; |
} |
/wiener_pciada/pcivme.h |
---|
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__ |
/wiener_pciada/pcivme_ni.opt |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pciada/pcivme_ni.ncb |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pciada/Klist.h |
---|
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__ */ |
/wiener_pciada/os_info.c |
---|
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) |
{ |
} |
*/ |
/wiener_pciada/Vme.h |
---|
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 |
//------------------------------------------------------------------------------------------- |
//------------------------------------------------------------------------------------------- |
//------------------------------------------------------------------------------------------- |