Subversion Repositories f9daq

Compare Revisions

Ignore whitespace Rev 20 → Rev 21

/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;
}
/wiener_pcicc32_dll/Release/pcicc32_ni.lib
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: wiener_pcicc32_dll/Release/pcicc32_ni.bsc
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/wiener_pcicc32_dll/Release/pcicc32_ni.bsc
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: wiener_pcicc32_dll/Release/OS_INFO.obj
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/wiener_pcicc32_dll/Release/OS_INFO.obj
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: wiener_pcicc32_dll/Release/pcicc32_ni.dll
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/wiener_pcicc32_dll/Release/pcicc32_ni.dll
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: wiener_pcicc32_dll/Release/Libcc32_95.obj
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/wiener_pcicc32_dll/Release/Libcc32_95.obj
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: wiener_pcicc32_dll/Release/pcicc32_ni.exp
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/wiener_pcicc32_dll/Release/pcicc32_ni.exp
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: wiener_pcicc32_dll/Release/Libcc32.obj
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/wiener_pcicc32_dll/Release/Libcc32.obj
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: wiener_pcicc32_dll/Release/obj/OS_INFO.sbr
===================================================================
Index: wiener_pcicc32_dll/Release/obj/bscmake.read.1.tlog
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/wiener_pcicc32_dll/Release/obj/bscmake.read.1.tlog
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: wiener_pcicc32_dll/Release/obj/Libcc32_95.sbr
===================================================================
Index: wiener_pcicc32_dll/Release/obj/BscMake.command.1.tlog
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/wiener_pcicc32_dll/Release/obj/BscMake.command.1.tlog
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: wiener_pcicc32_dll/Release/obj/link.write.1.tlog
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/wiener_pcicc32_dll/Release/obj/link.write.1.tlog
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: wiener_pcicc32_dll/Release/obj/CL.write.1.tlog
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/wiener_pcicc32_dll/Release/obj/CL.write.1.tlog
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: wiener_pcicc32_dll/Release/obj/link-rc.write.1.tlog
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/wiener_pcicc32_dll/Release/obj/link-rc.write.1.tlog
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: wiener_pcicc32_dll/Release/obj/pcicc32_ni.log
===================================================================
--- wiener_pcicc32_dll/Release/obj/pcicc32_ni.log (nonexistent)
+++ wiener_pcicc32_dll/Release/obj/pcicc32_ni.log (revision 21)
@@ -0,0 +1,30 @@
+Build started 10.2.2014 9:12:17.
+ 1>Project "C:\Users\f9daq\rok\wienerpciada\PciCamac\Dll-source\pcicc32_ni.vcxproj" on node 2 (Build target(s)).
+ 1>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V110\Microsoft.CppBuild.targets(345,5): warning MSB8004: Intermediate Directory does not end with a trailing slash. This build instance will add the slash as it is required to allow proper evaluation of the Intermediate Directory.
+ 1>ClCompile:
+ C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\bin\CL.exe /c /Zi /nologo /W3 /WX- /O2 /Oy- /D WIN32 /D NDEBUG /D _WINDOWS /D _VC80_UPGRADE=0x0600 /D _WINDLL /GF /Gm- /EHsc /MT /GS /Gy /fp:precise /Zc:wchar_t /Zc:forScope /Fo".\Release\\" /Fd".\Release\vc110.pdb" /FR"C:\Users\f9daq\rok\wienerpciada\PciCamac\Dll-source\Release\obj\\" /Gd /TC /analyze- /errorReport:prompt Libcc32.c Libcc32_95.c Libcc32_NT.c OS_INFO.C
+ Libcc32.c
+ Libcc32_95.c
+ Libcc32_NT.c
+ 1>Libcc32_NT.c(126): warning C4996: 'strncpy': This function or variable may be unsafe. Consider using strncpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
+ C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\string.h(191) : see declaration of 'strncpy'
+ OS_INFO.C
+ Generating Code...
+ Link:
+ C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\bin\link.exe /ERRORREPORT:PROMPT /OUT:"C:\Users\f9daq\rok\wienerpciada\PciCamac\Dll-source\Release\pcicc32_ni.dll" /INCREMENTAL:NO /NOLOGO odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /MANIFEST /MANIFESTUAC:"level='asInvoker' uiAccess='false'" /manifest:embed /PDB:"C:\Users\f9daq\rok\wienerpciada\PciCamac\Dll-source\Release\pcicc32_ni.pdb" /SUBSYSTEM:WINDOWS /TLBID:1 /DYNAMICBASE /NXCOMPAT /IMPLIB:".\Release\pcicc32_ni.lib" /MACHINE:X86 /SAFESEH /DLL .\Release\Libcc32.obj
+ .\Release\Libcc32_95.obj
+ .\Release\Libcc32_NT.obj
+ .\Release\OS_INFO.obj
+ Creating library .\Release\pcicc32_ni.lib and object .\Release\pcicc32_ni.exp
+ pcicc32_ni.vcxproj -> C:\Users\f9daq\rok\wienerpciada\PciCamac\Dll-source\Release\pcicc32_ni.dll
+ BscMake:
+ C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\bin\bscmake.exe /nologo /o".\Release\pcicc32_ni.bsc" "C:\Users\f9daq\rok\wienerpciada\PciCamac\Dll-source\Release\obj\Libcc32.sbr" "C:\Users\f9daq\rok\wienerpciada\PciCamac\Dll-source\Release\obj\Libcc32_95.sbr" "C:\Users\f9daq\rok\wienerpciada\PciCamac\Dll-source\Release\obj\Libcc32_NT.sbr" "C:\Users\f9daq\rok\wienerpciada\PciCamac\Dll-source\Release\obj\OS_INFO.sbr"
+ PostBuildEvent:
+ copy debug\pcicc32_ni.dll C:\Users\f9daq\rok\wienerpciada\PciCamac\Dll-source\
+ :VCEnd
+ 1 file(s) copied.
+ 1>Done Building Project "C:\Users\f9daq\rok\wienerpciada\PciCamac\Dll-source\pcicc32_ni.vcxproj" (Build target(s)).
+
+Build succeeded.
+
+Time Elapsed 00:00:03.87
Index: wiener_pcicc32_dll/Release/obj/link-cvtres.write.1.tlog
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/wiener_pcicc32_dll/Release/obj/link-cvtres.write.1.tlog
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: wiener_pcicc32_dll/Release/obj/pcicc32_ni.lastbuildstate
===================================================================
--- wiener_pcicc32_dll/Release/obj/pcicc32_ni.lastbuildstate (nonexistent)
+++ wiener_pcicc32_dll/Release/obj/pcicc32_ni.lastbuildstate (revision 21)
@@ -0,0 +1,2 @@
+#v4.0:v110:false
+Release|Win32|C:\Users\f9daq\rok\wienerpciada\PciCamac\Dll-source\|
Index: wiener_pcicc32_dll/Release/obj/bscmake.write.1.tlog
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/wiener_pcicc32_dll/Release/obj/bscmake.write.1.tlog
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: wiener_pcicc32_dll/Release/obj/Libcc32.sbr
===================================================================
Index: wiener_pcicc32_dll/Release/obj/Libcc32_NT.sbr
===================================================================
Index: wiener_pcicc32_dll/Release/obj/pcicc32_ni.write.1.tlog
===================================================================
--- wiener_pcicc32_dll/Release/obj/pcicc32_ni.write.1.tlog (nonexistent)
+++ wiener_pcicc32_dll/Release/obj/pcicc32_ni.write.1.tlog (revision 21)
@@ -0,0 +1,5 @@
+^C:\Users\f9daq\rok\wienerpciada\PciCamac\Dll-source\pcicc32_ni.vcxproj
+C:\Users\f9daq\rok\wienerpciada\PciCamac\Dll-source\Release\pcicc32_ni.lib
+C:\Users\f9daq\rok\wienerpciada\PciCamac\Dll-source\Release\pcicc32_ni.lib
+C:\Users\f9daq\rok\wienerpciada\PciCamac\Dll-source\Release\pcicc32_ni.exp
+C:\Users\f9daq\rok\wienerpciada\PciCamac\Dll-source\Release\pcicc32_ni.exp
Index: wiener_pcicc32_dll/Release/obj/link.read.1.tlog
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/wiener_pcicc32_dll/Release/obj/link.read.1.tlog
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: wiener_pcicc32_dll/Release/obj/CL.read.1.tlog
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/wiener_pcicc32_dll/Release/obj/CL.read.1.tlog
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: wiener_pcicc32_dll/Release/obj/link-rc.read.1.tlog
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/wiener_pcicc32_dll/Release/obj/link-rc.read.1.tlog
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: wiener_pcicc32_dll/Release/obj/link.command.1.tlog
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/wiener_pcicc32_dll/Release/obj/link.command.1.tlog
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: wiener_pcicc32_dll/Release/obj/link-cvtres.read.1.tlog
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/wiener_pcicc32_dll/Release/obj/link-cvtres.read.1.tlog
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: wiener_pcicc32_dll/Release/obj/cl.command.1.tlog
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/wiener_pcicc32_dll/Release/obj/cl.command.1.tlog
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: wiener_pcicc32_dll/Release/Libcc32_NT.obj
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/wiener_pcicc32_dll/Release/Libcc32_NT.obj
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: wiener_pcicc32_dll/Release/vc110.pdb
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/wiener_pcicc32_dll/Release/vc110.pdb
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: wiener_pcicc32_dll/OS_INFO.H
===================================================================
--- wiener_pcicc32_dll/OS_INFO.H (nonexistent)
+++ wiener_pcicc32_dll/OS_INFO.H (revision 21)
@@ -0,0 +1,24 @@
+#ifndef __OS_INFO_H__
+#define __OS_INFO_H__
+//-------------------------------------------------------------------------------------------
+// os_info.h - request the OS type and version - the prototypes
+//
+// this source code is published under GPL (Open Source). You can use, redistrubute and
+// modify it unless this header is not modified or deleted. No warranty is given that
+// this software will work like expected.
+// This product is not authorized for use as critical component in life support systems
+// wihout the express written approval of ARW Elektronik Germany.
+//
+// Please announce changes and hints to ARW Elektronik
+//
+//
+// what who when
+// first steps AR 07.11.1999
+//
+
+BOOLEAN IsWindowsNT(void);
+BOOLEAN IsWindows98(void);
+BOOLEAN IsWindows95(void);
+
+#endif
+
Index: wiener_pcicc32_dll/pcicc32_ni.vcxproj.user
===================================================================
--- wiener_pcicc32_dll/pcicc32_ni.vcxproj.user (nonexistent)
+++ wiener_pcicc32_dll/pcicc32_ni.vcxproj.user (revision 21)
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <PropertyGroup />
+</Project>
\ No newline at end of file
Index: wiener_pcicc32_dll/Libcc32_95.h
===================================================================
--- wiener_pcicc32_dll/Libcc32_95.h (nonexistent)
+++ wiener_pcicc32_dll/Libcc32_95.h (revision 21)
@@ -0,0 +1,71 @@
+
+#ifndef __LIBCC32_95_H__
+#define __LIBCC32_95_H__
+
+/*
+ libcc32_95.h -- header for a simple access library (WIN95 + WIN98) for the
+ PCICC32 PCI to CAMAC Interface from ARW Elektronik
+
+ (c) 2000 ARW Elektronik
+
+ this source code is published under GPL (Open Source). You can use, redistrubute and
+ modify it unless this header is not modified or deleted. No warranty is given that
+ this software will work like expected.
+ This product is not authorized for use as critical component in life support systems
+ wihout the express written approval of ARW Elektronik Germany.
+
+ Please announce changes and hints to ARW Elektronik
+
+ first steps AR 30.07.2000
+ added buffer, UNTIL_NOT_Q and AUTOREAD functionality AR 17.03.2001
+ added framework for interrupt handling AR 08.06.2002
+*/
+
+/* open a path to a device. E.g. "/dev/pcicc32_1" */
+int cc32_open_95(char *cszPath, int nModuleNumber, void **handle);
+
+/* close the opened path */
+int cc32_close_95(void *handle);
+
+/* read only a word - 16 bits - from a address made out of N,A,F */
+unsigned short cc32_read_word_95(void *handle, unsigned int N, unsigned int A, unsigned int F);
+
+/* read a long - 32 bits - from a address made out of N,A,F and get the result Q and X */
+unsigned long cc32_read_long_95(void *handle, unsigned int N, unsigned int A, unsigned int F, char *Q, char *X);
+
+/* read a long - 32 bits - without any interpretaion */
+unsigned long cc32_read_long_all_95(void *handle, unsigned int N, unsigned int A, unsigned int F);
+
+/* write a word - 16 bits - to a destination made out of N,A,F */
+void cc32_write_word_95(void *handle, unsigned int N, unsigned int A, unsigned int F, unsigned short uwData);
+
+/* write a long - 32 bits - uninterpreted to a destination made out of N,A,F */
+void cc32_write_long_95(void *handle, unsigned int N, unsigned int A, unsigned int F, unsigned long ulData);
+
+/* poll the state of the timeout line and the LAM state. The timeout line is cleared if it was set */
+int cc32_poll_error_95(void *handle, char *nTimeout, char *nLam);
+
+/* read words until not Q or *pdwLen data into a buffer */
+int cc32_read_word_buffer_95(void * handle, unsigned int N, unsigned int A, unsigned int F,
+ unsigned short *pwBuffer, unsigned long *pdwLen);
+
+/* read longs until not Q or *pdwLen data into a buffer */
+int cc32_read_long_buffer_95(void * handle, unsigned int N, unsigned int A, unsigned int F,
+ unsigned long *pdwBuffer, unsigned long *pdwLen);
+
+/* read longs until not Q or *pdwLen data and don't interpret Q and X information into a buffer */
+int cc32_read_long_all_buffer_95(void * handle, unsigned int N, unsigned int A, unsigned int F,
+ unsigned long *pdwBuffer, unsigned long *pdwLen);
+/* switch UNTIL_NOT_Q or AUTOREAD on or off */
+int cc32_access_switch_95(void *handle, unsigned short uwSwitch);
+
+/* switch interrupts on */
+int cc32_enable_interrupt_95(void *handle);
+
+/* switch interrupts off */
+int cc32_disable_interrupt_95(void *handle);
+
+/* wait blocking for the next interrupt */
+int cc32_get_interrupt_95(void *handle, unsigned long *dwStatus);
+
+#endif // __LIBCC32_95_H__
Index: wiener_pcicc32_dll/Debug/pcicc32_ni.pdb
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/wiener_pcicc32_dll/Debug/pcicc32_ni.pdb
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: wiener_pcicc32_dll/Debug/pcicc32_ni.lib
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/wiener_pcicc32_dll/Debug/pcicc32_ni.lib
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: wiener_pcicc32_dll/Debug/OS_INFO.obj
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/wiener_pcicc32_dll/Debug/OS_INFO.obj
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: wiener_pcicc32_dll/Debug/pcicc32_ni.dll
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/wiener_pcicc32_dll/Debug/pcicc32_ni.dll
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: wiener_pcicc32_dll/Debug/Libcc32_95.obj
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/wiener_pcicc32_dll/Debug/Libcc32_95.obj
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: wiener_pcicc32_dll/Debug/pcicc32_ni.exp
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/wiener_pcicc32_dll/Debug/pcicc32_ni.exp
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: wiener_pcicc32_dll/Debug/vc110.idb
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/wiener_pcicc32_dll/Debug/vc110.idb
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: wiener_pcicc32_dll/Debug/Libcc32.obj
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/wiener_pcicc32_dll/Debug/Libcc32.obj
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: wiener_pcicc32_dll/Debug/obj/pcicc32_ni.lastbuildstate
===================================================================
--- wiener_pcicc32_dll/Debug/obj/pcicc32_ni.lastbuildstate (nonexistent)
+++ wiener_pcicc32_dll/Debug/obj/pcicc32_ni.lastbuildstate (revision 21)
@@ -0,0 +1,2 @@
+#v4.0:v110:false
+Debug|Win32|C:\Users\f9daq\rok\wienerpciada\PciCamac\Dll-source\|
Index: wiener_pcicc32_dll/Debug/obj/pcicc32_ni.write.1.tlog
===================================================================
--- wiener_pcicc32_dll/Debug/obj/pcicc32_ni.write.1.tlog (nonexistent)
+++ wiener_pcicc32_dll/Debug/obj/pcicc32_ni.write.1.tlog (revision 21)
@@ -0,0 +1,15 @@
+^C:\Users\f9daq\rok\wienerpciada\PciCamac\Dll-source\pcicc32_ni.vcxproj
+C:\Users\f9daq\rok\wienerpciada\PciCamac\Dll-source\Debug\pcicc32_ni.lib
+C:\Users\f9daq\rok\wienerpciada\PciCamac\Dll-source\Debug\pcicc32_ni.lib
+C:\Users\f9daq\rok\wienerpciada\PciCamac\Dll-source\Debug\pcicc32_ni.exp
+C:\Users\f9daq\rok\wienerpciada\PciCamac\Dll-source\Debug\pcicc32_ni.exp
+^C:\Users\f9daq\rok\wienerpciada\PciCamac\Dll-source\pcicc32_ni.vcxproj
+C:\Users\f9daq\rok\wienerpciada\PciCamac\Dll-source\Debug\pcicc32_ni.lib
+C:\Users\f9daq\rok\wienerpciada\PciCamac\Dll-source\Debug\pcicc32_ni.lib
+C:\Users\f9daq\rok\wienerpciada\PciCamac\Dll-source\Debug\pcicc32_ni.exp
+C:\Users\f9daq\rok\wienerpciada\PciCamac\Dll-source\Debug\pcicc32_ni.exp
+^C:\Users\f9daq\rok\wienerpciada\PciCamac\Dll-source\pcicc32_ni.vcxproj
+C:\Users\f9daq\rok\wienerpciada\PciCamac\Dll-source\Debug\pcicc32_ni.lib
+C:\Users\f9daq\rok\wienerpciada\PciCamac\Dll-source\Debug\pcicc32_ni.lib
+C:\Users\f9daq\rok\wienerpciada\PciCamac\Dll-source\Debug\pcicc32_ni.exp
+C:\Users\f9daq\rok\wienerpciada\PciCamac\Dll-source\Debug\pcicc32_ni.exp
Index: wiener_pcicc32_dll/Debug/obj/link.write.1.tlog
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/wiener_pcicc32_dll/Debug/obj/link.write.1.tlog
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: wiener_pcicc32_dll/Debug/obj/CL.write.1.tlog
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/wiener_pcicc32_dll/Debug/obj/CL.write.1.tlog
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: wiener_pcicc32_dll/Debug/obj/link.read.1.tlog
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/wiener_pcicc32_dll/Debug/obj/link.read.1.tlog
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: wiener_pcicc32_dll/Debug/obj/CL.read.1.tlog
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/wiener_pcicc32_dll/Debug/obj/CL.read.1.tlog
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: wiener_pcicc32_dll/Debug/obj/link-rc.write.1.tlog
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/wiener_pcicc32_dll/Debug/obj/link-rc.write.1.tlog
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: wiener_pcicc32_dll/Debug/obj/link-rc.read.1.tlog
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/wiener_pcicc32_dll/Debug/obj/link-rc.read.1.tlog
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: wiener_pcicc32_dll/Debug/obj/pcicc32_ni.log
===================================================================
--- wiener_pcicc32_dll/Debug/obj/pcicc32_ni.log (nonexistent)
+++ wiener_pcicc32_dll/Debug/obj/pcicc32_ni.log (revision 21)
@@ -0,0 +1,23 @@
+Build started 10.2.2014 8:57:06.
+ 1>Project "C:\Users\f9daq\rok\wienerpciada\PciCamac\Dll-source\pcicc32_ni.vcxproj" on node 2 (Build target(s)).
+ 1>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V110\Microsoft.CppBuild.targets(345,5): warning MSB8004: Intermediate Directory does not end with a trailing slash. This build instance will add the slash as it is required to allow proper evaluation of the Intermediate Directory.
+ 1>ClCompile:
+ C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\bin\CL.exe /c /ZI /nologo /W3 /WX- /Od /Oy- /D WIN32 /D _DEBUG /D _WINDOWS /D _VC80_UPGRADE=0x0600 /D _WINDLL /Gm /EHsc /MTd /GS /Gy- /fp:precise /Zc:wchar_t /Zc:forScope /Fo".\Debug\\" /Fd".\Debug\vc110.pdb" /Gd /TC /analyze- /errorReport:prompt Libcc32_NT.c
+ Libcc32_NT.c
+ 1>c:\users\f9daq\rok\wienerpciada\pcicamac\dll-source\libcc32_nt.c(126): warning C4996: 'strncpy': This function or variable may be unsafe. Consider using strncpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
+ c:\program files (x86)\microsoft visual studio 11.0\vc\include\string.h(191) : see declaration of 'strncpy'
+ Link:
+ C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\bin\link.exe /ERRORREPORT:PROMPT /OUT:"C:\Users\f9daq\rok\wienerpciada\PciCamac\Dll-source\Debug\pcicc32_ni.dll" /INCREMENTAL /NOLOGO odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /MANIFEST /MANIFESTUAC:"level='asInvoker' uiAccess='false'" /manifest:embed /DEBUG /PDB:"C:\Users\f9daq\rok\wienerpciada\PciCamac\Dll-source\Debug\pcicc32_ni.pdb" /SUBSYSTEM:WINDOWS /TLBID:1 /DYNAMICBASE /NXCOMPAT /IMPLIB:".\Debug\pcicc32_ni.lib" /MACHINE:X86 /SAFESEH /DLL .\Debug\Libcc32.obj
+ .\Debug\Libcc32_95.obj
+ .\Debug\Libcc32_NT.obj
+ .\Debug\OS_INFO.obj
+ pcicc32_ni.vcxproj -> C:\Users\f9daq\rok\wienerpciada\PciCamac\Dll-source\Debug\pcicc32_ni.dll
+ PostBuildEvent:
+ copy debug\pcicc32_ni.dll C:\Users\f9daq\rok\wienerpciada\PciCamac\Dll-source\
+ :VCEnd
+ 1 file(s) copied.
+ 1>Done Building Project "C:\Users\f9daq\rok\wienerpciada\PciCamac\Dll-source\pcicc32_ni.vcxproj" (Build target(s)).
+
+Build succeeded.
+
+Time Elapsed 00:00:00.60
Index: wiener_pcicc32_dll/Debug/obj/link-cvtres.write.1.tlog
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/wiener_pcicc32_dll/Debug/obj/link-cvtres.write.1.tlog
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: wiener_pcicc32_dll/Debug/obj/link.command.1.tlog
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/wiener_pcicc32_dll/Debug/obj/link.command.1.tlog
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: wiener_pcicc32_dll/Debug/obj/cl.command.1.tlog
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/wiener_pcicc32_dll/Debug/obj/cl.command.1.tlog
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: wiener_pcicc32_dll/Debug/obj/link-cvtres.read.1.tlog
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/wiener_pcicc32_dll/Debug/obj/link-cvtres.read.1.tlog
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: wiener_pcicc32_dll/Debug/obj/pcicc32_ni.Build.CppClean.log
===================================================================
--- wiener_pcicc32_dll/Debug/obj/pcicc32_ni.Build.CppClean.log (nonexistent)
+++ wiener_pcicc32_dll/Debug/obj/pcicc32_ni.Build.CppClean.log (revision 21)
@@ -0,0 +1,24 @@
+C:\USERS\F9DAQ\ROK\WIENERPCIADA\PCICAMAC\DLL-SOURCE\DEBUG\LIBCC32.OBJ
+C:\USERS\F9DAQ\ROK\WIENERPCIADA\PCICAMAC\DLL-SOURCE\DEBUG\LIBCC32_95.OBJ
+C:\USERS\F9DAQ\ROK\WIENERPCIADA\PCICAMAC\DLL-SOURCE\DEBUG\LIBCC32_NT.OBJ
+C:\USERS\F9DAQ\ROK\WIENERPCIADA\PCICAMAC\DLL-SOURCE\DEBUG\OS_INFO.OBJ
+C:\USERS\F9DAQ\ROK\WIENERPCIADA\PCICAMAC\DLL-SOURCE\DEBUG\VC110.PDB
+C:\USERS\F9DAQ\ROK\WIENERPCIADA\PCICAMAC\DLL-SOURCE\DEBUG\PCICC32_NI.ILK
+C:\USERS\F9DAQ\ROK\WIENERPCIADA\PCICAMAC\DLL-SOURCE\DEBUG\PCICC32_NI.DLL
+C:\USERS\F9DAQ\ROK\WIENERPCIADA\PCICAMAC\DLL-SOURCE\DEBUG\PCICC32_NI.PDB
+C:\Users\f9daq\rok\wienerpciada\PciCamac\Dll-source\Debug\pcicc32_ni.lib
+C:\Users\f9daq\rok\wienerpciada\PciCamac\Dll-source\Debug\pcicc32_ni.exp
+C:\Users\f9daq\rok\wienerpciada\PciCamac\Dll-source\Debug\obj\cl.command.1.tlog
+C:\Users\f9daq\rok\wienerpciada\PciCamac\Dll-source\Debug\obj\CL.read.1.tlog
+C:\Users\f9daq\rok\wienerpciada\PciCamac\Dll-source\Debug\obj\CL.write.1.tlog
+C:\Users\f9daq\rok\wienerpciada\PciCamac\Dll-source\Debug\obj\link-cvtres.read.1.tlog
+C:\Users\f9daq\rok\wienerpciada\PciCamac\Dll-source\Debug\obj\link-cvtres.write.1.tlog
+C:\Users\f9daq\rok\wienerpciada\PciCamac\Dll-source\Debug\obj\link-rc.read.1.tlog
+C:\Users\f9daq\rok\wienerpciada\PciCamac\Dll-source\Debug\obj\link-rc.write.1.tlog
+C:\Users\f9daq\rok\wienerpciada\PciCamac\Dll-source\Debug\obj\link.command.1.tlog
+C:\Users\f9daq\rok\wienerpciada\PciCamac\Dll-source\Debug\obj\link.read.1.tlog
+C:\Users\f9daq\rok\wienerpciada\PciCamac\Dll-source\Debug\obj\link.write.1.tlog
+C:\Users\f9daq\rok\wienerpciada\PciCamac\Dll-source\Debug\obj\pcicc32_ni.write.1.tlog
+C:\Users\f9daq\rok\wienerpciada\PciCamac\Dll-source\Debug\pcicc32_ni.pdb
+C:\Users\f9daq\rok\wienerpciada\PciCamac\Dll-source\Debug\pcicc32_ni.dll
+C:\Users\f9daq\rok\wienerpciada\PciCamac\Dll-source\Debug\pcicc32_ni.ilk
Index: wiener_pcicc32_dll/Debug/pcicc32_ni.ilk
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/wiener_pcicc32_dll/Debug/pcicc32_ni.ilk
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: wiener_pcicc32_dll/Debug/Libcc32_NT.obj
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/wiener_pcicc32_dll/Debug/Libcc32_NT.obj
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: wiener_pcicc32_dll/Debug/vc110.pdb
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/wiener_pcicc32_dll/Debug/vc110.pdb
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: wiener_pcicc32_dll/pcicc32_ni.dll
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/wiener_pcicc32_dll/pcicc32_ni.dll
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: wiener_pcicc32_dll/pcicc32_ni.v11.suo
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/wiener_pcicc32_dll/pcicc32_ni.v11.suo
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: wiener_pcicc32_dll/pcicc32_ni.sdf
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/wiener_pcicc32_dll/pcicc32_ni.sdf
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: wiener_pcicc32_dll/pcicc32_ni.plg
===================================================================
--- wiener_pcicc32_dll/pcicc32_ni.plg (nonexistent)
+++ wiener_pcicc32_dll/pcicc32_ni.plg (revision 21)
@@ -0,0 +1,55 @@
+<html>
+<body>
+<pre>
+<h1>Erstellungsprotokoll</h1>
+<h3>
+--------------------Konfiguration: pcicc32_ni - Win32 Release--------------------
+</h3>
+<h3>Befehlszeilen</h3>
+Erstellen der temporären Datei "C:\DOKUME~1\klaus\LOKALE~1\Temp\RSPCD.tmp" mit Inhalten
+[
+/nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /FR"Release/" /Fp"Release/pcicc32_ni.pch" /YX /Fo"Release/" /Fd"Release/" /FD /c
+"D:\Work\MyProjects\pcicc32_ni\Libcc32.c"
+"D:\Work\MyProjects\pcicc32_ni\Libcc32_95.c"
+"D:\Work\MyProjects\pcicc32_ni\Libcc32_NT.c"
+"D:\Work\MyProjects\pcicc32_ni\OS_INFO.C"
+]
+Creating command line "cl.exe @C:\DOKUME~1\klaus\LOKALE~1\Temp\RSPCD.tmp"
+Erstellen der temporären Datei "C:\DOKUME~1\klaus\LOKALE~1\Temp\RSPCE.tmp" mit Inhalten
+[
+kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /incremental:no /pdb:"Release/pcicc32_ni.pdb" /machine:I386 /out:"Release/pcicc32_ni.dll" /implib:"Release/pcicc32_ni.lib"
+.\Release\Libcc32.obj
+.\Release\Libcc32_95.obj
+.\Release\Libcc32_NT.obj
+.\Release\OS_INFO.OBJ
+]
+Erstellen der Befehlzeile "link.exe @C:\DOKUME~1\klaus\LOKALE~1\Temp\RSPCE.tmp"
+<h3>Ausgabefenster</h3>
+Kompilierung läuft...
+Libcc32.c
+Libcc32_95.c
+Libcc32_NT.c
+OS_INFO.C
+Linker-Vorgang läuft...
+ Bibliothek Release/pcicc32_ni.lib und Objekt Release/pcicc32_ni.exp wird erstellt
+Erstellen der Befehlzeile "bscmake.exe /nologo /o"Release/pcicc32_ni.bsc" .\Release\Libcc32.sbr .\Release\Libcc32_95.sbr .\Release\Libcc32_NT.sbr .\Release\OS_INFO.SBR"
+Browse-Informationsdatei wird erstellt...
+<h3>Ausgabefenster</h3>
+Erstellen der temporären Datei "C:\DOKUME~1\klaus\LOKALE~1\Temp\RSPD2.bat" mit Inhalten
+[
+@echo off
+copy debug\pcicc32_ni.dll ..\CatchInterrupts_CC32_NT_with_Dll\release
+copy debug\pcicc32_ni.dll ..\pciCC32Test_with_Dll\release
+]
+Erstellen der Befehlzeile "C:\DOKUME~1\klaus\LOKALE~1\Temp\RSPD2.bat"
+
+ 1 Datei(en) kopiert.
+ 1 Datei(en) kopiert.
+
+
+
+<h3>Ergebnisse</h3>
+pcicc32_ni.dll - 0 Fehler, 0 Warnung(en)
+</pre>
+</body>
+</html>
Index: wiener_pcicc32_dll/pcicc32_ni.dsp
===================================================================
--- wiener_pcicc32_dll/pcicc32_ni.dsp (nonexistent)
+++ wiener_pcicc32_dll/pcicc32_ni.dsp (revision 21)
@@ -0,0 +1,133 @@
+# Microsoft Developer Studio Project File - Name="pcicc32_ni" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** NICHT BEARBEITEN **
+
+# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
+
+CFG=pcicc32_ni - Win32 Debug
+!MESSAGE Dies ist kein gültiges Makefile. Zum Erstellen dieses Projekts mit NMAKE
+!MESSAGE verwenden Sie den Befehl "Makefile exportieren" und führen Sie den Befehl
+!MESSAGE
+!MESSAGE NMAKE /f "pcicc32_ni.mak".
+!MESSAGE
+!MESSAGE Sie können beim Ausführen von NMAKE eine Konfiguration angeben
+!MESSAGE durch Definieren des Makros CFG in der Befehlszeile. Zum Beispiel:
+!MESSAGE
+!MESSAGE NMAKE /f "pcicc32_ni.mak" CFG="pcicc32_ni - Win32 Debug"
+!MESSAGE
+!MESSAGE Für die Konfiguration stehen zur Auswahl:
+!MESSAGE
+!MESSAGE "pcicc32_ni - Win32 Release" (basierend auf "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "pcicc32_ni - Win32 Debug" (basierend auf "Win32 (x86) Dynamic-Link Library")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+MTL=midl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "pcicc32_ni - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release"
+# PROP Intermediate_Dir "Release"
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c
+# ADD CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /FR /YX /FD /c
+# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32
+# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32
+# ADD BASE RSC /l 0x407 /d "NDEBUG"
+# ADD RSC /l 0x407 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386
+# Begin Special Build Tool
+SOURCE="$(InputPath)"
+PostBuild_Cmds=copy debug\pcicc32_ni.dll ..\CatchInterrupts_CC32_NT_with_Dll\release copy debug\pcicc32_ni.dll ..\pciCC32Test_with_Dll\release
+# End Special Build Tool
+
+!ELSEIF "$(CFG)" == "pcicc32_ni - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug"
+# PROP Intermediate_Dir "Debug"
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c
+# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c
+# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32
+# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32
+# ADD BASE RSC /l 0x407 /d "_DEBUG"
+# ADD RSC /l 0x407 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386 /pdbtype:sept
+# Begin Special Build Tool
+SOURCE="$(InputPath)"
+PostBuild_Cmds=copy debug\pcicc32_ni.dll ..\CatchInterrupts_CC32_NT_with_Dll\debug copy debug\pcicc32_ni.dll ..\pciCC32Test_with_Dll\debug
+# End Special Build Tool
+
+!ENDIF
+
+# Begin Target
+
+# Name "pcicc32_ni - Win32 Release"
+# Name "pcicc32_ni - Win32 Debug"
+# Begin Source File
+
+SOURCE=.\Libcc32.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\Libcc32.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\Libcc32_95.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\Libcc32_95.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\Libcc32_NT.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\libcc32_NT.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\OS_INFO.C
+# End Source File
+# Begin Source File
+
+SOURCE=.\OS_INFO.H
+# End Source File
+# Begin Source File
+
+SOURCE=.\vpcic32d.h
+# End Source File
+# End Target
+# End Project
Index: wiener_pcicc32_dll/Libcc32.c
===================================================================
--- wiener_pcicc32_dll/Libcc32.c (nonexistent)
+++ wiener_pcicc32_dll/Libcc32.c (revision 21)
@@ -0,0 +1,228 @@
+/*
+ cc32lib.c -- a simple access library for the PCICC32 PCI to CAMAC Interface from ARW Elektronik
+
+ (c) 2000 ARW Elektronik
+
+ this source code is published under GPL (Open Source). You can use, redistrubute and
+ modify it unless this header is not modified or deleted. No warranty is given that
+ this software will work like expected.
+ This product is not authorized for use as critical component in life support systems
+ wihout the express written approval of ARW Elektronik Germany.
+
+ Please announce changes and hints to ARW Elektronik
+
+ first steps derived from the LINUX pcicc32 library AR 16.03.2000
+ new architecture - added WINNT to DLL AR 30.07.2000
+ added buffer, UNTIL_NOT_Q and AUTOREAD functionality AR 17.03.2001
+ added interrupt handling AR 08.06.2002
+*/
+
+/*--- INCLUDES -----------------------------------------------------------------------------------*/
+#include <windows.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <errno.h>
+
+#include "os_info.h" /* to determine the underlaying OS */
+#include "libcc32_95.h" /* the win95 + 98 parts */
+#include "libcc32_NT.h" /* the winnt part */
+#include "libcc32.h" /* shared header bewteen applictaion and library */
+
+/*--- DEFINES ------------------------------------------------------------------------------------*/
+
+/*--- EXTERNALS ----------------------------------------------------------------------------------*/
+
+/*--- TYPEDEFS -----------------------------------------------------------------------------------*/
+typedef struct
+{
+ int (*cc32_open)(char *cszPath, int nModuleNumber, void **handle);
+ int (*cc32_close)(void *handle);
+ unsigned short (*cc32_read_word)(void *handle, unsigned int N, unsigned int A, unsigned int F);
+ unsigned long (*cc32_read_long)(void *handle, unsigned int N, unsigned int A, unsigned int F, char *Q, char *X);
+ unsigned long (*cc32_read_long_all)(void *handle, unsigned int N, unsigned int A, unsigned int F);
+ void (*cc32_write_word)(void *handle, unsigned int N, unsigned int A, unsigned int F, unsigned short uwData);
+ void (*cc32_write_long)(void *handle, unsigned int N, unsigned int A, unsigned int F, unsigned long ulData);
+ int (*cc32_poll_error)(void *handle, char *nTimeout, char *nLam);
+ int (*cc32_read_word_buffer)(void * handle, unsigned int N, unsigned int A, unsigned int F, unsigned short *pwBuffer, unsigned long *pdwLen);
+ int (*cc32_read_long_buffer)(void * handle, unsigned int N, unsigned int A, unsigned int F, unsigned long *pdwBuffer, unsigned long *pdwLen);
+ int (*cc32_read_long_all_buffer)(void * handle, unsigned int N, unsigned int A, unsigned int F, unsigned long *pdwBuffer, unsigned long *pdwLen);
+ int (*cc32_access_switch)(void *handle, unsigned short uwSwitch);
+ int (*cc32_enable_interrupt)(void *handle);
+ int (*cc32_disable_interrupt)(void *handle);
+ int (*cc32_get_interrupt)(void *handle, unsigned long *dwStatus);
+} MY_ACTIONS;
+
+/*--- GLOBALS ------------------------------------------------------------------------------------*/
+MY_ACTIONS ma;
+static BOOLEAN firstime = TRUE;
+
+/*--- FUNCTIONS -----------------------------------------------------------------------*/
+
+//--------------------------------------------------------------------------------------
+// open the device
+//
+int __declspec(dllexport) cc32_open(char *cszPath, int nModuleNumber, CC32_HANDLE *handle)
+{
+ if (firstime)
+ {
+ if (IsWindowsNT())
+ {
+ ma.cc32_open = cc32_open_NT;
+ ma.cc32_close = cc32_close_NT;
+ ma.cc32_read_word = cc32_read_word_NT;
+ ma.cc32_read_long = cc32_read_long_NT;
+ ma.cc32_read_long_all = cc32_read_long_all_NT;
+ ma.cc32_write_word = cc32_write_word_NT;
+ ma.cc32_write_long = cc32_write_long_NT;
+ ma.cc32_poll_error = cc32_poll_error_NT;
+ ma.cc32_read_word_buffer = cc32_read_word_buffer_NT;
+ ma.cc32_read_long_buffer = cc32_read_long_buffer_NT;
+ ma.cc32_read_long_all_buffer = cc32_read_long_all_buffer_NT;
+ ma.cc32_access_switch = cc32_access_switch_NT;
+ ma.cc32_enable_interrupt = cc32_enable_interrupt_NT;
+ ma.cc32_disable_interrupt = cc32_disable_interrupt_NT;
+ ma.cc32_get_interrupt = cc32_get_interrupt_NT;
+ }
+ else
+ if (IsWindows95() || IsWindows98())
+ {
+ ma.cc32_open = cc32_open_95;
+ ma.cc32_close = cc32_close_95;
+ ma.cc32_read_word = cc32_read_word_95;
+ ma.cc32_read_long = cc32_read_long_95;
+ ma.cc32_read_long_all = cc32_read_long_all_95;
+ ma.cc32_write_word = cc32_write_word_95;
+ ma.cc32_write_long = cc32_write_long_95;
+ ma.cc32_poll_error = cc32_poll_error_95;
+ ma.cc32_read_word_buffer = cc32_read_word_buffer_95;
+ ma.cc32_read_long_buffer = cc32_read_long_buffer_95;
+ ma.cc32_read_long_all_buffer = cc32_read_long_all_buffer_95;
+ ma.cc32_access_switch = cc32_access_switch_95;
+ ma.cc32_enable_interrupt = cc32_enable_interrupt_95;
+ ma.cc32_disable_interrupt = cc32_disable_interrupt_95;
+ ma.cc32_get_interrupt = cc32_get_interrupt_95;
+ }
+ else
+ return -1;
+
+ firstime = FALSE;
+ }
+
+ return ma.cc32_open(cszPath, nModuleNumber, (CC32_HANDLE *)handle);
+}
+
+//--------------------------------------------------------------------------------------
+// close the device
+//
+int __declspec(dllexport) cc32_close(CC32_HANDLE handle)
+{
+ return ma.cc32_close((CC32_HANDLE)handle);
+}
+
+//--------------------------------------------------------------------------------------
+// read a word
+//
+unsigned short __declspec(dllexport) cc32_read_word(CC32_HANDLE handle, unsigned int N, unsigned int A, unsigned int F)
+{
+ return ma.cc32_read_word((CC32_HANDLE) handle, N, A, F);
+}
+
+//--------------------------------------------------------------------------------------
+// read a long
+//
+unsigned long __declspec(dllexport) cc32_read_long_all(CC32_HANDLE handle, unsigned int N, unsigned int A, unsigned int F)
+{
+ return ma.cc32_read_long_all((CC32_HANDLE) handle, N, A, F);
+}
+
+//--------------------------------------------------------------------------------------
+// read a long and get Q and X
+//
+unsigned long __declspec(dllexport) cc32_read_long(CC32_HANDLE handle, unsigned int N, unsigned int A, unsigned int F, char *Q, char *X)
+{
+ return ma.cc32_read_long((CC32_HANDLE) handle, N, A, F, Q, X);
+}
+
+//--------------------------------------------------------------------------------------
+// write a word
+//
+void __declspec(dllexport) cc32_write_word(CC32_HANDLE handle, unsigned int N, unsigned int A, unsigned int F, unsigned short uwData)
+{
+ ma.cc32_write_word((CC32_HANDLE) handle, N, A, F, uwData);
+}
+
+//--------------------------------------------------------------------------------------
+// write a long
+//
+void __declspec(dllexport) cc32_write_long(CC32_HANDLE handle, unsigned int N, unsigned int A, unsigned int F, unsigned long ulData)
+{
+ ma.cc32_write_long((CC32_HANDLE) handle, N, A, F, ulData);
+}
+
+//--------------------------------------------------------------------------------------
+// read and clear the PCIADA status
+//
+int __declspec(dllexport) cc32_poll_error(CC32_HANDLE handle, char *nTimeout, char *nLam)
+{
+ return ma.cc32_poll_error((CC32_HANDLE) handle, nTimeout, nLam);
+}
+
+//--------------------------------------------------------------------------------------
+// read 'len' words or 'UNTIL_NOT_Q' from a address made out of N,A,F into a buffer
+//
+int __declspec(dllexport) cc32_read_word_buffer(CC32_HANDLE handle, unsigned int N, unsigned int A, unsigned int F,
+ unsigned short *pwBuffer, unsigned long *pdwLen)
+{
+ return ma.cc32_read_word_buffer(handle, N, A, F, pwBuffer, pdwLen);
+}
+
+//--------------------------------------------------------------------------------------
+// read 'len' longs or 'UNTIL_NOT_Q' from a address made out of N,A,F into a buffer, mask 24 bits out
+//
+int __declspec(dllexport) cc32_read_long_buffer(CC32_HANDLE handle, unsigned int N, unsigned int A, unsigned int F,
+ unsigned long *pdwBuffer, unsigned long *pdwLen)
+{
+ return ma.cc32_read_long_buffer(handle, N, A, F, pdwBuffer, pdwLen);
+}
+
+//--------------------------------------------------------------------------------------
+// read 'len' longs or 'UNTIL_NOT_Q' from a address made out of N,A,F into a buffer, without interpretation
+//
+int __declspec(dllexport) cc32_read_long_all_buffer(CC32_HANDLE handle, unsigned int N, unsigned int A, unsigned int F,
+ unsigned long *pdwBuffer, unsigned long *pdwLen)
+{
+ return ma.cc32_read_long_all_buffer(handle, N, A, F, pdwBuffer, pdwLen);
+}
+
+//--------------------------------------------------------------------------------------
+// set the accessmode for the path, e.g. UNTIL_NOT_Q or AUTOREAD or ...
+//
+int __declspec(dllexport) cc32_access_switch(CC32_HANDLE handle, unsigned short uwSwitch)
+{
+ return ma.cc32_access_switch(handle, uwSwitch);
+}
+
+//--------------------------------------------------------------------------------------
+// switch interrupts on
+//
+int __declspec(dllexport) cc32_enable_interrupt(CC32_HANDLE handle)
+{
+ return ma.cc32_enable_interrupt(handle);
+}
+
+//--------------------------------------------------------------------------------------
+// switch interrupts off
+//
+int __declspec(dllexport) cc32_disable_interrupt(CC32_HANDLE handle)
+{
+ return ma.cc32_disable_interrupt(handle);
+}
+
+//--------------------------------------------------------------------------------------
+// wait blocking for the next interrupt
+//
+int __declspec(dllexport) cc32_get_interrupt(CC32_HANDLE handle, unsigned long *dwStatus)
+{
+ return ma.cc32_get_interrupt(handle, dwStatus);
+}
Index: wiener_pcicc32_dll/vpcic32d.h
===================================================================
--- wiener_pcicc32_dll/vpcic32d.h (nonexistent)
+++ wiener_pcicc32_dll/vpcic32d.h (revision 21)
@@ -0,0 +1,111 @@
+#ifndef __VPCIC32D_H__
+#define __VPCIC32D_H__
+//-------------------------------------------------------------------------
+// WIN95 driver for PCICC32 CAMAC interface from ARW Elektronik, Germany --
+//
+// vpcic32d.h - the general header file to share information between driver
+// and application
+//
+// (c) 2000,2001 ARW Elektronik
+//
+// this source code is published under GPL (Open Source). You can use, redistrubute and
+// modify it unless this header is not modified or deleted. No warranty is given that
+// this software will work like expected.
+// This product is not authorized for use as critical component in life support systems
+// without the express written approval of ARW Elektronik Germany.
+//
+// Please announce changes and hints to ARW Elektronik
+//
+// what who when
+// first steps AR 07.03.2000
+// added AUTOREAD AR 17.03.2001
+// added VPCIC32_ACCESS_LCR AR 30.03.2001
+//
+
+// the action codes for ioctl calls
+#define VPCIC32_ATTACH_CC32 0x00220000 // METHOD_BUFFERED + FILE_ANY_ACCESS +
+#define VPCIC32_DETACH_CC32 0x00220004 // FILE_DEVICE_UNKNOWN
+#define VPCIC32_GET_STATUS 0x00220008
+#define VPCIC32_CLEAR_STATUS 0x0022000C
+#define VPCIC32_SET_ACCESS_PARA 0x00220010
+#define VPCIC32_CONTROL_INTERRUPTS 0x00220014
+#define VPCIC32_INSTALL_IRQ_HANDLER 0x00220018
+#define VPCIC32_ACCESS_LCR 0x00220020 // access tp PLX LCR space
+
+// switches for VPCIC32_ACCESS_COMMAND.wAccessType
+#define WORD_ACCESS (UCHAR)2 // word
+#define LONG_ACCESS (UCHAR)4 // long
+
+// VPCIC32_ACCESS_LCR access constants
+#define LCR_READ 0 // read only access
+#define LCR_WRITE 1 // write and read back access
+#define LCR_OR 2 // read, bitwise 'or' content and read back access
+#define LCR_AND 3 // read, bitwise 'and' content and read back access
+#define LCR_WRITE_ONLY 4 // do not read back after write
+
+// define bits for VPCIC32D_ACCESS_COMMAND.wBlockTransfer
+#define UNTIL_NOT_Q 0x0001 // read/write unttil 'not Q' switch
+#define AUTOREAD 0x0002 // PCIADA data pipelining access tuner switch
+
+// mask bits for interrupt status provided by the user interrupt handler
+#define LAM_IRQ 0x00FFFFFF // LAM was responsible for interrupt
+#define CONNECTION_TIMEOUT 0x08000000 // irq raised through a connection timeout
+#define LAM_BUS_OR 0x10000000 // a LAM-BUS-OR is pending
+#define LAM_NOT_OR 0x20000000 // a LAM-NOT-OR is pending
+#define LAM_AND_OR 0x40000000 // a LAM-AND-OR is pending
+#define LAM_FF 0x80000000 // the LAM-Flip-Flop was set
+
+// this structure is input in all ioctl calls except VPCIC32_SET_ACCESS_PARA
+typedef struct
+{
+ DWORD dwInterface; // CC32 module number
+} VPCIC32D_DEVICE;
+
+// this structure is output from VPCIC32_ATTACH_CC32 call
+typedef struct
+{
+ DWORD dwInterface; // CC32 module number
+ void *pvWindowBase; // the base address into the 32 kbyte Window of CC32
+} VPCIC32D_WINDOW;
+
+// this structure is output from VPCIC32_GET_STATUS call
+typedef struct
+{
+ DWORD dwInterface; // CC32 module number
+ WORD bTimeout; // denotes PCIADA timeout
+ WORD bInterrupt; // denotes a pending LAM interrupt
+} VPCIC32D_STATUS;
+
+// this structure is input to the VPCIC32_SET_ACCESS_PARA call
+typedef struct
+{
+ DWORD dwInterface; // CC32 module number
+ WORD wAccessType; // set the current access type , for compatibilty to NT, not used @ WIN95/98
+ WORD wBlockTransfer; // set to AUTOREAD or 0
+} VPCIC32D_ACCESS_COMMAND;
+
+// this structure is used to control the interrupts
+typedef struct
+{
+ DWORD dwInterface; // CC32 module number
+ WORD wEnable; // a 1 allows, a 0 inhibits interrupt requests
+} VPCIC32D_IRQ_CONTROL;
+
+// this structure is used to (de)install a irqhandler to a interface
+typedef struct
+{
+ DWORD dwInterface; // CC32 module number
+ DWORD dwIrqHandler; // void (*IrqHandler)(DWORD)
+} VPCIC32D_IRQ_HANLDER;
+
+// structure to access the local configuration space of PLX chip (test / debug only) with VPCIC32_ACCESS_LCR
+typedef struct
+{
+ DWORD dwInterface; // CC32 module number
+ DWORD dwContent; // content to write, and, or
+ WORD wRegisterAddress; // address offset of LCR register
+ UCHAR bAccessMode; // LCR_READ, write, or, and
+ UCHAR bBytesLane; // the data access width
+} VPCIC32D_LCR_ACCESS;
+
+#endif // __VPCIC32D_H__
\ No newline at end of file
Index: wiener_pcicc32_dll/Libcc32_NT.c
===================================================================
--- wiener_pcicc32_dll/Libcc32_NT.c (nonexistent)
+++ wiener_pcicc32_dll/Libcc32_NT.c (revision 21)
@@ -0,0 +1,578 @@
+/*
+ cc32lib_NT.c -- a simple access library for the PCICC32 PCI to CAMAC Interface
+ from ARW Elektronik - the WINNT parts
+
+ (c) 2000 ARW Elektronik
+
+ this source code is published under GPL (Open Source). You can use, redistrubute and
+ modify it unless this header is not modified or deleted. No warranty is given that
+ this software will work like expected.
+ This product is not authorized for use as critical component in life support systems
+ wihout the express written approval of ARW Elektronik Germany.
+
+ Please announce changes and hints to ARW Elektronik
+
+ derived from the previous WIN95 library AR 30.07.2000
+ added buffer, UNTIL_NOT_Q and AUTOREAD functionality AR 17.03.2001
+*/
+
+/*--- INCLUDES -----------------------------------------------------------------------------------*/
+#include <windows.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <errno.h>
+#include <winioctl.h>
+
+#include "pcicc32.h" /* PCI common ioctl commands and structures between driver and library */
+#include "libcc32_NT.h" /* shared header bewteen applictaion and library */
+
+/*--- DEFINES ------------------------------------------------------------------------------------*/
+#define DEFDEVICENAME "\\\\.\\PCICC32:\\CC32_xx"
+
+/*--- EXTERNALS ----------------------------------------------------------------------------------*/
+
+/*--- TYPEDEFS -----------------------------------------------------------------------------------*/
+typedef struct
+{
+ HANDLE nHandle; /* the handle of this device */
+ int nModuleNumber; /* the number of the module */
+ unsigned short wLastAccessWidth; /* the last parametrized data access width */
+ unsigned short wLastAttributes; /* the last Attributes to this channel */
+ unsigned long dwLastAccessAddress; /* the last access address to speed up */
+} CC32_DEVICE_NT;
+
+/*--- FUNCTIONS -----------------------------------------------------------------------*/
+
+//--------------------------------------------------------------------------------------
+// get the PCIADA status from the PCI side of the interface
+//
+static int getStatus(HANDLE nHandle, DWORD dwInterface, char *nTimeout, char *nLAM)
+{
+ PCICC32_STATUS status;
+ DWORD DIOC_count; // count of returned bytes of DeviceIoControl
+ DWORD result;
+
+ if (nHandle == (HANDLE)-1) return -1;
+
+ *nTimeout = *nLAM = 0;
+
+ // attach a window into the CC32 space ----------------
+ result = DeviceIoControl(nHandle, PCICC32_GET_STATUS,
+ &dwInterface, sizeof(dwInterface),
+ &status, sizeof(status), &DIOC_count, NULL);
+
+ if (!result)
+ return GetLastError();
+ else
+ {
+ *nTimeout = (char)status.bTimeout;
+ *nLAM = (char)status.bInterrupt;
+
+ return 0;
+ }
+}
+
+//--------------------------------------------------------------------------------------
+// clear the PCIADA status
+//
+static int clearStatus(HANDLE nHandle, DWORD dwInterface)
+{
+ DWORD DIOC_count; // count of returned bytes of DeviceIoControl
+ DWORD result;
+
+ if (nHandle == (HANDLE)-1) return -1;
+
+ // attach a window into the CC32 space ----------------
+ result = DeviceIoControl(nHandle, PCICC32_CLEAR_STATUS,
+ &dwInterface, sizeof(dwInterface),
+ NULL, 0, &DIOC_count, NULL);
+
+ if (!result)
+ return GetLastError();
+ else
+ return 0;
+}
+
+//-------------------------------------------------------------------------
+// set the future access parameters - override the current
+//
+static int setAccessParameter(HANDLE hHandle, USHORT wAccessType, USHORT wBlockTransfer)
+{
+ DWORD result;
+ DWORD DIOC_count; // count of returned bytes of DeviceIoControl
+ PCICC32_ACCESS_COMMAND access_parameter;
+
+ access_parameter.wAccessType = wAccessType;
+ access_parameter.wBlockTransfer = wBlockTransfer;
+
+ result = DeviceIoControl(hHandle, PCICC32_SET_ACCESS_PARA,
+ &access_parameter, (DWORD)sizeof(access_parameter), NULL,
+ 0, &DIOC_count, NULL);
+ if (!result)
+ return GetLastError();
+ else
+ return 0;
+}
+
+//-------------------------------------------------------------------------
+// create a DeviceName out of cszDeviceName and nIfcNum
+//
+static char *DeviceName(int nIfcNum)
+{
+ static char buffer[255];
+ char *ptr = buffer;
+
+ strncpy(buffer, DEFDEVICENAME, strlen(DEFDEVICENAME));
+
+ while (*ptr) ptr++;
+
+ do
+ {
+ ptr--;
+ } while (*ptr != '_'); // step back until '-'
+
+ ptr++;
+
+ if (nIfcNum >= 10) // add the interface number
+ {
+ *ptr++ = '1';
+ nIfcNum -= 10;
+ }
+
+ *ptr++ = '0' + nIfcNum;
+ *ptr = 0;
+
+ // a little help for the users
+ return buffer;
+}
+
+//-------------------------------------------------------------------------
+// open my path to the interface
+//
+static HANDLE openPath(char *name)
+{
+ return (HANDLE)CreateFile(
+ name,
+ GENERIC_READ | GENERIC_WRITE,
+ 0,
+ NULL,
+ OPEN_EXISTING,
+ FILE_ATTRIBUTE_NORMAL,
+ NULL
+ );
+}
+
+//--------------------------------------------------------------------------------------
+// open the device
+//
+int cc32_open_NT(char *cszPath, int nModuleNumber, void **handle)
+{
+ CC32_DEVICE_NT *dev;
+ int error = 0;
+
+ *handle = (void *)0;
+
+ dev = (CC32_DEVICE_NT *)malloc(sizeof(CC32_DEVICE_NT));
+ if (!dev) return errno;
+
+ dev->nModuleNumber = nModuleNumber;
+ dev->nHandle = INVALID_HANDLE_VALUE;
+ dev->wLastAccessWidth = 0xffff; /* invalidate for future use */
+
+ // start the driver ------------------
+ dev->nHandle = openPath(DeviceName(nModuleNumber));
+
+ if (dev->nHandle == INVALID_HANDLE_VALUE)
+ error = GetLastError();
+ else
+ {
+ SetFilePointer(dev->nHandle, 0, NULL, FILE_BEGIN);
+ dev->dwLastAccessAddress = 0;
+ dev->wLastAttributes = 0;
+ dev->wLastAccessWidth = 0;
+ }
+
+ if (error)
+ {
+ free(dev);
+ return error;
+ }
+
+ *handle = (void *)dev;
+
+ return NO_ERROR;
+}
+
+//--------------------------------------------------------------------------------------
+// close the device
+//
+int cc32_close_NT(void *handle)
+{
+ CC32_DEVICE_NT *dev = (CC32_DEVICE_NT *)handle;
+ int error = NO_ERROR;
+
+ if (dev)
+ {
+ if (dev->nHandle != INVALID_HANDLE_VALUE)
+ CloseHandle(dev->nHandle);
+
+ free(dev);
+ }
+ else
+ error = ERROR_INVALID_FUNCTION;
+
+ return error;
+}
+
+//--------------------------------------------------------------------------------------
+// read a word
+//
+unsigned short cc32_read_word_NT(void *handle, unsigned int N, unsigned int A, unsigned int F)
+{
+ register CC32_DEVICE_NT *dev = (CC32_DEVICE_NT *)handle;
+ unsigned long adr = NAF(N,A,F);
+ unsigned short buffer;
+ unsigned long bytesRead;
+
+ // cache the data access width
+ if (dev->wLastAccessWidth != WORD_ACCESS)
+ {
+ dev->wLastAccessWidth = WORD_ACCESS;
+ setAccessParameter(dev->nHandle, dev->wLastAccessWidth, dev->wLastAttributes);
+ }
+
+ // cache the address
+ if (dev->dwLastAccessAddress != adr)
+ {
+ SetFilePointer(dev->nHandle, adr, NULL, FILE_BEGIN);
+ dev->dwLastAccessAddress = adr;
+ }
+
+ ReadFile(dev->nHandle, &buffer, WORD_ACCESS, &bytesRead, NULL);
+
+ return buffer;
+}
+
+//--------------------------------------------------------------------------------------
+// read a long
+//
+unsigned long cc32_read_long_all_NT(void *handle, unsigned int N, unsigned int A, unsigned int F)
+{
+ register CC32_DEVICE_NT *dev = (CC32_DEVICE_NT *)handle;
+ unsigned long adr = NAF(N,A,F);
+ unsigned long buffer;
+ unsigned long bytesRead;
+
+ // cache the data access width
+ if (dev->wLastAccessWidth != LONG_ACCESS)
+ {
+ dev->wLastAccessWidth = LONG_ACCESS;
+ setAccessParameter(dev->nHandle, dev->wLastAccessWidth, dev->wLastAttributes);
+ }
+
+ // cache the address
+ if (dev->dwLastAccessAddress != adr)
+ {
+ SetFilePointer(dev->nHandle, adr, NULL, FILE_BEGIN);
+ dev->dwLastAccessAddress = adr;
+ }
+
+ ReadFile(dev->nHandle, &buffer, LONG_ACCESS, &bytesRead, NULL);
+
+ return buffer;
+}
+
+//--------------------------------------------------------------------------------------
+// read a long and get Q and X
+//
+unsigned long cc32_read_long_NT(void *handle, unsigned int N, unsigned int A, unsigned int F, char *Q, char *X)
+{
+ unsigned long erg = cc32_read_long_all_NT(handle, N, A, F);
+
+ *Q = (erg & 0x80000000) ? 1 : 0;
+ *X = (erg & 0x40000000) ? 1 : 0;
+
+ return erg & 0x00FFFFFF;
+}
+
+//--------------------------------------------------------------------------------------
+// write a word
+//
+void cc32_write_word_NT(void *handle, unsigned int N, unsigned int A, unsigned int F, unsigned short uwData)
+{
+ register CC32_DEVICE_NT *dev = (CC32_DEVICE_NT *)handle;
+ unsigned long adr = NAF(N,A,F);
+ DWORD bytesWritten;
+
+ // cache the data access width
+ if (dev->wLastAccessWidth != WORD_ACCESS)
+ {
+ dev->wLastAccessWidth = WORD_ACCESS;
+ setAccessParameter(dev->nHandle, dev->wLastAccessWidth, dev->wLastAttributes);
+ }
+
+ // cache the address
+ if (dev->dwLastAccessAddress != adr)
+ {
+ SetFilePointer(dev->nHandle, adr, NULL, FILE_BEGIN);
+ dev->dwLastAccessAddress = adr;
+ }
+
+ WriteFile(dev->nHandle, &uwData, WORD_ACCESS, &bytesWritten, NULL);
+}
+
+//--------------------------------------------------------------------------------------
+// write a long
+//
+void cc32_write_long_NT(void *handle, unsigned int N, unsigned int A, unsigned int F, unsigned long ulData)
+{
+ register CC32_DEVICE_NT *dev = (CC32_DEVICE_NT *)handle;
+ unsigned long adr = NAF(N,A,F);
+ DWORD bytesWritten;
+
+ // cache the data access width
+ if (dev->wLastAccessWidth != LONG_ACCESS)
+ {
+ dev->wLastAccessWidth = LONG_ACCESS;
+ setAccessParameter(dev->nHandle, dev->wLastAccessWidth, dev->wLastAttributes);
+ }
+
+ // cache the address
+ if (dev->dwLastAccessAddress != adr)
+ {
+ SetFilePointer(dev->nHandle, adr, NULL, FILE_BEGIN);
+ dev->dwLastAccessAddress = adr;
+ }
+
+ WriteFile(dev->nHandle, &ulData, LONG_ACCESS, &bytesWritten, NULL);
+}
+
+//--------------------------------------------------------------------------------------
+// clear the PCIADA status
+//
+int cc32_poll_error_NT(void *handle, char *nTimeout, char *nLam)
+{
+ CC32_DEVICE_NT *dev = (CC32_DEVICE_NT *)handle;
+ int error;
+
+ if ((error = getStatus(dev->nHandle, dev->nModuleNumber, nTimeout, nLam)))
+ return error;
+
+ if (*nTimeout) /* clear error */
+ {
+ if ((error = clearStatus(dev->nHandle, dev->nModuleNumber)))
+ return error;
+ }
+
+ return NO_ERROR;
+}
+
+//--------------------------------------------------------------------------------------
+// read 'len' words or 'UNTIL_NOT_Q' from a address made out of N,A,F
+//
+int cc32_read_word_buffer_NT(void * handle, unsigned int N, unsigned int A, unsigned int F,
+ unsigned short *pwBuffer, unsigned long *pdwLen)
+{
+ register CC32_DEVICE_NT *dev = (CC32_DEVICE_NT *)handle;
+ unsigned long adr = NAF(N,A,F);
+ unsigned long dwLen;
+
+ // cache the data access width
+ if (dev->wLastAccessWidth != WORD_ACCESS)
+ {
+ dev->wLastAccessWidth = WORD_ACCESS;
+ setAccessParameter(dev->nHandle, dev->wLastAccessWidth, dev->wLastAttributes);
+ }
+
+ // cache the address
+ if (dev->dwLastAccessAddress != adr)
+ {
+ SetFilePointer(dev->nHandle, adr, NULL, FILE_BEGIN);
+ dev->dwLastAccessAddress = adr;
+ }
+
+ *pdwLen <<= 1; // make bytes
+ dwLen = *pdwLen;
+ if (!ReadFile(dev->nHandle, pwBuffer, dwLen, pdwLen, NULL))
+ return GetLastError();
+
+ *pdwLen >>= 1; // make words
+ return 0;
+}
+
+//--------------------------------------------------------------------------------------
+// read 'len' longs or 'UNTIL_NOT_Q' from a address made out of N,A,F, mask 24 bits out
+//
+int cc32_read_long_buffer_NT(void * handle, unsigned int N, unsigned int A, unsigned int F,
+ unsigned long *pdwBuffer, unsigned long *pdwLen)
+{
+ register CC32_DEVICE_NT *dev = (CC32_DEVICE_NT *)handle;
+ unsigned long adr = NAF(N,A,F);
+ unsigned long *pdwPtr = pdwBuffer;
+ unsigned long *pdwEnd = pdwBuffer;
+ unsigned long dwLen;
+
+ // cache the data access width
+ if (dev->wLastAccessWidth != LONG_ACCESS)
+ {
+ dev->wLastAccessWidth = LONG_ACCESS;
+ setAccessParameter(dev->nHandle, dev->wLastAccessWidth, dev->wLastAttributes);
+ }
+
+ // cache the address
+ if (dev->dwLastAccessAddress != adr)
+ {
+ SetFilePointer(dev->nHandle, adr, NULL, FILE_BEGIN);
+ dev->dwLastAccessAddress = adr;
+ }
+
+ *pdwLen <<= 2; // make bytes
+ dwLen = *pdwLen;
+ if (!ReadFile(dev->nHandle, pdwBuffer, dwLen, pdwLen, NULL))
+ return GetLastError();
+
+ pdwEnd += *pdwLen;
+ while (pdwEnd < pdwPtr)
+ *pdwPtr++ &= 0x00FFFFFF; // mask Q and X bits
+
+ *pdwLen >>= 2; // make longs
+ return 0;
+}
+
+//--------------------------------------------------------------------------------------
+// read 'len' longs or 'UNTIL_NOT_Q' from a address made out of N,A,F, without interpretation
+//
+int cc32_read_long_all_buffer_NT(void * handle, unsigned int N, unsigned int A, unsigned int F,
+ unsigned long *pdwBuffer, unsigned long *pdwLen)
+{
+ register CC32_DEVICE_NT *dev = (CC32_DEVICE_NT *)handle;
+ unsigned long adr = NAF(N,A,F);
+ unsigned long dwLen;
+
+ // cache the data access width
+ if (dev->wLastAccessWidth != LONG_ACCESS)
+ {
+ dev->wLastAccessWidth = LONG_ACCESS;
+ setAccessParameter(dev->nHandle, dev->wLastAccessWidth, dev->wLastAttributes);
+ }
+
+ // cache the address
+ if (dev->dwLastAccessAddress != adr)
+ {
+ SetFilePointer(dev->nHandle, adr, NULL, FILE_BEGIN);
+ dev->dwLastAccessAddress = adr;
+ }
+
+ *pdwLen <<= 2; // make bytes
+ dwLen = *pdwLen;
+ if (!ReadFile(dev->nHandle, pdwBuffer, dwLen, pdwLen, NULL))
+ return GetLastError();
+
+ *pdwLen >>= 2; // make longs
+ return 0;
+}
+
+//--------------------------------------------------------------------------------------
+// switch UNTIL_NOT_Q or AUTOREAD on or off
+//
+int cc32_access_switch_NT(void *handle, unsigned short uwSwitch)
+{
+ register CC32_DEVICE_NT *dev = (CC32_DEVICE_NT *)handle;
+
+ dev->wLastAttributes = uwSwitch;
+ return setAccessParameter(dev->nHandle, dev->wLastAccessWidth, dev->wLastAttributes);
+}
+
+//--------------------------------------------------------------------------------------
+// switch interrupts on
+//
+int cc32_enable_interrupt_NT(void *handle)
+{
+ register CC32_DEVICE_NT *dev = (CC32_DEVICE_NT *)handle;
+ DWORD result;
+ DWORD DIOC_count; // count of returned bytes of DeviceIoControl
+ PCICC32_IRQ_CONTROL irqCntrl;
+
+ irqCntrl.dwInterface = 0; // don't bother at WINNT
+ irqCntrl.wEnable = 1; // enable it
+
+ result = DeviceIoControl(dev->nHandle, PCICC32_CONTROL_INTERRUPTS,
+ &irqCntrl, sizeof(irqCntrl), NULL, 0, &DIOC_count, NULL);
+
+ if (!result)
+ return GetLastError();
+ else
+ return NO_ERROR;
+}
+
+//--------------------------------------------------------------------------------------
+// switch interrupts off
+//
+int cc32_disable_interrupt_NT(void *handle)
+{
+ register CC32_DEVICE_NT *dev = (CC32_DEVICE_NT *)handle;
+ DWORD result;
+ DWORD DIOC_count; // count of returned bytes of DeviceIoControl
+ PCICC32_IRQ_CONTROL irqCntrl;
+
+ irqCntrl.dwInterface = 0; // don't bother at WINNT
+ irqCntrl.wEnable = 0; // disable it
+
+ result = DeviceIoControl(dev->nHandle, PCICC32_CONTROL_INTERRUPTS,
+ &irqCntrl, sizeof(irqCntrl), NULL, 0, &DIOC_count, NULL);
+
+ if (!result)
+ return GetLastError();
+ else
+ return NO_ERROR;
+}
+
+//--------------------------------------------------------------------------------------
+// wait blocking for the next interrupt
+//
+int cc32_get_interrupt_NT(void *handle, unsigned long *dwStatus)
+{
+ register CC32_DEVICE_NT *dev = (CC32_DEVICE_NT *)handle;
+ DWORD result;
+ DWORD DIOC_count; // count of returned bytes of DeviceIoControl
+ PCICC32_IRQ_RESPONSE response;
+ int nError;
+ OVERLAPPED sOverlapped;
+
+ sOverlapped.hEvent = NULL;
+ result = DeviceIoControl(dev->nHandle, PCICC32_INSTALL_IRQ_BLOCK,
+ NULL, 0, &response, sizeof(response), &DIOC_count, NULL);
+
+ *dwStatus = response.dwInterruptFlags;
+
+ if (!result)
+ {
+ nError = GetLastError();
+
+ // a real error
+ if ((nError != ERROR_IO_PENDING) && (nError != ERROR_SUCCESS))
+ return nError;
+
+ // my IO is pending - wait for it
+ if (nError == ERROR_IO_PENDING)
+ {
+ result = GetOverlappedResult(dev->nHandle, &sOverlapped, &DIOC_count, TRUE);
+
+ *dwStatus = response.dwInterruptFlags;
+
+ if (!result)
+ {
+ nError = GetLastError(); // if it was cancelled
+ if (nError == ERROR_OPERATION_ABORTED)
+ return NO_ERROR; // accept it as 'normal'
+ else
+ return nError;
+ }
+ }
+ }
+
+ return NO_ERROR;
+}
+
+
Index: wiener_pcicc32_dll/pcicc32_ni.vcxproj
===================================================================
--- wiener_pcicc32_dll/pcicc32_ni.vcxproj (nonexistent)
+++ wiener_pcicc32_dll/pcicc32_ni.vcxproj (revision 21)
@@ -0,0 +1,159 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <SccProjectName />
+ <SccLocalPath />
+ <ProjectGuid>{0370965E-2E92-4C77-92E7-F42D4EE3DBCF}</ProjectGuid>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <PlatformToolset>v110</PlatformToolset>
+ <UseOfMfc>false</UseOfMfc>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <PlatformToolset>v110</PlatformToolset>
+ <UseOfMfc>false</UseOfMfc>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="$(VCTargetsPath)Microsoft.Cpp.UpgradeFromVC60.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="$(VCTargetsPath)Microsoft.Cpp.UpgradeFromVC60.props" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <OutDir>$(OutDir)</OutDir>
+ <IntDir>$(OutDir)obj</IntDir>
+ <LinkIncremental>false</LinkIncremental>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <OutDir>$(OutDir)</OutDir>
+ <IntDir>$(OutDir)obj</IntDir>
+ <LinkIncremental>true</LinkIncremental>
+ <TargetName>pcicc32_ni</TargetName>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+ <InlineFunctionExpansion>Default</InlineFunctionExpansion>
+ <StringPooling>true</StringPooling>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <Optimization>MaxSpeed</Optimization>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <WarningLevel>Level3</WarningLevel>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <AssemblerListingLocation>.\Release\</AssemblerListingLocation>
+ <BrowseInformation>true</BrowseInformation>
+ <PrecompiledHeaderOutputFile>
+ </PrecompiledHeaderOutputFile>
+ <ObjectFileName>.\Release\</ObjectFileName>
+ <ProgramDataBaseFileName>.\Release\</ProgramDataBaseFileName>
+ </ClCompile>
+ <PostBuildEvent>
+ <Command>copy debug\pcicc32_ni.dll $(ProjectDir)</Command>
+ </PostBuildEvent>
+ <Midl>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <TypeLibraryName>.\Release\pcicc32_ni.tlb</TypeLibraryName>
+ <MkTypLibCompatible>true</MkTypLibCompatible>
+ <RedirectOutputAndErrors>NUL</RedirectOutputAndErrors>
+ <TargetEnvironment>Win32</TargetEnvironment>
+ </Midl>
+ <ResourceCompile>
+ <Culture>0x0407</Culture>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ </ResourceCompile>
+ <Bscmake>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <OutputFile>.\Release\pcicc32_ni.bsc</OutputFile>
+ </Bscmake>
+ <Link>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <LinkDLL>true</LinkDLL>
+ <SubSystem>Windows</SubSystem>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <ImportLibrary>.\Release\pcicc32_ni.lib</ImportLibrary>
+ <AdditionalDependencies>odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+ <InlineFunctionExpansion>Default</InlineFunctionExpansion>
+ <FunctionLevelLinking>false</FunctionLevelLinking>
+ <Optimization>Disabled</Optimization>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <WarningLevel>Level3</WarningLevel>
+ <MinimalRebuild>true</MinimalRebuild>
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <AssemblerListingLocation>.\Debug\</AssemblerListingLocation>
+ <PrecompiledHeaderOutputFile>
+ </PrecompiledHeaderOutputFile>
+ <ObjectFileName>.\Debug\</ObjectFileName>
+ <ProgramDataBaseFileName>.\Debug\</ProgramDataBaseFileName>
+ </ClCompile>
+ <PostBuildEvent>
+ <Command>copy debug\pcicc32_ni.dll $(ProjectDir)</Command>
+ </PostBuildEvent>
+ <Midl>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <TypeLibraryName>.\Debug\pcicc32_ni.tlb</TypeLibraryName>
+ <MkTypLibCompatible>true</MkTypLibCompatible>
+ <RedirectOutputAndErrors>NUL</RedirectOutputAndErrors>
+ <TargetEnvironment>Win32</TargetEnvironment>
+ </Midl>
+ <ResourceCompile>
+ <Culture>0x0407</Culture>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ </ResourceCompile>
+ <Bscmake>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <OutputFile>.\Debug\pcicc32_ni.bsc</OutputFile>
+ </Bscmake>
+ <Link>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <LinkDLL>true</LinkDLL>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Windows</SubSystem>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <ImportLibrary>.\Debug\pcicc32_ni.lib</ImportLibrary>
+ <AdditionalDependencies>odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="Libcc32.c" />
+ <ClCompile Include="Libcc32_95.c" />
+ <ClCompile Include="Libcc32_NT.c" />
+ <ClCompile Include="OS_INFO.C" />
+ </ItemGroup>
+ <ItemGroup>
+ <ClInclude Include="Libcc32.h" />
+ <ClInclude Include="Libcc32_95.h" />
+ <ClInclude Include="libcc32_NT.h" />
+ <ClInclude Include="OS_INFO.H" />
+ <ClInclude Include="vpcic32d.h" />
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project>
\ No newline at end of file
Index: wiener_pcicc32_dll/Libcc32.h
===================================================================
--- wiener_pcicc32_dll/Libcc32.h (nonexistent)
+++ wiener_pcicc32_dll/Libcc32.h (revision 21)
@@ -0,0 +1,94 @@
+#ifndef __CC32LIB_H__
+#define __CC32LIB_H__
+/*
+ cc32lib.h -- header for a simple access library for the
+ PCICC32 PCI to CAMAC Interface from ARW Elektronik
+
+ (c) 2000 ARW Elektronik
+
+ this source code is published under GPL (Open Source). You can use, redistrubute and
+ modify it unless this header is not modified or deleted. No warranty is given that
+ this software will work like expected.
+ This product is not authorized for use as critical component in life support systems
+ wihout the express written approval of ARW Elektronik Germany.
+
+ Please announce changes and hints to ARW Elektronik
+
+ To use this library the module "pcicc32.o" have to be installed. There must be also a
+ node which points with ist major number to the module and its minor number must equal
+ the CC32 module number (Jumper J301 to J304).
+
+ first steps derived from the LINUX pcicc32 library AR 16.03.2000
+ added buffer, UNTIL_NOT_Q and AUTOREAD functionality AR 17.03.2001
+ added interrupt handling (NT + 2000 only) AR 08.06.2002
+*/
+
+
+/*--- INCLUDES --------------------------------------------------------------------------*/
+
+/*--- TYPEDEFS --------------------------------------------------------------------------*/
+typedef void* CC32_HANDLE; /* type of the device handle */
+
+/*--- DEFINES ---------------------------------------------------------------------------*/
+#define SW_UNTIL_NOT_Q 1 /* switches for cc32_access_switch( ..., uSwitch); */
+#define SW_AUTOREAD 2
+
+/*--- PROTOTYPES ------------------------------------------------------------------------*/
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+/* open a path to a device. E.g. "/dev/pcicc32_1" */
+int __declspec(dllexport) cc32_open(char *cszPath, int nModuleNumber, CC32_HANDLE *handle);
+
+/* close the opened path */
+int __declspec(dllexport) cc32_close(CC32_HANDLE handle);
+
+/* read only a word - 16 bits - from a address made out of N,A,F */
+unsigned short __declspec(dllexport) cc32_read_word(CC32_HANDLE handle, unsigned int N, unsigned int A, unsigned int F);
+
+/* read a long - 32 bits - from a address made out of N,A,F and get the result Q and X */
+unsigned long __declspec(dllexport) cc32_read_long(CC32_HANDLE handle, unsigned int N, unsigned int A, unsigned int F, char *Q, char *X);
+
+/* read a long - 32 bits - without any interpretation */
+unsigned long __declspec(dllexport) cc32_read_long_all(CC32_HANDLE handle, unsigned int N, unsigned int A, unsigned int F);
+
+/* write a word - 16 bits - to a destination made out of N,A,F */
+void __declspec(dllexport) cc32_write_word(CC32_HANDLE handle, unsigned int N, unsigned int A, unsigned int F, unsigned short uwData);
+
+/* write a long - 32 bits - uninterpreted to a destination made out of N,A,F */
+void __declspec(dllexport) cc32_write_long(CC32_HANDLE handle, unsigned int N, unsigned int A, unsigned int F, unsigned long ulData);
+
+/* poll the state of the timeout line and the LAM state. The timeout line is cleared if it was set */
+int __declspec(dllexport) cc32_poll_error(CC32_HANDLE handle, char *nTimeout, char *nLam);
+
+/* read 'len' words or 'UNTIL_NOT_Q' from a address made out of N,A,F into a buffer*/
+int __declspec(dllexport) cc32_read_word_buffer(CC32_HANDLE handle, unsigned int N, unsigned int A, unsigned int F,
+ unsigned short *pwBuffer, unsigned long *pdwLen);
+
+/* read 'len' longs or 'UNTIL_NOT_Q' from a address made out of N,A,F into a buffer*/
+int __declspec(dllexport) cc32_read_long_buffer(CC32_HANDLE handle, unsigned int N, unsigned int A, unsigned int F,
+ unsigned long *pdwBuffer, unsigned long *pdwLen);
+/* read 'len' longs or 'UNTIL_NOT_Q' from a address made out of N,A,F into a buffer, no interpretation */
+int __declspec(dllexport) cc32_read_long_all_buffer(CC32_HANDLE handle, unsigned int N, unsigned int A, unsigned int F,
+ unsigned long *pdwBuffer, unsigned long *pdwLen);
+
+/* switch UNTIL_NOT_Q or AUTOREAD on or off */
+int __declspec(dllexport) cc32_access_switch(CC32_HANDLE handle, unsigned short uwSwitch);
+
+/* switch interrupts on */
+int __declspec(dllexport) cc32_enable_interrupt(CC32_HANDLE handle);
+
+/* switch interrupts off */
+int __declspec(dllexport) cc32_disable_interrupt(CC32_HANDLE handle);
+
+/* wait blocking for the next interrupt */
+int __declspec(dllexport) cc32_get_interrupt(CC32_HANDLE handle, unsigned long *dwStatus);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __CC32LIB_H__ */
Index: wiener_pcicc32_dll/pcicc32_ni.sln
===================================================================
--- wiener_pcicc32_dll/pcicc32_ni.sln (nonexistent)
+++ wiener_pcicc32_dll/pcicc32_ni.sln (revision 21)
@@ -0,0 +1,20 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio Express 2012 for Windows Desktop
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pcicc32_ni", "pcicc32_ni.vcxproj", "{0370965E-2E92-4C77-92E7-F42D4EE3DBCF}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Win32 = Debug|Win32
+ Release|Win32 = Release|Win32
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {0370965E-2E92-4C77-92E7-F42D4EE3DBCF}.Debug|Win32.ActiveCfg = Debug|Win32
+ {0370965E-2E92-4C77-92E7-F42D4EE3DBCF}.Debug|Win32.Build.0 = Debug|Win32
+ {0370965E-2E92-4C77-92E7-F42D4EE3DBCF}.Release|Win32.ActiveCfg = Release|Win32
+ {0370965E-2E92-4C77-92E7-F42D4EE3DBCF}.Release|Win32.Build.0 = Release|Win32
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+EndGlobal
Index: wiener_pcicc32_dll/pcicc32_ni.dsw
===================================================================
--- wiener_pcicc32_dll/pcicc32_ni.dsw (nonexistent)
+++ wiener_pcicc32_dll/pcicc32_ni.dsw (revision 21)
@@ -0,0 +1,29 @@
+Microsoft Developer Studio Workspace File, Format Version 6.00
+# WARNUNG: DIESE ARBEITSBEREICHSDATEI DARF NICHT BEARBEITET ODER GELÖSCHT WERDEN!
+
+###############################################################################
+
+Project: "pcicc32_ni"=.\pcicc32_ni.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Global:
+
+Package=<5>
+{{{
+}}}
+
+Package=<3>
+{{{
+}}}
+
+###############################################################################
+
Index: wiener_pcicc32_dll/libcc32_NT.h
===================================================================
--- wiener_pcicc32_dll/libcc32_NT.h (nonexistent)
+++ wiener_pcicc32_dll/libcc32_NT.h (revision 21)
@@ -0,0 +1,72 @@
+#ifndef __LIBCC32_NT_H__
+#define __LIBCC32_NT_H__
+
+/*
+ libcc32_NT.h -- header for a simple access library (WINNT) for the
+ PCICC32 PCI to CAMAC Interface from ARW Elektronik
+
+ (c) 2000 ARW Elektronik
+
+ this source code is published under GPL (Open Source). You can use, redistrubute and
+ modify it unless this header is not modified or deleted. No warranty is given that
+ this software will work like expected.
+ This product is not authorized for use as critical component in life support systems
+ wihout the express written approval of ARW Elektronik Germany.
+
+ Please announce changes and hints to ARW Elektronik
+
+ first steps AR 30.07.2000
+ added buffer, UNTIL_NOT_Q and AUTOREAD functionality AR 17.03.2001
+ added interrupt handling AR 08.06.2002
+*/
+
+
+/* open a path to a device. E.g. "/dev/pcicc32_1" */
+int cc32_open_NT(char *cszPath, int nModuleNumber, void **handle);
+
+/* close the opened path */
+int cc32_close_NT(void *handle);
+
+/* read only a word - 16 bits - from a address made out of N,A,F */
+unsigned short cc32_read_word_NT(void *handle, unsigned int N, unsigned int A, unsigned int F);
+
+/* read a long - 32 bits - from a address made out of N,A,F and get the result Q and X */
+unsigned long cc32_read_long_NT(void *handle, unsigned int N, unsigned int A, unsigned int F, char *Q, char *X);
+
+/* read a long - 32 bits - without any interpretaion */
+unsigned long cc32_read_long_all_NT(void *handle, unsigned int N, unsigned int A, unsigned int F);
+
+/* write a word - 16 bits - to a destination made out of N,A,F */
+void cc32_write_word_NT(void *handle, unsigned int N, unsigned int A, unsigned int F, unsigned short uwData);
+
+/* write a long - 32 bits - uninterpreted to a destination made out of N,A,F */
+void cc32_write_long_NT(void *handle, unsigned int N, unsigned int A, unsigned int F, unsigned long ulData);
+
+/* poll the state of the timeout line and the LAM state. The timeout line is cleared if it was set */
+int cc32_poll_error_NT(void *handle, char *nTimeout, char *nLam);
+
+/* read words until not Q or *pdwLen data into a buffer */
+int cc32_read_word_buffer_NT(void * handle, unsigned int N, unsigned int A, unsigned int F,
+ unsigned short *pwBuffer, unsigned long *pdwLen);
+
+/* read longs until not Q or *pdwLen data into a buffer */
+int cc32_read_long_buffer_NT(void * handle, unsigned int N, unsigned int A, unsigned int F,
+ unsigned long *pdwBuffer, unsigned long *pdwLen);
+
+/* read longs until not Q or *pdwLen data and don't interpret Q and X information into a buffer */
+int cc32_read_long_all_buffer_NT(void * handle, unsigned int N, unsigned int A, unsigned int F,
+ unsigned long *pdwBuffer, unsigned long *pdwLen);
+
+/* switch UNTIL_NOT_Q or AUTOREAD on or off */
+int cc32_access_switch_NT(void *handle, unsigned short uwSwitch);
+
+/* switch interrupts on */
+int cc32_enable_interrupt_NT(void *handle);
+
+/* switch interrupts off */
+int cc32_disable_interrupt_NT(void *handle);
+
+/* wait blocking for the next interrupt */
+int cc32_get_interrupt_NT(void *handle, unsigned long *dwStatus);
+
+#endif // __LIBCC32_NT_H__
Index: wiener_pcicc32_dll/pcicc32.h
===================================================================
--- wiener_pcicc32_dll/pcicc32.h (nonexistent)
+++ wiener_pcicc32_dll/pcicc32.h (revision 21)
@@ -0,0 +1,157 @@
+#ifndef __PCICC32_H__
+#define __PCICC32_H__
+//-------------------------------------------------------------------------
+// WINNT driver for PCICC32 interface from ARW Elektronik, Germany --------
+// IO definitions and common data structures between application and driver
+//
+// (c) 2000,2001 ARW Elektronik
+//
+// this source code is published under GPL (Open Source). You can use, redistrubute and
+// modify it unless this header is not modified or deleted. No warranty is given that
+// this software will work like expected.
+// This product is not authorized for use as critical component in life support systems
+// wihout the express written approval of ARW Elektronik Germany.
+//
+// Please announce changes and hints to ARW Elektronik
+//
+// what who when
+// started AR 16.04.2000
+// added irq functionality AR 24.02.2001
+// added until 'not Q' read/write mode AR 03.03.2001
+// added AUTOREAD AR 17.03.2001
+//
+
+//-------------------------------------------------------------------------
+// INCLUDES
+//
+// #include <devioctl.h> must be declared before inclusion when used for driver
+// #include <winioctl.h> must be declared before inclusion when used for applications
+
+//-------------------------------------------------------------------------
+// DEFINES
+//
+
+//----------------------------------------------------------------------------------------
+// macros for simple CAMAC NAF address calculation
+//
+#define NAF(n, a, f) ((ULONG)((n << 10) + (a << 6) + ((f & 0xf) << 2)))
+
+// to get a compatible view to WIN95 driver
+#define USER_CONTROL_CODE(x) (x)
+
+// VPCIC32D_ATTACH_CC32 and VPCIC32D_DETACH_CC32 are incompatible to WINNT - please use read and write commands
+
+// get the interrupt and timeout status from a CC32 interface (0x00220008)
+#define PCICC32_GET_STATUS CTL_CODE(\
+ FILE_DEVICE_UNKNOWN,\
+ USER_CONTROL_CODE(2),\
+ METHOD_BUFFERED,\
+ FILE_ANY_ACCESS)
+
+// clear the timeout status of a CC32 interface (0x0022000C)
+#define PCICC32_CLEAR_STATUS CTL_CODE(\
+ FILE_DEVICE_UNKNOWN,\
+ USER_CONTROL_CODE(3),\
+ METHOD_BUFFERED,\
+ FILE_ANY_ACCESS)
+
+// set the access parameter for this file (0x00220010)
+#define PCICC32_SET_ACCESS_PARA CTL_CODE(\
+ FILE_DEVICE_UNKNOWN,\
+ USER_CONTROL_CODE(4),\
+ METHOD_BUFFERED,\
+ FILE_ANY_ACCESS)
+
+// allow or inhibit CC32 interrupt requests (0x00220014)
+#define PCICC32_CONTROL_INTERRUPTS CTL_CODE(\
+ FILE_DEVICE_UNKNOWN,\
+ USER_CONTROL_CODE(5),\
+ METHOD_BUFFERED,\
+ FILE_ANY_ACCESS)
+
+// requests thru blocking io the status of a pending or a rising interrupt (0x0022001C)
+#define PCICC32_INSTALL_IRQ_BLOCK CTL_CODE(\
+ FILE_DEVICE_UNKNOWN,\
+ USER_CONTROL_CODE(7),\
+ METHOD_BUFFERED,\
+ FILE_ANY_ACCESS)
+
+// requests to access the PLX LCR for test and debug (0x00220020)
+#define PCICC32_ACCESS_LCR CTL_CODE(\
+ FILE_DEVICE_UNKNOWN,\
+ USER_CONTROL_CODE(8),\
+ METHOD_BUFFERED,\
+ FILE_ANY_ACCESS)
+
+// set to check for control-code overflow
+#define PCICC32_LAST_CTL_CODE PCICC32_ACCESS_LCR
+
+// mask bits for interrupt status
+#define LAM_IRQ 0x00FFFFFF // there was a LAM responible for the timeout
+#define CONNECTION_TIMEOUT 0x08000000 // irq raised through a connection timout
+#define LAM_BUS_OR 0x10000000 // a LAM-BUS-OR is pending
+#define LAM_NOT_OR 0x20000000 // a LAM-NOT-OR is pending
+#define LAM_AND_OR 0x40000000 // a LAM-AND-OR is pending
+#define LAM_FF 0x80000000 // the LAM-Flip-Flop was set
+
+// switches for PCICC32_ACCESS_COMMAND.wAccessType
+#define WORD_ACCESS (UCHAR)2 // word
+#define LONG_ACCESS (UCHAR)4 // long
+
+// define bits for PCICC32_ACCESS_COMMAND.wBlockTransfer
+#define UNTIL_NOT_Q 0x0001 // read/write unttil 'not Q' switch
+#define AUTOREAD 0x0002 // PCIADA data pipelining access tuner switch
+
+// data lane size constants for PCICC32_ACCESS_LCR
+#define BYTE_ACCESS (UCHAR)1 // write byte wise (illegal)
+#define WORD_ACCESS (UCHAR)2 // word
+#define LONG_ACCESS (UCHAR)4 // long
+
+// PCICC32_ACCESS_LCR access constants
+#define LCR_READ 0 // read only access
+#define LCR_WRITE 1 // write and read back access
+#define LCR_OR 2 // read, bitwise 'or' content and read back access
+#define LCR_AND 3 // read, bitwise 'and' content and read back access
+#define LCR_WRITE_ONLY 4 // do not read back after write
+
+// this structure is output from VPCIC32_GET_STATUS call
+typedef struct
+{
+ ULONG dwInterface; // CC32 module number (for compatibility to win95/98 only - not used)
+ USHORT bTimeout; // denotes a pending PCIADA timeout
+ USHORT bInterrupt; // denotes a pending LAM interrupt
+} PCICC32_STATUS;
+
+// this structure sets the access parameter for following reads or writes to this path
+typedef struct
+{
+ ULONG dwInterface; // CC32 module number (for compatibility to win95/98 only - not used)
+ USHORT wAccessType; // set the current access type (WORD_ACCESS, LONG_ACCESS)
+ USHORT wBlockTransfer; // set AUTOREAD or UNTIL_NOT_Q
+} PCICC32_ACCESS_COMMAND;
+
+// this structure is used to control the interrupts
+typedef struct
+{
+ ULONG dwInterface; // CC32 module number (for compatibility to win95/98 only - not used)
+ USHORT wEnable; // a 1 allows, a 0 inhibits interrupt requests
+} PCICC32_IRQ_CONTROL;
+
+// this structure returns from a blocking interrupt status call
+typedef struct
+{
+ ULONG dwInterface; // CC32 module number (for compatibility to win95/98 only - not used)
+ ULONG dwInterruptFlags; // the return status at the return of the blocking call
+} PCICC32_IRQ_RESPONSE;
+
+// structure to access the local configuration space of PLX chip (test / debug only) with PCICC32_ACCESS_LCR
+typedef struct
+{
+ ULONG dwInterface; // here dummy 'cause of compatibility to WIN95
+ ULONG dwContent; // content to write, and, or
+ USHORT wRegisterAddress; // address offset of LCR register
+ UCHAR bAccessMode; // LCR_READ, write, or, and
+ UCHAR bBytesLane; // the data access width
+} PCICC32_LCR_ACCESS;
+
+#endif // __PCICC32_H__
Index: wiener_pcicc32_dll/pcicc32_ni.opt
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/wiener_pcicc32_dll/pcicc32_ni.opt
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: wiener_pcicc32_dll/pcicc32_ni.ncb
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/wiener_pcicc32_dll/pcicc32_ni.ncb
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: wiener_pcicc32_dll/OS_INFO.C
===================================================================
--- wiener_pcicc32_dll/OS_INFO.C (nonexistent)
+++ wiener_pcicc32_dll/OS_INFO.C (revision 21)
@@ -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)
+{
+
+}
+*/
+