/drivers/wiener_pcicc32_dll/Release/pcicc32_ni.lib |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
## -0,0 +1 ## |
+application/octet-stream |
\ No newline at end of property |
Index: wiener_pcicc32_dll/Release/pcicc32_ni.bsc |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/wiener_pcicc32_dll/Release/pcicc32_ni.bsc |
---|
Property changes: |
Added: svn:mime-type |
## -0,0 +1 ## |
+application/octet-stream |
\ No newline at end of property |
Index: wiener_pcicc32_dll/Release/OS_INFO.obj |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/wiener_pcicc32_dll/Release/OS_INFO.obj |
---|
Property changes: |
Added: svn:mime-type |
## -0,0 +1 ## |
+application/octet-stream |
\ No newline at end of property |
Index: wiener_pcicc32_dll/Release/pcicc32_ni.dll |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/wiener_pcicc32_dll/Release/pcicc32_ni.dll |
---|
Property changes: |
Added: svn:mime-type |
## -0,0 +1 ## |
+application/octet-stream |
\ No newline at end of property |
Index: wiener_pcicc32_dll/Release/Libcc32_95.obj |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/wiener_pcicc32_dll/Release/Libcc32_95.obj |
---|
Property changes: |
Added: svn:mime-type |
## -0,0 +1 ## |
+application/octet-stream |
\ No newline at end of property |
Index: wiener_pcicc32_dll/Release/pcicc32_ni.exp |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/wiener_pcicc32_dll/Release/pcicc32_ni.exp |
---|
Property changes: |
Added: svn:mime-type |
## -0,0 +1 ## |
+application/octet-stream |
\ No newline at end of property |
Index: wiener_pcicc32_dll/Release/obj/OS_INFO.sbr |
=================================================================== |
Index: wiener_pcicc32_dll/Release/obj/bscmake.read.1.tlog |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/wiener_pcicc32_dll/Release/obj/bscmake.read.1.tlog |
---|
Property changes: |
Added: svn:mime-type |
## -0,0 +1 ## |
+application/octet-stream |
\ No newline at end of property |
Index: wiener_pcicc32_dll/Release/obj/Libcc32_95.sbr |
=================================================================== |
Index: wiener_pcicc32_dll/Release/obj/BscMake.command.1.tlog |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/wiener_pcicc32_dll/Release/obj/BscMake.command.1.tlog |
---|
Property changes: |
Added: svn:mime-type |
## -0,0 +1 ## |
+application/octet-stream |
\ No newline at end of property |
Index: wiener_pcicc32_dll/Release/obj/link.write.1.tlog |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/wiener_pcicc32_dll/Release/obj/link.write.1.tlog |
---|
Property changes: |
Added: svn:mime-type |
## -0,0 +1 ## |
+application/octet-stream |
\ No newline at end of property |
Index: wiener_pcicc32_dll/Release/obj/CL.write.1.tlog |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/wiener_pcicc32_dll/Release/obj/CL.write.1.tlog |
---|
Property changes: |
Added: svn:mime-type |
## -0,0 +1 ## |
+application/octet-stream |
\ No newline at end of property |
Index: wiener_pcicc32_dll/Release/obj/link-rc.write.1.tlog |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/wiener_pcicc32_dll/Release/obj/link-rc.write.1.tlog |
---|
Property changes: |
Added: svn:mime-type |
## -0,0 +1 ## |
+application/octet-stream |
\ No newline at end of property |
Index: wiener_pcicc32_dll/Release/obj/pcicc32_ni.log |
=================================================================== |
--- wiener_pcicc32_dll/Release/obj/pcicc32_ni.log (nonexistent) |
+++ wiener_pcicc32_dll/Release/obj/pcicc32_ni.log (revision 177) |
@@ -0,0 +1,30 @@ |
+Build started 10.2.2014 9:12:17. |
+ 1>Project "C:\Users\f9daq\rok\wienerpciada\PciCamac\Dll-source\pcicc32_ni.vcxproj" on node 2 (Build target(s)). |
+ 1>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V110\Microsoft.CppBuild.targets(345,5): warning MSB8004: Intermediate Directory does not end with a trailing slash. This build instance will add the slash as it is required to allow proper evaluation of the Intermediate Directory. |
+ 1>ClCompile: |
+ C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\bin\CL.exe /c /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" /FR"C:\Users\f9daq\rok\wienerpciada\PciCamac\Dll-source\Release\obj\\" /Gd /TC /analyze- /errorReport:prompt Libcc32.c Libcc32_95.c Libcc32_NT.c OS_INFO.C |
+ Libcc32.c |
+ Libcc32_95.c |
+ Libcc32_NT.c |
+ 1>Libcc32_NT.c(126): warning C4996: 'strncpy': This function or variable may be unsafe. Consider using strncpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. |
+ C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\string.h(191) : see declaration of 'strncpy' |
+ OS_INFO.C |
+ Generating Code... |
+ Link: |
+ C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\bin\link.exe /ERRORREPORT:PROMPT /OUT:"C:\Users\f9daq\rok\wienerpciada\PciCamac\Dll-source\Release\pcicc32_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:"C:\Users\f9daq\rok\wienerpciada\PciCamac\Dll-source\Release\pcicc32_ni.pdb" /SUBSYSTEM:WINDOWS /TLBID:1 /DYNAMICBASE /NXCOMPAT /IMPLIB:".\Release\pcicc32_ni.lib" /MACHINE:X86 /SAFESEH /DLL .\Release\Libcc32.obj |
+ .\Release\Libcc32_95.obj |
+ .\Release\Libcc32_NT.obj |
+ .\Release\OS_INFO.obj |
+ Creating library .\Release\pcicc32_ni.lib and object .\Release\pcicc32_ni.exp |
+ pcicc32_ni.vcxproj -> C:\Users\f9daq\rok\wienerpciada\PciCamac\Dll-source\Release\pcicc32_ni.dll |
+ BscMake: |
+ C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\bin\bscmake.exe /nologo /o".\Release\pcicc32_ni.bsc" "C:\Users\f9daq\rok\wienerpciada\PciCamac\Dll-source\Release\obj\Libcc32.sbr" "C:\Users\f9daq\rok\wienerpciada\PciCamac\Dll-source\Release\obj\Libcc32_95.sbr" "C:\Users\f9daq\rok\wienerpciada\PciCamac\Dll-source\Release\obj\Libcc32_NT.sbr" "C:\Users\f9daq\rok\wienerpciada\PciCamac\Dll-source\Release\obj\OS_INFO.sbr" |
+ PostBuildEvent: |
+ copy debug\pcicc32_ni.dll C:\Users\f9daq\rok\wienerpciada\PciCamac\Dll-source\ |
+ :VCEnd |
+ 1 file(s) copied. |
+ 1>Done Building Project "C:\Users\f9daq\rok\wienerpciada\PciCamac\Dll-source\pcicc32_ni.vcxproj" (Build target(s)). |
+ |
+Build succeeded. |
+ |
+Time Elapsed 00:00:03.87 |
Index: wiener_pcicc32_dll/Release/obj/link-cvtres.write.1.tlog |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/wiener_pcicc32_dll/Release/obj/link-cvtres.write.1.tlog |
---|
Property changes: |
Added: svn:mime-type |
## -0,0 +1 ## |
+application/octet-stream |
\ No newline at end of property |
Index: wiener_pcicc32_dll/Release/obj/pcicc32_ni.lastbuildstate |
=================================================================== |
--- wiener_pcicc32_dll/Release/obj/pcicc32_ni.lastbuildstate (nonexistent) |
+++ wiener_pcicc32_dll/Release/obj/pcicc32_ni.lastbuildstate (revision 177) |
@@ -0,0 +1,2 @@ |
+#v4.0:v110:false |
+Release|Win32|C:\Users\f9daq\rok\wienerpciada\PciCamac\Dll-source\| |
Index: wiener_pcicc32_dll/Release/obj/bscmake.write.1.tlog |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/wiener_pcicc32_dll/Release/obj/bscmake.write.1.tlog |
---|
Property changes: |
Added: svn:mime-type |
## -0,0 +1 ## |
+application/octet-stream |
\ No newline at end of property |
Index: wiener_pcicc32_dll/Release/obj/Libcc32.sbr |
=================================================================== |
Index: wiener_pcicc32_dll/Release/obj/Libcc32_NT.sbr |
=================================================================== |
Index: wiener_pcicc32_dll/Release/obj/pcicc32_ni.write.1.tlog |
=================================================================== |
--- wiener_pcicc32_dll/Release/obj/pcicc32_ni.write.1.tlog (nonexistent) |
+++ wiener_pcicc32_dll/Release/obj/pcicc32_ni.write.1.tlog (revision 177) |
@@ -0,0 +1,5 @@ |
+^C:\Users\f9daq\rok\wienerpciada\PciCamac\Dll-source\pcicc32_ni.vcxproj |
+C:\Users\f9daq\rok\wienerpciada\PciCamac\Dll-source\Release\pcicc32_ni.lib |
+C:\Users\f9daq\rok\wienerpciada\PciCamac\Dll-source\Release\pcicc32_ni.lib |
+C:\Users\f9daq\rok\wienerpciada\PciCamac\Dll-source\Release\pcicc32_ni.exp |
+C:\Users\f9daq\rok\wienerpciada\PciCamac\Dll-source\Release\pcicc32_ni.exp |
Index: wiener_pcicc32_dll/Release/obj/link.read.1.tlog |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/wiener_pcicc32_dll/Release/obj/link.read.1.tlog |
---|
Property changes: |
Added: svn:mime-type |
## -0,0 +1 ## |
+application/octet-stream |
\ No newline at end of property |
Index: wiener_pcicc32_dll/Release/obj/CL.read.1.tlog |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/wiener_pcicc32_dll/Release/obj/CL.read.1.tlog |
---|
Property changes: |
Added: svn:mime-type |
## -0,0 +1 ## |
+application/octet-stream |
\ No newline at end of property |
Index: wiener_pcicc32_dll/Release/obj/link-rc.read.1.tlog |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/wiener_pcicc32_dll/Release/obj/link-rc.read.1.tlog |
---|
Property changes: |
Added: svn:mime-type |
## -0,0 +1 ## |
+application/octet-stream |
\ No newline at end of property |
Index: wiener_pcicc32_dll/Release/obj/link.command.1.tlog |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/wiener_pcicc32_dll/Release/obj/link.command.1.tlog |
---|
Property changes: |
Added: svn:mime-type |
## -0,0 +1 ## |
+application/octet-stream |
\ No newline at end of property |
Index: wiener_pcicc32_dll/Release/obj/link-cvtres.read.1.tlog |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/wiener_pcicc32_dll/Release/obj/link-cvtres.read.1.tlog |
---|
Property changes: |
Added: svn:mime-type |
## -0,0 +1 ## |
+application/octet-stream |
\ No newline at end of property |
Index: wiener_pcicc32_dll/Release/obj/cl.command.1.tlog |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/wiener_pcicc32_dll/Release/obj/cl.command.1.tlog |
---|
Property changes: |
Added: svn:mime-type |
## -0,0 +1 ## |
+application/octet-stream |
\ No newline at end of property |
Index: wiener_pcicc32_dll/Release/Libcc32_NT.obj |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/wiener_pcicc32_dll/Release/Libcc32_NT.obj |
---|
Property changes: |
Added: svn:mime-type |
## -0,0 +1 ## |
+application/octet-stream |
\ No newline at end of property |
Index: wiener_pcicc32_dll/Release/vc110.pdb |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/wiener_pcicc32_dll/Release/vc110.pdb |
---|
Property changes: |
Added: svn:mime-type |
## -0,0 +1 ## |
+application/octet-stream |
\ No newline at end of property |
Index: wiener_pcicc32_dll/Release |
=================================================================== |
--- wiener_pcicc32_dll/Release (nonexistent) |
+++ wiener_pcicc32_dll/Release (revision 177) |
/wiener_pcicc32_dll/Release |
---|
Property changes: |
Added: svn:global-ignores |
## -0,0 +1 ## |
+*.obj |
Index: wiener_pcicc32_dll/Debug/pcicc32_ni.pdb |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/wiener_pcicc32_dll/Debug/pcicc32_ni.pdb |
---|
Property changes: |
Added: svn:mime-type |
## -0,0 +1 ## |
+application/octet-stream |
\ No newline at end of property |
Index: wiener_pcicc32_dll/Debug/pcicc32_ni.lib |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/wiener_pcicc32_dll/Debug/pcicc32_ni.lib |
---|
Property changes: |
Added: svn:mime-type |
## -0,0 +1 ## |
+application/octet-stream |
\ No newline at end of property |
Index: wiener_pcicc32_dll/Debug/pcicc32_ni.dll |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/wiener_pcicc32_dll/Debug/pcicc32_ni.dll |
---|
Property changes: |
Added: svn:mime-type |
## -0,0 +1 ## |
+application/octet-stream |
\ No newline at end of property |
Index: wiener_pcicc32_dll/Debug/Libcc32_95.obj |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/wiener_pcicc32_dll/Debug/Libcc32_95.obj |
---|
Property changes: |
Added: svn:mime-type |
## -0,0 +1 ## |
+application/octet-stream |
\ No newline at end of property |
Index: wiener_pcicc32_dll/Debug/pcicc32_ni.exp |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/wiener_pcicc32_dll/Debug/pcicc32_ni.exp |
---|
Property changes: |
Added: svn:mime-type |
## -0,0 +1 ## |
+application/octet-stream |
\ No newline at end of property |
Index: wiener_pcicc32_dll/Debug/vc110.idb |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/wiener_pcicc32_dll/Debug/vc110.idb |
---|
Property changes: |
Added: svn:mime-type |
## -0,0 +1 ## |
+application/octet-stream |
\ No newline at end of property |
Index: wiener_pcicc32_dll/Debug/Libcc32.obj |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/wiener_pcicc32_dll/Debug/Libcc32.obj |
---|
Property changes: |
Added: svn:mime-type |
## -0,0 +1 ## |
+application/octet-stream |
\ No newline at end of property |
Index: wiener_pcicc32_dll/Debug/obj/pcicc32_ni.lastbuildstate |
=================================================================== |
--- wiener_pcicc32_dll/Debug/obj/pcicc32_ni.lastbuildstate (nonexistent) |
+++ wiener_pcicc32_dll/Debug/obj/pcicc32_ni.lastbuildstate (revision 177) |
@@ -0,0 +1,2 @@ |
+#v4.0:v110:false |
+Debug|Win32|C:\Users\f9daq\rok\wienerpciada\PciCamac\Dll-source\| |
Index: wiener_pcicc32_dll/Debug/obj/pcicc32_ni.write.1.tlog |
=================================================================== |
--- wiener_pcicc32_dll/Debug/obj/pcicc32_ni.write.1.tlog (nonexistent) |
+++ wiener_pcicc32_dll/Debug/obj/pcicc32_ni.write.1.tlog (revision 177) |
@@ -0,0 +1,15 @@ |
+^C:\Users\f9daq\rok\wienerpciada\PciCamac\Dll-source\pcicc32_ni.vcxproj |
+C:\Users\f9daq\rok\wienerpciada\PciCamac\Dll-source\Debug\pcicc32_ni.lib |
+C:\Users\f9daq\rok\wienerpciada\PciCamac\Dll-source\Debug\pcicc32_ni.lib |
+C:\Users\f9daq\rok\wienerpciada\PciCamac\Dll-source\Debug\pcicc32_ni.exp |
+C:\Users\f9daq\rok\wienerpciada\PciCamac\Dll-source\Debug\pcicc32_ni.exp |
+^C:\Users\f9daq\rok\wienerpciada\PciCamac\Dll-source\pcicc32_ni.vcxproj |
+C:\Users\f9daq\rok\wienerpciada\PciCamac\Dll-source\Debug\pcicc32_ni.lib |
+C:\Users\f9daq\rok\wienerpciada\PciCamac\Dll-source\Debug\pcicc32_ni.lib |
+C:\Users\f9daq\rok\wienerpciada\PciCamac\Dll-source\Debug\pcicc32_ni.exp |
+C:\Users\f9daq\rok\wienerpciada\PciCamac\Dll-source\Debug\pcicc32_ni.exp |
+^C:\Users\f9daq\rok\wienerpciada\PciCamac\Dll-source\pcicc32_ni.vcxproj |
+C:\Users\f9daq\rok\wienerpciada\PciCamac\Dll-source\Debug\pcicc32_ni.lib |
+C:\Users\f9daq\rok\wienerpciada\PciCamac\Dll-source\Debug\pcicc32_ni.lib |
+C:\Users\f9daq\rok\wienerpciada\PciCamac\Dll-source\Debug\pcicc32_ni.exp |
+C:\Users\f9daq\rok\wienerpciada\PciCamac\Dll-source\Debug\pcicc32_ni.exp |
Index: wiener_pcicc32_dll/Debug/obj/link.write.1.tlog |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/wiener_pcicc32_dll/Debug/obj/link.write.1.tlog |
---|
Property changes: |
Added: svn:mime-type |
## -0,0 +1 ## |
+application/octet-stream |
\ No newline at end of property |
Index: wiener_pcicc32_dll/Debug/obj/CL.write.1.tlog |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/wiener_pcicc32_dll/Debug/obj/CL.write.1.tlog |
---|
Property changes: |
Added: svn:mime-type |
## -0,0 +1 ## |
+application/octet-stream |
\ No newline at end of property |
Index: wiener_pcicc32_dll/Debug/obj/link.read.1.tlog |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/wiener_pcicc32_dll/Debug/obj/link.read.1.tlog |
---|
Property changes: |
Added: svn:mime-type |
## -0,0 +1 ## |
+application/octet-stream |
\ No newline at end of property |
Index: wiener_pcicc32_dll/Debug/obj/CL.read.1.tlog |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/wiener_pcicc32_dll/Debug/obj/CL.read.1.tlog |
---|
Property changes: |
Added: svn:mime-type |
## -0,0 +1 ## |
+application/octet-stream |
\ No newline at end of property |
Index: wiener_pcicc32_dll/Debug/obj/link-rc.write.1.tlog |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/wiener_pcicc32_dll/Debug/obj/link-rc.write.1.tlog |
---|
Property changes: |
Added: svn:mime-type |
## -0,0 +1 ## |
+application/octet-stream |
\ No newline at end of property |
Index: wiener_pcicc32_dll/Debug/obj/link-rc.read.1.tlog |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/wiener_pcicc32_dll/Debug/obj/link-rc.read.1.tlog |
---|
Property changes: |
Added: svn:mime-type |
## -0,0 +1 ## |
+application/octet-stream |
\ No newline at end of property |
Index: wiener_pcicc32_dll/Debug/obj/pcicc32_ni.log |
=================================================================== |
--- wiener_pcicc32_dll/Debug/obj/pcicc32_ni.log (nonexistent) |
+++ wiener_pcicc32_dll/Debug/obj/pcicc32_ni.log (revision 177) |
@@ -0,0 +1,23 @@ |
+Build started 10.2.2014 8:57:06. |
+ 1>Project "C:\Users\f9daq\rok\wienerpciada\PciCamac\Dll-source\pcicc32_ni.vcxproj" on node 2 (Build target(s)). |
+ 1>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V110\Microsoft.CppBuild.targets(345,5): warning MSB8004: Intermediate Directory does not end with a trailing slash. This build instance will add the slash as it is required to allow proper evaluation of the Intermediate Directory. |
+ 1>ClCompile: |
+ C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\bin\CL.exe /c /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 Libcc32_NT.c |
+ Libcc32_NT.c |
+ 1>c:\users\f9daq\rok\wienerpciada\pcicamac\dll-source\libcc32_nt.c(126): warning C4996: 'strncpy': This function or variable may be unsafe. Consider using strncpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. |
+ c:\program files (x86)\microsoft visual studio 11.0\vc\include\string.h(191) : see declaration of 'strncpy' |
+ Link: |
+ C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\bin\link.exe /ERRORREPORT:PROMPT /OUT:"C:\Users\f9daq\rok\wienerpciada\PciCamac\Dll-source\Debug\pcicc32_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:"C:\Users\f9daq\rok\wienerpciada\PciCamac\Dll-source\Debug\pcicc32_ni.pdb" /SUBSYSTEM:WINDOWS /TLBID:1 /DYNAMICBASE /NXCOMPAT /IMPLIB:".\Debug\pcicc32_ni.lib" /MACHINE:X86 /SAFESEH /DLL .\Debug\Libcc32.obj |
+ .\Debug\Libcc32_95.obj |
+ .\Debug\Libcc32_NT.obj |
+ .\Debug\OS_INFO.obj |
+ pcicc32_ni.vcxproj -> C:\Users\f9daq\rok\wienerpciada\PciCamac\Dll-source\Debug\pcicc32_ni.dll |
+ PostBuildEvent: |
+ copy debug\pcicc32_ni.dll C:\Users\f9daq\rok\wienerpciada\PciCamac\Dll-source\ |
+ :VCEnd |
+ 1 file(s) copied. |
+ 1>Done Building Project "C:\Users\f9daq\rok\wienerpciada\PciCamac\Dll-source\pcicc32_ni.vcxproj" (Build target(s)). |
+ |
+Build succeeded. |
+ |
+Time Elapsed 00:00:00.60 |
Index: wiener_pcicc32_dll/Debug/obj/link-cvtres.write.1.tlog |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/wiener_pcicc32_dll/Debug/obj/link-cvtres.write.1.tlog |
---|
Property changes: |
Added: svn:mime-type |
## -0,0 +1 ## |
+application/octet-stream |
\ No newline at end of property |
Index: wiener_pcicc32_dll/Debug/obj/link.command.1.tlog |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/wiener_pcicc32_dll/Debug/obj/link.command.1.tlog |
---|
Property changes: |
Added: svn:mime-type |
## -0,0 +1 ## |
+application/octet-stream |
\ No newline at end of property |
Index: wiener_pcicc32_dll/Debug/obj/cl.command.1.tlog |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/wiener_pcicc32_dll/Debug/obj/cl.command.1.tlog |
---|
Property changes: |
Added: svn:mime-type |
## -0,0 +1 ## |
+application/octet-stream |
\ No newline at end of property |
Index: wiener_pcicc32_dll/Debug/obj/link-cvtres.read.1.tlog |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/wiener_pcicc32_dll/Debug/obj/link-cvtres.read.1.tlog |
---|
Property changes: |
Added: svn:mime-type |
## -0,0 +1 ## |
+application/octet-stream |
\ No newline at end of property |
Index: wiener_pcicc32_dll/Debug/obj/pcicc32_ni.Build.CppClean.log |
=================================================================== |
--- wiener_pcicc32_dll/Debug/obj/pcicc32_ni.Build.CppClean.log (nonexistent) |
+++ wiener_pcicc32_dll/Debug/obj/pcicc32_ni.Build.CppClean.log (revision 177) |
@@ -0,0 +1,24 @@ |
+C:\USERS\F9DAQ\ROK\WIENERPCIADA\PCICAMAC\DLL-SOURCE\DEBUG\LIBCC32.OBJ |
+C:\USERS\F9DAQ\ROK\WIENERPCIADA\PCICAMAC\DLL-SOURCE\DEBUG\LIBCC32_95.OBJ |
+C:\USERS\F9DAQ\ROK\WIENERPCIADA\PCICAMAC\DLL-SOURCE\DEBUG\LIBCC32_NT.OBJ |
+C:\USERS\F9DAQ\ROK\WIENERPCIADA\PCICAMAC\DLL-SOURCE\DEBUG\OS_INFO.OBJ |
+C:\USERS\F9DAQ\ROK\WIENERPCIADA\PCICAMAC\DLL-SOURCE\DEBUG\VC110.PDB |
+C:\USERS\F9DAQ\ROK\WIENERPCIADA\PCICAMAC\DLL-SOURCE\DEBUG\PCICC32_NI.ILK |
+C:\USERS\F9DAQ\ROK\WIENERPCIADA\PCICAMAC\DLL-SOURCE\DEBUG\PCICC32_NI.DLL |
+C:\USERS\F9DAQ\ROK\WIENERPCIADA\PCICAMAC\DLL-SOURCE\DEBUG\PCICC32_NI.PDB |
+C:\Users\f9daq\rok\wienerpciada\PciCamac\Dll-source\Debug\pcicc32_ni.lib |
+C:\Users\f9daq\rok\wienerpciada\PciCamac\Dll-source\Debug\pcicc32_ni.exp |
+C:\Users\f9daq\rok\wienerpciada\PciCamac\Dll-source\Debug\obj\cl.command.1.tlog |
+C:\Users\f9daq\rok\wienerpciada\PciCamac\Dll-source\Debug\obj\CL.read.1.tlog |
+C:\Users\f9daq\rok\wienerpciada\PciCamac\Dll-source\Debug\obj\CL.write.1.tlog |
+C:\Users\f9daq\rok\wienerpciada\PciCamac\Dll-source\Debug\obj\link-cvtres.read.1.tlog |
+C:\Users\f9daq\rok\wienerpciada\PciCamac\Dll-source\Debug\obj\link-cvtres.write.1.tlog |
+C:\Users\f9daq\rok\wienerpciada\PciCamac\Dll-source\Debug\obj\link-rc.read.1.tlog |
+C:\Users\f9daq\rok\wienerpciada\PciCamac\Dll-source\Debug\obj\link-rc.write.1.tlog |
+C:\Users\f9daq\rok\wienerpciada\PciCamac\Dll-source\Debug\obj\link.command.1.tlog |
+C:\Users\f9daq\rok\wienerpciada\PciCamac\Dll-source\Debug\obj\link.read.1.tlog |
+C:\Users\f9daq\rok\wienerpciada\PciCamac\Dll-source\Debug\obj\link.write.1.tlog |
+C:\Users\f9daq\rok\wienerpciada\PciCamac\Dll-source\Debug\obj\pcicc32_ni.write.1.tlog |
+C:\Users\f9daq\rok\wienerpciada\PciCamac\Dll-source\Debug\pcicc32_ni.pdb |
+C:\Users\f9daq\rok\wienerpciada\PciCamac\Dll-source\Debug\pcicc32_ni.dll |
+C:\Users\f9daq\rok\wienerpciada\PciCamac\Dll-source\Debug\pcicc32_ni.ilk |
Index: wiener_pcicc32_dll/Debug/pcicc32_ni.ilk |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/wiener_pcicc32_dll/Debug/pcicc32_ni.ilk |
---|
Property changes: |
Added: svn:mime-type |
## -0,0 +1 ## |
+application/octet-stream |
\ No newline at end of property |
Index: wiener_pcicc32_dll/Debug/Libcc32_NT.obj |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/wiener_pcicc32_dll/Debug/Libcc32_NT.obj |
---|
Property changes: |
Added: svn:mime-type |
## -0,0 +1 ## |
+application/octet-stream |
\ No newline at end of property |
Index: wiener_pcicc32_dll/Debug/vc110.pdb |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/wiener_pcicc32_dll/Debug/vc110.pdb |
---|
Property changes: |
Added: svn:mime-type |
## -0,0 +1 ## |
+application/octet-stream |
\ No newline at end of property |
Index: wiener_pcicc32_dll/Debug |
=================================================================== |
--- wiener_pcicc32_dll/Debug (nonexistent) |
+++ wiener_pcicc32_dll/Debug (revision 177) |
/wiener_pcicc32_dll/Debug |
---|
Property changes: |
Added: svn:global-ignores |
## -0,0 +1 ## |
+*.obj |
Index: wiener_pcicc32_dll/Libcc32_95.c |
=================================================================== |
--- wiener_pcicc32_dll/Libcc32_95.c (nonexistent) |
+++ wiener_pcicc32_dll/Libcc32_95.c (revision 177) |
@@ -0,0 +1,431 @@ |
+/* |
+ cc32lib.c -- a simple access library for the PCICC32 PCI to CAMAC Interface from ARW Elektronik |
+ |
+ (c) 2000 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 |
+ |
+ first steps derived from the LINUX pcicc32 library AR 16.03.2000 |
+ added buffer, UNTIL_NOT_Q and AUTOREAD functionality AR 17.03.2001 |
+ corrected fault in setAccessParameter() AR 21.05.2002 |
+ added framework only fro future interrupt handling AR 08.06.2002 |
+*/ |
+ |
+/*--- INCLUDES -----------------------------------------------------------------------------------*/ |
+#include <windows.h> |
+#include <stdio.h> |
+#include <stdlib.h> |
+#include <string.h> |
+#include <errno.h> |
+#include "Vpcic32D.h" /* PCI common ioctl commands and structures between driver and library */ |
+#include "libcc32_95.h" /* shared header bewteen applictaion and library */ |
+ |
+/*--- DEFINES ------------------------------------------------------------------------------------*/ |
+#define pwCC32_ADR(adr, N, A, F) (unsigned short *)((N << 10) + (A << 6) + ((F & 0xF) << 2) + adr) |
+#define plCC32_ADR(adr, N, A, F) (unsigned long *)((N << 10) + (A << 6) + ((F & 0xF) << 2) + adr) |
+#define WINDOW_SIZE 32768 |
+ |
+/*--- EXTERNALS ----------------------------------------------------------------------------------*/ |
+ |
+/*--- TYPEDEFS -----------------------------------------------------------------------------------*/ |
+typedef struct |
+{ |
+ HANDLE nHandle; /* the handle of this device */ |
+ int nModuleNumber; /* the number of the module */ |
+ char *base; /* base of range */ |
+ unsigned short wLastAttributes; /* switched attributes like UNTIL_NOT_Q or AUTOREAD */ |
+} CC32_DEVICE; |
+ |
+/*--- FUNCTIONS -----------------------------------------------------------------------*/ |
+ |
+//-------------------------------------------------------------------------------------- |
+// a function to get the base address of the CAMAC range |
+// |
+static int attachWindow(HANDLE nHandle, DWORD dwInterface, void **base) |
+{ |
+ VPCIC32D_WINDOW window; |
+ DWORD DIOC_count; // count of returned bytes of DeviceIoControl |
+ DWORD result; |
+ |
+ *base = NULL; |
+ if (nHandle == (HANDLE)-1) return ERROR_INVALID_HANDLE; |
+ |
+ // attach a window into the CC32 space ---------------- |
+ result = DeviceIoControl(nHandle, VPCIC32_ATTACH_CC32, |
+ &dwInterface, sizeof(dwInterface), |
+ &window, sizeof(window), |
+ &DIOC_count, NULL); |
+ |
+ if (!result) |
+ return GetLastError(); |
+ else |
+ { |
+ *base = window.pvWindowBase; |
+ return 0; |
+ } |
+} |
+ |
+//-------------------------------------------------------------------------------------- |
+// a function to release a attached range |
+// |
+static int detachWindow(HANDLE nHandle, DWORD dwInterface) |
+{ |
+ DWORD DIOC_count; // count of returned bytes of DeviceIoControl |
+ DWORD result; |
+ |
+ if (nHandle == (HANDLE)-1) return ERROR_INVALID_HANDLE; |
+ |
+ // attach a window into the CC32 space ---------------- |
+ result = DeviceIoControl(nHandle, VPCIC32_DETACH_CC32, |
+ &dwInterface, sizeof(dwInterface), |
+ NULL, 0, &DIOC_count, NULL); |
+ if (!result) |
+ return GetLastError(); |
+ else |
+ return 0; |
+} |
+ |
+//-------------------------------------------------------------------------------------- |
+// get the PCIADA status from the PCI side of the interface |
+// |
+static int getStatus(HANDLE nHandle, DWORD dwInterface, char *nTimeout, char *nLAM) |
+{ |
+ VPCIC32D_STATUS status; |
+ DWORD DIOC_count; // count of returned bytes of DeviceIoControl |
+ DWORD result; |
+ |
+ if (nHandle == (HANDLE)-1) return ERROR_INVALID_HANDLE; |
+ |
+ *nTimeout = *nLAM = 0; |
+ |
+ // attach a window into the CC32 space ---------------- |
+ result = DeviceIoControl(nHandle, VPCIC32_GET_STATUS, |
+ &dwInterface, sizeof(dwInterface), |
+ &status, sizeof(status), &DIOC_count, NULL); |
+ |
+ if (!result) |
+ return GetLastError(); |
+ else |
+ { |
+ *nTimeout = (char)status.bTimeout; |
+ *nLAM = (char)status.bInterrupt; |
+ |
+ return 0; |
+ } |
+} |
+ |
+//-------------------------------------------------------------------------------------- |
+// clear the PCIADA status |
+// |
+static int clearStatus(HANDLE nHandle, DWORD dwInterface) |
+{ |
+ DWORD DIOC_count; // count of returned bytes of DeviceIoControl |
+ DWORD result; |
+ |
+ if (nHandle == (HANDLE)-1) return ERROR_INVALID_HANDLE; |
+ |
+ // attach a window into the CC32 space ---------------- |
+ result = DeviceIoControl(nHandle, VPCIC32_CLEAR_STATUS, |
+ &dwInterface, sizeof(dwInterface), |
+ NULL, 0, &DIOC_count, NULL); |
+ |
+ if (!result) |
+ return GetLastError(); |
+ else |
+ return 0; |
+} |
+ |
+//------------------------------------------------------------------------- |
+// set the future access parameters - override the current |
+// |
+static int setAccessParameter(HANDLE hHandle, DWORD dwInterface, USHORT wBlockTransfer) |
+{ |
+ DWORD result; |
+ DWORD DIOC_count; // count of returned bytes of DeviceIoControl |
+ VPCIC32D_ACCESS_COMMAND access_parameter; |
+ |
+ if (hHandle == (HANDLE)-1) return ERROR_INVALID_HANDLE; |
+ |
+ access_parameter.dwInterface = dwInterface; |
+ access_parameter.wBlockTransfer = wBlockTransfer; |
+ |
+ result = DeviceIoControl(hHandle, VPCIC32_SET_ACCESS_PARA, |
+ &access_parameter, (DWORD)sizeof(access_parameter), NULL, |
+ 0, &DIOC_count, NULL); |
+ if (!result) |
+ return GetLastError(); |
+ else |
+ return 0; |
+} |
+ |
+//-------------------------------------------------------------------------------------- |
+// open the device |
+// |
+int cc32_open_95(char *cszPath, int nModuleNumber, void **handle) |
+{ |
+ CC32_DEVICE *dev; |
+ int error; |
+ |
+ *handle = (void *)-1; |
+ |
+ dev = (CC32_DEVICE *)malloc(sizeof(CC32_DEVICE)); |
+ if (!dev) return errno; |
+ |
+ dev->base = (char *)0; |
+ dev->nModuleNumber = nModuleNumber; |
+ dev->wLastAttributes = 0; |
+ |
+ dev->nHandle = CreateFile(cszPath, |
+ 0, |
+ 0, |
+ NULL, |
+ 0, |
+ FILE_FLAG_DELETE_ON_CLOSE, |
+ NULL); |
+ |
+ if (dev->nHandle != INVALID_HANDLE_VALUE) |
+ error = attachWindow(dev->nHandle, nModuleNumber, &dev->base); |
+ else |
+ error = GetLastError(); |
+ |
+ if (error) |
+ { |
+ free(dev); |
+ return error; |
+ } |
+ |
+ *handle = (void *)dev; |
+ |
+ return NO_ERROR; |
+} |
+ |
+//-------------------------------------------------------------------------------------- |
+// close the device |
+// |
+int cc32_close_95(void *handle) |
+{ |
+ CC32_DEVICE *dev = (CC32_DEVICE *)handle; |
+ int error = NO_ERROR; |
+ |
+ if (dev) |
+ { |
+ if (dev->nHandle != INVALID_HANDLE_VALUE) |
+ { |
+ detachWindow(dev->nHandle, dev->nModuleNumber); |
+ CloseHandle(dev->nHandle); |
+ } |
+ |
+ free(dev); |
+ } |
+ else |
+ error = ERROR_INVALID_FUNCTION; |
+ |
+ return error; |
+} |
+ |
+//-------------------------------------------------------------------------------------- |
+// read a word |
+// |
+unsigned short cc32_read_word_95(void *handle, unsigned int N, unsigned int A, unsigned int F) |
+{ |
+ CC32_DEVICE *dev = (CC32_DEVICE *)handle; |
+ |
+ return *pwCC32_ADR(dev->base, N, A, F); |
+} |
+ |
+//-------------------------------------------------------------------------------------- |
+// read a long |
+// |
+unsigned long cc32_read_long_all_95(void *handle, unsigned int N, unsigned int A, unsigned int F) |
+{ |
+ CC32_DEVICE *dev = (CC32_DEVICE *)handle; |
+ |
+ return *plCC32_ADR(dev->base, N, A, F); |
+} |
+ |
+//-------------------------------------------------------------------------------------- |
+// read a long and get Q and X |
+// |
+unsigned long cc32_read_long_95(void *handle, unsigned int N, unsigned int A, unsigned int F, char *Q, char *X) |
+{ |
+ CC32_DEVICE *dev = (CC32_DEVICE *)handle; |
+ unsigned long erg = *plCC32_ADR(dev->base, N, A, F); |
+ |
+ *Q = (erg & 0x80000000) ? 1 : 0; |
+ *X = (erg & 0x40000000) ? 1 : 0; |
+ |
+ return erg & 0x00FFFFFF; |
+} |
+ |
+//-------------------------------------------------------------------------------------- |
+// write a word |
+// |
+void cc32_write_word_95(void *handle, unsigned int N, unsigned int A, unsigned int F, unsigned short uwData) |
+{ |
+ CC32_DEVICE *dev = (CC32_DEVICE *)handle; |
+ |
+ dev->wLastAttributes = 0; |
+ *pwCC32_ADR(dev->base, N, A, F) = uwData; |
+} |
+ |
+//-------------------------------------------------------------------------------------- |
+// write a long |
+// |
+void cc32_write_long_95(void *handle, unsigned int N, unsigned int A, unsigned int F, unsigned long ulData) |
+{ |
+ CC32_DEVICE *dev = (CC32_DEVICE *)handle; |
+ |
+ dev->wLastAttributes = 0; |
+ *plCC32_ADR(dev->base, N, A, F) = ulData; |
+} |
+ |
+//-------------------------------------------------------------------------------------- |
+// clear the PCIADA status |
+// |
+int cc32_poll_error_95(void *handle, char *nTimeout, char *nLam) |
+{ |
+ CC32_DEVICE *dev = (CC32_DEVICE *)handle; |
+ int error; |
+ |
+ if ((error = getStatus(dev->nHandle, dev->nModuleNumber, nTimeout, nLam))) |
+ return error; |
+ |
+ if (*nTimeout) /* clear error */ |
+ { |
+ if ((error = clearStatus(dev->nHandle, dev->nModuleNumber))) |
+ return error; |
+ } |
+ |
+ return NO_ERROR; |
+} |
+ |
+//-------------------------------------------------------------------------------------- |
+// read 'len' words or 'UNTIL_NOT_Q' from a address made out of N,A,F |
+// |
+int cc32_read_word_buffer_95(void * handle, unsigned int N, unsigned int A, unsigned int F, |
+ unsigned short *pwBuffer, unsigned long *pdwLen) |
+{ |
+ CC32_DEVICE *dev = (CC32_DEVICE *)handle; |
+ register unsigned long i = 0; |
+ unsigned long dwLen = *pdwLen; |
+ unsigned long *pdwAddress = plCC32_ADR(dev->base, N, A, F); |
+ register unsigned long dwTempBuffer; |
+ |
+ if (dev->wLastAttributes & UNTIL_NOT_Q) |
+ { |
+ do |
+ { |
+ dwTempBuffer = *pdwAddress; |
+ *pwBuffer++ = (unsigned short)dwTempBuffer; |
+ } while ((dwTempBuffer & 0x80000000) && (i++ < dwLen)); |
+ } |
+ else |
+ { |
+ while (i++ < dwLen) |
+ *pwBuffer++ = (unsigned short)*pdwAddress; |
+ } |
+ |
+ *pdwLen = --i; |
+ return 0; |
+} |
+ |
+//-------------------------------------------------------------------------------------- |
+// read 'len' longs or 'UNTIL_NOT_Q' from a address made out of N,A,F, mask 24 bits out |
+// |
+int cc32_read_long_buffer_95(void * handle, unsigned int N, unsigned int A, unsigned int F, |
+ unsigned long *pdwBuffer, unsigned long *pdwLen) |
+{ |
+ CC32_DEVICE *dev = (CC32_DEVICE *)handle; |
+ register unsigned long i = 0; |
+ unsigned long dwLen = *pdwLen; |
+ unsigned long *pdwAddress = plCC32_ADR(dev->base, N, A, F); |
+ register unsigned long dwTempBuffer; |
+ |
+ if (dev->wLastAttributes & UNTIL_NOT_Q) |
+ { |
+ do |
+ { |
+ dwTempBuffer = *pdwAddress; |
+ *pdwBuffer++ = dwTempBuffer & 0x00FFFFFF; |
+ } while ((dwTempBuffer & 0x80000000) && (i++ < dwLen)); |
+ } |
+ else |
+ { |
+ while (i++ < dwLen) |
+ *pdwBuffer++ = *pdwAddress & 0x00FFFFFF; |
+ } |
+ |
+ *pdwLen = --i; |
+ return 0; |
+} |
+ |
+//-------------------------------------------------------------------------------------- |
+// read 'len' longs or 'UNTIL_NOT_Q' from a address made out of N,A,F, without interpretation |
+// |
+int cc32_read_long_all_buffer_95(void * handle, unsigned int N, unsigned int A, unsigned int F, |
+ unsigned long *pdwBuffer, unsigned long *pdwLen) |
+{ |
+ CC32_DEVICE *dev = (CC32_DEVICE *)handle; |
+ register unsigned long i = 0; |
+ unsigned long dwLen = *pdwLen; |
+ unsigned long *pdwAddress = plCC32_ADR(dev->base, N, A, F); |
+ register unsigned long dwTempBuffer; |
+ |
+ if (dev->wLastAttributes & UNTIL_NOT_Q) |
+ { |
+ do |
+ { |
+ dwTempBuffer = *pdwAddress; |
+ *pdwBuffer++ = dwTempBuffer; |
+ } while ((dwTempBuffer & 0x80000000) && (i++ < dwLen)); |
+ } |
+ else |
+ { |
+ while (i++ < dwLen) |
+ *pdwBuffer++ = *pdwAddress; |
+ } |
+ |
+ *pdwLen = --i; |
+ return 0; |
+} |
+ |
+//-------------------------------------------------------------------------------------- |
+// switch UNTIL_NOT_Q or AUTOREAD on or off |
+// |
+int cc32_access_switch_95(void *handle, unsigned short uwSwitch) |
+{ |
+ CC32_DEVICE *dev = (CC32_DEVICE *)handle; |
+ |
+ dev->wLastAttributes = uwSwitch; |
+ return setAccessParameter(dev->nHandle, dev->nModuleNumber, dev->wLastAttributes); |
+} |
+ |
+//-------------------------------------------------------------------------------------- |
+// switch interrupts on |
+// |
+int cc32_enable_interrupt_95(void *handle) |
+{ |
+ return ERROR_INVALID_FUNCTION; |
+} |
+ |
+//-------------------------------------------------------------------------------------- |
+// switch interrupts off |
+// |
+int cc32_disable_interrupt_95(void *handle) |
+{ |
+ return ERROR_INVALID_FUNCTION; |
+} |
+ |
+//-------------------------------------------------------------------------------------- |
+// wait blocking for the next interrupt |
+// |
+int cc32_get_interrupt_95(void *handle, unsigned long *dwStatus) |
+{ |
+ return ERROR_INVALID_FUNCTION; |
+} |
Index: wiener_pcicc32_dll/OS_INFO.H |
=================================================================== |
--- wiener_pcicc32_dll/OS_INFO.H (nonexistent) |
+++ wiener_pcicc32_dll/OS_INFO.H (revision 177) |
@@ -0,0 +1,24 @@ |
+#ifndef __OS_INFO_H__ |
+#define __OS_INFO_H__ |
+//------------------------------------------------------------------------------------------- |
+// os_info.h - request the OS type and version - the prototypes |
+// |
+// 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 |
+// |
+// |
+// what who when |
+// first steps AR 07.11.1999 |
+// |
+ |
+BOOLEAN IsWindowsNT(void); |
+BOOLEAN IsWindows98(void); |
+BOOLEAN IsWindows95(void); |
+ |
+#endif |
+ |
Index: wiener_pcicc32_dll/pcicc32_ni.vcxproj.user |
=================================================================== |
--- wiener_pcicc32_dll/pcicc32_ni.vcxproj.user (nonexistent) |
+++ wiener_pcicc32_dll/pcicc32_ni.vcxproj.user (revision 177) |
@@ -0,0 +1,4 @@ |
+<?xml version="1.0" encoding="utf-8"?> |
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> |
+ <PropertyGroup /> |
+</Project> |
\ No newline at end of file |
Index: wiener_pcicc32_dll/Libcc32_95.h |
=================================================================== |
--- wiener_pcicc32_dll/Libcc32_95.h (nonexistent) |
+++ wiener_pcicc32_dll/Libcc32_95.h (revision 177) |
@@ -0,0 +1,71 @@ |
+ |
+#ifndef __LIBCC32_95_H__ |
+#define __LIBCC32_95_H__ |
+ |
+/* |
+ libcc32_95.h -- header for a simple access library (WIN95 + WIN98) for the |
+ PCICC32 PCI to CAMAC Interface from ARW Elektronik |
+ |
+ (c) 2000 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 |
+ |
+ first steps AR 30.07.2000 |
+ added buffer, UNTIL_NOT_Q and AUTOREAD functionality AR 17.03.2001 |
+ added framework for interrupt handling AR 08.06.2002 |
+*/ |
+ |
+/* open a path to a device. E.g. "/dev/pcicc32_1" */ |
+int cc32_open_95(char *cszPath, int nModuleNumber, void **handle); |
+ |
+/* close the opened path */ |
+int cc32_close_95(void *handle); |
+ |
+/* read only a word - 16 bits - from a address made out of N,A,F */ |
+unsigned short cc32_read_word_95(void *handle, unsigned int N, unsigned int A, unsigned int F); |
+ |
+/* read a long - 32 bits - from a address made out of N,A,F and get the result Q and X */ |
+unsigned long cc32_read_long_95(void *handle, unsigned int N, unsigned int A, unsigned int F, char *Q, char *X); |
+ |
+/* read a long - 32 bits - without any interpretaion */ |
+unsigned long cc32_read_long_all_95(void *handle, unsigned int N, unsigned int A, unsigned int F); |
+ |
+/* write a word - 16 bits - to a destination made out of N,A,F */ |
+void cc32_write_word_95(void *handle, unsigned int N, unsigned int A, unsigned int F, unsigned short uwData); |
+ |
+/* write a long - 32 bits - uninterpreted to a destination made out of N,A,F */ |
+void cc32_write_long_95(void *handle, unsigned int N, unsigned int A, unsigned int F, unsigned long ulData); |
+ |
+/* poll the state of the timeout line and the LAM state. The timeout line is cleared if it was set */ |
+int cc32_poll_error_95(void *handle, char *nTimeout, char *nLam); |
+ |
+/* read words until not Q or *pdwLen data into a buffer */ |
+int cc32_read_word_buffer_95(void * handle, unsigned int N, unsigned int A, unsigned int F, |
+ unsigned short *pwBuffer, unsigned long *pdwLen); |
+ |
+/* read longs until not Q or *pdwLen data into a buffer */ |
+int cc32_read_long_buffer_95(void * handle, unsigned int N, unsigned int A, unsigned int F, |
+ unsigned long *pdwBuffer, unsigned long *pdwLen); |
+ |
+/* read longs until not Q or *pdwLen data and don't interpret Q and X information into a buffer */ |
+int cc32_read_long_all_buffer_95(void * handle, unsigned int N, unsigned int A, unsigned int F, |
+ unsigned long *pdwBuffer, unsigned long *pdwLen); |
+/* switch UNTIL_NOT_Q or AUTOREAD on or off */ |
+int cc32_access_switch_95(void *handle, unsigned short uwSwitch); |
+ |
+/* switch interrupts on */ |
+int cc32_enable_interrupt_95(void *handle); |
+ |
+/* switch interrupts off */ |
+int cc32_disable_interrupt_95(void *handle); |
+ |
+/* wait blocking for the next interrupt */ |
+int cc32_get_interrupt_95(void *handle, unsigned long *dwStatus); |
+ |
+#endif // __LIBCC32_95_H__ |
Index: wiener_pcicc32_dll/pcicc32_ni.dll |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/wiener_pcicc32_dll/pcicc32_ni.dll |
---|
Property changes: |
Added: svn:mime-type |
## -0,0 +1 ## |
+application/octet-stream |
\ No newline at end of property |
Index: wiener_pcicc32_dll/pcicc32_ni.v11.suo |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/wiener_pcicc32_dll/pcicc32_ni.v11.suo |
---|
Property changes: |
Added: svn:mime-type |
## -0,0 +1 ## |
+application/octet-stream |
\ No newline at end of property |
Index: wiener_pcicc32_dll/pcicc32_ni.plg |
=================================================================== |
--- wiener_pcicc32_dll/pcicc32_ni.plg (nonexistent) |
+++ wiener_pcicc32_dll/pcicc32_ni.plg (revision 177) |
@@ -0,0 +1,55 @@ |
+<html> |
+<body> |
+<pre> |
+<h1>Erstellungsprotokoll</h1> |
+<h3> |
+--------------------Konfiguration: pcicc32_ni - Win32 Release-------------------- |
+</h3> |
+<h3>Befehlszeilen</h3> |
+Erstellen der temporären Datei "C:\DOKUME~1\klaus\LOKALE~1\Temp\RSPCD.tmp" mit Inhalten |
+[ |
+/nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /FR"Release/" /Fp"Release/pcicc32_ni.pch" /YX /Fo"Release/" /Fd"Release/" /FD /c |
+"D:\Work\MyProjects\pcicc32_ni\Libcc32.c" |
+"D:\Work\MyProjects\pcicc32_ni\Libcc32_95.c" |
+"D:\Work\MyProjects\pcicc32_ni\Libcc32_NT.c" |
+"D:\Work\MyProjects\pcicc32_ni\OS_INFO.C" |
+] |
+Creating command line "cl.exe @C:\DOKUME~1\klaus\LOKALE~1\Temp\RSPCD.tmp" |
+Erstellen der temporären Datei "C:\DOKUME~1\klaus\LOKALE~1\Temp\RSPCE.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/pcicc32_ni.pdb" /machine:I386 /out:"Release/pcicc32_ni.dll" /implib:"Release/pcicc32_ni.lib" |
+.\Release\Libcc32.obj |
+.\Release\Libcc32_95.obj |
+.\Release\Libcc32_NT.obj |
+.\Release\OS_INFO.OBJ |
+] |
+Erstellen der Befehlzeile "link.exe @C:\DOKUME~1\klaus\LOKALE~1\Temp\RSPCE.tmp" |
+<h3>Ausgabefenster</h3> |
+Kompilierung läuft... |
+Libcc32.c |
+Libcc32_95.c |
+Libcc32_NT.c |
+OS_INFO.C |
+Linker-Vorgang läuft... |
+ Bibliothek Release/pcicc32_ni.lib und Objekt Release/pcicc32_ni.exp wird erstellt |
+Erstellen der Befehlzeile "bscmake.exe /nologo /o"Release/pcicc32_ni.bsc" .\Release\Libcc32.sbr .\Release\Libcc32_95.sbr .\Release\Libcc32_NT.sbr .\Release\OS_INFO.SBR" |
+Browse-Informationsdatei wird erstellt... |
+<h3>Ausgabefenster</h3> |
+Erstellen der temporären Datei "C:\DOKUME~1\klaus\LOKALE~1\Temp\RSPD2.bat" mit Inhalten |
+[ |
+@echo off |
+copy debug\pcicc32_ni.dll ..\CatchInterrupts_CC32_NT_with_Dll\release |
+copy debug\pcicc32_ni.dll ..\pciCC32Test_with_Dll\release |
+] |
+Erstellen der Befehlzeile "C:\DOKUME~1\klaus\LOKALE~1\Temp\RSPD2.bat" |
+ |
+ 1 Datei(en) kopiert. |
+ 1 Datei(en) kopiert. |
+ |
+ |
+ |
+<h3>Ergebnisse</h3> |
+pcicc32_ni.dll - 0 Fehler, 0 Warnung(en) |
+</pre> |
+</body> |
+</html> |
Index: wiener_pcicc32_dll/Libcc32.c |
=================================================================== |
--- wiener_pcicc32_dll/Libcc32.c (nonexistent) |
+++ wiener_pcicc32_dll/Libcc32.c (revision 177) |
@@ -0,0 +1,228 @@ |
+/* |
+ cc32lib.c -- a simple access library for the PCICC32 PCI to CAMAC Interface from ARW Elektronik |
+ |
+ (c) 2000 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 |
+ |
+ first steps derived from the LINUX pcicc32 library AR 16.03.2000 |
+ new architecture - added WINNT to DLL AR 30.07.2000 |
+ added buffer, UNTIL_NOT_Q and AUTOREAD functionality AR 17.03.2001 |
+ added interrupt handling AR 08.06.2002 |
+*/ |
+ |
+/*--- INCLUDES -----------------------------------------------------------------------------------*/ |
+#include <windows.h> |
+#include <stdio.h> |
+#include <stdlib.h> |
+#include <string.h> |
+#include <errno.h> |
+ |
+#include "os_info.h" /* to determine the underlaying OS */ |
+#include "libcc32_95.h" /* the win95 + 98 parts */ |
+#include "libcc32_NT.h" /* the winnt part */ |
+#include "libcc32.h" /* shared header bewteen applictaion and library */ |
+ |
+/*--- DEFINES ------------------------------------------------------------------------------------*/ |
+ |
+/*--- EXTERNALS ----------------------------------------------------------------------------------*/ |
+ |
+/*--- TYPEDEFS -----------------------------------------------------------------------------------*/ |
+typedef struct |
+{ |
+ int (*cc32_open)(char *cszPath, int nModuleNumber, void **handle); |
+ int (*cc32_close)(void *handle); |
+ unsigned short (*cc32_read_word)(void *handle, unsigned int N, unsigned int A, unsigned int F); |
+ unsigned long (*cc32_read_long)(void *handle, unsigned int N, unsigned int A, unsigned int F, char *Q, char *X); |
+ unsigned long (*cc32_read_long_all)(void *handle, unsigned int N, unsigned int A, unsigned int F); |
+ void (*cc32_write_word)(void *handle, unsigned int N, unsigned int A, unsigned int F, unsigned short uwData); |
+ void (*cc32_write_long)(void *handle, unsigned int N, unsigned int A, unsigned int F, unsigned long ulData); |
+ int (*cc32_poll_error)(void *handle, char *nTimeout, char *nLam); |
+ int (*cc32_read_word_buffer)(void * handle, unsigned int N, unsigned int A, unsigned int F, unsigned short *pwBuffer, unsigned long *pdwLen); |
+ int (*cc32_read_long_buffer)(void * handle, unsigned int N, unsigned int A, unsigned int F, unsigned long *pdwBuffer, unsigned long *pdwLen); |
+ int (*cc32_read_long_all_buffer)(void * handle, unsigned int N, unsigned int A, unsigned int F, unsigned long *pdwBuffer, unsigned long *pdwLen); |
+ int (*cc32_access_switch)(void *handle, unsigned short uwSwitch); |
+ int (*cc32_enable_interrupt)(void *handle); |
+ int (*cc32_disable_interrupt)(void *handle); |
+ int (*cc32_get_interrupt)(void *handle, unsigned long *dwStatus); |
+} MY_ACTIONS; |
+ |
+/*--- GLOBALS ------------------------------------------------------------------------------------*/ |
+MY_ACTIONS ma; |
+static BOOLEAN firstime = TRUE; |
+ |
+/*--- FUNCTIONS -----------------------------------------------------------------------*/ |
+ |
+//-------------------------------------------------------------------------------------- |
+// open the device |
+// |
+int __declspec(dllexport) cc32_open(char *cszPath, int nModuleNumber, CC32_HANDLE *handle) |
+{ |
+ if (firstime) |
+ { |
+ if (IsWindowsNT()) |
+ { |
+ ma.cc32_open = cc32_open_NT; |
+ ma.cc32_close = cc32_close_NT; |
+ ma.cc32_read_word = cc32_read_word_NT; |
+ ma.cc32_read_long = cc32_read_long_NT; |
+ ma.cc32_read_long_all = cc32_read_long_all_NT; |
+ ma.cc32_write_word = cc32_write_word_NT; |
+ ma.cc32_write_long = cc32_write_long_NT; |
+ ma.cc32_poll_error = cc32_poll_error_NT; |
+ ma.cc32_read_word_buffer = cc32_read_word_buffer_NT; |
+ ma.cc32_read_long_buffer = cc32_read_long_buffer_NT; |
+ ma.cc32_read_long_all_buffer = cc32_read_long_all_buffer_NT; |
+ ma.cc32_access_switch = cc32_access_switch_NT; |
+ ma.cc32_enable_interrupt = cc32_enable_interrupt_NT; |
+ ma.cc32_disable_interrupt = cc32_disable_interrupt_NT; |
+ ma.cc32_get_interrupt = cc32_get_interrupt_NT; |
+ } |
+ else |
+ if (IsWindows95() || IsWindows98()) |
+ { |
+ ma.cc32_open = cc32_open_95; |
+ ma.cc32_close = cc32_close_95; |
+ ma.cc32_read_word = cc32_read_word_95; |
+ ma.cc32_read_long = cc32_read_long_95; |
+ ma.cc32_read_long_all = cc32_read_long_all_95; |
+ ma.cc32_write_word = cc32_write_word_95; |
+ ma.cc32_write_long = cc32_write_long_95; |
+ ma.cc32_poll_error = cc32_poll_error_95; |
+ ma.cc32_read_word_buffer = cc32_read_word_buffer_95; |
+ ma.cc32_read_long_buffer = cc32_read_long_buffer_95; |
+ ma.cc32_read_long_all_buffer = cc32_read_long_all_buffer_95; |
+ ma.cc32_access_switch = cc32_access_switch_95; |
+ ma.cc32_enable_interrupt = cc32_enable_interrupt_95; |
+ ma.cc32_disable_interrupt = cc32_disable_interrupt_95; |
+ ma.cc32_get_interrupt = cc32_get_interrupt_95; |
+ } |
+ else |
+ return -1; |
+ |
+ firstime = FALSE; |
+ } |
+ |
+ return ma.cc32_open(cszPath, nModuleNumber, (CC32_HANDLE *)handle); |
+} |
+ |
+//-------------------------------------------------------------------------------------- |
+// close the device |
+// |
+int __declspec(dllexport) cc32_close(CC32_HANDLE handle) |
+{ |
+ return ma.cc32_close((CC32_HANDLE)handle); |
+} |
+ |
+//-------------------------------------------------------------------------------------- |
+// read a word |
+// |
+unsigned short __declspec(dllexport) cc32_read_word(CC32_HANDLE handle, unsigned int N, unsigned int A, unsigned int F) |
+{ |
+ return ma.cc32_read_word((CC32_HANDLE) handle, N, A, F); |
+} |
+ |
+//-------------------------------------------------------------------------------------- |
+// read a long |
+// |
+unsigned long __declspec(dllexport) cc32_read_long_all(CC32_HANDLE handle, unsigned int N, unsigned int A, unsigned int F) |
+{ |
+ return ma.cc32_read_long_all((CC32_HANDLE) handle, N, A, F); |
+} |
+ |
+//-------------------------------------------------------------------------------------- |
+// read a long and get Q and X |
+// |
+unsigned long __declspec(dllexport) cc32_read_long(CC32_HANDLE handle, unsigned int N, unsigned int A, unsigned int F, char *Q, char *X) |
+{ |
+ return ma.cc32_read_long((CC32_HANDLE) handle, N, A, F, Q, X); |
+} |
+ |
+//-------------------------------------------------------------------------------------- |
+// write a word |
+// |
+void __declspec(dllexport) cc32_write_word(CC32_HANDLE handle, unsigned int N, unsigned int A, unsigned int F, unsigned short uwData) |
+{ |
+ ma.cc32_write_word((CC32_HANDLE) handle, N, A, F, uwData); |
+} |
+ |
+//-------------------------------------------------------------------------------------- |
+// write a long |
+// |
+void __declspec(dllexport) cc32_write_long(CC32_HANDLE handle, unsigned int N, unsigned int A, unsigned int F, unsigned long ulData) |
+{ |
+ ma.cc32_write_long((CC32_HANDLE) handle, N, A, F, ulData); |
+} |
+ |
+//-------------------------------------------------------------------------------------- |
+// read and clear the PCIADA status |
+// |
+int __declspec(dllexport) cc32_poll_error(CC32_HANDLE handle, char *nTimeout, char *nLam) |
+{ |
+ return ma.cc32_poll_error((CC32_HANDLE) handle, nTimeout, nLam); |
+} |
+ |
+//-------------------------------------------------------------------------------------- |
+// read 'len' words or 'UNTIL_NOT_Q' from a address made out of N,A,F into a buffer |
+// |
+int __declspec(dllexport) cc32_read_word_buffer(CC32_HANDLE handle, unsigned int N, unsigned int A, unsigned int F, |
+ unsigned short *pwBuffer, unsigned long *pdwLen) |
+{ |
+ return ma.cc32_read_word_buffer(handle, N, A, F, pwBuffer, pdwLen); |
+} |
+ |
+//-------------------------------------------------------------------------------------- |
+// read 'len' longs or 'UNTIL_NOT_Q' from a address made out of N,A,F into a buffer, mask 24 bits out |
+// |
+int __declspec(dllexport) cc32_read_long_buffer(CC32_HANDLE handle, unsigned int N, unsigned int A, unsigned int F, |
+ unsigned long *pdwBuffer, unsigned long *pdwLen) |
+{ |
+ return ma.cc32_read_long_buffer(handle, N, A, F, pdwBuffer, pdwLen); |
+} |
+ |
+//-------------------------------------------------------------------------------------- |
+// read 'len' longs or 'UNTIL_NOT_Q' from a address made out of N,A,F into a buffer, without interpretation |
+// |
+int __declspec(dllexport) cc32_read_long_all_buffer(CC32_HANDLE handle, unsigned int N, unsigned int A, unsigned int F, |
+ unsigned long *pdwBuffer, unsigned long *pdwLen) |
+{ |
+ return ma.cc32_read_long_all_buffer(handle, N, A, F, pdwBuffer, pdwLen); |
+} |
+ |
+//-------------------------------------------------------------------------------------- |
+// set the accessmode for the path, e.g. UNTIL_NOT_Q or AUTOREAD or ... |
+// |
+int __declspec(dllexport) cc32_access_switch(CC32_HANDLE handle, unsigned short uwSwitch) |
+{ |
+ return ma.cc32_access_switch(handle, uwSwitch); |
+} |
+ |
+//-------------------------------------------------------------------------------------- |
+// switch interrupts on |
+// |
+int __declspec(dllexport) cc32_enable_interrupt(CC32_HANDLE handle) |
+{ |
+ return ma.cc32_enable_interrupt(handle); |
+} |
+ |
+//-------------------------------------------------------------------------------------- |
+// switch interrupts off |
+// |
+int __declspec(dllexport) cc32_disable_interrupt(CC32_HANDLE handle) |
+{ |
+ return ma.cc32_disable_interrupt(handle); |
+} |
+ |
+//-------------------------------------------------------------------------------------- |
+// wait blocking for the next interrupt |
+// |
+int __declspec(dllexport) cc32_get_interrupt(CC32_HANDLE handle, unsigned long *dwStatus) |
+{ |
+ return ma.cc32_get_interrupt(handle, dwStatus); |
+} |
Index: wiener_pcicc32_dll/vpcic32d.h |
=================================================================== |
--- wiener_pcicc32_dll/vpcic32d.h (nonexistent) |
+++ wiener_pcicc32_dll/vpcic32d.h (revision 177) |
@@ -0,0 +1,111 @@ |
+#ifndef __VPCIC32D_H__ |
+#define __VPCIC32D_H__ |
+//------------------------------------------------------------------------- |
+// WIN95 driver for PCICC32 CAMAC interface from ARW Elektronik, Germany -- |
+// |
+// vpcic32d.h - the general header file to share information between driver |
+// and application |
+// |
+// (c) 2000,2001 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 |
+// without the express written approval of ARW Elektronik Germany. |
+// |
+// Please announce changes and hints to ARW Elektronik |
+// |
+// what who when |
+// first steps AR 07.03.2000 |
+// added AUTOREAD AR 17.03.2001 |
+// added VPCIC32_ACCESS_LCR AR 30.03.2001 |
+// |
+ |
+// the action codes for ioctl calls |
+#define VPCIC32_ATTACH_CC32 0x00220000 // METHOD_BUFFERED + FILE_ANY_ACCESS + |
+#define VPCIC32_DETACH_CC32 0x00220004 // FILE_DEVICE_UNKNOWN |
+#define VPCIC32_GET_STATUS 0x00220008 |
+#define VPCIC32_CLEAR_STATUS 0x0022000C |
+#define VPCIC32_SET_ACCESS_PARA 0x00220010 |
+#define VPCIC32_CONTROL_INTERRUPTS 0x00220014 |
+#define VPCIC32_INSTALL_IRQ_HANDLER 0x00220018 |
+#define VPCIC32_ACCESS_LCR 0x00220020 // access tp PLX LCR space |
+ |
+// switches for VPCIC32_ACCESS_COMMAND.wAccessType |
+#define WORD_ACCESS (UCHAR)2 // word |
+#define LONG_ACCESS (UCHAR)4 // long |
+ |
+// VPCIC32_ACCESS_LCR access constants |
+#define LCR_READ 0 // read only access |
+#define LCR_WRITE 1 // write and read back access |
+#define LCR_OR 2 // read, bitwise 'or' content and read back access |
+#define LCR_AND 3 // read, bitwise 'and' content and read back access |
+#define LCR_WRITE_ONLY 4 // do not read back after write |
+ |
+// define bits for VPCIC32D_ACCESS_COMMAND.wBlockTransfer |
+#define UNTIL_NOT_Q 0x0001 // read/write unttil 'not Q' switch |
+#define AUTOREAD 0x0002 // PCIADA data pipelining access tuner switch |
+ |
+// mask bits for interrupt status provided by the user interrupt handler |
+#define LAM_IRQ 0x00FFFFFF // LAM was responsible for interrupt |
+#define CONNECTION_TIMEOUT 0x08000000 // irq raised through a connection timeout |
+#define LAM_BUS_OR 0x10000000 // a LAM-BUS-OR is pending |
+#define LAM_NOT_OR 0x20000000 // a LAM-NOT-OR is pending |
+#define LAM_AND_OR 0x40000000 // a LAM-AND-OR is pending |
+#define LAM_FF 0x80000000 // the LAM-Flip-Flop was set |
+ |
+// this structure is input in all ioctl calls except VPCIC32_SET_ACCESS_PARA |
+typedef struct |
+{ |
+ DWORD dwInterface; // CC32 module number |
+} VPCIC32D_DEVICE; |
+ |
+// this structure is output from VPCIC32_ATTACH_CC32 call |
+typedef struct |
+{ |
+ DWORD dwInterface; // CC32 module number |
+ void *pvWindowBase; // the base address into the 32 kbyte Window of CC32 |
+} VPCIC32D_WINDOW; |
+ |
+// this structure is output from VPCIC32_GET_STATUS call |
+typedef struct |
+{ |
+ DWORD dwInterface; // CC32 module number |
+ WORD bTimeout; // denotes PCIADA timeout |
+ WORD bInterrupt; // denotes a pending LAM interrupt |
+} VPCIC32D_STATUS; |
+ |
+// this structure is input to the VPCIC32_SET_ACCESS_PARA call |
+typedef struct |
+{ |
+ DWORD dwInterface; // CC32 module number |
+ WORD wAccessType; // set the current access type , for compatibilty to NT, not used @ WIN95/98 |
+ WORD wBlockTransfer; // set to AUTOREAD or 0 |
+} VPCIC32D_ACCESS_COMMAND; |
+ |
+// this structure is used to control the interrupts |
+typedef struct |
+{ |
+ DWORD dwInterface; // CC32 module number |
+ WORD wEnable; // a 1 allows, a 0 inhibits interrupt requests |
+} VPCIC32D_IRQ_CONTROL; |
+ |
+// this structure is used to (de)install a irqhandler to a interface |
+typedef struct |
+{ |
+ DWORD dwInterface; // CC32 module number |
+ DWORD dwIrqHandler; // void (*IrqHandler)(DWORD) |
+} VPCIC32D_IRQ_HANLDER; |
+ |
+// structure to access the local configuration space of PLX chip (test / debug only) with VPCIC32_ACCESS_LCR |
+typedef struct |
+{ |
+ DWORD dwInterface; // CC32 module number |
+ DWORD dwContent; // content to write, and, or |
+ WORD wRegisterAddress; // address offset of LCR register |
+ UCHAR bAccessMode; // LCR_READ, write, or, and |
+ UCHAR bBytesLane; // the data access width |
+} VPCIC32D_LCR_ACCESS; |
+ |
+#endif // __VPCIC32D_H__ |
\ No newline at end of file |
Index: wiener_pcicc32_dll/Libcc32_NT.c |
=================================================================== |
--- wiener_pcicc32_dll/Libcc32_NT.c (nonexistent) |
+++ wiener_pcicc32_dll/Libcc32_NT.c (revision 177) |
@@ -0,0 +1,578 @@ |
+/* |
+ cc32lib_NT.c -- a simple access library for the PCICC32 PCI to CAMAC Interface |
+ from ARW Elektronik - the WINNT parts |
+ |
+ (c) 2000 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 |
+ |
+ derived from the previous WIN95 library AR 30.07.2000 |
+ added buffer, UNTIL_NOT_Q and AUTOREAD functionality AR 17.03.2001 |
+*/ |
+ |
+/*--- INCLUDES -----------------------------------------------------------------------------------*/ |
+#include <windows.h> |
+#include <stdio.h> |
+#include <stdlib.h> |
+#include <string.h> |
+#include <errno.h> |
+#include <winioctl.h> |
+ |
+#include "pcicc32.h" /* PCI common ioctl commands and structures between driver and library */ |
+#include "libcc32_NT.h" /* shared header bewteen applictaion and library */ |
+ |
+/*--- DEFINES ------------------------------------------------------------------------------------*/ |
+#define DEFDEVICENAME "\\\\.\\PCICC32:\\CC32_xx" |
+ |
+/*--- EXTERNALS ----------------------------------------------------------------------------------*/ |
+ |
+/*--- TYPEDEFS -----------------------------------------------------------------------------------*/ |
+typedef struct |
+{ |
+ HANDLE nHandle; /* the handle of this device */ |
+ int nModuleNumber; /* the number of the module */ |
+ unsigned short wLastAccessWidth; /* the last parametrized data access width */ |
+ unsigned short wLastAttributes; /* the last Attributes to this channel */ |
+ unsigned long dwLastAccessAddress; /* the last access address to speed up */ |
+} CC32_DEVICE_NT; |
+ |
+/*--- FUNCTIONS -----------------------------------------------------------------------*/ |
+ |
+//-------------------------------------------------------------------------------------- |
+// get the PCIADA status from the PCI side of the interface |
+// |
+static int getStatus(HANDLE nHandle, DWORD dwInterface, char *nTimeout, char *nLAM) |
+{ |
+ PCICC32_STATUS status; |
+ DWORD DIOC_count; // count of returned bytes of DeviceIoControl |
+ DWORD result; |
+ |
+ if (nHandle == (HANDLE)-1) return -1; |
+ |
+ *nTimeout = *nLAM = 0; |
+ |
+ // attach a window into the CC32 space ---------------- |
+ result = DeviceIoControl(nHandle, PCICC32_GET_STATUS, |
+ &dwInterface, sizeof(dwInterface), |
+ &status, sizeof(status), &DIOC_count, NULL); |
+ |
+ if (!result) |
+ return GetLastError(); |
+ else |
+ { |
+ *nTimeout = (char)status.bTimeout; |
+ *nLAM = (char)status.bInterrupt; |
+ |
+ return 0; |
+ } |
+} |
+ |
+//-------------------------------------------------------------------------------------- |
+// clear the PCIADA status |
+// |
+static int clearStatus(HANDLE nHandle, DWORD dwInterface) |
+{ |
+ DWORD DIOC_count; // count of returned bytes of DeviceIoControl |
+ DWORD result; |
+ |
+ if (nHandle == (HANDLE)-1) return -1; |
+ |
+ // attach a window into the CC32 space ---------------- |
+ result = DeviceIoControl(nHandle, PCICC32_CLEAR_STATUS, |
+ &dwInterface, sizeof(dwInterface), |
+ NULL, 0, &DIOC_count, NULL); |
+ |
+ if (!result) |
+ return GetLastError(); |
+ else |
+ return 0; |
+} |
+ |
+//------------------------------------------------------------------------- |
+// set the future access parameters - override the current |
+// |
+static int setAccessParameter(HANDLE hHandle, USHORT wAccessType, USHORT wBlockTransfer) |
+{ |
+ DWORD result; |
+ DWORD DIOC_count; // count of returned bytes of DeviceIoControl |
+ PCICC32_ACCESS_COMMAND access_parameter; |
+ |
+ access_parameter.wAccessType = wAccessType; |
+ access_parameter.wBlockTransfer = wBlockTransfer; |
+ |
+ result = DeviceIoControl(hHandle, PCICC32_SET_ACCESS_PARA, |
+ &access_parameter, (DWORD)sizeof(access_parameter), NULL, |
+ 0, &DIOC_count, NULL); |
+ if (!result) |
+ return GetLastError(); |
+ else |
+ return 0; |
+} |
+ |
+//------------------------------------------------------------------------- |
+// create a DeviceName out of cszDeviceName and nIfcNum |
+// |
+static char *DeviceName(int nIfcNum) |
+{ |
+ static char buffer[255]; |
+ char *ptr = buffer; |
+ |
+ strncpy(buffer, DEFDEVICENAME, strlen(DEFDEVICENAME)); |
+ |
+ while (*ptr) ptr++; |
+ |
+ do |
+ { |
+ ptr--; |
+ } while (*ptr != '_'); // step back until '-' |
+ |
+ ptr++; |
+ |
+ if (nIfcNum >= 10) // add the interface number |
+ { |
+ *ptr++ = '1'; |
+ nIfcNum -= 10; |
+ } |
+ |
+ *ptr++ = '0' + nIfcNum; |
+ *ptr = 0; |
+ |
+ // a little help for the users |
+ return buffer; |
+} |
+ |
+//------------------------------------------------------------------------- |
+// open my path to the interface |
+// |
+static HANDLE openPath(char *name) |
+{ |
+ return (HANDLE)CreateFile( |
+ name, |
+ GENERIC_READ | GENERIC_WRITE, |
+ 0, |
+ NULL, |
+ OPEN_EXISTING, |
+ FILE_ATTRIBUTE_NORMAL, |
+ NULL |
+ ); |
+} |
+ |
+//-------------------------------------------------------------------------------------- |
+// open the device |
+// |
+int cc32_open_NT(char *cszPath, int nModuleNumber, void **handle) |
+{ |
+ CC32_DEVICE_NT *dev; |
+ int error = 0; |
+ |
+ *handle = (void *)0; |
+ |
+ dev = (CC32_DEVICE_NT *)malloc(sizeof(CC32_DEVICE_NT)); |
+ if (!dev) return errno; |
+ |
+ dev->nModuleNumber = nModuleNumber; |
+ dev->nHandle = INVALID_HANDLE_VALUE; |
+ dev->wLastAccessWidth = 0xffff; /* invalidate for future use */ |
+ |
+ // start the driver ------------------ |
+ dev->nHandle = openPath(DeviceName(nModuleNumber)); |
+ |
+ if (dev->nHandle == INVALID_HANDLE_VALUE) |
+ error = GetLastError(); |
+ else |
+ { |
+ SetFilePointer(dev->nHandle, 0, NULL, FILE_BEGIN); |
+ dev->dwLastAccessAddress = 0; |
+ dev->wLastAttributes = 0; |
+ dev->wLastAccessWidth = 0; |
+ } |
+ |
+ if (error) |
+ { |
+ free(dev); |
+ return error; |
+ } |
+ |
+ *handle = (void *)dev; |
+ |
+ return NO_ERROR; |
+} |
+ |
+//-------------------------------------------------------------------------------------- |
+// close the device |
+// |
+int cc32_close_NT(void *handle) |
+{ |
+ CC32_DEVICE_NT *dev = (CC32_DEVICE_NT *)handle; |
+ int error = NO_ERROR; |
+ |
+ if (dev) |
+ { |
+ if (dev->nHandle != INVALID_HANDLE_VALUE) |
+ CloseHandle(dev->nHandle); |
+ |
+ free(dev); |
+ } |
+ else |
+ error = ERROR_INVALID_FUNCTION; |
+ |
+ return error; |
+} |
+ |
+//-------------------------------------------------------------------------------------- |
+// read a word |
+// |
+unsigned short cc32_read_word_NT(void *handle, unsigned int N, unsigned int A, unsigned int F) |
+{ |
+ register CC32_DEVICE_NT *dev = (CC32_DEVICE_NT *)handle; |
+ unsigned long adr = NAF(N,A,F); |
+ unsigned short buffer; |
+ unsigned long bytesRead; |
+ |
+ // cache the data access width |
+ if (dev->wLastAccessWidth != WORD_ACCESS) |
+ { |
+ dev->wLastAccessWidth = WORD_ACCESS; |
+ setAccessParameter(dev->nHandle, dev->wLastAccessWidth, dev->wLastAttributes); |
+ } |
+ |
+ // cache the address |
+ if (dev->dwLastAccessAddress != adr) |
+ { |
+ SetFilePointer(dev->nHandle, adr, NULL, FILE_BEGIN); |
+ dev->dwLastAccessAddress = adr; |
+ } |
+ |
+ ReadFile(dev->nHandle, &buffer, WORD_ACCESS, &bytesRead, NULL); |
+ |
+ return buffer; |
+} |
+ |
+//-------------------------------------------------------------------------------------- |
+// read a long |
+// |
+unsigned long cc32_read_long_all_NT(void *handle, unsigned int N, unsigned int A, unsigned int F) |
+{ |
+ register CC32_DEVICE_NT *dev = (CC32_DEVICE_NT *)handle; |
+ unsigned long adr = NAF(N,A,F); |
+ unsigned long buffer; |
+ unsigned long bytesRead; |
+ |
+ // cache the data access width |
+ if (dev->wLastAccessWidth != LONG_ACCESS) |
+ { |
+ dev->wLastAccessWidth = LONG_ACCESS; |
+ setAccessParameter(dev->nHandle, dev->wLastAccessWidth, dev->wLastAttributes); |
+ } |
+ |
+ // cache the address |
+ if (dev->dwLastAccessAddress != adr) |
+ { |
+ SetFilePointer(dev->nHandle, adr, NULL, FILE_BEGIN); |
+ dev->dwLastAccessAddress = adr; |
+ } |
+ |
+ ReadFile(dev->nHandle, &buffer, LONG_ACCESS, &bytesRead, NULL); |
+ |
+ return buffer; |
+} |
+ |
+//-------------------------------------------------------------------------------------- |
+// read a long and get Q and X |
+// |
+unsigned long cc32_read_long_NT(void *handle, unsigned int N, unsigned int A, unsigned int F, char *Q, char *X) |
+{ |
+ unsigned long erg = cc32_read_long_all_NT(handle, N, A, F); |
+ |
+ *Q = (erg & 0x80000000) ? 1 : 0; |
+ *X = (erg & 0x40000000) ? 1 : 0; |
+ |
+ return erg & 0x00FFFFFF; |
+} |
+ |
+//-------------------------------------------------------------------------------------- |
+// write a word |
+// |
+void cc32_write_word_NT(void *handle, unsigned int N, unsigned int A, unsigned int F, unsigned short uwData) |
+{ |
+ register CC32_DEVICE_NT *dev = (CC32_DEVICE_NT *)handle; |
+ unsigned long adr = NAF(N,A,F); |
+ DWORD bytesWritten; |
+ |
+ // cache the data access width |
+ if (dev->wLastAccessWidth != WORD_ACCESS) |
+ { |
+ dev->wLastAccessWidth = WORD_ACCESS; |
+ setAccessParameter(dev->nHandle, dev->wLastAccessWidth, dev->wLastAttributes); |
+ } |
+ |
+ // cache the address |
+ if (dev->dwLastAccessAddress != adr) |
+ { |
+ SetFilePointer(dev->nHandle, adr, NULL, FILE_BEGIN); |
+ dev->dwLastAccessAddress = adr; |
+ } |
+ |
+ WriteFile(dev->nHandle, &uwData, WORD_ACCESS, &bytesWritten, NULL); |
+} |
+ |
+//-------------------------------------------------------------------------------------- |
+// write a long |
+// |
+void cc32_write_long_NT(void *handle, unsigned int N, unsigned int A, unsigned int F, unsigned long ulData) |
+{ |
+ register CC32_DEVICE_NT *dev = (CC32_DEVICE_NT *)handle; |
+ unsigned long adr = NAF(N,A,F); |
+ DWORD bytesWritten; |
+ |
+ // cache the data access width |
+ if (dev->wLastAccessWidth != LONG_ACCESS) |
+ { |
+ dev->wLastAccessWidth = LONG_ACCESS; |
+ setAccessParameter(dev->nHandle, dev->wLastAccessWidth, dev->wLastAttributes); |
+ } |
+ |
+ // cache the address |
+ if (dev->dwLastAccessAddress != adr) |
+ { |
+ SetFilePointer(dev->nHandle, adr, NULL, FILE_BEGIN); |
+ dev->dwLastAccessAddress = adr; |
+ } |
+ |
+ WriteFile(dev->nHandle, &ulData, LONG_ACCESS, &bytesWritten, NULL); |
+} |
+ |
+//-------------------------------------------------------------------------------------- |
+// clear the PCIADA status |
+// |
+int cc32_poll_error_NT(void *handle, char *nTimeout, char *nLam) |
+{ |
+ CC32_DEVICE_NT *dev = (CC32_DEVICE_NT *)handle; |
+ int error; |
+ |
+ if ((error = getStatus(dev->nHandle, dev->nModuleNumber, nTimeout, nLam))) |
+ return error; |
+ |
+ if (*nTimeout) /* clear error */ |
+ { |
+ if ((error = clearStatus(dev->nHandle, dev->nModuleNumber))) |
+ return error; |
+ } |
+ |
+ return NO_ERROR; |
+} |
+ |
+//-------------------------------------------------------------------------------------- |
+// read 'len' words or 'UNTIL_NOT_Q' from a address made out of N,A,F |
+// |
+int cc32_read_word_buffer_NT(void * handle, unsigned int N, unsigned int A, unsigned int F, |
+ unsigned short *pwBuffer, unsigned long *pdwLen) |
+{ |
+ register CC32_DEVICE_NT *dev = (CC32_DEVICE_NT *)handle; |
+ unsigned long adr = NAF(N,A,F); |
+ unsigned long dwLen; |
+ |
+ // cache the data access width |
+ if (dev->wLastAccessWidth != WORD_ACCESS) |
+ { |
+ dev->wLastAccessWidth = WORD_ACCESS; |
+ setAccessParameter(dev->nHandle, dev->wLastAccessWidth, dev->wLastAttributes); |
+ } |
+ |
+ // cache the address |
+ if (dev->dwLastAccessAddress != adr) |
+ { |
+ SetFilePointer(dev->nHandle, adr, NULL, FILE_BEGIN); |
+ dev->dwLastAccessAddress = adr; |
+ } |
+ |
+ *pdwLen <<= 1; // make bytes |
+ dwLen = *pdwLen; |
+ if (!ReadFile(dev->nHandle, pwBuffer, dwLen, pdwLen, NULL)) |
+ return GetLastError(); |
+ |
+ *pdwLen >>= 1; // make words |
+ return 0; |
+} |
+ |
+//-------------------------------------------------------------------------------------- |
+// read 'len' longs or 'UNTIL_NOT_Q' from a address made out of N,A,F, mask 24 bits out |
+// |
+int cc32_read_long_buffer_NT(void * handle, unsigned int N, unsigned int A, unsigned int F, |
+ unsigned long *pdwBuffer, unsigned long *pdwLen) |
+{ |
+ register CC32_DEVICE_NT *dev = (CC32_DEVICE_NT *)handle; |
+ unsigned long adr = NAF(N,A,F); |
+ unsigned long *pdwPtr = pdwBuffer; |
+ unsigned long *pdwEnd = pdwBuffer; |
+ unsigned long dwLen; |
+ |
+ // cache the data access width |
+ if (dev->wLastAccessWidth != LONG_ACCESS) |
+ { |
+ dev->wLastAccessWidth = LONG_ACCESS; |
+ setAccessParameter(dev->nHandle, dev->wLastAccessWidth, dev->wLastAttributes); |
+ } |
+ |
+ // cache the address |
+ if (dev->dwLastAccessAddress != adr) |
+ { |
+ SetFilePointer(dev->nHandle, adr, NULL, FILE_BEGIN); |
+ dev->dwLastAccessAddress = adr; |
+ } |
+ |
+ *pdwLen <<= 2; // make bytes |
+ dwLen = *pdwLen; |
+ if (!ReadFile(dev->nHandle, pdwBuffer, dwLen, pdwLen, NULL)) |
+ return GetLastError(); |
+ |
+ pdwEnd += *pdwLen; |
+ while (pdwEnd < pdwPtr) |
+ *pdwPtr++ &= 0x00FFFFFF; // mask Q and X bits |
+ |
+ *pdwLen >>= 2; // make longs |
+ return 0; |
+} |
+ |
+//-------------------------------------------------------------------------------------- |
+// read 'len' longs or 'UNTIL_NOT_Q' from a address made out of N,A,F, without interpretation |
+// |
+int cc32_read_long_all_buffer_NT(void * handle, unsigned int N, unsigned int A, unsigned int F, |
+ unsigned long *pdwBuffer, unsigned long *pdwLen) |
+{ |
+ register CC32_DEVICE_NT *dev = (CC32_DEVICE_NT *)handle; |
+ unsigned long adr = NAF(N,A,F); |
+ unsigned long dwLen; |
+ |
+ // cache the data access width |
+ if (dev->wLastAccessWidth != LONG_ACCESS) |
+ { |
+ dev->wLastAccessWidth = LONG_ACCESS; |
+ setAccessParameter(dev->nHandle, dev->wLastAccessWidth, dev->wLastAttributes); |
+ } |
+ |
+ // cache the address |
+ if (dev->dwLastAccessAddress != adr) |
+ { |
+ SetFilePointer(dev->nHandle, adr, NULL, FILE_BEGIN); |
+ dev->dwLastAccessAddress = adr; |
+ } |
+ |
+ *pdwLen <<= 2; // make bytes |
+ dwLen = *pdwLen; |
+ if (!ReadFile(dev->nHandle, pdwBuffer, dwLen, pdwLen, NULL)) |
+ return GetLastError(); |
+ |
+ *pdwLen >>= 2; // make longs |
+ return 0; |
+} |
+ |
+//-------------------------------------------------------------------------------------- |
+// switch UNTIL_NOT_Q or AUTOREAD on or off |
+// |
+int cc32_access_switch_NT(void *handle, unsigned short uwSwitch) |
+{ |
+ register CC32_DEVICE_NT *dev = (CC32_DEVICE_NT *)handle; |
+ |
+ dev->wLastAttributes = uwSwitch; |
+ return setAccessParameter(dev->nHandle, dev->wLastAccessWidth, dev->wLastAttributes); |
+} |
+ |
+//-------------------------------------------------------------------------------------- |
+// switch interrupts on |
+// |
+int cc32_enable_interrupt_NT(void *handle) |
+{ |
+ register CC32_DEVICE_NT *dev = (CC32_DEVICE_NT *)handle; |
+ DWORD result; |
+ DWORD DIOC_count; // count of returned bytes of DeviceIoControl |
+ PCICC32_IRQ_CONTROL irqCntrl; |
+ |
+ irqCntrl.dwInterface = 0; // don't bother at WINNT |
+ irqCntrl.wEnable = 1; // enable it |
+ |
+ result = DeviceIoControl(dev->nHandle, PCICC32_CONTROL_INTERRUPTS, |
+ &irqCntrl, sizeof(irqCntrl), NULL, 0, &DIOC_count, NULL); |
+ |
+ if (!result) |
+ return GetLastError(); |
+ else |
+ return NO_ERROR; |
+} |
+ |
+//-------------------------------------------------------------------------------------- |
+// switch interrupts off |
+// |
+int cc32_disable_interrupt_NT(void *handle) |
+{ |
+ register CC32_DEVICE_NT *dev = (CC32_DEVICE_NT *)handle; |
+ DWORD result; |
+ DWORD DIOC_count; // count of returned bytes of DeviceIoControl |
+ PCICC32_IRQ_CONTROL irqCntrl; |
+ |
+ irqCntrl.dwInterface = 0; // don't bother at WINNT |
+ irqCntrl.wEnable = 0; // disable it |
+ |
+ result = DeviceIoControl(dev->nHandle, PCICC32_CONTROL_INTERRUPTS, |
+ &irqCntrl, sizeof(irqCntrl), NULL, 0, &DIOC_count, NULL); |
+ |
+ if (!result) |
+ return GetLastError(); |
+ else |
+ return NO_ERROR; |
+} |
+ |
+//-------------------------------------------------------------------------------------- |
+// wait blocking for the next interrupt |
+// |
+int cc32_get_interrupt_NT(void *handle, unsigned long *dwStatus) |
+{ |
+ register CC32_DEVICE_NT *dev = (CC32_DEVICE_NT *)handle; |
+ DWORD result; |
+ DWORD DIOC_count; // count of returned bytes of DeviceIoControl |
+ PCICC32_IRQ_RESPONSE response; |
+ int nError; |
+ OVERLAPPED sOverlapped; |
+ |
+ sOverlapped.hEvent = NULL; |
+ result = DeviceIoControl(dev->nHandle, PCICC32_INSTALL_IRQ_BLOCK, |
+ NULL, 0, &response, sizeof(response), &DIOC_count, NULL); |
+ |
+ *dwStatus = response.dwInterruptFlags; |
+ |
+ if (!result) |
+ { |
+ nError = GetLastError(); |
+ |
+ // a real error |
+ if ((nError != ERROR_IO_PENDING) && (nError != ERROR_SUCCESS)) |
+ return nError; |
+ |
+ // my IO is pending - wait for it |
+ if (nError == ERROR_IO_PENDING) |
+ { |
+ result = GetOverlappedResult(dev->nHandle, &sOverlapped, &DIOC_count, TRUE); |
+ |
+ *dwStatus = response.dwInterruptFlags; |
+ |
+ if (!result) |
+ { |
+ nError = GetLastError(); // if it was cancelled |
+ if (nError == ERROR_OPERATION_ABORTED) |
+ return NO_ERROR; // accept it as 'normal' |
+ else |
+ return nError; |
+ } |
+ } |
+ } |
+ |
+ return NO_ERROR; |
+} |
+ |
+ |
Index: wiener_pcicc32_dll/pcicc32_ni.vcxproj |
=================================================================== |
--- wiener_pcicc32_dll/pcicc32_ni.vcxproj (nonexistent) |
+++ wiener_pcicc32_dll/pcicc32_ni.vcxproj (revision 177) |
@@ -0,0 +1,159 @@ |
+<?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 /> |
+ <SccLocalPath /> |
+ <ProjectGuid>{0370965E-2E92-4C77-92E7-F42D4EE3DBCF}</ProjectGuid> |
+ </PropertyGroup> |
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> |
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration"> |
+ <ConfigurationType>DynamicLibrary</ConfigurationType> |
+ <PlatformToolset>v110</PlatformToolset> |
+ <UseOfMfc>false</UseOfMfc> |
+ </PropertyGroup> |
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|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)'=='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> |
+ <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> |
+ <PropertyGroup Label="UserMacros" /> |
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> |
+ <OutDir>$(OutDir)</OutDir> |
+ <IntDir>$(OutDir)obj</IntDir> |
+ <LinkIncremental>false</LinkIncremental> |
+ </PropertyGroup> |
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> |
+ <OutDir>$(OutDir)</OutDir> |
+ <IntDir>$(OutDir)obj</IntDir> |
+ <LinkIncremental>true</LinkIncremental> |
+ <TargetName>pcicc32_ni</TargetName> |
+ </PropertyGroup> |
+ <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> |
+ <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions> |
+ <AssemblerListingLocation>.\Release\</AssemblerListingLocation> |
+ <BrowseInformation>true</BrowseInformation> |
+ <PrecompiledHeaderOutputFile> |
+ </PrecompiledHeaderOutputFile> |
+ <ObjectFileName>.\Release\</ObjectFileName> |
+ <ProgramDataBaseFileName>.\Release\</ProgramDataBaseFileName> |
+ </ClCompile> |
+ <PostBuildEvent> |
+ <Command>copy debug\pcicc32_ni.dll $(ProjectDir)</Command> |
+ </PostBuildEvent> |
+ <Midl> |
+ <SuppressStartupBanner>true</SuppressStartupBanner> |
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> |
+ <TypeLibraryName>.\Release\pcicc32_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\pcicc32_ni.bsc</OutputFile> |
+ </Bscmake> |
+ <Link> |
+ <SuppressStartupBanner>true</SuppressStartupBanner> |
+ <LinkDLL>true</LinkDLL> |
+ <SubSystem>Windows</SubSystem> |
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile> |
+ <ImportLibrary>.\Release\pcicc32_ni.lib</ImportLibrary> |
+ <AdditionalDependencies>odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies> |
+ </Link> |
+ </ItemDefinitionGroup> |
+ <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> |
+ <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions> |
+ <AssemblerListingLocation>.\Debug\</AssemblerListingLocation> |
+ <PrecompiledHeaderOutputFile> |
+ </PrecompiledHeaderOutputFile> |
+ <ObjectFileName>.\Debug\</ObjectFileName> |
+ <ProgramDataBaseFileName>.\Debug\</ProgramDataBaseFileName> |
+ </ClCompile> |
+ <PostBuildEvent> |
+ <Command>copy debug\pcicc32_ni.dll $(ProjectDir)</Command> |
+ </PostBuildEvent> |
+ <Midl> |
+ <SuppressStartupBanner>true</SuppressStartupBanner> |
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> |
+ <TypeLibraryName>.\Debug\pcicc32_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\pcicc32_ni.bsc</OutputFile> |
+ </Bscmake> |
+ <Link> |
+ <SuppressStartupBanner>true</SuppressStartupBanner> |
+ <LinkDLL>true</LinkDLL> |
+ <GenerateDebugInformation>true</GenerateDebugInformation> |
+ <SubSystem>Windows</SubSystem> |
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile> |
+ <ImportLibrary>.\Debug\pcicc32_ni.lib</ImportLibrary> |
+ <AdditionalDependencies>odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies> |
+ </Link> |
+ </ItemDefinitionGroup> |
+ <ItemGroup> |
+ <ClCompile Include="Libcc32.c" /> |
+ <ClCompile Include="Libcc32_95.c" /> |
+ <ClCompile Include="Libcc32_NT.c" /> |
+ <ClCompile Include="OS_INFO.C" /> |
+ </ItemGroup> |
+ <ItemGroup> |
+ <ClInclude Include="Libcc32.h" /> |
+ <ClInclude Include="Libcc32_95.h" /> |
+ <ClInclude Include="libcc32_NT.h" /> |
+ <ClInclude Include="OS_INFO.H" /> |
+ <ClInclude Include="vpcic32d.h" /> |
+ </ItemGroup> |
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> |
+ <ImportGroup Label="ExtensionTargets"> |
+ </ImportGroup> |
+</Project> |
\ No newline at end of file |
Index: wiener_pcicc32_dll/Libcc32.h |
=================================================================== |
--- wiener_pcicc32_dll/Libcc32.h (nonexistent) |
+++ wiener_pcicc32_dll/Libcc32.h (revision 177) |
@@ -0,0 +1,94 @@ |
+#ifndef __CC32LIB_H__ |
+#define __CC32LIB_H__ |
+/* |
+ cc32lib.h -- header for a simple access library for the |
+ PCICC32 PCI to CAMAC Interface from ARW Elektronik |
+ |
+ (c) 2000 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 |
+ |
+ To use this library the module "pcicc32.o" have to be installed. There must be also a |
+ node which points with ist major number to the module and its minor number must equal |
+ the CC32 module number (Jumper J301 to J304). |
+ |
+ first steps derived from the LINUX pcicc32 library AR 16.03.2000 |
+ added buffer, UNTIL_NOT_Q and AUTOREAD functionality AR 17.03.2001 |
+ added interrupt handling (NT + 2000 only) AR 08.06.2002 |
+*/ |
+ |
+ |
+/*--- INCLUDES --------------------------------------------------------------------------*/ |
+ |
+/*--- TYPEDEFS --------------------------------------------------------------------------*/ |
+typedef void* CC32_HANDLE; /* type of the device handle */ |
+ |
+/*--- DEFINES ---------------------------------------------------------------------------*/ |
+#define SW_UNTIL_NOT_Q 1 /* switches for cc32_access_switch( ..., uSwitch); */ |
+#define SW_AUTOREAD 2 |
+ |
+/*--- PROTOTYPES ------------------------------------------------------------------------*/ |
+ |
+#ifdef __cplusplus |
+extern "C" |
+{ |
+#endif |
+ |
+/* open a path to a device. E.g. "/dev/pcicc32_1" */ |
+int __declspec(dllexport) cc32_open(char *cszPath, int nModuleNumber, CC32_HANDLE *handle); |
+ |
+/* close the opened path */ |
+int __declspec(dllexport) cc32_close(CC32_HANDLE handle); |
+ |
+/* read only a word - 16 bits - from a address made out of N,A,F */ |
+unsigned short __declspec(dllexport) cc32_read_word(CC32_HANDLE handle, unsigned int N, unsigned int A, unsigned int F); |
+ |
+/* read a long - 32 bits - from a address made out of N,A,F and get the result Q and X */ |
+unsigned long __declspec(dllexport) cc32_read_long(CC32_HANDLE handle, unsigned int N, unsigned int A, unsigned int F, char *Q, char *X); |
+ |
+/* read a long - 32 bits - without any interpretation */ |
+unsigned long __declspec(dllexport) cc32_read_long_all(CC32_HANDLE handle, unsigned int N, unsigned int A, unsigned int F); |
+ |
+/* write a word - 16 bits - to a destination made out of N,A,F */ |
+void __declspec(dllexport) cc32_write_word(CC32_HANDLE handle, unsigned int N, unsigned int A, unsigned int F, unsigned short uwData); |
+ |
+/* write a long - 32 bits - uninterpreted to a destination made out of N,A,F */ |
+void __declspec(dllexport) cc32_write_long(CC32_HANDLE handle, unsigned int N, unsigned int A, unsigned int F, unsigned long ulData); |
+ |
+/* poll the state of the timeout line and the LAM state. The timeout line is cleared if it was set */ |
+int __declspec(dllexport) cc32_poll_error(CC32_HANDLE handle, char *nTimeout, char *nLam); |
+ |
+/* read 'len' words or 'UNTIL_NOT_Q' from a address made out of N,A,F into a buffer*/ |
+int __declspec(dllexport) cc32_read_word_buffer(CC32_HANDLE handle, unsigned int N, unsigned int A, unsigned int F, |
+ unsigned short *pwBuffer, unsigned long *pdwLen); |
+ |
+/* read 'len' longs or 'UNTIL_NOT_Q' from a address made out of N,A,F into a buffer*/ |
+int __declspec(dllexport) cc32_read_long_buffer(CC32_HANDLE handle, unsigned int N, unsigned int A, unsigned int F, |
+ unsigned long *pdwBuffer, unsigned long *pdwLen); |
+/* read 'len' longs or 'UNTIL_NOT_Q' from a address made out of N,A,F into a buffer, no interpretation */ |
+int __declspec(dllexport) cc32_read_long_all_buffer(CC32_HANDLE handle, unsigned int N, unsigned int A, unsigned int F, |
+ unsigned long *pdwBuffer, unsigned long *pdwLen); |
+ |
+/* switch UNTIL_NOT_Q or AUTOREAD on or off */ |
+int __declspec(dllexport) cc32_access_switch(CC32_HANDLE handle, unsigned short uwSwitch); |
+ |
+/* switch interrupts on */ |
+int __declspec(dllexport) cc32_enable_interrupt(CC32_HANDLE handle); |
+ |
+/* switch interrupts off */ |
+int __declspec(dllexport) cc32_disable_interrupt(CC32_HANDLE handle); |
+ |
+/* wait blocking for the next interrupt */ |
+int __declspec(dllexport) cc32_get_interrupt(CC32_HANDLE handle, unsigned long *dwStatus); |
+ |
+#ifdef __cplusplus |
+} |
+#endif |
+ |
+#endif /* __CC32LIB_H__ */ |
Index: wiener_pcicc32_dll/pcicc32_ni.sln |
=================================================================== |
--- wiener_pcicc32_dll/pcicc32_ni.sln (nonexistent) |
+++ wiener_pcicc32_dll/pcicc32_ni.sln (revision 177) |
@@ -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}") = "pcicc32_ni", "pcicc32_ni.vcxproj", "{0370965E-2E92-4C77-92E7-F42D4EE3DBCF}" |
+EndProject |
+Global |
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution |
+ Debug|Win32 = Debug|Win32 |
+ Release|Win32 = Release|Win32 |
+ EndGlobalSection |
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution |
+ {0370965E-2E92-4C77-92E7-F42D4EE3DBCF}.Debug|Win32.ActiveCfg = Debug|Win32 |
+ {0370965E-2E92-4C77-92E7-F42D4EE3DBCF}.Debug|Win32.Build.0 = Debug|Win32 |
+ {0370965E-2E92-4C77-92E7-F42D4EE3DBCF}.Release|Win32.ActiveCfg = Release|Win32 |
+ {0370965E-2E92-4C77-92E7-F42D4EE3DBCF}.Release|Win32.Build.0 = Release|Win32 |
+ EndGlobalSection |
+ GlobalSection(SolutionProperties) = preSolution |
+ HideSolutionNode = FALSE |
+ EndGlobalSection |
+EndGlobal |
Index: wiener_pcicc32_dll/libcc32_NT.h |
=================================================================== |
--- wiener_pcicc32_dll/libcc32_NT.h (nonexistent) |
+++ wiener_pcicc32_dll/libcc32_NT.h (revision 177) |
@@ -0,0 +1,72 @@ |
+#ifndef __LIBCC32_NT_H__ |
+#define __LIBCC32_NT_H__ |
+ |
+/* |
+ libcc32_NT.h -- header for a simple access library (WINNT) for the |
+ PCICC32 PCI to CAMAC Interface from ARW Elektronik |
+ |
+ (c) 2000 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 |
+ |
+ first steps AR 30.07.2000 |
+ added buffer, UNTIL_NOT_Q and AUTOREAD functionality AR 17.03.2001 |
+ added interrupt handling AR 08.06.2002 |
+*/ |
+ |
+ |
+/* open a path to a device. E.g. "/dev/pcicc32_1" */ |
+int cc32_open_NT(char *cszPath, int nModuleNumber, void **handle); |
+ |
+/* close the opened path */ |
+int cc32_close_NT(void *handle); |
+ |
+/* read only a word - 16 bits - from a address made out of N,A,F */ |
+unsigned short cc32_read_word_NT(void *handle, unsigned int N, unsigned int A, unsigned int F); |
+ |
+/* read a long - 32 bits - from a address made out of N,A,F and get the result Q and X */ |
+unsigned long cc32_read_long_NT(void *handle, unsigned int N, unsigned int A, unsigned int F, char *Q, char *X); |
+ |
+/* read a long - 32 bits - without any interpretaion */ |
+unsigned long cc32_read_long_all_NT(void *handle, unsigned int N, unsigned int A, unsigned int F); |
+ |
+/* write a word - 16 bits - to a destination made out of N,A,F */ |
+void cc32_write_word_NT(void *handle, unsigned int N, unsigned int A, unsigned int F, unsigned short uwData); |
+ |
+/* write a long - 32 bits - uninterpreted to a destination made out of N,A,F */ |
+void cc32_write_long_NT(void *handle, unsigned int N, unsigned int A, unsigned int F, unsigned long ulData); |
+ |
+/* poll the state of the timeout line and the LAM state. The timeout line is cleared if it was set */ |
+int cc32_poll_error_NT(void *handle, char *nTimeout, char *nLam); |
+ |
+/* read words until not Q or *pdwLen data into a buffer */ |
+int cc32_read_word_buffer_NT(void * handle, unsigned int N, unsigned int A, unsigned int F, |
+ unsigned short *pwBuffer, unsigned long *pdwLen); |
+ |
+/* read longs until not Q or *pdwLen data into a buffer */ |
+int cc32_read_long_buffer_NT(void * handle, unsigned int N, unsigned int A, unsigned int F, |
+ unsigned long *pdwBuffer, unsigned long *pdwLen); |
+ |
+/* read longs until not Q or *pdwLen data and don't interpret Q and X information into a buffer */ |
+int cc32_read_long_all_buffer_NT(void * handle, unsigned int N, unsigned int A, unsigned int F, |
+ unsigned long *pdwBuffer, unsigned long *pdwLen); |
+ |
+/* switch UNTIL_NOT_Q or AUTOREAD on or off */ |
+int cc32_access_switch_NT(void *handle, unsigned short uwSwitch); |
+ |
+/* switch interrupts on */ |
+int cc32_enable_interrupt_NT(void *handle); |
+ |
+/* switch interrupts off */ |
+int cc32_disable_interrupt_NT(void *handle); |
+ |
+/* wait blocking for the next interrupt */ |
+int cc32_get_interrupt_NT(void *handle, unsigned long *dwStatus); |
+ |
+#endif // __LIBCC32_NT_H__ |
Index: wiener_pcicc32_dll/pcicc32.h |
=================================================================== |
--- wiener_pcicc32_dll/pcicc32.h (nonexistent) |
+++ wiener_pcicc32_dll/pcicc32.h (revision 177) |
@@ -0,0 +1,157 @@ |
+#ifndef __PCICC32_H__ |
+#define __PCICC32_H__ |
+//------------------------------------------------------------------------- |
+// WINNT driver for PCICC32 interface from ARW Elektronik, Germany -------- |
+// IO definitions and common data structures between application and driver |
+// |
+// (c) 2000,2001 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 |
+// |
+// what who when |
+// started AR 16.04.2000 |
+// added irq functionality AR 24.02.2001 |
+// added until 'not Q' read/write mode AR 03.03.2001 |
+// added AUTOREAD AR 17.03.2001 |
+// |
+ |
+//------------------------------------------------------------------------- |
+// 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 |
+// |
+ |
+//---------------------------------------------------------------------------------------- |
+// macros for simple CAMAC NAF address calculation |
+// |
+#define NAF(n, a, f) ((ULONG)((n << 10) + (a << 6) + ((f & 0xf) << 2))) |
+ |
+// to get a compatible view to WIN95 driver |
+#define USER_CONTROL_CODE(x) (x) |
+ |
+// VPCIC32D_ATTACH_CC32 and VPCIC32D_DETACH_CC32 are incompatible to WINNT - please use read and write commands |
+ |
+// get the interrupt and timeout status from a CC32 interface (0x00220008) |
+#define PCICC32_GET_STATUS CTL_CODE(\ |
+ FILE_DEVICE_UNKNOWN,\ |
+ USER_CONTROL_CODE(2),\ |
+ METHOD_BUFFERED,\ |
+ FILE_ANY_ACCESS) |
+ |
+// clear the timeout status of a CC32 interface (0x0022000C) |
+#define PCICC32_CLEAR_STATUS CTL_CODE(\ |
+ FILE_DEVICE_UNKNOWN,\ |
+ USER_CONTROL_CODE(3),\ |
+ METHOD_BUFFERED,\ |
+ FILE_ANY_ACCESS) |
+ |
+// set the access parameter for this file (0x00220010) |
+#define PCICC32_SET_ACCESS_PARA CTL_CODE(\ |
+ FILE_DEVICE_UNKNOWN,\ |
+ USER_CONTROL_CODE(4),\ |
+ METHOD_BUFFERED,\ |
+ FILE_ANY_ACCESS) |
+ |
+// allow or inhibit CC32 interrupt requests (0x00220014) |
+#define PCICC32_CONTROL_INTERRUPTS CTL_CODE(\ |
+ FILE_DEVICE_UNKNOWN,\ |
+ USER_CONTROL_CODE(5),\ |
+ METHOD_BUFFERED,\ |
+ FILE_ANY_ACCESS) |
+ |
+// requests thru blocking io the status of a pending or a rising interrupt (0x0022001C) |
+#define PCICC32_INSTALL_IRQ_BLOCK CTL_CODE(\ |
+ FILE_DEVICE_UNKNOWN,\ |
+ USER_CONTROL_CODE(7),\ |
+ METHOD_BUFFERED,\ |
+ FILE_ANY_ACCESS) |
+ |
+// requests to access the PLX LCR for test and debug (0x00220020) |
+#define PCICC32_ACCESS_LCR CTL_CODE(\ |
+ FILE_DEVICE_UNKNOWN,\ |
+ USER_CONTROL_CODE(8),\ |
+ METHOD_BUFFERED,\ |
+ FILE_ANY_ACCESS) |
+ |
+// set to check for control-code overflow |
+#define PCICC32_LAST_CTL_CODE PCICC32_ACCESS_LCR |
+ |
+// mask bits for interrupt status |
+#define LAM_IRQ 0x00FFFFFF // there was a LAM responible for the timeout |
+#define CONNECTION_TIMEOUT 0x08000000 // irq raised through a connection timout |
+#define LAM_BUS_OR 0x10000000 // a LAM-BUS-OR is pending |
+#define LAM_NOT_OR 0x20000000 // a LAM-NOT-OR is pending |
+#define LAM_AND_OR 0x40000000 // a LAM-AND-OR is pending |
+#define LAM_FF 0x80000000 // the LAM-Flip-Flop was set |
+ |
+// switches for PCICC32_ACCESS_COMMAND.wAccessType |
+#define WORD_ACCESS (UCHAR)2 // word |
+#define LONG_ACCESS (UCHAR)4 // long |
+ |
+// define bits for PCICC32_ACCESS_COMMAND.wBlockTransfer |
+#define UNTIL_NOT_Q 0x0001 // read/write unttil 'not Q' switch |
+#define AUTOREAD 0x0002 // PCIADA data pipelining access tuner switch |
+ |
+// data lane size constants for PCICC32_ACCESS_LCR |
+#define BYTE_ACCESS (UCHAR)1 // write byte wise (illegal) |
+#define WORD_ACCESS (UCHAR)2 // word |
+#define LONG_ACCESS (UCHAR)4 // long |
+ |
+// PCICC32_ACCESS_LCR access constants |
+#define LCR_READ 0 // read only access |
+#define LCR_WRITE 1 // write and read back access |
+#define LCR_OR 2 // read, bitwise 'or' content and read back access |
+#define LCR_AND 3 // read, bitwise 'and' content and read back access |
+#define LCR_WRITE_ONLY 4 // do not read back after write |
+ |
+// this structure is output from VPCIC32_GET_STATUS call |
+typedef struct |
+{ |
+ ULONG dwInterface; // CC32 module number (for compatibility to win95/98 only - not used) |
+ USHORT bTimeout; // denotes a pending PCIADA timeout |
+ USHORT bInterrupt; // denotes a pending LAM interrupt |
+} PCICC32_STATUS; |
+ |
+// this structure sets the access parameter for following reads or writes to this path |
+typedef struct |
+{ |
+ ULONG dwInterface; // CC32 module number (for compatibility to win95/98 only - not used) |
+ USHORT wAccessType; // set the current access type (WORD_ACCESS, LONG_ACCESS) |
+ USHORT wBlockTransfer; // set AUTOREAD or UNTIL_NOT_Q |
+} PCICC32_ACCESS_COMMAND; |
+ |
+// this structure is used to control the interrupts |
+typedef struct |
+{ |
+ ULONG dwInterface; // CC32 module number (for compatibility to win95/98 only - not used) |
+ USHORT wEnable; // a 1 allows, a 0 inhibits interrupt requests |
+} PCICC32_IRQ_CONTROL; |
+ |
+// this structure returns from a blocking interrupt status call |
+typedef struct |
+{ |
+ ULONG dwInterface; // CC32 module number (for compatibility to win95/98 only - not used) |
+ ULONG dwInterruptFlags; // the return status at the return of the blocking call |
+} PCICC32_IRQ_RESPONSE; |
+ |
+// structure to access the local configuration space of PLX chip (test / debug only) with PCICC32_ACCESS_LCR |
+typedef struct |
+{ |
+ ULONG dwInterface; // here dummy 'cause of compatibility to WIN95 |
+ ULONG dwContent; // content to write, and, or |
+ USHORT wRegisterAddress; // address offset of LCR register |
+ UCHAR bAccessMode; // LCR_READ, write, or, and |
+ UCHAR bBytesLane; // the data access width |
+} PCICC32_LCR_ACCESS; |
+ |
+#endif // __PCICC32_H__ |
Index: wiener_pcicc32_dll/pcicc32_ni.opt |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/wiener_pcicc32_dll/pcicc32_ni.opt |
---|
Property changes: |
Added: svn:mime-type |
## -0,0 +1 ## |
+application/octet-stream |
\ No newline at end of property |
Index: wiener_pcicc32_dll/pcicc32_ni.ncb |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/wiener_pcicc32_dll/pcicc32_ni.ncb |
---|
Property changes: |
Added: svn:mime-type |
## -0,0 +1 ## |
+application/octet-stream |
\ No newline at end of property |
Index: wiener_pcicc32_dll/OS_INFO.C |
=================================================================== |
--- wiener_pcicc32_dll/OS_INFO.C (nonexistent) |
+++ wiener_pcicc32_dll/OS_INFO.C (revision 177) |
@@ -0,0 +1,99 @@ |
+//------------------------------------------------------------------------------------------- |
+// os_info.c - request the OS type and version |
+// |
+// 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 |
+// |
+// |
+// what who when |
+// first steps AR 07.11.1999 |
+// |
+ |
+//------------------------------------------------------------------------------------------- |
+// 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; |
+ } |
+ |
+ 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; |
+ } |
+ |
+ return FALSE; |
+} |
+ |
+/* |
+BOOLEAN IsWindowsBlaBla(void) |
+{ |
+ |
+} |
+*/ |
+ |
Index: wiener_pcicc32_dll |
=================================================================== |
--- wiener_pcicc32_dll (nonexistent) |
+++ wiener_pcicc32_dll (revision 177) |
/wiener_pcicc32_dll |
---|
Property changes: |
Added: svn:global-ignores |
## -0,0 +1,3 ## |
+*.dsp |
+*.dsw |
+*.sdf |