Subversion Repositories f9daq

Compare Revisions

No changes between revisions

Ignore whitespace Rev 15 → Rev 16

/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
 
//-------------------------------------------------------------------------------------------
//-------------------------------------------------------------------------------------------
//-------------------------------------------------------------------------------------------