/cvi/instr/CAENV1718/CAENV1718.fp |
---|
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: CAENV1718/CAENV1718.h |
=================================================================== |
--- CAENV1718/CAENV1718.h (nonexistent) |
+++ CAENV1718/CAENV1718.h (revision 77) |
@@ -0,0 +1,111 @@ |
+#ifndef _CAEN_V1718_H |
+#define _CAEN_V1718_H |
+ |
+#include <CAENVMElib.h> |
+ |
+extern int32_t CAEN_udev; |
+ |
+ |
+ |
+int CAEN_VME_start (char*); |
+int CAEN_VME_close (int); |
+int CAEN_VME_stop (void); |
+int CAEN_VME_reset (void); |
+ |
+short __stdcall CAEN_VME_R( uint16_t AM, uint16_t DW, uint32_t VME_Address, uint32_t *Data); |
+ |
+short __stdcall CAEN_VME_W( uint16_t AM, uint16_t DW, uint32_t VME_Address, uint32_t Data); |
+ |
+short __stdcall CAEN_VME_MW( uint16_t AM, uint16_t DW, uint32_t VME_Address, uint32_t Data); |
+short __stdcall CAEN_VME_MWRST( void ); |
+short __stdcall CAEN_VME_MWEXEC( void ); |
+ |
+short __stdcall CAEN_VME_MR( uint16_t AM, uint16_t DW, uint32_t VME_Address, uint32_t *Data); |
+short __stdcall CAEN_VME_MRRST( void ); |
+short __stdcall CAEN_VME_MREXEC( uint32_t *Data ); |
+ |
+ |
+ |
+int CAEN_VME_BltRead(long Handle, unsigned long Address, void *Data,int size, CVAddressModifier AM, CVDataWidth DW); |
+ |
+ |
+short CAEN_VME_read(long Handle, unsigned long Address, void *Data, CVAddressModifier AM, CVDataWidth DW); |
+short CAEN_VME_write(long Handle, unsigned long Address, void *Data, CVAddressModifier AM, CVDataWidth DW); |
+ |
+short CAEN_VME_appendread(unsigned long Address, void *Data, CVAddressModifier AM, CVDataWidth DW); |
+short CAEN_VME_appendwrite(unsigned long Address, void *Data, CVAddressModifier AM, CVDataWidth DW); |
+ |
+short CAEN_VME_MultiReadReset( void); |
+short CAEN_VME_MultiWriteReset( void); |
+short CAEN_VME_MultiReadExecute(long Handle, uint32_t *Data); |
+short CAEN_VME_MultiWriteExecute(long Handle); |
+ |
+#define CAEN_VME_START(NODE) CAEN_VME_start((NODE)) |
+#define CAEN_VME_STOP() CAENVME_End(CAEN_udev) |
+#define CAEN_VME_RESET() CAENVME_SystemReset(CAEN_udev) |
+ |
+#define CAEN_VME_A16D8_R(VME,DATA) CAEN_VME_read( CAEN_udev, (VME), (DATA) , cvA16_U_DATA, cvD8) |
+#define CAEN_VME_A16D16_R(VME,DATA) CAEN_VME_read( CAEN_udev, (VME), (DATA) , cvA16_U_DATA, cvD16) |
+#define CAEN_VME_A16D32_R(VME,DATA) CAEN_VME_read( CAEN_udev, (VME), (DATA) , cvA16_U_DATA, cvD32) |
+ |
+#define CAEN_VME_A24D8_R(VME,DATA) CAEN_VME_read( CAEN_udev, (VME), (DATA) , cvA24_U_DATA, cvD8) |
+#define CAEN_VME_A24D16_R(VME,DATA) CAEN_VME_read( CAEN_udev, (VME), (DATA) , cvA24_U_DATA, cvD16) |
+#define CAEN_VME_A24D32_R(VME,DATA) CAEN_VME_read( CAEN_udev, (VME), (DATA) , cvA24_U_DATA, cvD32) |
+ |
+#define CAEN_VME_A32D8_R(VME,DATA) CAEN_VME_read( CAEN_udev, (VME), (DATA) , cvA32_U_DATA, cvD8) |
+#define CAEN_VME_A32D16_R(VME,DATA) CAEN_VME_read( CAEN_udev, (VME), (DATA) , cvA32_U_DATA, cvD16) |
+#define CAEN_VME_A32D32_R(VME,DATA) CAEN_VME_read( CAEN_udev, (VME), (DATA) , cvA32_U_DATA, cvD32) |
+ |
+#define CAEN_VME_A16D8_W(VME,DATA) CAEN_VME_write( CAEN_udev, (VME), (DATA) , cvA16_U_DATA, cvD8) |
+#define CAEN_VME_A16D16_W(VME,DATA) CAEN_VME_write( CAEN_udev, (VME), (DATA) , cvA16_U_DATA, cvD16) |
+#define CAEN_VME_A16D32_W(VME,DATA) CAEN_VME_write( CAEN_udev, (VME), (DATA) , cvA16_U_DATA, cvD32) |
+ |
+#define CAEN_VME_A24D8_W(VME,DATA) CAEN_VME_write( CAEN_udev, (VME), (DATA) , cvA24_U_DATA, cvD8) |
+#define CAEN_VME_A24D16_W(VME,DATA) CAEN_VME_write( CAEN_udev, (VME), (DATA) , cvA24_U_DATA, cvD16) |
+#define CAEN_VME_A24D32_W(VME,DATA) CAEN_VME_write( CAEN_udev, (VME), (DATA) , cvA24_U_DATA, cvD32) |
+ |
+#define CAEN_VME_A32D8_W(VME,DATA) CAEN_VME_write( CAEN_udev, (VME), (DATA) , cvA32_U_DATA, cvD8) |
+#define CAEN_VME_A32D16_W(VME,DATA) CAEN_VME_write( CAEN_udev, (VME), (DATA) , cvA32_U_DATA, cvD16) |
+#define CAEN_VME_A32D32_W(VME,DATA) CAEN_VME_write( CAEN_udev, (VME), (DATA) , cvA32_U_DATA, cvD32) |
+ |
+ |
+ |
+#define CAEN_VME_A16D8_MR(VME,DATA) CAEN_VME_appendread( (VME), (DATA) , cvA16_U_DATA, cvD8) |
+#define CAEN_VME_A16D16_MR(VME,DATA) CAEN_VME_appendread( (VME), (DATA) , cvA16_U_DATA, cvD16) |
+#define CAEN_VME_A16D32_MR(VME,DATA) CAEN_VME_appendread( (VME), (DATA) , cvA16_U_DATA, cvD32) |
+ |
+#define CAEN_VME_A24D8_MR(VME,DATA) CAEN_VME_appendread( (VME), (DATA) , cvA24_U_DATA, cvD8) |
+#define CAEN_VME_A24D16_MR(VME,DATA) CAEN_VME_appendread( (VME), (DATA) , cvA24_U_DATA, cvD16) |
+#define CAEN_VME_A24D32_MR(VME,DATA) CAEN_VME_appendread( (VME), (DATA) , cvA24_U_DATA, cvD32) |
+ |
+#define CAEN_VME_A32D8_MR(VME,DATA) CAEN_VME_appendread( (VME), (DATA) , cvA32_U_DATA, cvD8) |
+#define CAEN_VME_A32D16_MR(VME,DATA) CAEN_VME_appendread( (VME), (DATA) , cvA32_U_DATA, cvD16) |
+#define CAEN_VME_A32D32_MR(VME,DATA) CAEN_VME_appendread( (VME), (DATA) , cvA32_U_DATA, cvD32) |
+ |
+#define CAEN_VME_A16D8_MW(VME,DATA) CAEN_VME_appendwrite( (VME), (DATA) , cvA16_U_DATA, cvD8) |
+#define CAEN_VME_A16D16_MW(VME,DATA) CAEN_VME_appendwrite( (VME), (DATA) , cvA16_U_DATA, cvD16) |
+#define CAEN_VME_A16D32_MW(VME,DATA) CAEN_VME_appendwrite( (VME), (DATA) , cvA16_U_DATA, cvD32) |
+ |
+#define CAEN_VMEA24D8_MW(VME,DATA) CAEN_VMEappendwrite( (VME), (DATA) , cvA24_U_DATA, cvD8) |
+#define CAEN_VMEA24D16_MW(VME,DATA) CAEN_VMEappendwrite( (VME), (DATA) , cvA24_U_DATA, cvD16) |
+#define CAEN_VMEA24D32_MW(VME,DATA) CAEN_VMEappendwrite( (VME), (DATA) , cvA24_U_DATA, cvD32) |
+ |
+#define CAEN_VMEA32D8_MW(VME,DATA) CAEN_VMEappendwrite( (VME), (DATA) , cvA32_U_DATA, cvD8) |
+#define CAEN_VMEA32D16_MW(VME,DATA) CAEN_VMEappendwrite( (VME), (DATA) , cvA32_U_DATA, cvD16) |
+#define CAEN_VMEA32D32_MW(VME,DATA) CAEN_VMEappendwrite( (VME), (DATA) , cvA32_U_DATA, cvD32) |
+ |
+#define CAEN_VMEMWRST() CAEN_VMEMultiWriteReset() |
+#define CAEN_VMEMWEXEC() CAEN_VMEMultiWriteExecute(CAEN_udev) |
+#define CAEN_VMEMRRST() CAEN_VMEMultiReadReset() |
+#define CAEN_VMEMREXEC(DATA) CAEN_VMEMultiReadExecute(CAEN_udev, (DATA) ) |
+ |
+#define CAEN_VMEA32D16BLT_R(VME,DATA,SIZE) CAEN_VMEBltRead( CAEN_udev, (VME), (DATA) , (SIZE) , cvA32_U_BLT, cvD16) |
+#define CAEN_VMEA24D16BLT_R(VME,DATA,SIZE) CAEN_VMEBltRead( CAEN_udev, (VME), (DATA) , (SIZE) , cvA24_U_BLT, cvD16) |
+ |
+#define CAEN_VMEA32D32BLT_R(VME,DATA,SIZE) CAEN_VMEBltRead( CAEN_udev, (VME), (DATA) , (SIZE) , cvA32_U_BLT, cvD32) |
+#define CAEN_VMEA24D32BLT_R(VME,DATA,SIZE) CAEN_VMEBltRead( CAEN_udev, (VME), (DATA) , (SIZE) , cvA24_U_DATA, cvD32) |
+ |
+#define CAEN_VMEA24D32BLT_READ(VME,DATA,SIZE,COUNT) CAENVME_BLTReadCycle(CAEN_udev, (VME), (DATA), (SIZE), cvA24_U_BLT, cvD32 , (COUNT) ) |
+ |
+ |
+#endif |
Index: CAENV1718/CAENVMEtypes.h |
=================================================================== |
--- CAENV1718/CAENVMEtypes.h (nonexistent) |
+++ CAENV1718/CAENVMEtypes.h (revision 77) |
@@ -0,0 +1,344 @@ |
+/* |
+ ----------------------------------------------------------------------------- |
+ |
+ --- CAEN SpA - Computing Systems Division --- |
+ |
+ ----------------------------------------------------------------------------- |
+ |
+ CAENVMEtypes.h |
+ |
+ ----------------------------------------------------------------------------- |
+ |
+ Author: Stefano Coluccini (s.coluccini@caen.it) |
+ |
+ Created: March 2004 |
+ |
+ ----------------------------------------------------------------------------- |
+*/ |
+#ifndef __CAENVMETYPES_H |
+#define __CAENVMETYPES_H |
+ |
+#ifdef LINUX |
+#define CAEN_BYTE unsigned char |
+#define CAEN_BOOL int |
+#else |
+#ifdef _CVI_ |
+#define CAEN_BYTE unsigned char |
+#define CAEN_BOOL int |
+#else |
+ |
+#define CAEN_BYTE byte |
+#define CAEN_BOOL VARIANT_BOOL |
+ |
+#endif |
+#endif |
+ |
+ |
+/* |
+ CAEN VME bridges. |
+*/ |
+typedef enum CVBoardTypes { |
+ cvV1718 = 0, /* CAEN V1718 USB-VME bridge */ |
+ cvV2718 = 1, /* V2718 PCI-VME bridge with optical link */ |
+ cvA2818 = 2, /* PCI board with optical link */ |
+ cvA2719 = 3, /* Optical link piggy-back */ |
+ cvA3818 = 4 /* PCIe board with up to 4 optical links */ |
+} CVBoardTypes; |
+ |
+/* |
+ VME cycles data width. |
+ Ver. 2.2 - Added byte-swapping data widths |
+*/ |
+typedef enum CVDataWidth { |
+ cvD8 = 0x01, /* 8 bit */ |
+ cvD16 = 0x02, /* 16 bit */ |
+ cvD32 = 0x04, /* 32 bit */ |
+ cvD64 = 0x08, /* 64 bit */ |
+ cvD16_swapped = 0x12, /* 16 bit swapped */ |
+ cvD32_swapped = 0x14, /* 32 bit swapped */ |
+ cvD64_swapped = 0x18 /* 64 bit swapped */ |
+} CVDataWidth; |
+ |
+/* |
+ VME cycles address modifiers |
+*/ |
+typedef enum CVAddressModifier { |
+ cvA16_S = 0x2D, /* A16 supervisory access */ |
+ cvA16_U = 0x29, /* A16 non-privileged */ |
+ cvA16_LCK = 0x2C, /* A16 lock command */ |
+ |
+ cvA24_S_BLT = 0x3F, /* A24 supervisory block transfer */ |
+ cvA24_S_PGM = 0x3E, /* A24 supervisory program access */ |
+ cvA24_S_DATA = 0x3D, /* A24 supervisory data access */ |
+ cvA24_S_MBLT = 0x3C, /* A24 supervisory 64-bit block trnsfer */ |
+ cvA24_U_BLT = 0x3B, /* A24 non-privileged block transfer */ |
+ cvA24_U_PGM = 0x3A, /* A24 non-privileged program access */ |
+ cvA24_U_DATA = 0x39, /* A24 non-privileged data access */ |
+ cvA24_U_MBLT = 0x38, /* A24 non-privileged 64-bit block trnsfer */ |
+ cvA24_LCK = 0x32, /* A24 lock command */ |
+ |
+ cvA32_S_BLT = 0x0F, /* A32 supervisory block transfer */ |
+ cvA32_S_PGM = 0x0E, /* A32 supervisory program access */ |
+ cvA32_S_DATA = 0x0D, /* A32 supervisory data access */ |
+ cvA32_S_MBLT = 0x0C, /* A32 supervisory 64-bit block trnsfer */ |
+ cvA32_U_BLT = 0x0B, /* A32 non-privileged block transfer */ |
+ cvA32_U_PGM = 0x0A, /* A32 non-privileged program access */ |
+ cvA32_U_DATA = 0x09, /* A32 non-privileged data access */ |
+ cvA32_U_MBLT = 0x08, /* A32 non-privileged 64-bit block trnsfer */ |
+ cvA32_LCK = 0x05, /* A32 lock command */ |
+ |
+ cvCR_CSR = 0x2F, /* CR/CSR space */ |
+ |
+/* |
+ The following address modifiers are not yet implemented. |
+*/ |
+ |
+ cvA40_BLT = 0x37, /* A40 block transfer (MD32) */ |
+ cvA40_LCK = 0x35, /* A40 lock command */ |
+ cvA40 = 0x34, /* A40 access */ |
+ |
+ cvA64 = 0x01, /* A64 single trnsfer access */ |
+ cvA64_BLT = 0x03, /* A64 block transfer */ |
+ cvA64_MBLT = 0x00, /* A64 64-bit block transfer */ |
+ cvA64_LCK = 0x04, /* A64 lock command */ |
+ |
+ cvA3U_2eVME = 0x21, /* 2eVME for 3U modules */ |
+ cvA6U_2eVME = 0x20 /* 2eVME for 6U modules */ |
+} CVAddressModifier; |
+ |
+/* |
+ Error codes returned by the exported functions. |
+*/ |
+typedef enum CVErrorCodes { |
+ cvSuccess = 0, /* Operation completed successfully */ |
+ cvBusError = -1, /* VME bus error during the cycle */ |
+ cvCommError = -2, /* Communication error */ |
+ cvGenericError = -3, /* Unspecified error */ |
+ cvInvalidParam = -4, /* Invalid parameter */ |
+ cvTimeoutError = -5, /* Timeout error */ |
+} CVErrorCodes; |
+ |
+/* |
+ Pulser selection. |
+*/ |
+typedef enum CVPulserSelect { |
+ cvPulserA = 0, /* Identifies the pulser 'A' */ |
+ cvPulserB = 1 /* Identifies the pulser 'B' */ |
+} CVPulserSelect; |
+ |
+/* |
+ Output selection. |
+*/ |
+typedef enum CVOutputSelect { |
+ cvOutput0 = 0, /* Identifies the output line 0 */ |
+ cvOutput1 = 1, /* Identifies the output line 1 */ |
+ cvOutput2 = 2, /* Identifies the output line 2 */ |
+ cvOutput3 = 3, /* Identifies the output line 3 */ |
+ cvOutput4 = 4 /* Identifies the output line 4 */ |
+} CVOutputSelect; |
+ |
+/* |
+ Input selection. |
+*/ |
+typedef enum CVInputSelect { |
+ cvInput0 = 0, /* Identifies the input line 0 */ |
+ cvInput1 = 1 /* Identifies the input line 1 */ |
+} CVInputSelect; |
+ |
+/* |
+ Signal sources. |
+*/ |
+typedef enum CVIOSources { |
+ cvManualSW = 0, /* Manual (button) or software controlled */ |
+ cvInputSrc0 = 1, /* Input line 0 */ |
+ cvInputSrc1 = 2, /* Input line 1 */ |
+ cvCoincidence = 3, /* Inputs coincidence */ |
+ cvVMESignals = 4, /* Signals from VME bus */ |
+ cvMiscSignals = 6 /* Various internal signals */ |
+} CVIOSources; |
+ |
+/* |
+ Time base units to specify pulses period and width. |
+*/ |
+typedef enum CVTimeUnits { |
+ cvUnit25ns = 0, /* Time unit is 25 nanoseconds */ |
+ cvUnit1600ns = 1, /* Time unit is 1.6 microseconds */ |
+ cvUnit410us = 2, /* Time unit is 410 microseconds */ |
+ cvUnit104ms = 3 /* Time unit is 104 milliseconds */ |
+} CVTimeUnits; |
+ |
+/* |
+ Polarity for LED emitting. |
+*/ |
+typedef enum CVLEDPolarity { |
+ cvActiveHigh = 0, /* LED emits on signal high level */ |
+ cvActiveLow = 1 /* LED emits on signal low level */ |
+} CVLEDPolarity; |
+ |
+/* |
+ Input and Output signal polarity. |
+*/ |
+typedef enum CVIOPolarity { |
+ cvDirect = 0, /* Normal polarity */ |
+ cvInverted = 1 /* Inverted polarity */ |
+} CVIOPolarity; |
+ |
+/* |
+ Accessible registers. |
+*/ |
+typedef enum CVRegisters { |
+ cvStatusReg = 0x00, /* Status register */ |
+ cvVMEControlReg = 0x01, /* VME Control register */ |
+ cvFwRelReg = 0x02, /* Firmware Release register */ |
+ cvFwDldReg = 0x03, /* Firmware Download register */ |
+ cvFlenaReg = 0x04, /* Flash Enable */ |
+ cvVMEIRQEnaReg = 0x06, /* VME IRQ Lines Enable */ |
+ cvInputReg = 0x08, /* Input register */ |
+ cvOutRegSet = 0x0A, /* Output register */ |
+ cvInMuxRegSet = 0x0B, /* Input Multiplexer */ |
+ cvOutMuxRegSet = 0x0C, /* Output Multiplexer */ |
+ cvLedPolRegSet = 0x0D, /* Led Polarity */ |
+ cvOutRegClear = 0x10, /* Output register */ |
+ cvInMuxRegClear = 0x11, /* Input Multiplexer */ |
+ cvOutMuxRegClear = 0x12, /* Output Multiplexer */ |
+ cvLedPolRegClear = 0x13, /* Led Polarity */ |
+ cvPulserA0 = 0x16, /* Period and width of Pulser A */ |
+ cvPulserA1 = 0x17, /* Num pulses and range of Pulser A */ |
+ cvPulserB0 = 0x19, /* Period and width of Pulser B */ |
+ cvPulserB1 = 0x1A, /* Num pulses and range of Pulser B */ |
+ cvScaler0 = 0x1C, /* Limit and Autores of Scaler A */ |
+ cvScaler1 = 0x1D, /* Counter value of Scaler A */ |
+ cvDispADL = 0x20, /* Display AD[15:0] */ |
+ cvDispADH = 0x21, /* Display AD[31:16] */ |
+ cvDispDTL = 0x22, /* Display DT[15:0] */ |
+ cvDispDTH = 0x23, /* Display DT[31:16] */ |
+ cvDispC1 = 0x24, /* Display Control left bar */ |
+ cvDispC2 = 0x25, /* Display Control left bar */ |
+ cvLMADL = 0x28, /* Loc. Mon. AD[15:0] */ |
+ cvLMADH = 0x29, /* Loc. Mon. AD[31:16] */ |
+ cvLMC = 0x2C /* Loc. Mon. Controls */ |
+} CVRegisters; |
+ |
+/* |
+ Bits for status register decoding. |
+*/ |
+typedef enum CVStatusRegisterBits { |
+ cvSYSRES = 0x0001, /* VME is in system reset state */ |
+ cvSYSCTRL = 0x0002, /* The bridge is the VME system controller */ |
+ cvDTACK = 0x0010, /* Last access has generated a DTACK signal */ |
+ cvBERR = 0x0020, /* Last access has generated a bus error */ |
+ cvDIP0 = 0x0100, /* Dip Switch position 0 state */ |
+ cvDIP1 = 0x0200, /* Dip Switch position 1 state */ |
+ cvDIP2 = 0x0400, /* Dip Switch position 2 state */ |
+ cvDIP3 = 0x0800, /* Dip Switch position 3 state */ |
+ cvDIP4 = 0x1000, /* Dip Switch position 4 state */ |
+ cvUSBTYPE = 0x8000 /* USB Speed: 0 = Full; 1 = High */ |
+} CVStatusRegisterBits; |
+ |
+/* |
+ Bits for input register decoding. |
+*/ |
+typedef enum CVInputRegisterBits { |
+ cvIn0Bit = 0x0001, /* Input line 0 signal level. */ |
+ cvIn1Bit = 0x0002, /* Input line 1 signal level. */ |
+ cvCoincBit = 0x0004, /* Coincidence of input signal level. */ |
+ cvPulsAOutBit = 0x0008, /* Pulser A output signal level. */ |
+ cvPulsBOutBit = 0x0010, /* Pulser B output signal level. */ |
+ cvScalEndCntBit = 0x0020, /* Scaler end counter signal level. */ |
+ cvLocMonBit = 0x0040, /* Location monitor signal level. */ |
+} CVInputRegisterBits; |
+ |
+/* |
+ Bits for input register decoding. |
+*/ |
+typedef enum CVOutputRegisterBits { |
+ cvPulsAStartBit = 0x0001, /* Pulser A start signal level. */ |
+ cvPulsAResetBit = 0x0002, /* Pulser A reset signal level. */ |
+ cvPulsBStartBit = 0x0004, /* Pulser B start signal level. */ |
+ cvPulsBResetBit = 0x0008, /* Pulser B reset signal level. */ |
+ cvScalGateBit = 0x0010, /* Scaler gate signal level. */ |
+ cvScalResetBit = 0x0020, /* Scaler reset counter signal level. */ |
+ cvOut0Bit = 0x0040, /* Output line 0 signal level. */ |
+ cvOut1Bit = 0x0080, /* Output line 1 signal level. */ |
+ cvOut2Bit = 0x0100, /* Output line 2 signal level. */ |
+ cvOut3Bit = 0x0200, /* Output line 3 signal level. */ |
+ cvOut4Bit = 0x0400, /* Output line 4 signal level. */ |
+} CVOutputRegisterBits; |
+ |
+/* |
+ Types of VME Arbiter. |
+*/ |
+typedef enum CVArbiterTypes { |
+ cvPriorized = 0, /* Priority Arbiter */ |
+ cvRoundRobin = 1 /* Round-Robin Arbiter */ |
+} CVArbiterTypes; |
+ |
+/* |
+ Types of VME Bus Requester. |
+*/ |
+typedef enum CVRequesterTypes { |
+ cvFair = 0, /* Fair bus requester */ |
+ cvDemand = 1 /* On demand bus requester */ |
+} CVRequesterTypes; |
+ |
+/* |
+ Types of VME Bus release. |
+*/ |
+typedef enum CVReleaseTypes { |
+ cvRWD = 0, /* Release When Done */ |
+ cvROR = 1 /* Release On Request */ |
+} CVReleaseTypes; |
+ |
+/* |
+ VME bus request levels. |
+*/ |
+typedef enum CVBusReqLevels { |
+ cvBR0 = 0, /* Bus request level 0 */ |
+ cvBR1 = 1, /* Bus request level 1 */ |
+ cvBR2 = 2, /* Bus request level 2 */ |
+ cvBR3 = 3 /* Bus request level 3 */ |
+} CVBusReqLevels; |
+ |
+/* |
+ VME Interrupt levels. |
+*/ |
+typedef enum CVIRQLevels { |
+ cvIRQ1 = 0x01, /* Interrupt level 1 */ |
+ cvIRQ2 = 0x02, /* Interrupt level 2 */ |
+ cvIRQ3 = 0x04, /* Interrupt level 3 */ |
+ cvIRQ4 = 0x08, /* Interrupt level 4 */ |
+ cvIRQ5 = 0x10, /* Interrupt level 5 */ |
+ cvIRQ6 = 0x20, /* Interrupt level 6 */ |
+ cvIRQ7 = 0x40 /* Interrupt level 7 */ |
+} CVIRQLevels; |
+ |
+/* |
+ VME bus timeouts. |
+*/ |
+typedef enum CVVMETimeouts { |
+ cvTimeout50us = 0, /* Timeout is 50 microseconds */ |
+ cvTimeout400us = 1 /* Timeout is 400 microseconds */ |
+} CVVMETimeouts; |
+ |
+/* |
+ Data type to store the front panel display last access data. |
+*/ |
+typedef struct CVDisplay { |
+ long cvAddress; /* VME Address */ |
+ long cvData; /* VME Data */ |
+ long cvAM; /* Address modifier */ |
+ long cvIRQ; /* IRQ levels */ |
+ CAEN_BOOL cvDS0; /* Data Strobe 0 signal */ |
+ CAEN_BOOL cvDS1; /* Data Strobe 1 signal */ |
+ CAEN_BOOL cvAS; /* Address Strobe signal */ |
+ CAEN_BOOL cvIACK; /* Interrupt Acknowledge signal */ |
+ CAEN_BOOL cvWRITE; /* Write signal */ |
+ CAEN_BOOL cvLWORD; /* Long Word signal */ |
+ CAEN_BOOL cvDTACK; /* Data Acknowledge signal */ |
+ CAEN_BOOL cvBERR; /* Bus Error signal */ |
+ CAEN_BOOL cvSYSRES; /* System Reset signal */ |
+ CAEN_BOOL cvBR; /* Bus Request signal */ |
+ CAEN_BOOL cvBG; /* Bus Grant signal */ |
+} CVDisplay; |
+ |
+#endif // __CAENVMETYPES_H |
Index: CAENV1718/CAENVMElib.h |
=================================================================== |
--- CAENV1718/CAENVMElib.h (nonexistent) |
+++ CAENV1718/CAENVMElib.h (revision 77) |
@@ -0,0 +1,1305 @@ |
+/*! |
+ ----------------------------------------------------------------------------- |
+ |
+ --- CAEN SpA - Computing Systems Division --- |
+ |
+ ----------------------------------------------------------------------------- |
+ |
+ CAENVMElib.h |
+ |
+ ----------------------------------------------------------------------------- |
+ |
+ Created: March 2004 |
+ |
+ ----------------------------------------------------------------------------- |
+*/ |
+#ifndef __CAENVMELIB_H |
+#define __CAENVMELIB_H |
+ |
+#include <stdio.h> |
+// Rev. 2.5 |
+#ifdef LINUX |
+ #include <stdint.h> |
+#endif |
+#include <stdlib.h> |
+#ifndef _CVI_ |
+#include <malloc.h> |
+#endif |
+#include "CAENVMEoslib.h" |
+#include "CAENVMEtypes.h" |
+ |
+ |
+ |
+#ifdef __cplusplus |
+extern "C" { |
+#endif // __cplusplus |
+/* |
+ CAENVME_DecodeError |
+ ----------------------------------------------------------------------------- |
+ Parameters: |
+ [in] Code : The error code to decode. |
+ ----------------------------------------------------------------------------- |
+ Returns: |
+ An string describing the error condition. |
+ ----------------------------------------------------------------------------- |
+ Description: |
+ Decode the error. |
+*/ |
+const char * |
+#ifdef WIN32 |
+__stdcall |
+#endif |
+CAENVME_DecodeError(CVErrorCodes Code); |
+ |
+/* |
+ CAENVME_API CAENVME_SWRelease |
+ ----------------------------------------------------------------------------- |
+ Parameters: |
+ [out] SwRel : Returns the software release of the library. |
+ ----------------------------------------------------------------------------- |
+ Returns: |
+ An error code about the execution of the function. |
+ ----------------------------------------------------------------------------- |
+ Description: |
+ Permits to read the software release of the library. |
+*/ |
+CAENVME_API |
+CAENVME_SWRelease(char *SwRel); |
+ |
+/* |
+ CAENVME_BoardFWRelease. |
+ ----------------------------------------------------------------------------- |
+ Parameters: |
+ [in] Handle : The handle that identifies the device. |
+ [out] FWRel : Returns the firmware release of the device. |
+ ----------------------------------------------------------------------------- |
+ Returns: |
+ An error code about the execution of the function. |
+ ----------------------------------------------------------------------------- |
+ Description: |
+ Permits to read the firmware release loaded into the device. |
+*/ |
+CAENVME_API |
+CAENVME_BoardFWRelease(int32_t Handle, char *FWRel); |
+ |
+/* |
+ CAENVME_DriverRelease. |
+ ----------------------------------------------------------------------------- |
+ Parameters: |
+ [in] Handle : The handle that identifies the device. |
+ [out] Rel : Returns the software release of the device driver |
+ ----------------------------------------------------------------------------- |
+ Returns: |
+ An error code about the execution of the function. |
+ ----------------------------------------------------------------------------- |
+ Description: |
+ Permits to read the software release of the device driver. |
+*/ |
+CAENVME_API |
+CAENVME_DriverRelease(int32_t Handle, char *Rel); |
+ |
+/* |
+ CAENVME_DeviceReset |
+ ----------------------------------------------------------------------------- |
+ Parameters: |
+ [in] Handle : The handle that identifies the device. |
+ ----------------------------------------------------------------------------- |
+ Returns: |
+ An error code about the execution of the function. |
+ ----------------------------------------------------------------------------- |
+ Description: |
+ Permits to reset the device. |
+ Implemented for A2818, A2719, V2718 on Linux platform only |
+*/ |
+CAENVME_API |
+CAENVME_DeviceReset(int32_t dev); |
+ |
+ |
+/* |
+ CAENVME_Init |
+ ----------------------------------------------------------------------------- |
+ Parameters: |
+ [in] BdType : The model of the bridge (V1718/V2718). |
+ [in] Link : The link number (don't care for V1718). |
+ [in] BdNum : The board number in the link. |
+ [out] Handle : The handle that identifies the device. |
+ ----------------------------------------------------------------------------- |
+ Returns: |
+ An error code about the execution of the function. |
+ ----------------------------------------------------------------------------- |
+ Description: |
+ The function generates an opaque handle to identify a module |
+ attached to the PC. In the case of V1718 bridge it must be |
+ specified only the module index (BdNum) because the link is USB. |
+ In the case of V2718 it must be specified also the link because |
+ you can have some A2818 optical link inside the PC. |
+*/ |
+CAENVME_API |
+CAENVME_Init(CVBoardTypes BdType, short Link, short BdNum, int32_t *Handle); |
+ |
+/* |
+ CAENVME_End |
+ ----------------------------------------------------------------------------- |
+ Parameters: |
+ [in] Handle : The handle that identifies the device. |
+ ----------------------------------------------------------------------------- |
+ Returns: |
+ An error code about the execution of the function. |
+ ----------------------------------------------------------------------------- |
+ Description: |
+ Notifies the library the end of work and free the allocated |
+ resources. |
+*/ |
+CAENVME_API |
+CAENVME_End(int32_t Handle); |
+ |
+/* |
+ CAENVME_ReadCycle |
+ ----------------------------------------------------------------------------- |
+ Parameters: |
+ [in] Handle : The handle that identifies the device. |
+ [in] Address : The VME bus address. |
+ [out] Data : The data read from the VME bus. |
+ [in] AM : The address modifier (see CVAddressModifier enum). |
+ [in] DW : The data width.(see CVDataWidth enum). |
+ ----------------------------------------------------------------------------- |
+ Returns: |
+ An error code about the execution of the function. |
+ ----------------------------------------------------------------------------- |
+ Description: |
+ The function performs a single VME read cycle. |
+*/ |
+CAENVME_API |
+CAENVME_ReadCycle(int32_t Handle, uint32_t Address, void *Data, |
+ CVAddressModifier AM, CVDataWidth DW); |
+ |
+/* |
+ CAENVME_RMWCycle |
+ ----------------------------------------------------------------------------- |
+ Parameters: |
+ [in] Handle : The handle that identifies the device. |
+ [in] Address: The VME bus address. |
+ [in/out] Data : The data read and then written to the VME bus. |
+ [in] AM : The address modifier (see CVAddressModifier enum). |
+ [in] DW : The data width.(see CVDataWidth enum). |
+ ----------------------------------------------------------------------------- |
+ Returns: |
+ An error code about the execution of the function. |
+ ----------------------------------------------------------------------------- |
+ Description: |
+ The function performs a Read-Modify-Write cycle. The Data parameter |
+ is bidirectional: it is used to write the value to the VME bus and to |
+ return the value read. |
+*/ |
+CAENVME_API |
+CAENVME_RMWCycle(int32_t Handle, uint32_t Address, void *Data, |
+ CVAddressModifier AM, CVDataWidth DW); |
+ |
+/* |
+ CAENVME_WriteCycle |
+ ----------------------------------------------------------------------------- |
+ Parameters: |
+ [in] Handle : The handle that identifies the device. |
+ [in] Address : The VME bus address. |
+ [in] Data : The data written to the VME bus. |
+ [in] AM : The address modifier (see CVAddressModifier enum). |
+ [in] DW : The data width.(see CVDataWidth enum). |
+ ----------------------------------------------------------------------------- |
+ Returns: |
+ An error code about the execution of the function. |
+ ----------------------------------------------------------------------------- |
+ Description: |
+ The function performs a single VME write cycle. |
+*/ |
+CAENVME_API |
+CAENVME_WriteCycle(int32_t Handle, uint32_t Address, void *Data, |
+ CVAddressModifier AM, CVDataWidth DW); |
+ |
+/* |
+ CAENVME_MultiRead (Ver. 2.2) |
+ ----------------------------------------------------------------------------- |
+ Parameters: |
+ [in] Handle : The handle that identifies the device. |
+ [in] Addrs : The VME bus addresses. |
+ [out] Buffer : The data read from the VME bus. |
+ [in] NCycles : The number of read cycles to perform. |
+ [in] AMs : The address modifiers (see CVAddressModifier enum). |
+ [in] DWs : The data widths.(see CVDataWidth enum). |
+ [out] ECs : The error codes relaive to each cycle. |
+ ----------------------------------------------------------------------------- |
+ Returns: |
+ An error code about the execution of the function. |
+ ----------------------------------------------------------------------------- |
+ Description: |
+ The function performs a block of single VME read cycles. |
+*/ |
+CAENVME_API |
+CAENVME_MultiRead(int32_t Handle, uint32_t *Addrs, uint32_t *Buffer, |
+ int NCycles, CVAddressModifier *AMs, CVDataWidth *DWs, CVErrorCodes *ECs); |
+ |
+/* |
+ CAENVME_MultiWrite (Ver. 2.2) |
+ ----------------------------------------------------------------------------- |
+ Parameters: |
+ [in] Handle : The handle that identifies the device. |
+ [in] Addrs : The VME bus addresses. |
+ [in] Buffer : The data to write to the VME bus. |
+ [in] NCycles : The number of read cycles to perform. |
+ [in] AMs : The address modifiers (see CVAddressModifier enum). |
+ [in] DWs : The data widths.(see CVDataWidth enum). |
+ [out] ECs : The error codes relaive to each cycle. |
+ ----------------------------------------------------------------------------- |
+ Returns: |
+ An error code about the execution of the function. |
+ ----------------------------------------------------------------------------- |
+ Description: |
+ The function performs a block of single VME write cycles. |
+*/ |
+CAENVME_API |
+CAENVME_MultiWrite(int32_t Handle, uint32_t *Addrs, uint32_t *Buffer, |
+ int NCycles, CVAddressModifier *AMs, CVDataWidth *DWs, CVErrorCodes *ECs); |
+ |
+/* |
+ CAENVME_BLTReadCycle |
+ ----------------------------------------------------------------------------- |
+ Parameters: |
+ [in] Handle : The handle that identifies the device. |
+ [in] Address : The VME bus address. |
+ [out] Buffer : The data read from the VME bus. |
+ [in] Size : The size of the transfer in bytes. |
+ [in] AM : The address modifier (see CVAddressModifier enum). |
+ [in] DW : The data width.(see CVDataWidth enum). |
+ [out] count : The number of bytes transferred. |
+ ----------------------------------------------------------------------------- |
+ Returns: |
+ An error code about the execution of the function. |
+ ----------------------------------------------------------------------------- |
+ Description: |
+ The function performs a VME block transfer read cycle. It can be used to |
+ perform MBLT transfers using 64 bit data width. |
+*/ |
+CAENVME_API |
+CAENVME_BLTReadCycle(int32_t Handle, uint32_t Address, void *Buffer, |
+ int Size, CVAddressModifier AM, CVDataWidth DW, int *count); |
+ |
+/* |
+ Ver. 2.3 - New function |
+ |
+ CAENVME_FIFOBLTReadCycle |
+ ----------------------------------------------------------------------------- |
+ Parameters: |
+ [in] Handle : The handle that identifies the device. |
+ [in] Address : The VME bus address. |
+ [out] Buffer : The data read from the VME bus. |
+ [in] Size : The size of the transfer in bytes. |
+ [in] AM : The address modifier (see CVAddressModifier enum). |
+ [in] DW : The data width.(see CVDataWidth enum). |
+ [out] count : The number of bytes transferred. |
+ ----------------------------------------------------------------------------- |
+ Returns: |
+ An error code about the execution of the function. |
+ ----------------------------------------------------------------------------- |
+ Description: |
+ The function performs a VME block transfer read cycle. It can be used to |
+ perform MBLT transfers using 64 bit data width. The Address is not |
+ incremented on the VMEBus during the cycle. |
+*/ |
+CAENVME_API |
+CAENVME_FIFOBLTReadCycle(int32_t Handle, uint32_t Address, void *Buffer, |
+ int Size, CVAddressModifier AM, CVDataWidth DW, int *count); |
+ |
+/* |
+ CAENVME_MBLTReadCycle |
+ ----------------------------------------------------------------------------- |
+ Parameters: |
+ [in] Handle : The handle that identifies the device. |
+ [in] Address : The VME bus address. |
+ [out] Buffer : The data read from the VME bus. |
+ [in] Size : The size of the transfer in bytes. |
+ [in] AM : The address modifier (see CVAddressModifier enum). |
+ [out] count : The number of bytes transferred. |
+ ----------------------------------------------------------------------------- |
+ Returns: |
+ An error code about the execution of the function. |
+ ----------------------------------------------------------------------------- |
+ Description: |
+ The function performs a VME multiplexed block transfer read cycle. |
+*/ |
+CAENVME_API |
+CAENVME_MBLTReadCycle(int32_t Handle, uint32_t Address, void *Buffer, |
+ int Size, CVAddressModifier AM, int *count); |
+ |
+/* |
+ Ver. 2.3 - New function |
+ |
+ CAENVME_FIFOMBLTReadCycle |
+ ----------------------------------------------------------------------------- |
+ Parameters: |
+ [in] Handle : The handle that identifies the device. |
+ [in] Address : The VME bus address. |
+ [out] Buffer : The data read from the VME bus. |
+ [in] Size : The size of the transfer in bytes. |
+ [in] AM : The address modifier (see CVAddressModifier enum). |
+ [out] count : The number of bytes transferred. |
+ ----------------------------------------------------------------------------- |
+ Returns: |
+ An error code about the execution of the function. |
+ ----------------------------------------------------------------------------- |
+ Description: |
+ The function performs a VME multiplexed block transfer read cycle. |
+ The Address is not incremented on the VMEBus during the cycle. |
+*/ |
+CAENVME_API |
+CAENVME_FIFOMBLTReadCycle(int32_t Handle, uint32_t Address, void *Buffer, |
+ int Size, CVAddressModifier AM, int *count); |
+ |
+/* |
+ CAENVME_BLTWriteCycle |
+ ----------------------------------------------------------------------------- |
+ Parameters: |
+ [in] Handle : The handle that identifies the device. |
+ [in] Address : The VME bus address. |
+ [in] Buffer : The data to be written to the VME bus. |
+ [in] Size : The size of the transfer in bytes. |
+ [in] AM : The address modifier (see CVAddressModifier enum). |
+ [in] DW : The data width.(see CVDataWidth enum). |
+ [out] count : The number of bytes transferred. |
+ ----------------------------------------------------------------------------- |
+ Returns: |
+ An error code about the execution of the function. |
+ ----------------------------------------------------------------------------- |
+ Description: |
+ The function performs a VME block transfer write cycle. |
+*/ |
+CAENVME_API |
+CAENVME_BLTWriteCycle(int32_t Handle, uint32_t Address, void *Buffer, |
+ int size, CVAddressModifier AM, CVDataWidth DW, int *count); |
+ |
+/* |
+ Ver. 2.3 - New function |
+ |
+ CAENVME_FIFOBLTWriteCycle |
+ ----------------------------------------------------------------------------- |
+ Parameters: |
+ [in] Handle : The handle that identifies the device. |
+ [in] Address : The VME bus address. |
+ [in] Buffer : The data to be written to the VME bus. |
+ [in] Size : The size of the transfer in bytes. |
+ [in] AM : The address modifier (see CVAddressModifier enum). |
+ [in] DW : The data width.(see CVDataWidth enum). |
+ [out] count : The number of bytes transferred. |
+ ----------------------------------------------------------------------------- |
+ Returns: |
+ An error code about the execution of the function. |
+ ----------------------------------------------------------------------------- |
+ Description: |
+ The function performs a VME block transfer write cycle. The address |
+ is not incremented during the cycle. |
+*/ |
+CAENVME_API |
+CAENVME_FIFOBLTWriteCycle(int32_t Handle, uint32_t Address, void *Buffer, |
+ int size, CVAddressModifier AM, CVDataWidth DW, int *count); |
+ |
+/* |
+ CAENVME_MBLTWriteCycle |
+ ----------------------------------------------------------------------------- |
+ Parameters: |
+ [in] Handle : The handle that identifies the device. |
+ [in] Address : The VME bus address. |
+ [in] Buffer : The data to be written to the VME bus. |
+ [in] Size : The size of the transfer in bytes. |
+ [in] AM : The address modifier (see CVAddressModifier enum). |
+ [out] count : The number of bytes transferred. |
+ ----------------------------------------------------------------------------- |
+ Returns: |
+ An error code about the execution of the function. |
+ ----------------------------------------------------------------------------- |
+ Description: |
+ The function performs a VME multiplexed block transfer write cycle. |
+*/ |
+CAENVME_API |
+CAENVME_MBLTWriteCycle(int32_t Handle, uint32_t Address, void *Buffer, |
+ int size, CVAddressModifier AM, int *count); |
+ |
+/* |
+ Ver. 2.3 - New function |
+ |
+ CAENVME_FIFOMBLTWriteCycle |
+ ----------------------------------------------------------------------------- |
+ Parameters: |
+ [in] Handle : The handle that identifies the device. |
+ [in] Address : The VME bus address. |
+ [in] Buffer : The data to be written to the VME bus. |
+ [in] Size : The size of the transfer in bytes. |
+ [in] AM : The address modifier (see CVAddressModifier enum). |
+ [out] count : The number of bytes transferred. |
+ ----------------------------------------------------------------------------- |
+ Returns: |
+ An error code about the execution of the function. |
+ ----------------------------------------------------------------------------- |
+ Description: |
+ The function performs a VME multiplexed block transfer write cycle. |
+ The address is not incremented during the cycle. |
+*/ |
+CAENVME_API |
+CAENVME_FIFOMBLTWriteCycle(int32_t Handle, uint32_t Address, void *Buffer, |
+ int size, CVAddressModifier AM, int *count); |
+ |
+/* |
+ CAENVME_ADOCycle |
+ ----------------------------------------------------------------------------- |
+ Parameters: |
+ [in] Handle : The handle that identifies the device. |
+ [in] Address : The VME bus address. |
+ [in] AM : The address modifier (see CVAddressModifier enum). |
+ ----------------------------------------------------------------------------- |
+ Returns: |
+ An error code about the execution of the function. |
+ ----------------------------------------------------------------------------- |
+ Description: |
+ The function performs a VME address only cycle. It can be used to |
+ perform MBLT transfers using 64 bit data width. |
+*/ |
+CAENVME_API |
+CAENVME_ADOCycle(int32_t Handle, uint32_t Address, CVAddressModifier AM); |
+ |
+/* |
+ CAENVME_ADOHCycle |
+ ----------------------------------------------------------------------------- |
+ Parameters: |
+ [in] Handle : The handle that identifies the device. |
+ [in] Address : The VME bus address. |
+ [in] AM : The address modifier (see CVAddressModifier enum). |
+ ----------------------------------------------------------------------------- |
+ Returns: |
+ An error code about the execution of the function. |
+ ----------------------------------------------------------------------------- |
+ Description: |
+ The function performs a VME address only with handshake cycle. |
+*/ |
+CAENVME_API |
+CAENVME_ADOHCycle(int32_t Handle, uint32_t Address, CVAddressModifier AM); |
+ |
+/* |
+ CAENVME_IACKCycle |
+ ----------------------------------------------------------------------------- |
+ Parameters: |
+ [in] Handle : The handle that identifies the device. |
+ [in] Level : The IRQ level to acknowledge (see CVIRQLevels enum). |
+ [in] DW : The data width.(see CVDataWidth enum). |
+ ----------------------------------------------------------------------------- |
+ Returns: |
+ An error code about the execution of the function. |
+ ----------------------------------------------------------------------------- |
+ Description: |
+ The function performs a VME interrupt acknowledge cycle. |
+*/ |
+CAENVME_API |
+CAENVME_IACKCycle(int32_t Handle, CVIRQLevels Level, void *Vector, CVDataWidth DW); |
+ |
+/* |
+ CAENVME_IRQCheck |
+ ----------------------------------------------------------------------------- |
+ Parameters: |
+ [in] Handle : The handle that identifies the device. |
+ [out] Mask : A bit-mask indicating the active IRQ lines. |
+ ----------------------------------------------------------------------------- |
+ Returns: |
+ An error code about the execution of the function. |
+ ----------------------------------------------------------------------------- |
+ Description: |
+ The function returns a bit mask indicating the active IRQ lines. |
+*/ |
+CAENVME_API |
+CAENVME_IRQCheck(int32_t Handle, CAEN_BYTE *Mask); |
+ |
+/* |
+ CAENVME_IRQEnable |
+ ----------------------------------------------------------------------------- |
+ Parameters: |
+ [in] Handle : The handle that identifies the device. |
+ [in] Mask : A bit-mask indicating the IRQ lines. |
+ ----------------------------------------------------------------------------- |
+ Returns: |
+ An error code about the execution of the function. |
+ ----------------------------------------------------------------------------- |
+ Description: |
+ The function enables the IRQ lines specified by Mask. |
+*/ |
+CAENVME_API |
+CAENVME_IRQEnable(int32_t Handle, uint32_t Mask); |
+ |
+/* |
+ CAENVME_IRQDisable |
+ ----------------------------------------------------------------------------- |
+ Parameters: |
+ [in] Handle : The handle that identifies the device. |
+ [in] Mask : A bit-mask indicating the IRQ lines. |
+ ----------------------------------------------------------------------------- |
+ Returns: |
+ An error code about the execution of the function. |
+ ----------------------------------------------------------------------------- |
+ Description: |
+ The function disables the IRQ lines specified by Mask. |
+*/ |
+CAENVME_API |
+CAENVME_IRQDisable(int32_t Handle, uint32_t Mask); |
+ |
+/* |
+ CAENVME_IRQWait |
+ ----------------------------------------------------------------------------- |
+ Parameters: |
+ [in] Handle : The handle that identifies the device. |
+ [in] Mask : A bit-mask indicating the IRQ lines. |
+ [in] Timeout : Timeout in milliseconds. |
+ ----------------------------------------------------------------------------- |
+ Returns: |
+ An error code about the execution of the function. |
+ ----------------------------------------------------------------------------- |
+ Description: |
+ The function wait the IRQ lines specified by Mask until one of |
+ them raise or timeout expires. |
+*/ |
+CAENVME_API |
+CAENVME_IRQWait(int32_t Handle, uint32_t Mask, uint32_t Timeout); |
+ |
+/* |
+ CAENVME_SetPulserConf |
+ ----------------------------------------------------------------------------- |
+ Parameters: |
+ [in] Handle : The handle that identifies the device. |
+ [in] PulSel : The pulser to configure (see CVPulserSelect enum). |
+ [in] Period : The period of the pulse in time units. |
+ [in] Width : The width of the pulse in time units. |
+ [in] Unit : The time unit for the pulser configuration (see |
+ CVTimeUnits enum). |
+ [in] PulseNo : The number of pulses to generate (0 = infinite). |
+ [in] Start : The source signal to start the pulse burst (see |
+ CVIOSources enum). |
+ [in] Reset : The source signal to stop the pulse burst (see |
+ CVIOSources enum). |
+ ----------------------------------------------------------------------------- |
+ Returns: |
+ An error code about the execution of the function. |
+ ----------------------------------------------------------------------------- |
+ Description: |
+ The function permits to configure the pulsers. All the timing parameters |
+ are expressed in the time units specified. The start signal source can be |
+ one of: front panel button or software (cvManualSW), input signal 0 |
+ (cvInputSrc0),input signal 1 (cvInputSrc1) or input coincidence |
+ (cvCoincidence). The reset signal source can be: front panel button or |
+ software (cvManualSW) or, for pulser A the input signal 0 (cvInputSrc0), |
+ for pulser B the input signal 1 (cvInputSrc1). |
+*/ |
+CAENVME_API |
+CAENVME_SetPulserConf(int32_t Handle, CVPulserSelect PulSel, unsigned char Period, |
+ unsigned char Width, CVTimeUnits Unit, unsigned char PulseNo, |
+ CVIOSources Start, CVIOSources Reset); |
+ |
+/* |
+ CAENVME_SetScalerConf |
+ ----------------------------------------------------------------------------- |
+ Parameters: |
+ [in] Handle : The handle that identifies the device. |
+ [in] Limit : The counter limit for the scaler. |
+ [in] AutoReset : Enable/disable the counter auto reset. |
+ [in] Hit : The source signal for the signal to count (see |
+ CVIOSources enum). |
+ [in] Gate : The source signal for the gate (see CVIOSources enum). |
+ [in] Reset : The source signal to stop the counter (see |
+ CVIOSources enum). |
+ ----------------------------------------------------------------------------- |
+ Returns: |
+ An error code about the execution of the function. |
+ ----------------------------------------------------------------------------- |
+ Description: |
+ The function permits to configure the scaler. Limit range is 0 - 1024 |
+ (10 bit). The hit signal source can be: input signal 0 (cvInputSrc0) |
+ or input coincidence (cvCoincidence). The gate signal source can be: |
+ front panel button or software (cvManualSW) or input signal 1 |
+ (cvInputSrc1). The reset signal source can be: front panel button or |
+ software (cvManualSW) or input signal 1 (cvInputSrc1). |
+*/ |
+CAENVME_API |
+CAENVME_SetScalerConf(int32_t Handle, short Limit, short AutoReset, |
+ CVIOSources Hit, CVIOSources Gate, CVIOSources Reset); |
+ |
+/* |
+ CAENVME_SetOutputConf |
+ ----------------------------------------------------------------------------- |
+ Parameters: |
+ [in] Handle : The handle that identifies the device. |
+ [in] OutSel : The output line to configure (see CVOutputSelect |
+ enum). |
+ [in] OutPol : The output line polarity (see CVIOPolarity enum). |
+ [in] LEDPol : The output LED polarity (see CVLEDPolarity enum). |
+ [in] Source : The source signal to propagate to the output line |
+ (see CVIOSources enum). |
+ ----------------------------------------------------------------------------- |
+ Returns: |
+ An error code about the execution of the function. |
+ ----------------------------------------------------------------------------- |
+ Description: |
+ The function permits to configure the output lines of the module. It |
+ can be specified the polarity for the line and for the LED. The |
+ output line source depends on the line as figured out by the |
+ following table: |
+ |
+ +-----------------------------------------------------------+ |
+ ! S O U R C E S E L E C T I O N ! |
+ +--------------+---------------+---------------+------------+ |
+ ! cvVMESignals ! cvCoincidence ! cvMiscSignals ! cvManualSW ! |
+ +---+---+--------------+---------------+---------------+------------+ |
+ ! ! 0 ! DS ! Input Coinc. ! Pulser A ! Manual/SW ! |
+ ! O +---+--------------+---------------+---------------+------------+ |
+ ! U ! 1 ! AS ! Input Coinc. ! Pulser A ! Manual/SW ! |
+ ! T +---+--------------+---------------+---------------+------------+ |
+ ! P ! 2 ! DTACK ! Input Coinc. ! Pulser B ! Manual/SW ! |
+ ! U +---+--------------+---------------+---------------+------------+ |
+ ! T ! 3 ! BERR ! Input Coinc. ! Pulser B ! Manual/SW ! |
+ ! +---+--------------+---------------+---------------+------------+ |
+ ! ! 4 ! LMON ! Input Coinc. ! Scaler end ! Manual/SW ! |
+ +---+---+--------------+---------------+---------------+------------+ |
+*/ |
+CAENVME_API |
+CAENVME_SetOutputConf(int32_t Handle, CVOutputSelect OutSel, CVIOPolarity OutPol, |
+ CVLEDPolarity LEDPol, CVIOSources Source); |
+ |
+/* |
+ CAENVME_SetInputConf |
+ ----------------------------------------------------------------------------- |
+ Parameters: |
+ [in] Handle : The handle that identifies the device. |
+ [in] InSel : The input line to configure (see CVInputSelect enum). |
+ [in] InPol : The input line polarity (see CVIOPolarity enum). |
+ [in] LEDPol : The output LED polarity (see CVLEDPolarity enum). |
+ ----------------------------------------------------------------------------- |
+ Returns: |
+ An error code about the execution of the function. |
+ ----------------------------------------------------------------------------- |
+ Description: |
+ The function permits to configure the input lines of the module. It |
+ ca be specified the polarity for the line and for the LED. |
+*/ |
+CAENVME_API |
+CAENVME_SetInputConf(int32_t Handle, CVInputSelect InSel, CVIOPolarity InPol, |
+ CVLEDPolarity LEDPol); |
+ |
+/* |
+ CAENVME_GetPulserConf |
+ ----------------------------------------------------------------------------- |
+ Parameters: |
+ [in] Handle : The handle that identifies the device. |
+ [in] PulSel : The pulser to configure (see CVPulserSelect enum). |
+ [out] Period : The period of the pulse in time units. |
+ [out] Width : The width of the pulse in time units. |
+ [out] Unit : The time unit for the pulser configuration (see |
+ CVTimeUnits enum). |
+ [out] PulseNo : The number of pulses to generate (0 = infinite). |
+ [out] Start : The source signal to start the pulse burst (see |
+ CVIOSources enum). |
+ [out] Reset : The source signal to stop the pulse burst (see |
+ CVIOSources enum). |
+ ----------------------------------------------------------------------------- |
+ Returns: |
+ An error code about the execution of the function. |
+ ----------------------------------------------------------------------------- |
+ Description: |
+ The function permits to read the configuration of the pulsers. |
+*/ |
+CAENVME_API |
+CAENVME_GetPulserConf(int32_t Handle, CVPulserSelect PulSel, unsigned char *Period, |
+ unsigned char *Width, CVTimeUnits *Unit, unsigned char *PulseNo, |
+ CVIOSources *Start, CVIOSources *Reset); |
+ |
+/* |
+ CAENVME_GetScalerConf |
+ ----------------------------------------------------------------------------- |
+ Parameters: |
+ [in] Handle : The handle that identifies the device. |
+ [out] Limit : The counter limit for the scaler. |
+ [out] AutoReset : The auto reset configuration. |
+ [out] Hit : The source signal for the signal to count (see |
+ CVIOSources enum). |
+ [out] Gate : The source signal for the gate (see CVIOSources enum). |
+ [out] Reset : The source signal to stop the counter (see |
+ CVIOSources enum). |
+ ----------------------------------------------------------------------------- |
+ Returns: |
+ An error code about the execution of the function. |
+ ----------------------------------------------------------------------------- |
+ Description: |
+ The function permits to read the configuration of the scaler. |
+*/ |
+CAENVME_API |
+CAENVME_GetScalerConf(int32_t Handle, short *Limit, short *AutoReset, |
+ CVIOSources *Hit, CVIOSources *Gate, CVIOSources *Reset); |
+ |
+ |
+/* |
+ CAENVME_SetOutputConf |
+ ----------------------------------------------------------------------------- |
+ Parameters: |
+ [in] Handle : The handle that identifies the device. |
+ [in] OutSel : The output line to configure (see CVOutputSelect enum). |
+ [out] OutPol : The output line polarity (see CVIOPolarity enum). |
+ [out] LEDPol : The output LED polarity (see CVLEDPolarity enum). |
+ [out] Source : The source signal to propagate to the output line (see |
+ CVIOSources enum). |
+ ----------------------------------------------------------------------------- |
+ Returns: |
+ An error code about the execution of the function. |
+ ----------------------------------------------------------------------------- |
+ Description: |
+ The function permits to read the configuration of the output lines. |
+*/ |
+CAENVME_API |
+CAENVME_GetOutputConf(int32_t Handle, CVOutputSelect OutSel, CVIOPolarity *OutPol, |
+ CVLEDPolarity *LEDPol, CVIOSources *Source); |
+ |
+/* |
+ CAENVME_SetInputConf |
+ ----------------------------------------------------------------------------- |
+ Parameters: |
+ [in] Handle : The handle that identifies the device. |
+ [in] InSel : The input line to configure (see CVInputSelect enum). |
+ [out] InPol : The input line polarity (see CVIOPolarity enum). |
+ [out] LEDPol : The output LED polarity (see CVLEDPolarity enum). |
+ ----------------------------------------------------------------------------- |
+ Returns: |
+ An error code about the execution of the function. |
+ ----------------------------------------------------------------------------- |
+ Description: |
+ The function permits to read the configuration of the input lines. |
+*/ |
+CAENVME_API |
+CAENVME_GetInputConf(int32_t Handle, CVInputSelect InSel, CVIOPolarity *InPol, |
+ CVLEDPolarity *LEDPol); |
+ |
+/* |
+ CAENVME_ReadRegister |
+ ----------------------------------------------------------------------------- |
+ Parameters: |
+ [in] Handle : The handle that identifies the device. |
+ [in] Reg : The internal register to read (see CVRegisters enum). |
+ [out] Data : The data read from the module. |
+ ----------------------------------------------------------------------------- |
+ Returns: |
+ An error code about the execution of the function. |
+ ----------------------------------------------------------------------------- |
+ Description: |
+ The function permits to read all internal registers. |
+*/ |
+CAENVME_API |
+CAENVME_ReadRegister(int32_t Handle, CVRegisters Reg, unsigned int *Data); |
+ |
+/* |
+ CAENVME_WriteRegister |
+ ----------------------------------------------------------------------------- |
+ Parameters: |
+ [in] Handle : The handle that identifies the device. |
+ [in] Reg : The internal register to read (see CVRegisters enum). |
+ [in] Data : The data to be written to the module. |
+ ----------------------------------------------------------------------------- |
+ Returns: |
+ An error code about the execution of the function. |
+ ----------------------------------------------------------------------------- |
+ Description: |
+ The function permits to write to all internal registers. |
+*/ |
+CAENVME_API |
+CAENVME_WriteRegister(int32_t Handle, CVRegisters Reg, unsigned int Data); |
+ |
+/* |
+ CAENVME_SetOutputRegister |
+ ----------------------------------------------------------------------------- |
+ Parameters: |
+ [in] Handle : The handle that identifies the device. |
+ [in] Mask : The lines to be set. |
+ ----------------------------------------------------------------------------- |
+ Returns: |
+ An error code about the execution of the function. |
+ ----------------------------------------------------------------------------- |
+ Description: |
+ The function sets the lines specified. Refer the CVOutputRegisterBits |
+ enum to compose and decoding the bit mask. |
+*/ |
+CAENVME_API |
+CAENVME_SetOutputRegister(int32_t Handle, unsigned short Mask); |
+ |
+/* |
+ CAENVME_ClearOutputRegister |
+ ----------------------------------------------------------------------------- |
+ Parameters: |
+ [in] Handle : The handle that identifies the device. |
+ [in] Mask : The IRQ lines to be cleared. |
+ ----------------------------------------------------------------------------- |
+ Returns: |
+ An error code about the execution of the function. |
+ ----------------------------------------------------------------------------- |
+ Description: |
+ The function clears the lines specified. Refer the CVOutputRegisterBits |
+ enum to compose and decoding the bit mask. |
+*/ |
+CAENVME_API |
+CAENVME_ClearOutputRegister(int32_t Handle, unsigned short Mask); |
+ |
+/* |
+ CAENVME_PulseOutputRegister |
+ ----------------------------------------------------------------------------- |
+ Parameters: |
+ [in] Handle : The handle that identifies the device. |
+ [in] Mask : The lines to be pulsed. |
+ ----------------------------------------------------------------------------- |
+ Returns: |
+ An error code about the execution of the function. |
+ ----------------------------------------------------------------------------- |
+ Description: |
+ The function produces a pulse with the lines specified by setting and |
+ then clearing them. Refer the CVOutputRegisterBits enum to compose and |
+ decoding the bit mask. |
+*/ |
+CAENVME_API |
+CAENVME_PulseOutputRegister(int32_t Handle, unsigned short Mask); |
+ |
+/* |
+ CAENVME_ReadDisplay |
+ ----------------------------------------------------------------------------- |
+ Parameters: |
+ [in] Handle : The handle that identifies the device. |
+ [out] Value : The values read from the module (see CVDisplay enum). |
+ ----------------------------------------------------------------------------- |
+ Returns: |
+ An error code about the execution of the function. |
+ ----------------------------------------------------------------------------- |
+ Description: |
+ The function reads the VME data display on the front panel of the module. |
+ Refer to the CVDisplay data type definition and comments to decode the |
+ value returned. |
+*/ |
+CAENVME_API |
+CAENVME_ReadDisplay(int32_t Handle, CVDisplay *Value); |
+ |
+/* |
+ CAENVME_SetArbiterType |
+ ----------------------------------------------------------------------------- |
+ Parameters: |
+ [in] Handle : The handle that identifies the device. |
+ [in] Value : The type of VME bus arbitration to implement (see |
+ CVArbiterTypes enum). |
+ ----------------------------------------------------------------------------- |
+ Returns: |
+ An error code about the execution of the function. |
+ ----------------------------------------------------------------------------- |
+ Description: |
+ The function sets the behaviour of the VME bus arbiter on the module. |
+*/ |
+CAENVME_API |
+CAENVME_SetArbiterType(int32_t Handle, CVArbiterTypes Value); |
+ |
+/* |
+ CAENVME_SetRequesterType |
+ ----------------------------------------------------------------------------- |
+ Parameters: |
+ [in] Handle : The handle that identifies the device. |
+ [in] Value : The type of VME bus requester to implement (see |
+ CVRequesterTypes enum). |
+ ----------------------------------------------------------------------------- |
+ Returns: |
+ An error code about the execution of the function. |
+ ----------------------------------------------------------------------------- |
+ Description: |
+ The function sets the behaviour of the VME bus requester on the module. |
+*/ |
+CAENVME_API |
+CAENVME_SetRequesterType(int32_t Handle, CVRequesterTypes Value); |
+ |
+/* |
+ CAENVME_SetReleaseType |
+ ----------------------------------------------------------------------------- |
+ Parameters: |
+ [in] Handle : The handle that identifies the device. |
+ [in] Value : The type of VME bus release policy to implement (see |
+ CVReleaseTypes enum). |
+ ----------------------------------------------------------------------------- |
+ Returns: |
+ An error code about the execution of the function. |
+ ----------------------------------------------------------------------------- |
+ Description: |
+ The function sets the release policy of the VME bus on the module. |
+*/ |
+CAENVME_API |
+CAENVME_SetReleaseType(int32_t Handle, CVReleaseTypes Value); |
+ |
+/* |
+ CAENVME_SetBusReqLevel |
+ ----------------------------------------------------------------------------- |
+ Parameters: |
+ [in] Handle : The handle that identifies the device. |
+ [in] Value : The type of VME bus requester priority level to set |
+ (see CVBusReqLevels enum). |
+ ----------------------------------------------------------------------------- |
+ Returns: |
+ An error code about the execution of the function. |
+ ----------------------------------------------------------------------------- |
+ Description: |
+ The function sets the specified VME bus requester priority level on |
+ the module. |
+*/ |
+CAENVME_API |
+CAENVME_SetBusReqLevel(int32_t Handle, CVBusReqLevels Value); |
+ |
+/* |
+ CAENVME_SetTimeout |
+ ----------------------------------------------------------------------------- |
+ Parameters: |
+ [in] Handle : The handle that identifies the device. |
+ [in] Value : The value of VME bus timeout to set (see |
+ CVVMETimeouts enum). |
+ ----------------------------------------------------------------------------- |
+ Returns: |
+ An error code about the execution of the function. |
+ ----------------------------------------------------------------------------- |
+ Description: |
+ The function sets the specified VME bus timeout on the module. |
+*/ |
+CAENVME_API |
+CAENVME_SetTimeout(int32_t Handle, CVVMETimeouts Value); |
+ |
+/* |
+ CAENVME_SetLocationMonitor |
+ ----------------------------------------------------------------------------- |
+ Parameters: |
+ [in] Handle : The handle that identifies the device. |
+ [in] Address : The addres to be monitored. |
+ [in] Write : Flag to specify read or write cycle types. |
+ [in] Lword : Flag to specify long word cycle type. |
+ [in] Iack : Flag to specify interrupt acknowledge cycle type. |
+ |
+ ----------------------------------------------------------------------------- |
+ Returns: |
+ An error code about the execution of the function. |
+ ----------------------------------------------------------------------------- |
+ Description: |
+ The function sets the Location Monitor. |
+*/ |
+CAENVME_API |
+CAENVME_SetLocationMonitor(int32_t Handle, uint32_t Address, CVAddressModifier Am, |
+ short Write, short Lword, short Iack); |
+/* |
+ CAENVME_SetFIFOMode |
+ ----------------------------------------------------------------------------- |
+ Parameters: |
+ [in] Handle : The handle that identifies the device. |
+ [in] Value : Enable/disable the FIFO mode. |
+ ----------------------------------------------------------------------------- |
+ Returns: |
+ An error code about the execution of the function. |
+ ----------------------------------------------------------------------------- |
+ Description: |
+ The function enables/disables the auto increment of the VME addresses |
+ during the block transfer cycles. With the FIFO mode enabled the |
+ addresses are not incremented. |
+*/ |
+CAENVME_API |
+CAENVME_SetFIFOMode(int32_t Handle, short Value); |
+ |
+/* |
+ CAENVME_GetArbiterType |
+ ----------------------------------------------------------------------------- |
+ Parameters: |
+ [in] Handle : The handle that identifies the device. |
+ [out] Value : The type of VME bus arbitration implemented (see |
+ CVArbiterTypes enum). |
+ ----------------------------------------------------------------------------- |
+ Returns: |
+ An error code about the execution of the function. |
+ ----------------------------------------------------------------------------- |
+ Description: |
+ The function get the type of VME bus arbiter implemented on the module. |
+*/ |
+CAENVME_API |
+CAENVME_GetArbiterType(int32_t Handle, CVArbiterTypes *Value); |
+ |
+/* |
+ CAENVME_GetRequesterType |
+ ----------------------------------------------------------------------------- |
+ Parameters: |
+ [in] Handle : The handle that identifies the device. |
+ [out] Value : The type of VME bus requester implemented (see |
+ CVRequesterTypes enum). |
+ ----------------------------------------------------------------------------- |
+ Returns: |
+ An error code about the execution of the function. |
+ ----------------------------------------------------------------------------- |
+ Description: |
+ The function get the type of VME bus requester implemented on the module. |
+*/ |
+CAENVME_API |
+CAENVME_GetRequesterType(int32_t Handle, CVRequesterTypes *Value); |
+ |
+/* |
+ CAENVME_GetReleaseType |
+ ----------------------------------------------------------------------------- |
+ Parameters: |
+ [in] Handle : The handle that identifies the device. |
+ [out] Value : The type of VME bus release policy implemented (see |
+ CVReleaseTypes enum). |
+ ----------------------------------------------------------------------------- |
+ Returns: |
+ An error code about the execution of the function. |
+ ----------------------------------------------------------------------------- |
+ Description: |
+ The function get the type of VME bus release implemented on the module. |
+*/ |
+CAENVME_API |
+CAENVME_GetReleaseType(int32_t Handle, CVReleaseTypes *Value); |
+ |
+/* |
+ CAENVME_GetBusReqLevel |
+ ----------------------------------------------------------------------------- |
+ Parameters: |
+ [in] Handle : The handle that identifies the device. |
+ [out] Value : The type of VME bus requester priority level (see |
+ CVBusReqLevels enum). |
+ ----------------------------------------------------------------------------- |
+ Returns: |
+ An error code about the execution of the function. |
+ ----------------------------------------------------------------------------- |
+ Description: |
+ The function reads the specified VME bus requester priority level on |
+ the module. |
+*/ |
+CAENVME_API |
+CAENVME_GetBusReqLevel(int32_t Handle, CVBusReqLevels *Value); |
+ |
+/* |
+ CAENVME_GetTimeout |
+ ----------------------------------------------------------------------------- |
+ Parameters: |
+ [in] Handle : The handle that identifies the device. |
+ [out] Value : The value of VME bus timeout (see CVVMETimeouts enum). |
+ ----------------------------------------------------------------------------- |
+ Returns: |
+ An error code about the execution of the function. |
+ ----------------------------------------------------------------------------- |
+ Description: |
+ The function sets the specified VME bus timeout on the module. |
+*/ |
+CAENVME_API |
+CAENVME_GetTimeout(int32_t Handle, CVVMETimeouts *Value); |
+ |
+/* |
+ CAENVME_GetFIFOMode |
+ ----------------------------------------------------------------------------- |
+ Parameters: |
+ [in] Handle : The handle that identifies the device. |
+ [out] Value : The FIFO mode read setting. |
+ ----------------------------------------------------------------------------- |
+ Returns: |
+ An error code about the execution of the function. |
+ ----------------------------------------------------------------------------- |
+ Description: |
+ The function read if the auto increment of the VME addresses during the |
+ block transfer cycles is enabled (0) or disabled (!=0). |
+*/ |
+CAENVME_API |
+CAENVME_GetFIFOMode(int32_t Handle, short *Value); |
+ |
+/* |
+ CAENVME_SystemReset |
+ ----------------------------------------------------------------------------- |
+ Parameters: |
+ [in] Handle : The handle that identifies the device. |
+ ----------------------------------------------------------------------------- |
+ Returns: |
+ An error code about the execution of the function. |
+ ----------------------------------------------------------------------------- |
+ Description: |
+ The function performs a system reset on the module. |
+*/ |
+CAENVME_API |
+CAENVME_SystemReset(int32_t Handle); |
+ |
+/* |
+ CAENVME_ResetScalerCount |
+ ----------------------------------------------------------------------------- |
+ Parameters: |
+ [in] Handle : The handle that identifies the device. |
+ ----------------------------------------------------------------------------- |
+ Returns: |
+ An error code about the execution of the function. |
+ ----------------------------------------------------------------------------- |
+ Description: |
+ The function resets the counter of the scaler.. |
+*/ |
+CAENVME_API |
+CAENVME_ResetScalerCount(int32_t Handle); |
+ |
+/* |
+ CAENVME_EnableScalerGate |
+ ----------------------------------------------------------------------------- |
+ Parameters: |
+ [in] Handle : The handle that identifies the device. |
+ ----------------------------------------------------------------------------- |
+ Returns: |
+ An error code about the execution of the function. |
+ ----------------------------------------------------------------------------- |
+ Description: |
+ The function enables the gate of the scaler. |
+*/ |
+CAENVME_API |
+CAENVME_EnableScalerGate(int32_t Handle); |
+ |
+/* |
+ CAENVME_DisableScalerGate |
+ ----------------------------------------------------------------------------- |
+ Parameters: |
+ [in] Handle : The handle that identifies the device. |
+ ----------------------------------------------------------------------------- |
+ Returns: |
+ An error code about the execution of the function. |
+ ----------------------------------------------------------------------------- |
+ Description: |
+ The function disables the gate of the scaler. |
+*/ |
+CAENVME_API |
+CAENVME_DisableScalerGate(int32_t Handle); |
+ |
+/* |
+ CAENVME_StartPulser |
+ ----------------------------------------------------------------------------- |
+ Parameters: |
+ [in] Handle : The handle that identifies the device. |
+ [in] PulSel : The pulser to configure (see CVPulserSelect enum). |
+ ----------------------------------------------------------------------------- |
+ Returns: |
+ An error code about the execution of the function. |
+ ----------------------------------------------------------------------------- |
+ Description: |
+ The function starts the generation of pulse burst if the specified |
+ pulser is configured for manual/software operation. |
+*/ |
+CAENVME_API |
+CAENVME_StartPulser(int32_t Handle, CVPulserSelect PulSel); |
+ |
+/* |
+ CAENVME_StopPulser |
+ ----------------------------------------------------------------------------- |
+ Parameters: |
+ [in] Handle : The handle that identifies the device. |
+ [in] PulSel : The pulser to configure (see CVPulserSelect enum). |
+ ----------------------------------------------------------------------------- |
+ Returns: |
+ An error code about the execution of the function. |
+ ----------------------------------------------------------------------------- |
+ Description: |
+ The function stops the generation of pulse burst if the specified |
+ pulser is configured for manual/software operation. |
+*/ |
+CAENVME_API |
+CAENVME_StopPulser(int32_t Handle, CVPulserSelect PulSel); |
+ |
+/* |
+ CAENVME_WriteFlashPage |
+ ----------------------------------------------------------------------------- |
+ Parameters: |
+ [in] Handle : The handle that identifies the device. |
+ [in] Data : The data to write. |
+ [in] PageNum : The flash page number to write. |
+ ----------------------------------------------------------------------------- |
+ Returns: |
+ An error code about the execution of the function. |
+ ----------------------------------------------------------------------------- |
+ Description: |
+ The function writes the data into the specified flash page. |
+*/ |
+CAENVME_API |
+CAENVME_WriteFlashPage(int32_t Handle, unsigned char *Data, int PageNum); |
+ |
+/* |
+ CAENVME_ReadFlashPage |
+ ----------------------------------------------------------------------------- |
+ Parameters: |
+ [in] Handle : The handle that identifies the device. |
+ [out] Data : The data to write. |
+ [in] PageNum : The flash page number to write. |
+ ----------------------------------------------------------------------------- |
+ Returns: |
+ An error code about the execution of the function. |
+ ----------------------------------------------------------------------------- |
+ Description: |
+ The function reads the data from the specified flash page. |
+*/ |
+CAENVME_API |
+CAENVME_ReadFlashPage(int32_t Handle, unsigned char *Data, int PageNum); |
+ |
+/* |
+ CAENVME_EraseFlashPage |
+ ----------------------------------------------------------------------------- |
+ Parameters: |
+ [in] Handle : The handle that identifies the device. |
+ [in] PageNum : The flash page number to write. |
+ ----------------------------------------------------------------------------- |
+ Returns: |
+ An error code about the execution of the function. |
+ ----------------------------------------------------------------------------- |
+ Description: |
+ The function erases the specified flash page. |
+*/ |
+CAENVME_API |
+CAENVME_EraseFlashPage(int32_t Handle, int Pagenum); |
+ |
+#ifdef LINUX |
+/* |
+ CAENVME_BLTReadAsync |
+ ----------------------------------------------------------------------------- |
+ Parameters: |
+ [in] Handle : The handle that identifies the device. |
+ [in] Address : The VME bus address. |
+ [out] Buffer : The data read from the VME bus. |
+ [in] Size : The size of the transfer in bytes. |
+ [in] AM : The address modifier (see CVAddressModifier enum). |
+ [in] DW : The data width.(see CVDataWidth enum). |
+ ----------------------------------------------------------------------------- |
+ Returns: |
+ An error code about the execution of the function. |
+ ----------------------------------------------------------------------------- |
+ Description: |
+ The function starts a VME block transfer read cycle. It can be used |
+ to perform MBLT transfers using 64 bit data width. |
+ This function cannot be used with the V1718 USB bridge. |
+ This function can be used only on Linux platforms. |
+ Take care to call the CAENVME_BLTReadWait function before any other |
+ call to a CAENVMElib function with the same handle. |
+*/ |
+CAENVME_API |
+CAENVME_BLTReadAsync(int32_t Handle, uint32_t Address, void *Buffer, |
+ int Size, CVAddressModifier AM, CVDataWidth DW); |
+ |
+/* |
+ CAENVME_BLTReadWait |
+ ----------------------------------------------------------------------------- |
+ Parameters: |
+ [in] Handle : The handle that identifies the device. |
+ [out] Count : The number of bytes transferred. |
+ ----------------------------------------------------------------------------- |
+ Returns: |
+ An error code about the execution of the function. |
+ ----------------------------------------------------------------------------- |
+ Description: |
+ The function wait for the completion of a VME block transfer read |
+ cycle started with the CAENVME_BLTReadAsync function call. |
+ This function cannot be used with the V1718 USB bridge. |
+ This function can be used only on Linux platforms. |
+*/ |
+CAENVME_API |
+CAENVME_BLTReadWait(int32_t Handle, int *Count); |
+ |
+#endif |
+ |
+#ifdef __cplusplus |
+} |
+#endif // __cplusplus |
+ |
+#endif // __CAENVMELIB_H |
Index: CAENV1718/CAENVMEoslib.h |
=================================================================== |
--- CAENV1718/CAENVMEoslib.h (nonexistent) |
+++ CAENV1718/CAENVMEoslib.h (revision 77) |
@@ -0,0 +1,36 @@ |
+/* |
+ ----------------------------------------------------------------------------- |
+ |
+ --- CAEN SpA - Computing Systems Division --- |
+ |
+ ----------------------------------------------------------------------------- |
+ |
+ CAENVMEoslib.h |
+ |
+ ----------------------------------------------------------------------------- |
+ |
+ Author: Stefano Coluccini (s.coluccini@caen.it) |
+ |
+ Created: January 2004 |
+ |
+ ----------------------------------------------------------------------------- |
+*/ |
+ |
+ |
+#ifndef __CAENVMEOSLIB_H |
+#define __CAENVMEOSLIB_H |
+ |
+#ifdef WIN32 |
+ |
+#include <windows.h> |
+#include <winioctl.h> |
+ |
+#define CAENVME_API CVErrorCodes __stdcall |
+ |
+#else // WIN32 |
+ |
+#define CAENVME_API CVErrorCodes |
+ |
+#endif // WIN32 |
+ |
+#endif // __CAENVMEOSLIB_H |
Index: CAENV1718/CAENV1718.c |
=================================================================== |
--- CAENV1718/CAENV1718.c (nonexistent) |
+++ CAENV1718/CAENV1718.c (revision 77) |
@@ -0,0 +1,229 @@ |
+ |
+#include <stdlib.h> |
+#include <stdio.h> |
+#include <stdint.h> |
+ |
+#include <CAENVMElib.h> |
+#include <CAENVMEoslib.h> |
+#include <CAENVMEtypes.h> |
+ |
+ |
+#include "CAENV1718.h" |
+ |
+int32_t CAEN_udev; |
+ |
+int VMEerrors; |
+ |
+int CAEN_VME_start (char* serial) |
+{ |
+ |
+ CVErrorCodes result = CAENVME_Init( cvV1718 , 0 , 0 , &CAEN_udev); |
+ if (result != cvSuccess) { |
+ printf("CAEN1718 Init %s\n", CAENVME_DecodeError(result)); |
+ printf(" Check usb cable, usb udev permissions and restart! Exiting .....\n"); |
+ return (-1); |
+ } |
+ if (serial == NULL) serial = malloc(100*sizeof(char)); |
+ CAENVME_BoardFWRelease(CAEN_udev, serial); |
+ |
+ return result; |
+} |
+ |
+ |
+short CAEN_VME_read(long Handle, unsigned long Address, void *Data, CVAddressModifier AM, CVDataWidth DW) |
+{ |
+ |
+ CVErrorCodes result; |
+ int ncount=0; |
+ while (1){ |
+ result = CAENVME_ReadCycle(Handle, Address, Data, AM, DW ); |
+ if (result !=cvSuccess ) { |
+ VMEerrors++; |
+ printf("%d CAENVME_ReadCycle at 0x%0lX failed! data=0x%0X AM= 0x%0X DW= 0x%0X err=%s\n", ncount,Address, *((uint32_t *) Data),AM,DW, CAENVME_DecodeError(result)); |
+ ncount++; |
+ if (ncount==10) return (result); |
+ } else break; |
+ } |
+ return result; |
+} |
+ |
+int CAEN_VME_BltRead(long Handle, unsigned long Address, void *Data, int size, CVAddressModifier AM, CVDataWidth DW) |
+{ |
+ int count=0; |
+ CVErrorCodes result; |
+ int ncount=0; |
+ |
+ while (1){ |
+ |
+ result = CAENVME_BLTReadCycle(Handle, Address, Data, size, AM, DW , &count); |
+ if (result !=cvSuccess ) { |
+ VMEerrors++; |
+ printf("%d CAENVME_BLTReadCycle at 0x%0lX failed! data=0x%0X AM= 0x%0X DW= 0x%0X err=%s count=%d\n", ncount,Address, *((uint32_t *) Data),AM,DW, CAENVME_DecodeError(result),count); |
+ ncount++; |
+ if (ncount==10) return (result); |
+ } else break; |
+ } |
+ return count; |
+} |
+ |
+short CAEN_VME_write(long Handle, unsigned long Address, void *Data, CVAddressModifier AM, CVDataWidth DW) |
+{ |
+ |
+ CVErrorCodes result; |
+ int ncount=0; |
+ while (1){ |
+ result = CAENVME_WriteCycle(Handle, Address, Data, AM, DW ); |
+ if (result !=cvSuccess ) { |
+ VMEerrors++; |
+ printf("CAENVME_WriteCycle at 0x%0lX failed! data=0x%0X AM= 0x%0X DW= 0x%0X err=%s\n", Address, *((uint32_t *) Data),AM,DW, CAENVME_DecodeError(result)); |
+ if (ncount==10) return (result); |
+ } else break; |
+ } |
+ return result; |
+} |
+ |
+ |
+ |
+ |
+uint32_t *WStackAddrs = NULL; |
+uint32_t *WStackBuffer; |
+short WStackNCycles; |
+short WStackMaxCycles=0xFFFF; |
+CVAddressModifier *WStackAMs; |
+CVDataWidth *WStackDWs; |
+CVErrorCodes *WStackECs; |
+ |
+ |
+uint32_t *RStackAddrs =NULL; |
+short RStackNCycles; |
+short RStackMaxCycles=0xFFFF; |
+CVAddressModifier *RStackAMs; |
+CVDataWidth *RStackDWs; |
+CVErrorCodes *RStackECs; |
+ |
+ |
+ |
+short CAEN_VME_appendread(unsigned long Address, void *Data, CVAddressModifier AM, CVDataWidth DW){ |
+ if (RStackNCycles<RStackMaxCycles){ |
+ RStackAddrs[RStackNCycles] = Address; |
+ RStackAMs[RStackNCycles] = AM; |
+ RStackDWs[RStackNCycles] = DW; |
+ //int i=RStackNCycles; |
+ //printf("AppendRead %d ADDR= 0x%0X AM= 0x%0X DW= 0x%0X \n", i,RStackAddrs[i],RStackAMs[i], RStackDWs[i]); |
+ RStackNCycles++; |
+ } else { |
+ printf("Increase DataBuffer RStackMaxCycles =%d\n", RStackMaxCycles); |
+ } |
+ return RStackNCycles; |
+} |
+ |
+short CAEN_VME_appendwrite(unsigned long Address, void *Data, CVAddressModifier AM, CVDataWidth DW){ |
+ if (WStackNCycles<WStackMaxCycles){ |
+ WStackAddrs[WStackNCycles] = Address; |
+ WStackBuffer[WStackNCycles] = *((uint32_t *) Data); |
+ WStackAMs[WStackNCycles] = AM; |
+ WStackDWs[WStackNCycles] = DW; |
+ WStackNCycles++; |
+ } else { |
+ printf("Increase DataBuffer WStackMaxCycles =%d\n", WStackMaxCycles); |
+ } |
+ return 0; |
+} |
+ |
+short CAEN_VME_MultiReadReset(){ |
+ RStackNCycles=0; |
+ if (RStackAddrs!=NULL) return 0; |
+ RStackAddrs = (uint32_t *) malloc( RStackMaxCycles*sizeof(uint32_t)); |
+ |
+ RStackAMs = (CVAddressModifier *) malloc(RStackMaxCycles*sizeof(CVAddressModifier)); |
+ RStackDWs = (CVDataWidth *) malloc(RStackMaxCycles*sizeof(CVDataWidth)); |
+ RStackECs = (CVErrorCodes *) malloc(RStackMaxCycles*sizeof(CVErrorCodes)); |
+ |
+ return 0; |
+} |
+ |
+short CAEN_VME_MultiWriteReset(){ |
+ WStackNCycles=0; |
+ if (WStackAddrs!=NULL) return 0; |
+ WStackBuffer = (uint32_t *) malloc( WStackMaxCycles*sizeof(uint32_t)); |
+ WStackAddrs = (uint32_t *) malloc( WStackMaxCycles*sizeof(uint32_t)); |
+ WStackAMs = (CVAddressModifier *) malloc(WStackMaxCycles*sizeof(CVAddressModifier)); |
+ WStackDWs = (CVDataWidth *) malloc(WStackMaxCycles*sizeof(CVDataWidth)); |
+ WStackECs = (CVErrorCodes *) malloc(WStackMaxCycles*sizeof(CVErrorCodes)); |
+ |
+ return 0; |
+} |
+ |
+short CAEN_VME_MultiReadExecute(long Handle, uint32_t * Data){ |
+ //printf("len=%d\n",RStackNCycles); |
+ int i=0; |
+ CVErrorCodes result =CAENVME_MultiRead(Handle, RStackAddrs, Data, RStackNCycles, RStackAMs, RStackDWs, RStackECs); |
+ if (result !=cvSuccess ) { |
+ VMEerrors++; |
+ printf("CAENVME_MultiRead at 0x%0X failed! err=%s RStackNCycles=%d\n", RStackAddrs[0], CAENVME_DecodeError(result), RStackNCycles); |
+ for (i=0;i<RStackNCycles;i++){ |
+ if (RStackECs[i]!=cvSuccess ) printf("%d ADDR= 0x%0X AM= 0x%0X DW= 0x%0X failed! err=%s\n", i,RStackAddrs[i],RStackAMs[i], RStackDWs[i], CAENVME_DecodeError(RStackECs[i]) ); |
+ } |
+ exit(result); |
+ } |
+ return RStackNCycles; |
+} |
+ |
+short CAEN_VME_MultiWriteExecute(long Handle){ |
+ int i=0; |
+ CVErrorCodes result =CAENVME_MultiWrite(Handle, WStackAddrs, WStackBuffer, WStackNCycles, WStackAMs, WStackDWs, WStackECs); |
+ if (result !=cvSuccess ) { |
+ printf("CAENVME_MultiWrite at 0x%0X failed! err=%s WStackNCycles=%d\n", WStackAddrs[0], CAENVME_DecodeError(result), WStackNCycles); |
+ |
+ for (i=0;i<WStackNCycles;i++){ |
+ if (WStackECs[i]!=cvSuccess ) |
+ printf("%d ADDR= 0x%0X AM= 0x%0X DW= 0x%0X data= 0x%0X failed! err=%s\n", i,WStackAddrs[i],WStackAMs[i], WStackDWs[i], WStackBuffer[i], CAENVME_DecodeError(WStackECs[i]) ); |
+ } |
+ exit(result); |
+} |
+ return WStackNCycles; |
+} |
+ |
+ |
+short __stdcall CAEN_VME_R( uint16_t AddressModifier, uint16_t DataWidth, uint32_t VME_Address, uint32_t *Data){ |
+ return CAEN_VME_read( CAEN_udev, VME_Address, (void *)Data, AddressModifier, DataWidth); |
+} |
+ |
+short __stdcall CAEN_VME_W( uint16_t AddressModifier, uint16_t DataWidth, uint32_t VME_Address, uint32_t Data){ |
+ return CAEN_VME_write( CAEN_udev, VME_Address, (void *)Data, AddressModifier, DataWidth); |
+} |
+ |
+short __stdcall CAEN_VME_MW( uint16_t AM, uint16_t DW, uint32_t VME_Address, uint32_t Data){ |
+ |
+ return CAEN_VME_appendwrite( VME_Address, &Data ,AM , DW) ; |
+ |
+} |
+short __stdcall CAEN_VME_MWRST( void ){ |
+ |
+ return CAEN_VME_MultiWriteReset(); |
+ |
+} |
+short __stdcall CAEN_VME_MWEXEC( void ){ |
+ |
+ return CAEN_VME_MultiWriteExecute(CAEN_udev); |
+ |
+} |
+ |
+short __stdcall CAEN_VME_MR( uint16_t AM, uint16_t DW, uint32_t VME_Address, uint32_t *Data){ |
+ |
+ return CAEN_VME_appendread( VME_Address, Data ,AM , DW) ; |
+ |
+} |
+short __stdcall CAEN_VME_MRRST( void ){ |
+ |
+ return CAEN_VME_MultiReadReset(); |
+ |
+} |
+short __stdcall CAEN_VME_MREXEC( uint32_t *Data ){ |
+ |
+ return 0; |
+ |
+} |
+ |
+ |
+ |