/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 |
+application/octet-stream |
\ No newline at end of property |
/drivers/wiener_pcicc32_dll/Release/pcicc32_ni.bsc |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/drivers/wiener_pcicc32_dll/Release/OS_INFO.obj |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/drivers/wiener_pcicc32_dll/Release/pcicc32_ni.dll |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/drivers/wiener_pcicc32_dll/Release/Libcc32_95.obj |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/drivers/wiener_pcicc32_dll/Release/pcicc32_ni.exp |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/drivers/wiener_pcicc32_dll/Release/obj/OS_INFO.sbr |
---|
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 |
+application/octet-stream |
\ No newline at end of property |
/drivers/wiener_pcicc32_dll/Release/obj/Libcc32_95.sbr |
---|
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 |
+application/octet-stream |
\ No newline at end of property |
/drivers/wiener_pcicc32_dll/Release/obj/link.write.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/drivers/wiener_pcicc32_dll/Release/obj/CL.write.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/drivers/wiener_pcicc32_dll/Release/obj/link-rc.write.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/drivers/wiener_pcicc32_dll/Release/obj/pcicc32_ni.log |
---|
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 |
/drivers/wiener_pcicc32_dll/Release/obj/link-cvtres.write.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/drivers/wiener_pcicc32_dll/Release/obj/pcicc32_ni.lastbuildstate |
---|
0,0 → 1,2 |
#v4.0:v110:false |
Release|Win32|C:\Users\f9daq\rok\wienerpciada\PciCamac\Dll-source\| |
/drivers/wiener_pcicc32_dll/Release/obj/bscmake.write.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/drivers/wiener_pcicc32_dll/Release/obj/Libcc32.sbr |
---|
/drivers/wiener_pcicc32_dll/Release/obj/pcicc32_ni.write.1.tlog |
---|
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 |
/drivers/wiener_pcicc32_dll/Release/obj/link.read.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/drivers/wiener_pcicc32_dll/Release/obj/CL.read.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/drivers/wiener_pcicc32_dll/Release/obj/link-rc.read.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/drivers/wiener_pcicc32_dll/Release/obj/link.command.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/drivers/wiener_pcicc32_dll/Release/obj/link-cvtres.read.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/drivers/wiener_pcicc32_dll/Release/obj/cl.command.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/drivers/wiener_pcicc32_dll/Release/Libcc32_NT.obj |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/drivers/wiener_pcicc32_dll/Release/vc110.pdb |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/drivers/wiener_pcicc32_dll/Release |
---|
Property changes: |
Added: svn:global-ignores |
+*.obj |
/drivers/wiener_pcicc32_dll/Debug/pcicc32_ni.pdb |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/drivers/wiener_pcicc32_dll/Debug/pcicc32_ni.lib |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/drivers/wiener_pcicc32_dll/Debug/pcicc32_ni.dll |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/drivers/wiener_pcicc32_dll/Debug/Libcc32_95.obj |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/drivers/wiener_pcicc32_dll/Debug/pcicc32_ni.exp |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/drivers/wiener_pcicc32_dll/Debug/vc110.idb |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/drivers/wiener_pcicc32_dll/Debug/Libcc32.obj |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/drivers/wiener_pcicc32_dll/Debug/obj/pcicc32_ni.lastbuildstate |
---|
0,0 → 1,2 |
#v4.0:v110:false |
Debug|Win32|C:\Users\f9daq\rok\wienerpciada\PciCamac\Dll-source\| |
/drivers/wiener_pcicc32_dll/Debug/obj/pcicc32_ni.write.1.tlog |
---|
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 |
/drivers/wiener_pcicc32_dll/Debug/obj/link.write.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/drivers/wiener_pcicc32_dll/Debug/obj/CL.write.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/drivers/wiener_pcicc32_dll/Debug/obj/link.read.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/drivers/wiener_pcicc32_dll/Debug/obj/CL.read.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/drivers/wiener_pcicc32_dll/Debug/obj/link-rc.write.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/drivers/wiener_pcicc32_dll/Debug/obj/link-rc.read.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/drivers/wiener_pcicc32_dll/Debug/obj/pcicc32_ni.log |
---|
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 |
/drivers/wiener_pcicc32_dll/Debug/obj/link-cvtres.write.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/drivers/wiener_pcicc32_dll/Debug/obj/link.command.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/drivers/wiener_pcicc32_dll/Debug/obj/cl.command.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/drivers/wiener_pcicc32_dll/Debug/obj/link-cvtres.read.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/drivers/wiener_pcicc32_dll/Debug/obj/pcicc32_ni.Build.CppClean.log |
---|
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 |
/drivers/wiener_pcicc32_dll/Debug/pcicc32_ni.ilk |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/drivers/wiener_pcicc32_dll/Debug/Libcc32_NT.obj |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/drivers/wiener_pcicc32_dll/Debug/vc110.pdb |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/drivers/wiener_pcicc32_dll/Debug |
---|
Property changes: |
Added: svn:global-ignores |
+*.obj |
/drivers/wiener_pcicc32_dll/Libcc32_95.c |
---|
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; |
} |
/drivers/wiener_pcicc32_dll/OS_INFO.H |
---|
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 |
/drivers/wiener_pcicc32_dll/pcicc32_ni.vcxproj.user |
---|
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> |
/drivers/wiener_pcicc32_dll/Libcc32_95.h |
---|
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__ |
/drivers/wiener_pcicc32_dll/pcicc32_ni.dll |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/drivers/wiener_pcicc32_dll/pcicc32_ni.v11.suo |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/drivers/wiener_pcicc32_dll/pcicc32_ni.plg |
---|
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> |
/drivers/wiener_pcicc32_dll/Libcc32.c |
---|
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); |
} |
/drivers/wiener_pcicc32_dll/vpcic32d.h |
---|
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__ |
/drivers/wiener_pcicc32_dll/Libcc32_NT.c |
---|
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; |
} |
/drivers/wiener_pcicc32_dll/pcicc32_ni.vcxproj |
---|
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> |
/drivers/wiener_pcicc32_dll/Libcc32.h |
---|
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__ */ |
/drivers/wiener_pcicc32_dll/pcicc32_ni.sln |
---|
0,0 → 1,20 |
|
Microsoft Visual Studio Solution File, Format Version 12.00 |
# Visual Studio Express 2012 for Windows Desktop |
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "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 |
/drivers/wiener_pcicc32_dll/libcc32_NT.h |
---|
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__ |
/drivers/wiener_pcicc32_dll/pcicc32.h |
---|
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__ |
/drivers/wiener_pcicc32_dll/pcicc32_ni.opt |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/drivers/wiener_pcicc32_dll/pcicc32_ni.ncb |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/drivers/wiener_pcicc32_dll/OS_INFO.C |
---|
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) |
{ |
} |
*/ |
/drivers/wiener_pcicc32_dll |
---|
Property changes: |
Added: svn:global-ignores |
+*.dsp |
+*.dsw |
+*.sdf |