From: <ro...@us...> - 2012-04-24 17:46:40
|
Revision: 2704 http://nscldaq.svn.sourceforge.net/nscldaq/?rev=2704&view=rev Author: ron-fox Date: 2012-04-24 17:46:29 +0000 (Tue, 24 Apr 2012) Log Message: ----------- Initial wrapping of CVMUSB with swig. Modified Paths: -------------- branches/nextgen-vmusb-userdrivers-feature/usb/vmusb/devices/C785.cpp branches/nextgen-vmusb-userdrivers-feature/usb/vmusb/devices/C830.cpp branches/nextgen-vmusb-userdrivers-feature/usb/vmusb/devices/CCAENChain.cpp branches/nextgen-vmusb-userdrivers-feature/usb/vmusb/devices/CHINP.cpp branches/nextgen-vmusb-userdrivers-feature/usb/vmusb/devices/CMADC32.cpp branches/nextgen-vmusb-userdrivers-feature/usb/vmusb/devices/CMADCScaler.cpp branches/nextgen-vmusb-userdrivers-feature/usb/vmusb/devices/CNADC2530.cpp branches/nextgen-vmusb-userdrivers-feature/usb/vmusb/devices/CPSD.cpp branches/nextgen-vmusb-userdrivers-feature/usb/vmusb/devices/CV1729.cpp branches/nextgen-vmusb-userdrivers-feature/usb/vmusb/devices/CV1x90.cpp branches/nextgen-vmusb-userdrivers-feature/usb/vmusb/devices/CV977.cpp branches/nextgen-vmusb-userdrivers-feature/usb/vmusb/devices/MADC32Registers.h branches/nextgen-vmusb-userdrivers-feature/usb/vmusb/tclserver/CV812.cpp branches/nextgen-vmusb-userdrivers-feature/usb/vmusb/vmusb/CVMUSB.cpp branches/nextgen-vmusb-userdrivers-feature/usb/vmusb/vmusb/CVMUSB.h branches/nextgen-vmusb-userdrivers-feature/usb/vmusb/vmusb/Makefile.am branches/nextgen-vmusb-userdrivers-feature/usb/vmusb/vmusbReadout.xml Modified: branches/nextgen-vmusb-userdrivers-feature/usb/vmusb/devices/C785.cpp =================================================================== --- branches/nextgen-vmusb-userdrivers-feature/usb/vmusb/devices/C785.cpp 2012-04-24 12:54:18 UTC (rev 2703) +++ branches/nextgen-vmusb-userdrivers-feature/usb/vmusb/devices/C785.cpp 2012-04-24 17:46:29 UTC (rev 2704) @@ -43,7 +43,7 @@ // Address modifiers used to access the module: -Const(initamod) CVMUSBReadoutList::a32UserData; +static const uint8_t initamod(CVMUSBReadoutList::a32UserData); Const(readamod) CVMUSBReadoutList::a32PrivBlock; Const(cbltamod) CVMUSBReadoutList::a32PrivBlock; @@ -380,22 +380,22 @@ // flipping the the SOFT.RESET bit in the bit set 1 register. // sett fig 4.12 in the V785 manual. - controller.vmeWrite16(base+BSet1, initamod, 0x80); - controller.vmeWrite16(base+BClear1, initamod, 0x80); + controller.vmeWrite16(base+BSet1, initamod, (uint16_t)0x80); + controller.vmeWrite16(base+BClear1, initamod, (uint16_t)0x80); // turn off multicast and set the mcast address to zero... // this latter because that tries to ensure there's not a collision between // The mcast and rotary base addresses. // - controller.vmeWrite16(base+McastAddr, initamod, 0); - controller.vmeWrite16(base+McastCtl, initamod, 0); + controller.vmeWrite16(base+McastAddr, initamod, (uint16_t)0); + controller.vmeWrite16(base+McastCtl, initamod, (uint16_t)0); // Set the GEOgraphical address of the module. uint16_t geo = getIntegerParameter("-geo"); controller.vmeWrite16(base+GEO, initamod, geo); - controller.vmeWrite16(base+BSet1, initamod, 0x80); - controller.vmeWrite16(base+BClear1, initamod, 0x80); + controller.vmeWrite16(base+BSet1, initamod, (uint16_t)0x80); + controller.vmeWrite16(base+BClear1, initamod, (uint16_t)0x80); // Set the thresholds for the module: // As well as the meaning of the thresholds. @@ -408,10 +408,10 @@ threshold); } if (getBoolParameter("-smallthresholds")) { - controller.vmeWrite16(base+BSet2, initamod, 0x100); // big thresholds. + controller.vmeWrite16(base+BSet2, initamod, (uint16_t)0x100); // big thresholds. } else { - controller.vmeWrite16(base+BClear2, initamod, 0x100); // small thresholds. + controller.vmeWrite16(base+BClear2, initamod, (uint16_t)0x100); // small thresholds. } // Set the interrupt characteristics of the module: @@ -427,7 +427,7 @@ // // controller.vmeWrite16(base+EventTrig, initamod, WhenIRQ); // - controller.vmeWrite16(base+EventTrig, initamod, 1); + controller.vmeWrite16(base+EventTrig, initamod, (uint16_t)1); // Set the fast clear window: @@ -438,10 +438,10 @@ bool supressed = getBoolParameter("-supressrange"); if (!supressed) { // Set means disable checks. - controller.vmeWrite16(base+BSet2, initamod, 0x38); + controller.vmeWrite16(base+BSet2, initamod, (uint16_t)0x38); } else { - controller.vmeWrite16(base+BClear2, initamod, 0x38); + controller.vmeWrite16(base+BClear2, initamod, (uint16_t)0x38); } // If the user chooses to require data even if the module @@ -449,10 +449,10 @@ bool requireData = getBoolParameter("-requiredata"); if (requireData) { - controller.vmeWrite16(base+BSet2, initamod, 0x1000); + controller.vmeWrite16(base+BSet2, initamod, (uint16_t)0x1000); } else { - controller.vmeWrite16(base+BClear2, initamod, 0x1000); + controller.vmeWrite16(base+BClear2, initamod, (uint16_t)0x1000); } // If the module is a 775 write the timerange register. @@ -496,7 +496,7 @@ // All this makes the mask: // 0x24 // - controller.vmeWrite16(base+Control1, initamod, 0x24); + controller.vmeWrite16(base+Control1, initamod, (uint16_t)0x24); Modified: branches/nextgen-vmusb-userdrivers-feature/usb/vmusb/devices/C830.cpp =================================================================== --- branches/nextgen-vmusb-userdrivers-feature/usb/vmusb/devices/C830.cpp 2012-04-24 12:54:18 UTC (rev 2703) +++ branches/nextgen-vmusb-userdrivers-feature/usb/vmusb/devices/C830.cpp 2012-04-24 17:46:29 UTC (rev 2704) @@ -224,7 +224,7 @@ // Reset the module: - controller.vmeWrite16(baseAddress + RESET, configAmod, 0); + controller.vmeWrite16(baseAddress + RESET, configAmod, (uint16_t)0); // Create and build the list to initialize the module completely. Modified: branches/nextgen-vmusb-userdrivers-feature/usb/vmusb/devices/CCAENChain.cpp =================================================================== --- branches/nextgen-vmusb-userdrivers-feature/usb/vmusb/devices/CCAENChain.cpp 2012-04-24 12:54:18 UTC (rev 2703) +++ branches/nextgen-vmusb-userdrivers-feature/usb/vmusb/devices/CCAENChain.cpp 2012-04-24 17:46:29 UTC (rev 2704) @@ -30,8 +30,8 @@ static const unsigned int LongwordsPerModule(36); // Maximum # longwords/module. -static const int cbltamod(CVMUSBReadoutList::a32UserBlock); -static const int mcstamod(CVMUSBReadoutList::a32UserData); +static const uint8_t cbltamod(CVMUSBReadoutList::a32UserBlock); +static const uint8_t mcstamod(CVMUSBReadoutList::a32UserData); static const uint32_t BSET2(0x1032); // Offset to the bit set 2 register. static const uint32_t BCLR2(0x1034); // Offset t the bit clear 2 register. Modified: branches/nextgen-vmusb-userdrivers-feature/usb/vmusb/devices/CHINP.cpp =================================================================== --- branches/nextgen-vmusb-userdrivers-feature/usb/vmusb/devices/CHINP.cpp 2012-04-24 12:54:18 UTC (rev 2703) +++ branches/nextgen-vmusb-userdrivers-feature/usb/vmusb/devices/CHINP.cpp 2012-04-24 17:46:29 UTC (rev 2704) @@ -111,10 +111,10 @@ controller.vmeRead32(base+0x820048, registerAmod, &test2); printf("XLM serial number read from VME addr 0x%x\n",base+0x820048); printf("XLM serial number is 0x%x\n",test2); - controller.vmeWrite32(fpga+FPGA_ABus*4, registerAmod, 0); // turn off glbl_enbl - controller.vmeWrite32(fpga+FPGA_ABus*4, registerAmod, forcereset); // reset the chips - controller.vmeWrite32(fpga+FPGA_enblA*4, registerAmod, 1); // turn on ext enbl - controller.vmeWrite32(fpga+FPGA_ABus*4, registerAmod, glbl_enable); // turn on glbl_enbl + controller.vmeWrite32(fpga+FPGA_ABus*4, registerAmod, (uint32_t)0); // turn off glbl_enbl + controller.vmeWrite32(fpga+FPGA_ABus*4, registerAmod, (uint32_t)forcereset); // reset the chips + controller.vmeWrite32(fpga+FPGA_enblA*4, registerAmod, (uint32_t)1); // turn on ext enbl + controller.vmeWrite32(fpga+FPGA_ABus*4, registerAmod, (uint32_t)glbl_enable); // turn on glbl_enbl CXLM::accessBus(controller, static_cast<uint32_t>(0)); // release bus } Modified: branches/nextgen-vmusb-userdrivers-feature/usb/vmusb/devices/CMADC32.cpp =================================================================== --- branches/nextgen-vmusb-userdrivers-feature/usb/vmusb/devices/CMADC32.cpp 2012-04-24 12:54:18 UTC (rev 2703) +++ branches/nextgen-vmusb-userdrivers-feature/usb/vmusb/devices/CMADC32.cpp 2012-04-24 17:46:29 UTC (rev 2704) @@ -279,10 +279,10 @@ uint32_t base = m_pConfiguration->getUnsignedParameter("-base"); - controller.vmeWrite16(base + Reset, initamod, 1); + controller.vmeWrite16(base + Reset, initamod, (uint16_t)1); sleep(1); - controller.vmeWrite16(base + StartAcq, initamod, 0); - controller.vmeWrite16(base + ReadoutReset, initamod, 1); + controller.vmeWrite16(base + StartAcq, initamod, (uint16_t)0); + controller.vmeWrite16(base + ReadoutReset, initamod, (uint16_t)1); @@ -565,9 +565,9 @@ // program the registers, note that the address registers take only the top 8 bits. - controller.vmeWrite16(base + CbltAddress, initamod, cbltBase >> 24); - controller.vmeWrite16(base + McstAddress, initamod, mcastBase >> 24); - controller.vmeWrite16(base + CbltMcstControl, initamod, controlRegister); + controller.vmeWrite16(base + CbltAddress, initamod, (uint16_t)(cbltBase >> 24)); + controller.vmeWrite16(base + McstAddress, initamod, (uint16_t)(mcastBase >> 24)); + controller.vmeWrite16(base + CbltMcstControl, initamod, (uint16_t)(controlRegister)); } @@ -599,8 +599,8 @@ // Stop acquistiion // ..and clear buffer memory: - controller.vmeWrite16(mcast + StartAcq, initamod, 0); - controller.vmeWrite16(mcast + InitFifo, initamod, 0); + controller.vmeWrite16(mcast + StartAcq, initamod, (uint16_t)0); + controller.vmeWrite16(mcast + InitFifo, initamod, (uint16_t)0); // Set stamping @@ -608,30 +608,30 @@ // Oscillator sources are assumed to already be set. // Reset the timer: - controller.vmeWrite16(mcast + MarkType, initamod, 1); // Show timestamp, not event count. - controller.vmeWrite16(mcast + TimestampReset, initamod, 3); // reset all counter. + controller.vmeWrite16(mcast + MarkType, initamod, (uint16_t)1); // Show timestamp, not event count. + controller.vmeWrite16(mcast + TimestampReset, initamod, (uint16_t)3); // reset all counter. } else { - controller.vmeWrite16(mcast + MarkType, initamod, 0); // Use Eventcounter. - controller.vmeWrite16(mcast + EventCounterReset, initamod, 0); // Reset al event counters. + controller.vmeWrite16(mcast + MarkType, initamod, (uint16_t)0); // Use Eventcounter. + controller.vmeWrite16(mcast + EventCounterReset, initamod, (uint16_t)0); // Reset al event counters. } // Set multievent mode - controller.vmeWrite16(mcast + MultiEvent, initamod, 3); // Multi event mode 3. - controller.vmeWrite16(mcast + IrqThreshold, initamod, irqThreshold); - controller.vmeWrite16(mcast + MaxTransfer, initamod, rdoSize); + controller.vmeWrite16(mcast + MultiEvent, initamod, (uint16_t)3); // Multi event mode 3. + controller.vmeWrite16(mcast + IrqThreshold, initamod, (uint16_t)irqThreshold); + controller.vmeWrite16(mcast + MaxTransfer, initamod, (uint16_t)rdoSize); // Set the IRQ - controller.vmeWrite16(mcast + Vector, initamod, vector); - controller.vmeWrite16(mcast + Ipl, initamod, ipl); - controller.vmeWrite16(mcast + IrqThreshold, initamod, irqThreshold); + controller.vmeWrite16(mcast + Vector, initamod, (uint16_t)vector); + controller.vmeWrite16(mcast + Ipl, initamod, (uint16_t)ipl); + controller.vmeWrite16(mcast + IrqThreshold, initamod, (uint16_t)irqThreshold); // Init the buffer and start data taking. - controller.vmeWrite16(mcast + InitFifo, initamod, 0); - controller.vmeWrite16(mcast + ReadoutReset, initamod, 0); - controller.vmeWrite16(mcast + StartAcq , initamod, 1); + controller.vmeWrite16(mcast + InitFifo, initamod, (uint16_t)0); + controller.vmeWrite16(mcast + ReadoutReset, initamod, (uint16_t)0); + controller.vmeWrite16(mcast + StartAcq , initamod, (uint16_t)1); } Modified: branches/nextgen-vmusb-userdrivers-feature/usb/vmusb/devices/CMADCScaler.cpp =================================================================== --- branches/nextgen-vmusb-userdrivers-feature/usb/vmusb/devices/CMADCScaler.cpp 2012-04-24 12:54:18 UTC (rev 2703) +++ branches/nextgen-vmusb-userdrivers-feature/usb/vmusb/devices/CMADCScaler.cpp 2012-04-24 17:46:29 UTC (rev 2704) @@ -39,7 +39,7 @@ // address modifiers and offsets used: -static const int amod(CVMUSBReadoutList::a32UserData); +static const uint8_t amod(CVMUSBReadoutList::a32UserData); static const int daq_time_lo(0x60a0); static const int daq_time_hi(0x60a2); @@ -110,7 +110,7 @@ { uint32_t base = m_pConfiguration->getUnsignedParameter("-base"); - controller.vmeWrite16(base + time_reset, amod, 2); // Reset the ctr b block. + controller.vmeWrite16(base + time_reset, amod, (uint16_t)2); // Reset the ctr b block. } /*! Add the instructions to the readout list that actually read the module. Modified: branches/nextgen-vmusb-userdrivers-feature/usb/vmusb/devices/CNADC2530.cpp =================================================================== --- branches/nextgen-vmusb-userdrivers-feature/usb/vmusb/devices/CNADC2530.cpp 2012-04-24 12:54:18 UTC (rev 2703) +++ branches/nextgen-vmusb-userdrivers-feature/usb/vmusb/devices/CNADC2530.cpp 2012-04-24 17:46:29 UTC (rev 2704) @@ -72,8 +72,8 @@ // Address modifiers we will use to access the module: -Const(initamod) CVMUSBReadoutList::a24UserData; -Const(readamod) CVMUSBReadoutList::a32UserBlock; +static const uint8_t initamod(CVMUSBReadoutList::a24UserData); +static const uint8_t readamod(CVMUSBReadoutList::a32UserBlock); // Parameter limits: @@ -306,12 +306,12 @@ // Disable the module and set its counters to something reasonable. - controller.vmeWrite16(csr + REG_CSR, initamod, CSR_RESET | CSR_CLTS); + controller.vmeWrite16(csr + REG_CSR, initamod, (uint16_t)(CSR_RESET | CSR_CLTS)); controller.vmeWrite16(csr + REG_MEM, initamod, listRegister); - controller.vmeWrite16(csr + REG_LISTWL, initamod, 0); // offset where data will be put. - controller.vmeWrite16(csr + REG_LISTWH, initamod, 0); - controller.vmeWrite16(csr + REG_EVENTSL, initamod, 0); // Events acquired counter. - controller.vmeWrite16(csr + REG_EVENTSH, initamod, 0); + controller.vmeWrite16(csr + REG_LISTWL, initamod, (uint16_t)0); // offset where data will be put. + controller.vmeWrite16(csr + REG_LISTWH, initamod, (uint16_t)0); + controller.vmeWrite16(csr + REG_EVENTSL, initamod, (uint16_t)0); // Events acquired counter. + controller.vmeWrite16(csr + REG_EVENTSH, initamod, (uint16_t)0); @@ -323,11 +323,11 @@ double hld = m_pConfiguration->getFloatParameter("-hld"); bool zerosuppress = m_pConfiguration->getBoolParameter("-zerosuppress"); - controller.vmeWrite16(csr + REG_VECTOR, initamod, vector); - controller.vmeWrite16(csr + REG_EVENTSREQ, initamod, events - 1); // IRQ when > than this + controller.vmeWrite16(csr + REG_VECTOR, initamod, (uint16_t)vector); + controller.vmeWrite16(csr + REG_EVENTSREQ, initamod, (uint16_t)(events - 1)); // IRQ when > than this controller.vmeWrite16(csr + REG_LLD, initamod, lldToRegister(lld)); controller.vmeWrite16(csr + REG_HLD, initamod, hldToRegister(hld)); - controller.vmeWrite16(csr + REG_FULLNESS, initamod, 0); + controller.vmeWrite16(csr + REG_FULLNESS, initamod, (uint16_t)0); // Figure out the CSR value based on the IPL etc, and set it.. which enables the module. Modified: branches/nextgen-vmusb-userdrivers-feature/usb/vmusb/devices/CPSD.cpp =================================================================== --- branches/nextgen-vmusb-userdrivers-feature/usb/vmusb/devices/CPSD.cpp 2012-04-24 12:54:18 UTC (rev 2703) +++ branches/nextgen-vmusb-userdrivers-feature/usb/vmusb/devices/CPSD.cpp 2012-04-24 17:46:29 UTC (rev 2704) @@ -112,12 +112,12 @@ controller.vmeRead32(base+0x820048, registerAmod, &test2); printf("XLM serial number read from VME addr 0x%x\n",base+0x820048); printf("XLM serial number is 0x%x\n",test2); - controller.vmeWrite32(fpga+FPGA_ABus*4, registerAmod, 0); // turn off glbl_enbl - controller.vmeWrite32(fpga+FPGA_ABus*4, registerAmod, forcereset); // reset the chips - controller.vmeWrite32(fpga+FPGA_enblA*4, registerAmod, 1); // turn on ext enbl - controller.vmeWrite32(fpga+FPGA_ABus*4, registerAmod, glbl_enable); // turn on glbl_enbl + controller.vmeWrite32(fpga+FPGA_ABus*4, registerAmod, (uint32_t)0); // turn off glbl_enbl + controller.vmeWrite32(fpga+FPGA_ABus*4, registerAmod, (uint32_t)forcereset); // reset the chips + controller.vmeWrite32(fpga+FPGA_enblA*4, registerAmod, (uint32_t)1); // turn on ext enbl + controller.vmeWrite32(fpga+FPGA_ABus*4, registerAmod, (uint32_t)glbl_enable); // turn on glbl_enbl // now set XLM to Unified readout mode, without internal ADC - controller.vmeWrite32(fpga+ReadoutMode*4, registerAmod, 1); // ADC off, Unified On + controller.vmeWrite32(fpga+ReadoutMode*4, registerAmod, (uint32_t)1); // ADC off, Unified On CXLM::accessBus(controller, static_cast<uint32_t>(0)); // release bus Modified: branches/nextgen-vmusb-userdrivers-feature/usb/vmusb/devices/CV1729.cpp =================================================================== --- branches/nextgen-vmusb-userdrivers-feature/usb/vmusb/devices/CV1729.cpp 2012-04-24 12:54:18 UTC (rev 2703) +++ branches/nextgen-vmusb-userdrivers-feature/usb/vmusb/devices/CV1729.cpp 2012-04-24 17:46:29 UTC (rev 2704) @@ -263,7 +263,7 @@ { uint32_t base = m_pConfiguration->getUnsignedParameter("-base"); // module base address. - controller.vmeWrite32(base+RESET, setupAmod, 0); // Reset board. + controller.vmeWrite32(base+RESET, setupAmod, (uint32_t)0); // Reset board. usleep(500); // Wait a bit to ensure it complete. // After reset is done all of the parameters can be set by list operations: @@ -346,7 +346,7 @@ // start data taking: - controller.vmeWrite32(base + STARTACQ, setupAmod, 0); + controller.vmeWrite32(base + STARTACQ, setupAmod, (uint32_t)0); } /** Modified: branches/nextgen-vmusb-userdrivers-feature/usb/vmusb/devices/CV1x90.cpp =================================================================== --- branches/nextgen-vmusb-userdrivers-feature/usb/vmusb/devices/CV1x90.cpp 2012-04-24 12:54:18 UTC (rev 2703) +++ branches/nextgen-vmusb-userdrivers-feature/usb/vmusb/devices/CV1x90.cpp 2012-04-24 17:46:29 UTC (rev 2704) @@ -48,8 +48,8 @@ #define Const(name) static const int name = -Const(initamod) CVMUSBReadoutList::a32UserData; -Const(readamod) CVMUSBReadoutList::a32UserBlock; +static const uint8_t initamod(CVMUSBReadoutList::a32UserData); +static const uint8_t readamod(CVMUSBReadoutList::a32UserBlock); /////////////////////////////////////////////////////////////////////////////////////////// @@ -289,7 +289,7 @@ // Reset the module, - controller.vmeWrite16(base + CCAENV1x90Registers::WReset, initamod, 0); + controller.vmeWrite16(base + CCAENV1x90Registers::WReset, initamod, (uint16_t)0); WaitMicro(controller, base); usleep(1000); // Wait another msec just in case. WaitMicro(controller,base); // ..and wait for the micro to be ready. @@ -530,7 +530,7 @@ CCAENV1x90Opcodes::SET_ADJUST_CH | channel, &value, 1); } - controller.vmeWrite16(base + CCAENV1x90Registers::WClear, initamod, 0); // Clear pending events. + controller.vmeWrite16(base + CCAENV1x90Registers::WClear, initamod, (uint16_t)0); // Clear pending events. } /*! Modified: branches/nextgen-vmusb-userdrivers-feature/usb/vmusb/devices/CV977.cpp =================================================================== --- branches/nextgen-vmusb-userdrivers-feature/usb/vmusb/devices/CV977.cpp 2012-04-24 12:54:18 UTC (rev 2703) +++ branches/nextgen-vmusb-userdrivers-feature/usb/vmusb/devices/CV977.cpp 2012-04-24 17:46:29 UTC (rev 2704) @@ -47,7 +47,7 @@ // Address modifiers: -Const(amod)CVMUSBReadoutList::a32UserData; // for all accesses. +static const uint8_t amod(CVMUSBReadoutList::a32UserData); // for all accesses. // Register map (relative to the base address: @@ -213,7 +213,7 @@ // the initialization list: uint32_t base = m_pConfiguration->getIntegerParameter("-base"); - controller.vmeWrite16(base + Reset, amod, 0xffff); + controller.vmeWrite16(base + Reset, amod, (uint16_t)0xffff); // Get the rest of the parameters: Modified: branches/nextgen-vmusb-userdrivers-feature/usb/vmusb/devices/MADC32Registers.h =================================================================== --- branches/nextgen-vmusb-userdrivers-feature/usb/vmusb/devices/MADC32Registers.h 2012-04-24 12:54:18 UTC (rev 2703) +++ branches/nextgen-vmusb-userdrivers-feature/usb/vmusb/devices/MADC32Registers.h 2012-04-24 17:46:29 UTC (rev 2704) @@ -26,12 +26,13 @@ // The address modifiers that will be used to access the module: -Const(initamod) CVMUSBReadoutList::a32UserData; // setup using user data access. -Const(readamod) CVMUSBReadoutList::a32UserBlock; // Read in block mode. -static const int cbltamod(CVMUSBReadoutList::a32UserBlock); -static const int mcstamod(CVMUSBReadoutList::a32UserData); +static const uint8_t initamod(CVMUSBReadoutList::a32UserData); // setup using user data access. +static const uint8_t readamod(CVMUSBReadoutList::a32UserBlock); // Read in block mode. +static const uint8_t cbltamod(CVMUSBReadoutList::a32UserBlock); +static const uint8_t mcstamod(CVMUSBReadoutList::a32UserData); + // Module address map; for the most part I'm only defining the registers // we'll actually use. Modified: branches/nextgen-vmusb-userdrivers-feature/usb/vmusb/tclserver/CV812.cpp =================================================================== --- branches/nextgen-vmusb-userdrivers-feature/usb/vmusb/tclserver/CV812.cpp 2012-04-24 12:54:18 UTC (rev 2703) +++ branches/nextgen-vmusb-userdrivers-feature/usb/vmusb/tclserver/CV812.cpp 2012-04-24 17:46:29 UTC (rev 2704) @@ -229,7 +229,7 @@ for (int i=0; i < 16; i++) { vme.vmeWrite16(baseAddress + Thresholds + (i*sizeof(uint16_t)), am, - -m_thresholds[i]); + (uint16_t)-m_thresholds[i]); } for (int i =0; i < 2; i++) { vme.vmeWrite16(baseAddress + Widths + (i*sizeof(uint16_t)), Modified: branches/nextgen-vmusb-userdrivers-feature/usb/vmusb/vmusb/CVMUSB.cpp =================================================================== --- branches/nextgen-vmusb-userdrivers-feature/usb/vmusb/vmusb/CVMUSB.cpp 2012-04-24 12:54:18 UTC (rev 2703) +++ branches/nextgen-vmusb-userdrivers-feature/usb/vmusb/vmusb/CVMUSB.cpp 2012-04-24 17:46:29 UTC (rev 2704) @@ -278,7 +278,7 @@ \retval The value of the firmware Id register. */ -uint32_t +int CVMUSB::readFirmwareID() { return readRegister(FIDRegister); @@ -302,7 +302,7 @@ \return uint16_t \retval the value of the register. */ -uint16_t +int CVMUSB::readGlobalMode() { return static_cast<uint16_t>(readRegister(GMODERegister)); @@ -355,7 +355,7 @@ \return uint32_t \retval The current value of the LED source register. */ -uint32_t +int CVMUSB::readLEDSource() { return readRegister(LEDSrcRegister); @@ -384,7 +384,7 @@ \return uint32_t \retval current value of the register. */ -uint32_t +int CVMUSB::readDeviceSource() { return readRegister(DEVSrcRegister); @@ -514,7 +514,7 @@ \throw string - if thwhich is illegal. */ -uint32_t +int CVMUSB::readVector(int which) { unsigned int regno = whichToISV(which); @@ -555,7 +555,7 @@ @return uint8_t @retval contents of the mask register. */; -uint8_t +int CVMUSB::readIrqMask() { // Since the interrupt mask register appears cleverly crafted so that you @@ -582,7 +582,7 @@ /*! Read the bulk transfer setup register. */ -uint32_t +int CVMUSB::readBulkXferSetup() { return readRegister(USBSetup); Modified: branches/nextgen-vmusb-userdrivers-feature/usb/vmusb/vmusb/CVMUSB.h =================================================================== --- branches/nextgen-vmusb-userdrivers-feature/usb/vmusb/vmusb/CVMUSB.h 2012-04-24 12:54:18 UTC (rev 2703) +++ branches/nextgen-vmusb-userdrivers-feature/usb/vmusb/vmusb/CVMUSB.h 2012-04-24 17:46:29 UTC (rev 2704) @@ -15,6 +15,17 @@ */ +#ifdef SWIG +#ifndef _FLATTEN_NESTED_CLASSES +#define _FLATTEN_NESTED_CLASSES +#endif +%module CVMUSB +%{ +#define _FLATTEN_NESTED_CLASSES +#include <CVMUSB.h> +%} +#endif + #ifndef __CVMUSB_H #define __CVMUSB_H @@ -71,6 +82,12 @@ The class is instantiated on a usb_device. The list of usb_devices that correspond to VM-USB's is gotten via a call to the static function CVMUSB::enumerate(). + + Note some methods are added to make the SWIG wrappers usable for + tcl. These are needed because SWIG does not follow typedefs so uint32_t and int are different + even if they are the same. These additional methods are marked with a SWIG comment...and are all + inline. + */ class CVMUSB @@ -110,20 +127,41 @@ // Register I/O operations. public: void writeActionRegister(uint16_t value); + void writeActionRegister(int value) { // SWIG + writeActionRegister((int16_t)value); + } - uint32_t readFirmwareID(); + int readFirmwareID(); void writeGlobalMode(uint16_t value); - uint16_t readGlobalMode(); + int readGlobalMode(); + void writeGlobalMode(int value) { // SWIG + writeGlobalMode((uint16_t) value); + } + + + + void writeDAQSettings(uint32_t value); uint32_t readDAQSettings(); + void writeDAQSettings(int value) { // SWIG + writeDAQSettings((uint32_t) value); + } - void writeLEDSource(uint32_t value); - uint32_t readLEDSource(); + + void writeLEDSource(uint32_t value); + int readLEDSource(); + void writeLEDSource(int value) { // SWIG + writeLEDSource((uint32_t)value); + } + void writeDeviceSource(uint32_t value); - uint32_t readDeviceSource(); + int readDeviceSource(); + void writeDeviceSource(int value) { // SWIG + writeDeviceSource((uint32_t)value); + } void writeDGG_A(uint32_t value); uint32_t readDGG_A(); @@ -139,14 +177,22 @@ void writeVector(int which, uint32_t value); - uint32_t readVector(int which); + int readVector(int which); + void writeVector(int which, int value) { // SWIG + writeVector(which, (uint32_t)value); + } - void writeIrqMask(uint8_t mask); - uint8_t readIrqMask(); + int readIrqMask(); + void writeIrqMask(int mask) { // SWIG + writeIrqMask((int)mask); + } void writeBulkXferSetup(uint32_t value); - uint32_t readBulkXferSetup(); + int readBulkXferSetup(); + void writeBulkXferSetup(int value) { // SWIG + writeBulkXferSetup((uint32_t)value); + } @@ -155,29 +201,79 @@ int vmeWrite32(uint32_t address, uint8_t aModifier, uint32_t data); int vmeRead32(uint32_t address, uint8_t aModifier, uint32_t* data); + int vmeWrite32(int address, int amodifier, int data) { // SWIG + return vmeWrite32((uint32_t)address, (uint8_t)amodifier, (uint32_t)data); + } + int vmeRead32(int address, int amodifier, int* data) { // SWIG + return vmeRead32((uint32_t)address, (uint8_t)amodifier, (uint32_t*)data); + } + int vmeWrite16(uint32_t address, uint8_t aModifier, uint16_t data); int vmeRead16(uint32_t address, uint8_t aModifier, uint16_t* data); + int vmeWrite16(int address, int amodifier, int data) { // SWIG + return vmeWrite16((uint32_t)address, (uint8_t)amodifier, (uint16_t)data); + } + int vmeRead16(int address,int amodifier, int* data) { // SWIG + return vmeRead16((uint32_t)address, (uint8_t)amodifier, (uint16_t*)data); + } int vmeWrite8(uint32_t address, uint8_t aModifier, uint8_t data); int vmeRead8(uint32_t address, uint8_t aModifier, uint8_t* data); - - + int vmeWrite8(int address, int amodifier, int data) { // SWIG + return vmeWrite8((uint32_t)address, (uint8_t)amodifier, (uint8_t)data); + } + int vmeRead8(int address, int amodifier, int* data) { // SWIG + return vmeRead8((uint32_t)address, (uint8_t)amodifier, (uint8_t*)data); + } int vmeBlockRead(uint32_t baseAddress, uint8_t aModifier, void* data, size_t transferCount, size_t* countTransferred); int vmeFifoRead(uint32_t address, int8_t aModifier, - void* data, size_t transferCount, size_t* countTransferred); + void* data, size_t transferCount, size_t* countTransferred); + int vmeBlockRead(int base, int amod, int* data, int xfercount, int* xferred) { // SWIG + return vmeBlockRead((uint32_t)base, (uint8_t)amod, (void*)data, + (size_t)xfercount, (size_t*)xferred); + } + int vmeFifoRead(int base, int amod, int* data, int xfercount, int* xferred) { // SWIG + return vmeFifoRead((uint32_t)base, (uint8_t)amod, (void*)data, + (size_t)xfercount, (size_t*)xferred); + } + // Support for immediate counted VME variable block transfer operations: // See comments prior to CVMEReadoutList::addBlockCountMask int vmeReadBlockCount8(uint32_t address, uint32_t mask, uint8_t amod); int vmeReadBlockCount16(uint32_t address, uint32_t mask, uint8_t amod); int vmeReadBlockCount32(uint32_t address, uint32_t mask, uint8_t amod); + int vmeReadBlockCount8(int address, int mask, int amod) { // SWIG + return vmeReadBlockCount8((uint32_t)address, (uint32_t)mask, (uint8_t)amod); + } + int vmeReadBlockCount16(int address, int mask, int amod) { // SWIG + return vmeReadBlockCount16((uint32_t)address, (uint32_t)mask, (uint8_t)amod); + } + int vmeReadBlockCount32(int address, int mask, int amod) { // SWIG + return vmeReadBlockCount32((uint32_t)address, (uint32_t)mask, (uint8_t)amod); + } + int vmeVariableBlockRead(uint32_t address, uint8_t amod, void* data, size_t maxCount, size_t* countTransferred); int vmeVariableFifoRead(uint32_t address, uint8_t amod, void* data, size_t maxCount, size_t* countTransferred); + int vmeVariableBlockRead( + int address, int amod, int* data, int maxCount, int* transferred + ) { // SWIG + return vmeVariableBlockRead((uint32_t)address, (uint8_t)amod, (void*)data, + (size_t)maxCount, (size_t*)transferred); + } + int vmeVariableFifoRead( + int address, int amod, int* data, int maxcount, int* transferred + ) { // SWIG + return vmeVariableFifoRead( + (uint32_t)address, (uint8_t)amod, (void*)data, (size_t)maxcount, + (size_t*)transferred); + } + // List operations. @@ -204,7 +300,9 @@ // Register bit definintions. public: +#ifndef _FLATTEN_NESTED_CLASSES class RegisterOffsets { +#endif static const unsigned int FIDRegister = (0); // Firmware id. static const unsigned int GMODERegister = (4); // Global mode register. static const unsigned int DAQSetRegister = (8); // DAQ settings register. @@ -223,10 +321,12 @@ static const unsigned int USBSetup = (0x3c); // USB Bulk transfer setup. static const unsigned int USBVHIGH1 = (0x40); // High bits of ISV12/34. static const unsigned int USBVHIGH2 = (0x44); // High bits of ISV56/78. - +#ifndef _FLATTEN_NESTED_CLASSES }; - +#endif +#ifndef _FLATTEN_NESTED_CLASSES class ActionRegister { // e.g. CVMUSB::ActionRegister::startDAQ is a bit. +#endif public: static const uint16_t startDAQ = 1; static const uint16_t usbTrigger = 2; @@ -241,9 +341,12 @@ static const uint16_t triggerL5 = 0x2000; static const uint16_t triggerL6 = 0x4000; static const uint16_t triggerL7 = 0x8000; +#ifndef _FLATTEN_NESTED_CLASSES + }; - + class FirmwareRegister { +#endif public: static const uint32_t minorRevMask = 0x000000ff; static const uint32_t minorRevShift = 0; @@ -262,9 +365,12 @@ static const uint32_t monthMask = 0xf0000000; static const uint32_t monthshift = 27; +#ifndef _FLATTEN_NESTED_CLASSES }; - +#endif +#ifndef _FLATTEN_NESTED_CLASSES class GlobalModeRegister { +#endif public: static const uint16_t bufferLenMask = 0xf; static const uint16_t bufferLenShift = 0; @@ -287,8 +393,12 @@ static const uint16_t flushScalers = 0x200; static const uint16_t busReqLevelMask = 0x7000; static const uint16_t busReqLevelShift = 12; +#ifndef _FLATTEN_NESTED_CLASSES }; +#endif +#ifndef _FLATTEN_NESTED_CLASSES class DAQSettingsRegister { +#endif public: static const uint32_t readoutTriggerDelayMask = 0xff; static const uint32_t readoutTriggerDelayShift = 0; @@ -298,8 +408,10 @@ static const uint32_t scalerReadoutFrequenyMask = 0xffff0000; static const uint32_t scalerReadoutFrequencyShift = 16; +#ifndef _FLATTEN_NESTED_CLASSES }; class LedSourceRegister { +#endif public: // Top yellow led: @@ -352,8 +464,10 @@ static const uint32_t bottomYellowBusGranted = (7 << 24); static const uint32_t bottomYellowInvert = (8 << 24); static const uint32_t bottomYellowLatch = (0x10 << 24); +#ifndef _FLATTEN_NESTED_CLASSES }; class DeviceSourceRegister { +#endif public: static const uint32_t nimO1Busy = 0; static const uint32_t nimO1Trigger = 1; @@ -407,31 +521,34 @@ static const uint32_t dggBUsbTrigger = (5 << 28); static const uint32_t dggBPulser = (6 << 28); - +#ifndef _FLATTEN_NESTED_CLASSES }; class DGGAndPulserRegister { +#endif public: static const uint32_t dggFineDelayMask = 0xffff; static const uint32_t dggFineDelayShift = 0; static const uint32_t dggGateWidthMask = 0xffff0000; static const uint32_t dggGateWidthShift = 16; - +#ifndef _FLATTEN_NESTED_CLASSES }; class DGGCoarseRegister { +#endif public: static const uint32_t ACoarseMask = 0xffff; static const uint32_t ACoarseShift = 0; static const uint32_t BCoarseMask = 0xffff0000; static const uint32_t BCoarseShift = 16; - +#ifndef _FLATTEN_NESTED_CLASSES }; // There are two vectors per register called A/B in this set of class ISVRegister { +#endif public: static const uint32_t AVectorMask = 0xff; static const uint32_t AVectorShift = 0; @@ -446,17 +563,20 @@ static const uint32_t BIPLShift = 24; static const uint32_t BStackIDMask = 0x70000000; static const uint32_t BStackIDShift = 28; +#ifndef _FLATTEN_NESTED_CLASSES }; class TransferSetupRegister { +#endif public: static const uint32_t multiBufferCountMask = 0xff; static const uint32_t multiBufferCountShift = 0; static const uint32_t timeoutMask = 0xf00; static const uint32_t timeoutShift = 8; - +#ifndef _FLATTEN_NESTED_CLASSES }; +#endif // Local functions: private: int transaction(void* writePacket, size_t writeSize, Modified: branches/nextgen-vmusb-userdrivers-feature/usb/vmusb/vmusb/Makefile.am =================================================================== --- branches/nextgen-vmusb-userdrivers-feature/usb/vmusb/vmusb/Makefile.am 2012-04-24 12:54:18 UTC (rev 2703) +++ branches/nextgen-vmusb-userdrivers-feature/usb/vmusb/vmusb/Makefile.am 2012-04-24 17:46:29 UTC (rev 2704) @@ -1,6 +1,8 @@ -lib_LTLIBRARIES = libVMUSB.la libVMUSBRemote.la +lib_LTLIBRARIES = libVMUSB.la libVMUSBRemote.la libCVMUSB.la + libVMUSB_la_SOURCES = CVMUSB.cpp CVMUSBReadoutList.cpp + libVMUSBRemote_la_SOURCES = CVMUSBReadoutList.cpp \ CVMUSBRemote.cpp \ CSocket.cpp \ @@ -58,4 +60,14 @@ # Stuff that needs to go int the distro: -EXTRA_DIST = $(TEST_MODULES) \ No newline at end of file +EXTRA_DIST = $(TEST_MODULES) + +# Swig interface generation: + +libCVMUSB_la_SOURCES = CVMUSB_wrap.cxx +libCVMUSB_la_LIBADD = libVMUSB.la @THREADLD_FLAGS@ + +BUILT_SOURCES=CVMUSB_wrap.cxx + +CVMUSB_wrap.cxx: CVMUSB.h + swig -c++ -debug-classes -tcl -namespace -pkgversion 1.0 CVMUSB.h \ No newline at end of file Modified: branches/nextgen-vmusb-userdrivers-feature/usb/vmusb/vmusbReadout.xml =================================================================== --- branches/nextgen-vmusb-userdrivers-feature/usb/vmusb/vmusbReadout.xml 2012-04-24 12:54:18 UTC (rev 2703) +++ branches/nextgen-vmusb-userdrivers-feature/usb/vmusb/vmusbReadout.xml 2012-04-24 17:46:29 UTC (rev 2704) @@ -272,7 +272,7 @@ the configuration script is sourced. </para> <example> - <title>Using a user ritten VMUSB driver</title> + <title>Using a user written VMUSB driver</title> <programlisting> set here [file nativename [file dirname [info script]]] load [file join $here libtemplatedriver.so] This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |