From: <ro...@us...> - 2008-07-18 18:32:03
|
Revision: 1929 http://nscldaq.svn.sourceforge.net/nscldaq/?rev=1929&view=rev Author: ron-fox Date: 2008-07-18 18:32:10 +0000 (Fri, 18 Jul 2008) Log Message: ----------- Good compilation on MADC support as a scaler module. Modified Paths: -------------- trunk/nextgen/usb/vmusb/deviceDriver/Makefile.am Added Paths: ----------- trunk/nextgen/usb/vmusb/deviceDriver/CMADCScaler.cpp trunk/nextgen/usb/vmusb/deviceDriver/CMADCScaler.h Added: trunk/nextgen/usb/vmusb/deviceDriver/CMADCScaler.cpp =================================================================== --- trunk/nextgen/usb/vmusb/deviceDriver/CMADCScaler.cpp (rev 0) +++ trunk/nextgen/usb/vmusb/deviceDriver/CMADCScaler.cpp 2008-07-18 18:32:10 UTC (rev 1929) @@ -0,0 +1,115 @@ +/* + This software is Copyright by the Board of Trustees of Michigan + State University (c) Copyright 2005. + + You may use this software under the terms of the GNU public license + (GPL). The terms of this license are described at: + + http://www.gnu.org/licenses/gpl.txt + + Author: + Ron Fox + NSCL + Michigan State University + East Lansing, MI 48824-1321 +*/ + +#include <config.h> +#include "CMADCScaler.h" +#include <CItemConfiguration.h> +#include <CVMUSB.h> +#include <CVMUSBReadoutList.h> + +#include <tcl.h> + +#include <assert.h> +#include <stdlib.h> +#include <stdio.h> + +#include <string> +#include <vector> +#include <set> + +using namespace std; + + +/////////////////////////////////////////////////////////////////////////////// +// Local constants: + + +// address modifiers and offsets used: + +static const int amod(CVMUSBReadoutList::a32UserData); + +static const int daq_time_lo(0x60a0); +static const int daq_time_hi(0x60a2); + +static const int time_0(0x60a8); +static const int time_1(0x60aa); + +static const int time_reset(0x60ae); + + + + +////////////////////////////////////////////////////////////////////////// +// object operations. + +/*! + Attach a module to its configuration. + Define the configuration parameters that we will accept: + + \param configuration - reference to the module's configuration object. +*/ +void +CMADCScaler::onAttach() +{ + + m_pConfiguration->addParameter("-base", CItemConfiguration::isInteger, + NULL, "0"); + +} +/*! + To initialize the module, we just need to reset the times: + + \param controller - the object that connects us to the VM-USB. + +*/ +void +CMADCScaler::Initialize(CVMUSB& controller) +{ + uint32_t base = m_pConfiguration->getUnsignedParameter("-base"); + + controller.vmeWrite16(base + time_reset, amod, 0); +} +/*! + Add the instructions to the readout list that actually read the module. + + \param list - The readout list being built up. +*/ +void +CMADCScaler::addReadoutList(CVMUSBReadoutList& list) +{ + int base = m_pConfiguration->getUnsignedParameter("-base"); + + list.addRead16(base + daq_time_lo, amod); + list.addRead16(base + daq_time_hi, amod); + + list.addRead16(base + time_0, amod); + list.addRead16(base + time_1, amod); + + // reset the time for incremental scalers.... + + list.addWrite16(base+time_reset, amod, 0); + +} + +/*! + Provide the virtual constructor clone method: + +*/ +CVMUSBConfigurableObject* +CMADCScaler::clone() const +{ + return new CMADCScaler(*this); +} Added: trunk/nextgen/usb/vmusb/deviceDriver/CMADCScaler.h =================================================================== --- trunk/nextgen/usb/vmusb/deviceDriver/CMADCScaler.h (rev 0) +++ trunk/nextgen/usb/vmusb/deviceDriver/CMADCScaler.h 2008-07-18 18:32:10 UTC (rev 1929) @@ -0,0 +1,86 @@ +/* + This software is Copyright by the Board of Trustees of Michigan + State University (c) Copyright 2005. + + You may use this software under the terms of the GNU public license + (GPL). The terms of this license are described at: + + http://www.gnu.org/licenses/gpl.txt + + Author: + Ron Fox + NSCL + Michigan State University + East Lansing, MI 48824-1321 +*/ +#ifndef __CMADCSCALER_H +#define __CMADCSCALER_h + + +#ifndef __CVMEUSBCONFIGURABLEOBJECT_H +#include "CVMUSBConfigurableObject.h" +#endif + +#ifndef __CRT_STDINT_H +#include <stdint.h> +#ifndef __CRT_STDINT_H +#define __CRT_STDINT_H +#endif +#endif + +#ifndef __STL_STRING +#include <string> +#ifndef __STL_STRING +#define __STL_STRING +#endif +#endif + +#ifndef __STL_VECTOR +#include <vector> +#ifndef __STL_VECTOR +#define __STL_VECTOR +#endif +#endif + + +// Forward class definitions: + + +class CVMUSB; +class CVMUSBReadoutList; + +/*! + This module provides support for a 'scaler' that reads two of the time + counters in an MADC32 module. The counters read are the + daq_time_lo/hi counter which provides the time the adc is dead, and the + time_0/time_1 registers. Initialization will zero these time counters. + + Using these values provides a dead-time information for the system. + +Configuration parameters: + +\verbatim + -base integer - Base address of the module. +\endverbatim + + +*/ +class CMADCScaler : public CVMUSBConfigurableObject +{ + +private: + int operator==(CMADCScaler& rhs) const; + int operator!=(CMADCScaler& rhs) const; + + // The interface for CReadoutHardware: + +public: + virtual void onAttach(); + virtual void Initialize(CVMUSB& controller); + virtual void addReadoutList(CVMUSBReadoutList& list); + virtual CVMUSBConfigurableObject* clone() const; + + +}; + +#endif Modified: trunk/nextgen/usb/vmusb/deviceDriver/Makefile.am =================================================================== --- trunk/nextgen/usb/vmusb/deviceDriver/Makefile.am 2008-07-18 18:18:05 UTC (rev 1928) +++ trunk/nextgen/usb/vmusb/deviceDriver/Makefile.am 2008-07-18 18:32:10 UTC (rev 1929) @@ -2,12 +2,12 @@ libvmUsbSpecific_la_SOURCES = CVMUSB.cpp CVMUSBReadoutList.cpp CVMUSBDeviceDriver.cpp \ C785.cpp CStack.cpp C3804.cpp C3820.cpp C830.cpp \ - CCAENChain.cpp CMADC32.cpp + CCAENChain.cpp CMADC32.cpp CMADCScaler.cpp noinst_HEADERS = CVMUSB.h CVMUSBReadoutList.h CVMUSBDeviceDriver.h \ CVMUSBConfigurableObject.h \ C785.h CStack.h C3804.h C3820.h C830.h \ - CCAENChain.h CMADC32.h + CCAENChain.h CMADC32.h CMADCScaler.h INCLUDES = -I@top_srcdir@/usb/acqcommon \ -I@top_srcdir@/usb/threadcom \ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |