SctApi::SctApi Class Reference

SctApi class. More...

#include <SctApi.h>

Inheritance diagram for SctApi::SctApi:

Inheritance graph
[legend]
Collaboration diagram for SctApi::SctApi:

Collaboration graph
[legend]

Public Member Functions

 SctApi (const Idiosyncrasy &)
 Default to local xmlConfig.
 SctApi (const Idiosyncrasy &, boost::shared_ptr< SctConfiguration::Configuration > newConf)
 Specify configuration.
const Idiosyncrasyidiosyncrasy ()
 Method to allow others to see what makes us "special" in comparison to allthe other crate controllers.
const Sct::UCIDucid () const
const std::string getHostName () const
void setMrsStream (MRSStream *stream)
 C++ only method to tell a MRS aware program where to write to.
void setIsDictionary ()
 C++ only method to tell a IS aware program to go and look up the dictionary which will tell it where to write to.
void initialiseAll (int run)
 Initialise the crates and create the Rod/Vme objects.
bool isInitialised ()
 returns the status of the initialisation during the initialisation.
void shutdownAll ()
 Leave everything in a suitable state and delete all the objects.
void setRunNumber (UINT32 newRun)
 IPC: Don't do during a scan.
void setScanNumber (UINT32 newScan)
 IPC: Don't do during a scan.
UINT32 getRunNumber ()
 IPC: Don't do during a scan.
UINT32 getScanNumber ()
 IPC: Don't do during a scan.
bool isRODPresent (unsigned int rod)
 Return true if ROD can accept commands (Doesn't go so far as to access ROD hardware).
bool changeRunMode (enum RunType mode)
 Change to physics/calibration mode.
bool changeEventFormat (enum EventFormatType format)
 Change the event format produced by the formatters.
void startupModules ()
 DDC: Check modules in configurable state.
ModuleList getModuleList ()
 Return list of configured modules.
void loadConfiguration ()
 IPC: Don't do during a scan Conf: Definite interaction!
void loadConfiguration (std::string filename)
 IPC: Don't do during a scan Conf: Definite interaction!
int loadModuleConfigurations ()
 Return number of module loaded.
void storeModuleConfigurations (BankType bank)
 IPC: Don't do during a scan Conf: Definite interaction!
void storeBOCConfigurations ()
 IPC: Don't do during a scan Conf: Definite interaction!
void configureBOC (unsigned int rod)
 IPC: Don't do during a scan Conf: Definite interaction!
std::vector< double > getBOCMonitorArray (unsigned int rod)
 IPC: Should be OK during scan, only reads from BOC Conf: Nothing.
int awaitResponse (unsigned int rod, int timeout)
 IPC: Allow during a scan (only expert mode) Conf: no interaction!
int awaitResponseAll (int timeout)
 IPC: Allow during a scan (only expert mode) Conf: no interaction!
unsigned long * getResponse (unsigned int rod, unsigned long &length)
 (No interaction with VME) IPC: Allow during a scan (only expert mode) Conf: No interaction!
bool getRodMessage (unsigned int rod, char *buffer, unsigned long &length)
 Get a message in the text buffer.
void flashLED (unsigned int rod, long slaveNumber, long period=1000, long flashes=10)
 This creates its own primitive list and sends it to a slave DSP on the ROD.
void echo (unsigned int rod, unsigned int length, const unsigned long *data)
 IPC: Possible during a scan? Conf: No interaction.
void echoAll (unsigned int length, const unsigned long *data)
 IPC: Possible during a scan? Conf: No interaction.
void echoSlave (unsigned int rod, unsigned int slave, unsigned int length, const unsigned long *data)
 IPC: Possible during a scan? Conf: No interaction.
int dspBlockDump (unsigned int rod, long dspStart, long numWords, long dspNumber, bool usePrim=true)
 Dump contents of a block of DSP memory to cout.
int dspBlockDumpFile (unsigned int rod, long dspStart, long numWords, long dspNumber, std::string filename, bool usePrim=true)
 Dump contents of a block of DSP memory to a file.
void standardRegisterDump (RodLabel rl)
 Dump to ${tempDir}/Dump_05d.
void standardRegisterDump (unsigned int rod)
 Dump to ${tempDir}/Dump_05d.
void standardRegisterDumpAll ()
 Dump to ${tempDir}/Dump_05d RODs sent to consecutive d.
unsigned long * dspBlockRead (unsigned int rod, long dspStart, long numWords, long dspNumber, unsigned long &length, bool usePrim=true)
 Use dspNumber -1 to refer to the master DSP.
int dspBlockWrite (unsigned int rod, unsigned long *buffer, unsigned long dspAddress, long numWords, long dspNumber, bool usePrim=true)
 Use dspNumber -1 to refer to the master DSP.
unsigned long dspSingleBlockRead (unsigned int rod, long dspStart, long dspNumber)
 Same prototype as dspSingleRead but safer (for slave DSPs).
void dspSingleBlockWrite (unsigned int rod, unsigned long dspAddress, unsigned long val, long dspNumber)
 Same prototype as dspSingleWrite but safer (for slave DSPs).
unsigned long * primReadSlaveDsp (unsigned int rod, int s, int add, int words)
 Don't use if important to preserve primitive state!
void primWriteSlaveDsp (unsigned int rod, int s, int add, int numWords, unsigned long *data)
 Don't use if important to preserve primitive state!
void writeSlaveFile (unsigned int rod, unsigned int slave, std::string fileName, unsigned long address, bool usePrim=true)
void startSlave (unsigned int rod, unsigned int slave)
 Send the start slave primitive to a DSP.
boost::shared_array< unsigned
long > 
loadFile (std::string filename, unsigned long &length)
 Get block of memory from file.
unsigned long readRodStatusReg (unsigned int rod, long regNumber)
 IPC: Immediate response Conf: No interaction.
unsigned long readRodCommandReg (unsigned int rod, long regNumber)
 IPC: Immediate response Conf: No interaction.
unsigned long dspSingleRead (unsigned int rod, const unsigned long dspAddr, long dspNumber)
 IPC: Immediate response Conf: No interaction.
void dspSingleWrite (unsigned int rod, unsigned long dspAddr, unsigned long value, long dspNumber)
 IPC: Immediate response (expert only) Conf: No interaction.
ABCDModule * retrieveModule (UINT32 mid)
 Module data as cached from Configuration.
void createDebugPrimList ()
 IPC: Immediate response (expert) Conf: No Interaction.
void addDebugPrimList (unsigned long length, long index, long id, long version, unsigned long *body)
 IPC: Immediate response (expert) Conf: No Interaction.
void sendDebugPrimList (unsigned int rod)
 IPC: Immediate response (expert) Conf: No Interaction.
void sendDebugPrimListAll ()
 IPC: Immediate response (expert) Conf: No Interaction.
void sendDebugSlavePrimList (unsigned int rod, unsigned int slave, bool await, bool response)
 Send the previously created prim list to a slave dsp.
void debugPrimListFromFile (std::string fileName)
 This doesn't check the primlist checksum (but slave lists will need the correct sum).
void dumpDebugPrimList ()
 Perform a binary dump of the debug prim list.
const std::list< RodLabellistRods () const
 Return a list of the RODs that have been configured.
UINT32 findModule (std::string sn)
std::string convertToString (UINT32 mid)
 IPC: Immediate response Conf: Lookup.
UINT32 findModule (INT32 mur, INT32 module)
 IPC: Immediate response Conf: Lookup.
std::pair< INT32, INT32 > convertToMUR (UINT32 mid)
 IPC: Immediate response Conf: Lookup.
UINT32 findBarrelModule (INT32 barrel, INT32 row, INT32 number)
 IPC: Immediate response Conf: Lookup.
void convertToBarrelModule (UINT32 mid, UINT32 &barrel, UINT32 &row, int &number)
 IPC: Immediate response Conf: Lookup.
UINT32 findEndcapModule (INT32 disk, INT32 quadrant, INT32 number)
 IPC: Immediate response Conf: Lookup.
void convertToEndcapModule (UINT32 mid, INT32 &disk, UINT32 &quadrant, UINT32 &number)
 IPC: Immediate response Conf: Lookup.
void getABCDModules (BankType bank)
 IPC: Immediate response Conf: Lookup LocalCache: Yes.
virtual void getABCDModule (UINT32 mid, BankType bank)
 IPC: Immediate response Conf: Lookup LocalCache: Yes.
virtual boost::shared_ptr<
ABCDModule > 
getABCDModuleRaw (unsigned int rod, UINT32 slot, BankType bank)
 IPC: Immediate response Conf: Lookup LocalCache: No.
virtual void setABCDModules (std::list< BankType > bank)
 IPC: Don't do during scan Conf: Possible cache LocalCache: Yes.
virtual void setABCDModule (UINT32 mid, std::list< BankType > banks)
 IPC: Don't do during scan Conf: Possible cache LocalCache: Yes.
virtual void copyABCDModule (UINT32 mid, BankType from, std::list< BankType > to)
 Do internal ROD copy of its banks.
virtual void copyABCDModules (BankType from, std::list< BankType > to)
 Do internal ROD copy of its banks - all modules.
virtual void sendAllABCDModules (BankType bank, ConfigType type=SCTAPI_CONFIG_ALL, const bool enableDataMode=true)
virtual void sendABCDModule (UINT32 mid, BankType bank, ConfigType type=SCTAPI_CONFIG_ALL, const bool enableDataMode=true)
void modifyABCDMask (UINT32 mid, UINT32 *mask)
 Set the channel mask of all chips in a module.
void modifyABCDTrims (UINT32 mid, UINT8 *trims)
 Modify a module's trim configuration.
void setAutoUpdateBanks (std::list< BankType > banks)
 List of banks to be kept up to date with.
void modifyABCDVar (UINT32 typ, FLOAT32 var)
 IPC: Not during scan Conf: No communication.
void modifyABCDVar (UINT32 mid, UINT32 typ, FLOAT32 var)
 IPC: Not during scan Conf: No communication.
void modifyABCDVar (UINT32 mid, UINT32 chip, UINT32 typ, FLOAT32 var)
 IPC: Not during scan Conf: No communication.
void modifyABCDVarAllModulesOneChip (UINT32 chip, UINT32 typ, FLOAT32 var)
 modify a variable on one chip, but all modules
void modifyABCDVarROD (UINT32 mid, UINT32 chip, UINT32 typ, FLOAT32 var, std::list< BankType > banks)
 IPC: Not during scan Conf: No communication.
void modifyABCDVarROD (UINT32 mid, UINT32 typ, FLOAT32 var, std::list< BankType > banks)
 IPC: Not during scan Conf: No communication.
void modifyABCDVarROD (UINT32 type, FLOAT32 value, std::list< BankType > banks)
 IPC: Not during scan Conf: No communication.
void modifyABCDRC (UINT32 mid, UINT32 chip, UINT16 function, FLOAT32 p0, FLOAT32 p1, FLOAT32 p2)
 IPC: Not during scan Conf: No communication.
void modifyTIMParam (unsigned int param, unsigned int value)
 modify a TIM parameter.
void modifyBOCParam (unsigned int rod, unsigned int channel, unsigned int type, unsigned int val)
 IPC: Not during scan Conf: No communication.
void modifyBOCParam (unsigned int type, unsigned int val)
 IPC: Not during scan Conf: No communication.
void printBOCSetup (unsigned int rod)
 IPC: Immediate response Conf: No communication.
std::vector< SctConfiguration::BOCChannelConfigcurrentBOCSetup (unsigned int rod)
 IPC: Immediate response (Needs results by IPC) Conf: No communication.
void printBOCRegisters (unsigned int rod)
 IPC: Immediate response Conf: No communication.
SctConfiguration::BOCGlobalConfig currentBOCRegisters (unsigned int rod)
 IPC: Immediate response (Needs results by IPC) Conf: No communication.
void saveBOCSetup (unsigned int rod, BankType bank)
 Save BOC setup.
void saveBOCRegisters (unsigned int rod, BankType bank)
 Save BOC registers.
void restoreBOCSetup (unsigned int rod, BankType bank)
 Response BOC setup.
void restoreBOCRegisters (unsigned int rod, BankType bank)
 Restore BOC registers.
void lasersOff ()
 IPC: Immediate response Conf: No communication.
void setErrorMasks ()
 put all EFB error masks to their cached values
void timSetFrequency (double trigFreq, double rstFreq)
 Freq is approximated by divider circuit Available frequencies are 600, 60, 6, 0.6 kHz Divided by: 1, 2, 3, 4, 5, 6, (10, 12).
double timGetTriggerFrequency ()
 get trigger frequency (kHz)
double timGetResetFrequency ()
 get reset frequency (Hz)
void freeTriggers ()
 IPC: Not during scan Conf: No communication.
void stopTriggers ()
 IPC: Not during scan Conf: No communication.
void timL1A ()
 IPC: Not during scan Conf: No communication.
void timCalL1A (int delay)
 IPC: Not during scan Conf: No communication.
void timSoftReset ()
 IPC: Not during scan Conf: No communication.
void timBCReset ()
 IPC: Not during scan Conf: No communication.
void timLoadSequence (const std::vector< unsigned > &seq)
 load a tim sequence - see Crate for detail
unsigned long timRunSequence (unsigned long ntrigs, int random, bool external=false)
 run the tim sequence
unsigned long sendTimBurst (unsigned long count, int random, bool external=false)
 Send burst of triggers to TIM.
void timVerbose ()
 Print all TIM registers to stdout.
void timWriteRegister (int reg, UINT16 val)
UINT16 timReadRegister (int reg)
std::string status ()
 IPC: Immediate response (sane in all eventualities!) Conf: No communication.
void defaultScan (int type)
 IPC: Not during any other scan Conf: No communication.
void doScan (boost::shared_ptr< const Scan > scan)
 DDC: Check modules configured.
boost::shared_ptr< ScanMonitorstartAsyncScan (boost::shared_ptr< const Scan > scan)
 DDC: Check modules configured.
boost::shared_ptr< ScanControlstartScan (boost::shared_ptr< const Scan > scan, bool pollTriggers)
 DDC: Check modules configured.
void validateScan (boost::shared_ptr< const Scan > scan)
 Check that a scan is ok to run.
bool hasFinishedScanning ()
 Used to determine whether or not SctApi is busy. See also "SctApi::unsetBusy()".
const std::string & nameOfScanStatusObject ()
void awaitScan ()
 Await completion of a scan (alternative to checking IS running entry).
void abortScan ()
 Abort any long term activity.
void doRawScan (boost::shared_ptr< Scan > scan, int delay, int width, bool configureModules=false, bool clkBy2=false)
 IPC: Not during any other scan Conf: Lookup.
void sendRodTrigger (unsigned int rod, const Trigger *trig, long unsigned count, int scan_point=0)
 IPC: Not during any other scan Conf: No communication.
unsigned long sendTriggers (const Trigger *trig, unsigned long count, int scan_point=0)
 Send lots of triggers: frequency and source worked out from trigger.
void printABCDModule (int mid)
 Uses the sctConf method.
void printABCDRodModule (int mid, BankType bank)
 First retrieve the configuration from the ROD Uses the sctConf method.
void decodeEvent (unsigned int rod, int sl, int index, bool extFlag=false, bool errorType=false)
 IPC: Needs feedback, immediate response Conf: No Communication.
void scanEvents (unsigned int rod, int sl, bool extFlag, bool errorType)
 IPC: Needs feedback, immediate response Conf: No Communication.
void reportEventErrors ()
 Suggest problems with modules based on events in event buffer.
void decodeConfig (unsigned int rod, bool skipTrim=false, bool bypass=false)
 Decode config bit stream (only valid after SEND_CONFIG).
void rawData (unsigned int rod, int delay, int units, bool setMask=true, const Trigger *trig=0)
 IPC: Needs feedback, immediate response Conf: No Communication.
void sendL1A (unsigned int rod, bool capture=false)
 The mask is unchanged in this function and it is set up to go to all modules.
std::vector< char > probe (unsigned int rod, signed int harness=-1)
 Do quick scan of channels Recognises all the same, clock by 2 and an event header Return a char for each link examined 0 All zero's 1 All one's 2 Clock by 2 4 Clock by 4 L L1A E Event Header S Soft Reset B BC Reset J Junk (ie anything else).
std::vector< char > probeWithTrigger (unsigned int rod, const Trigger *trigger, signed int harness=-1)
 Do quick scan of channels Recognises all the same, clock by 2 and an event header Return a char for each link examined 0 All zero's 1 All one's 2 Clock by 2 4 Clock by 4 L L1A E Event Header S Soft Reset B BC Reset {b,a,d, ,c,r,a,t,e} : Nothing can be returned -- no such crate! (only relevant over top level ipc) J Junk (ie anything else).
std::vector< std::vector<
char > > 
probeScan (unsigned int rod, boost::shared_ptr< Scan > scan, signed int harness=-1)
 Scan over a variable and perform a probe for each.
bool checkAllModulesProbe (std::string value)
 Probe all modules and check that value returned by probe is one of the characters specified.
void autoConfigure ()
 Suggest values for configuration.
void bocHistogram (unsigned int rod, unsigned int samples, unsigned int numLoops)
 Run the ROD "BOC histogram" primitive.
SctApiDDCgetSctApiDDC () const
void tidyHistogramming ()
 Stop all tasks to do with histogramming.
long getRodSlot (unsigned int rod)
 Return slot this ROD is in.
int getRodRevision (unsigned int rod)
 Return the revision of a ROD.
int getRodRevision (const RodLabel &label)
 Return the revision of a ROD.
void testLinkOutSelect (unsigned int rod, unsigned int link)
 Select link to send to ROD front panel LEMO.
unsigned int testLinkOutRetrieve (unsigned int rod)
 Return selected link to send to ROD front panel LEMO.
void unsetDebugOption (std::string opt)
 Disable a debug option.
void setDebugOption (std::string opt)
 Enable a debug option.
std::list< std::string > listEnabledDebugOptions () const
 Get the currently enabled debug options.
std::vector< std::string > listDebugOptions () const
 List possible debug options.
void unsetBusy ()
 For use in emergency situations only (not as a matter of course) use unsetBusy() to override SctApi's present busy state and ask it to appear "not busy" to the outside world.
void debugStepHistogram ()
 Perform a step in a histogram which is in a stalled state.
void debugContinueHistogram ()
 Continue a histogram which was previously stalled.
void debugAbortHistogram ()
 Try to abort the current histogram.
void eventTrapSetup (int slaveMask, int trapMatch, int trapMod, int trapRemain, bool tim, bool error, boost::shared_ptr< PrimListWrapper > primList)
 Setup event trapping.
void startEventTrap (int slave, boost::shared_ptr< PrimListWrapper > primList)
 Start event trap on a slave.
void stopEventTrap (int slave, boost::shared_ptr< PrimListWrapper > primList)
 Stop event trap on a slave.
void rodMode (unsigned int rod, int mode, int flag, int fifoSetup, int nBins, int delay, int message)
 Direct write of ROD mode!
void setupModuleMask (unsigned int rod, int port, int slvs)
 Set module masks.
void setupModuleMask (int port, int slvs, boost::shared_ptr< PrimListWrapper > list)
 Add set module masks command to primitive list.
std::pair< UINT32, UINT32 > sendData (unsigned int rod, int type, int dsp)
 Send a SEND_DATA primitive and retrieve the (pointer, length) result.
void resumePolling ()
 Resume the primitive polling thread.
void stopPolling ()
 Pause the primitive polling thread.
void print_calib (unsigned int rod)
 Print ROD calibration registers.
int synchSendPrimListAll (boost::shared_ptr< PrimListWrapper > primList, int timeout=10)
 A helper function for other methods in this class, to be used only internally to this class as it exposes the RodPrimList class.
void stopHistogramming (const ScanEx &ex)
 Stop the histogramming and event trapping tasks.
void setSlaveBlock (unsigned int rod, int s, long sAdd, int words, long value=0, bool usePrim=true)
 Set block of slave memory to value (using RW_SLAVE_MEMORY).
void writeRODRegister (unsigned int rod, int reg, int off, int width, int value)
 Write to a ROD register.
unsigned int readRODRegister (unsigned int rod, int r)
 Read a register from the ROD.
int pollRegister (unsigned int rod, int r, int off, int width, int val, int timeout=1000000)
 Poll a register.
virtual unsigned long * readFifo (unsigned int rod, int id, int bank, int elems)
void startHistogramTask (const Scan &scan, const ScanEx &ex, const RodLabel, unsigned int startBin, unsigned int nBins, unsigned int nTrigs, boost::shared_ptr< PrimListWrapper > list)
 Create histogram task primitive.
void sendPrimList (unsigned int rod, boost::shared_ptr< PrimListWrapper > prim)
 A helper function for other methods in this class, to be used only internally to this class as it exposes the RodPrimList class.
int synchSendPrimList (unsigned int rod, boost::shared_ptr< PrimListWrapper > primList, int timeout=10)
 A helper function for other methods in this class, to be used only internally to this class as it exposes the RodPrimList class.
SctApiConfigCachegetModuleConfigCache ()
 needed by ScanControl to update the cache to the last point in the scan.
unsigned preloadModuleConfigurations ()
bool checkDebugOption (std::string opt) const
bool checkDebugOption (int opt) const

Data Fields

MRSStream * mrs
boost::shared_ptr< ISInfoDictionary > m_isDict
volatile bool m_preloadModuleConfigurationsStop

Static Public Attributes

static const unsigned int BAD_MODULE
 The constant returned as an unknown module.

Protected Member Functions

virtual void really_setABCDModule (UINT32 mid, std::list< BankType > banks, UINT32 api_cfg_bits)
 version of setABCDModule which will not look at the crate controller's local cache but will actually set it to the ROD.
virtual void really_getABCDModule (UINT32 mid, BankType bank)
 version of getABCDModule which will not look at the crate controller's local cache but will actually get it from the ROD
virtual int initialiseRod (unsigned int rod)
 Proxy for Crate.
virtual int initialiseModule (std::string module, bool toRod=true)
 Load module configuration from database Send module configuration to ROD (unless toRod is set to false).
ABCDModule * lookupConfig (UINT32 mid)
 Lookup module configuration in the cache.
virtual bool preScanHardwareCheck (const Scan &scan, ScanEx &extra)
 Perform necessary hardware checks before a scan.
virtual void doHistogramSetup (const Scan &scan, const ScanEx &extra)
UINT32 * readEventBuffer (unsigned int rod, int sl, bool extFlag, bool errorType)
 IPC: Needs feedback, immediate response Conf: No Communication.
int getLastEventFrame (unsigned int rod, int slave)
 Return the frame in which the last event starts.
virtual int pollHistogramming (boost::shared_ptr< ScanControl > controller, int timeout=5)
 Wait for the number of bins to equal (bins - 1) on all master dsps involved in the scan.
void scanLoop ()
void scanPollingThread ()
void initialisationThread ()
void addRodToList (RodLabel newRod)
RodInfogetRodInfo (const RodLabel &l)

Protected Attributes

std::list< RodLabelrodList
 List all the RODs.
std::map< RodLabel, RodInforodInfoList
 List them again, but with additional info...
boost::recursive_mutex rodInfoListAccess
std::map< UINT32, ABCDModule > moduleMap
 Cache of module configurations.
boost::mutex moduleMapAccess
 Controls access to module configurations during initialisation.
boost::shared_ptr< ScanControlscanController
boost::shared_ptr< ScanControllastScanController

Private Member Functions

 SctApi (const SctApi &)
SctApioperator= (const SctApi &)
void setup ()
 This sets the unexpected handler to interpret all sorts of exceptions.
void dumpPrimList (boost::shared_ptr< PrimListWrapper > prim)
 If requested, dump prim list to file and/or log to output.
void dumpRawEvent (unsigned int rod, int units, unsigned long *bufferA, unsigned long *bufferB)
 Save raw event to file.
unsigned int prt () const
unsigned int crt () const
Sct::URID localRod (const Sct::RodIdentifier rod) const
void doRawScanThreadInnards (boost::shared_ptr< Scan > scan, int delay, int width, bool configureModules, bool clkBy2)
 Called by doRawScanThread.
void doRawScanThread (boost::shared_ptr< Scan > scan, int delay, int width, bool configureModules, bool clkBy2)
 Called by doRawScan.
void sendSlavePrimList (unsigned int rod, boost::shared_ptr< PrimListWrapper > prim, unsigned int slave, bool await, bool response)
 Send a RodPrimList to the Master DSP which contains the RodPrimList which is passed as an argument.
void sendPrimListAll (boost::shared_ptr< PrimListWrapper > prim)
 A helper function for other methods in this class, to be used only internally to this class as it exposes the RodPrimList class.
void setupEventTrapping (const Scan &scan, const ScanEx &ex, const RodLabel, boost::shared_ptr< PrimListWrapper > list)
 Setup event trapping according to scan and ex.
void startEventTrapping (const Scan &scan, const ScanEx &ex, const RodLabel, boost::shared_ptr< PrimListWrapper > primList)
 Start event trapping according to scan and ex.
void setupEventDump (const Scan &scan, const ScanEx &ex, const RodLabel, boost::shared_ptr< PrimListWrapper > list)
 Setup an event dump according to scan and ex.
void setupHistogramming (const Scan &scan, const ScanEx &ex, const RodLabel, bool tim, boost::shared_ptr< PrimListWrapper > list)
 Setup histogramming according to scan and ex.
void calib_init ()
 Setup ROD for calibration.
void readRawData (unsigned int rod, int delay, bool setMask)
 Read raw data from all links into one "histogram".
virtual int setupRawData (unsigned int rod, int delay, int units, bool setMask, const Trigger *trig=0)
 Put raw data into FIFOs ready to read out.
CrategetCrate () const
 Lookup the Crate object to send instructions to.
void cacheModuleConfig (UINT32 mid, std::string name="")
 Put module mid into the cache (if present in the configuration).
void getrpcrc (UINT32 mid, unsigned int &rpartition, unsigned int &rcrate, unsigned int &rrod, unsigned &rchannel)
 XXX What does it do on failure!!!
void setupScanMasks (ScanEx &extra, int distSlave, bool dual)
 Setup module, dsp masks etc.
bool checkModuleListsForScan ()
 Return whether check passed.
void preScanModuleSetup (const Scan &scan)
 Needs scan to know whether to set formatters into expanded mode.
void insertISStats ()
 Insert SctApiCounters into IS.
void updateISStats ()
 Update the IS version of SctApiCounters.
Loglog ()

Private Attributes

boost::shared_ptr< Idiosyncrasym_id
 This Idiosyncrasy is what makes us different from every other crate controller.
boost::shared_ptr< SctConfiguration::Configurationconfig
 The configuration database.
boost::shared_ptr< DCSAccessm_dcsAccess
boost::shared_ptr< SctApiDDCm_sctApiDDC
boost::shared_ptr< PrimListWrapperdebugPrimList
 The current debug primitive list.
boost::shared_ptr< CratecrateObject
 Map to retrieve crate objects.
boost::shared_ptr< Logm_log
 Log everything that is called.
boost::shared_ptr< const ScanlastDebugScan
 For debug only, save the scan information.
boost::shared_ptr< const ScanExlastDebugScanEx
UINT32 scanNumber
 Current scan number.
UINT32 runNumber
 Current run number.
RunType currentRunMode
 Current run mode.
std::list< BankTypem_autoUpdateBanks
 list of banks to automatically update on ROD
boost::condition scanQueue_notEmpty
boost::mutex scanQueue_mutex
std::auto_ptr< boost::thread > scanPollThread
bool m_stopPolling
bool m_inScanLoop
bool m_inRawScanLoop
std::auto_ptr< boost::thread > m_initialisationThread
 initialisation threads
bool m_is_initialised
SctApiConfigCache module_cache
 configuration cache

Detailed Description

SctApi class.

This is the API used by the rest of the world to interact with SCT Modules using RODs.

Functionality that should be included in this class includes.

Modules are referred to by an "mid" which is a 32bit number packed in hex as PPCCRRCH where: PP is the partition CC is the crate RR is the ROD CH is the ROD channel

DAQ run level transitions: Boot Load and run the crate controller (Done automatically in DAQ-1 from configuration) Load Load config? Config Send config to Modules Start Mode for execution of scans

Configuration: loading from file loading to modules fine grained control on modules recovering module configuration from the ROD Save configuration

Reconfiguring from new configuration file

Scanning: perform scans over configuration variable(s)

DCS: minimal DCS communication

ROD diagnostics: Flash LEDs Text buffer retrieval Memory dumps Send arbitrary primitives to a single ROD

Indexing: There are several ways of addressing a ROD or module the canonical method is partition, crate, rod, module

Other methods include: Geographical: barrel/disc MUR, number MUR: Partition, MUR, number

Definition at line 112 of file SctApi.h.


Constructor & Destructor Documentation

SctApi::SctApi::SctApi const Idiosyncrasy  ) 
 

Default to local xmlConfig.

SctApi::SctApi::SctApi const Idiosyncrasy ,
boost::shared_ptr< SctConfiguration::Configuration newConf
 

Specify configuration.


Member Function Documentation

void SctApi::SctApi::abortScan  ) 
 

Abort any long term activity.

Unimplemented

DDC: No action IPC: Immediate response Conf: No communication

void SctApi::SctApi::addDebugPrimList unsigned long  length,
long  index,
long  id,
long  version,
unsigned long *  body
 

IPC: Immediate response (expert) Conf: No Interaction.

Referenced by TApi::addDebugPrimList().

void SctApi::SctApi::autoConfigure  ) 
 

Suggest values for configuration.

1) Perform probe scan of tx channels and interpret giving connections of modules to tx channels

int SctApi::SctApi::awaitResponse unsigned int  rod,
int  timeout
 

IPC: Allow during a scan (only expert mode) Conf: no interaction!

Referenced by TApi::awaitResponse(), and SctApi::ScanControlRODHisto::nextBin().

int SctApi::SctApi::awaitResponseAll int  timeout  ) 
 

IPC: Allow during a scan (only expert mode) Conf: no interaction!

void SctApi::SctApi::awaitScan  ) 
 

Await completion of a scan (alternative to checking IS running entry).

Referenced by TApi::awaitScan().

void SctApi::SctApi::bocHistogram unsigned int  rod,
unsigned int  samples,
unsigned int  numLoops
 

Run the ROD "BOC histogram" primitive.

Referenced by TApi::bocHistogram().

void SctApi::SctApi::cacheModuleConfig UINT32  mid,
std::string  name = ""
[private]
 

Put module mid into the cache (if present in the configuration).

void SctApi::SctApi::calib_init  )  [private]
 

Setup ROD for calibration.

bool SctApi::SctApi::changeEventFormat enum EventFormatType  format  ) 
 

Change the event format produced by the formatters.

bool SctApi::SctApi::changeRunMode enum RunType  mode  ) 
 

Change to physics/calibration mode.

Referenced by TApi::changeRunMode().

bool SctApi::SctApi::checkAllModulesProbe std::string  value  ) 
 

Probe all modules and check that value returned by probe is one of the characters specified.

Parameters:
value Set of chars allowed as response to probe

Referenced by TApi::checkAllModulesProbe().

bool SctApi::SctApi::checkModuleListsForScan  )  [private]
 

Return whether check passed.

void SctApi::SctApi::configureBOC unsigned int  rod  ) 
 

IPC: Don't do during a scan Conf: Definite interaction!

Referenced by TApi::configureBOC().

void SctApi::SctApi::convertToBarrelModule UINT32  mid,
UINT32 &  barrel,
UINT32 &  row,
int &  number
 

IPC: Immediate response Conf: Lookup.

void SctApi::SctApi::convertToEndcapModule UINT32  mid,
INT32 &  disk,
UINT32 &  quadrant,
UINT32 &  number
 

IPC: Immediate response Conf: Lookup.

std::pair<INT32, INT32> SctApi::SctApi::convertToMUR UINT32  mid  ) 
 

IPC: Immediate response Conf: Lookup.

std::string SctApi::SctApi::convertToString UINT32  mid  ) 
 

IPC: Immediate response Conf: Lookup.

Referenced by SctApi::ScanControlRODHisto::readHistograms().

virtual void SctApi::SctApi::copyABCDModule UINT32  mid,
BankType  from,
std::list< BankType to
[virtual]
 

Do internal ROD copy of its banks.

Referenced by TApi::copyABCDModules().

virtual void SctApi::SctApi::copyABCDModules BankType  from,
std::list< BankType to
[virtual]
 

Do internal ROD copy of its banks - all modules.

Referenced by TApi::copyABCDModules().

void SctApi::SctApi::createDebugPrimList  ) 
 

IPC: Immediate response (expert) Conf: No Interaction.

Referenced by TApi::createDebugPrimList().

SctConfiguration::BOCGlobalConfig SctApi::SctApi::currentBOCRegisters unsigned int  rod  ) 
 

IPC: Immediate response (Needs results by IPC) Conf: No communication.

std::vector<SctConfiguration::BOCChannelConfig> SctApi::SctApi::currentBOCSetup unsigned int  rod  ) 
 

IPC: Immediate response (Needs results by IPC) Conf: No communication.

Referenced by TApi::currentBOCSetup().

void SctApi::SctApi::debugAbortHistogram  ) 
 

Try to abort the current histogram.

This may not work. The DSP can be in a state where the abort signal is delayed in its interpretation

Referenced by TApi::debugAbortHistogram().

void SctApi::SctApi::debugContinueHistogram  ) 
 

Continue a histogram which was previously stalled.

This only works if the histogram is at the end of a bin

Referenced by TApi::debugContinueHistogram().

void SctApi::SctApi::debugPrimListFromFile std::string  fileName  ) 
 

This doesn't check the primlist checksum (but slave lists will need the correct sum).

Referenced by TApi::debugPrimListFromFile().

void SctApi::SctApi::debugStepHistogram  ) 
 

Perform a step in a histogram which is in a stalled state.

Referenced by TApi::debugStepHistogram().

void SctApi::SctApi::decodeConfig unsigned int  rod,
bool  skipTrim = false,
bool  bypass = false
 

Decode config bit stream (only valid after SEND_CONFIG).

Referenced by TApi::decodeConfig().

void SctApi::SctApi::decodeEvent unsigned int  rod,
int  sl,
int  index,
bool  extFlag = false,
bool  errorType = false
 

IPC: Needs feedback, immediate response Conf: No Communication.

Referenced by TApi::decodeEvent().

void SctApi::SctApi::defaultScan int  type  ) 
 

IPC: Not during any other scan Conf: No communication.

Referenced by TApi::defaultScan().

void SctApi::SctApi::doRawScan boost::shared_ptr< Scan scan,
int  delay,
int  width,
bool  configureModules = false,
bool  clkBy2 = false
 

IPC: Not during any other scan Conf: Lookup.

Referenced by TApi::doRawScan().

void SctApi::SctApi::doRawScanThread boost::shared_ptr< Scan scan,
int  delay,
int  width,
bool  configureModules,
bool  clkBy2
[private]
 

Called by doRawScan.

void SctApi::SctApi::doRawScanThreadInnards boost::shared_ptr< Scan scan,
int  delay,
int  width,
bool  configureModules,
bool  clkBy2
[private]
 

Called by doRawScanThread.

void SctApi::SctApi::doScan boost::shared_ptr< const Scan scan  ) 
 

DDC: Check modules configured.

.. Check select IPC: Not during any other scan Conf: Lookup

Referenced by TApi::doScan().

int SctApi::SctApi::dspBlockDump unsigned int  rod,
long  dspStart,
long  numWords,
long  dspNumber,
bool  usePrim = true
 

Dump contents of a block of DSP memory to cout.

Parameters:
dspNumber Slave number, -1 for the Master DSP.
usePrim Use a primitive instead of direct VME access
IPC: Possible during a scan Conf: No interaction

Referenced by TApi::dspBlockDump().

int SctApi::SctApi::dspBlockDumpFile unsigned int  rod,
long  dspStart,
long  numWords,
long  dspNumber,
std::string  filename,
bool  usePrim = true
 

Dump contents of a block of DSP memory to a file.

Use dspNumber -1 to refer to the master DSP.

Parameters:
dspNumber Slave number, -1 for the Master DSP.
usePrim Use a primitive instead of direct VME access
IPC: Possible during a scan Conf: No interaction

Referenced by TApi::dspBlockDumpFile().

unsigned long* SctApi::SctApi::dspBlockRead unsigned int  rod,
long  dspStart,
long  numWords,
long  dspNumber,
unsigned long &  length,
bool  usePrim = true
 

Use dspNumber -1 to refer to the master DSP.

IPC: Possible during a scan Conf: No interaction

Referenced by TApi::dspBlockRead(), SctApi::ScanControlRODHisto::dumpHistoStatus(), SctApi::ScanControlRODHisto::getProcTime(), and SctApi::ScanControlRODHisto::getTrapBuffers().

int SctApi::SctApi::dspBlockWrite unsigned int  rod,
unsigned long *  buffer,
unsigned long  dspAddress,
long  numWords,
long  dspNumber,
bool  usePrim = true
 

Use dspNumber -1 to refer to the master DSP.

IPC: Possible during a scan Conf: No interaction

Referenced by TApi::dspBlockWrite().

unsigned long SctApi::SctApi::dspSingleBlockRead unsigned int  rod,
long  dspStart,
long  dspNumber
 

Same prototype as dspSingleRead but safer (for slave DSPs).

Referenced by SctApi::ScanControlRODHisto::finishHistogram(), and SctApi::ScanControlRODHisto::getEventCounter().

void SctApi::SctApi::dspSingleBlockWrite unsigned int  rod,
unsigned long  dspAddress,
unsigned long  val,
long  dspNumber
 

Same prototype as dspSingleWrite but safer (for slave DSPs).

Referenced by SctApi::ScanControlRODHisto::finishHistogram().

unsigned long SctApi::SctApi::dspSingleRead unsigned int  rod,
const unsigned long  dspAddr,
long  dspNumber
 

IPC: Immediate response Conf: No interaction.

Referenced by SctApi::ScanControlRODHisto::checkScanCompleteROD(), TApi::dspSingleRead(), SctApi::ScanControlRODHisto::dumpHistoStatus(), and SctApi::ScanControlRODHisto::getEventCounter().

void SctApi::SctApi::dspSingleWrite unsigned int  rod,
unsigned long  dspAddr,
unsigned long  value,
long  dspNumber
 

IPC: Immediate response (expert only) Conf: No interaction.

Referenced by TApi::dspSingleWrite().

void SctApi::SctApi::dumpDebugPrimList  ) 
 

Perform a binary dump of the debug prim list.

Referenced by TApi::dumpDebugPrimList().

void SctApi::SctApi::dumpPrimList boost::shared_ptr< PrimListWrapper prim  )  [private]
 

If requested, dump prim list to file and/or log to output.

void SctApi::SctApi::dumpRawEvent unsigned int  rod,
int  units,
unsigned long *  bufferA,
unsigned long *  bufferB
[private]
 

Save raw event to file.

void SctApi::SctApi::echo unsigned int  rod,
unsigned int  length,
const unsigned long *  data
 

IPC: Possible during a scan? Conf: No interaction.

Referenced by TApi::echo().

void SctApi::SctApi::echoAll unsigned int  length,
const unsigned long *  data
 

IPC: Possible during a scan? Conf: No interaction.

Referenced by TApi::echoAll().

void SctApi::SctApi::echoSlave unsigned int  rod,
unsigned int  slave,
unsigned int  length,
const unsigned long *  data
 

IPC: Possible during a scan? Conf: No interaction.

Referenced by TApi::echoSlave().

void SctApi::SctApi::eventTrapSetup int  slaveMask,
int  trapMatch,
int  trapMod,
int  trapRemain,
bool  tim,
bool  error,
boost::shared_ptr< PrimListWrapper primList
 

Setup event trapping.

A reduced set of parameters compared to the primitive is used.

UINT32 SctApi::SctApi::findBarrelModule INT32  barrel,
INT32  row,
INT32  number
 

IPC: Immediate response Conf: Lookup.

Referenced by TApi::findBarrelModule().

UINT32 SctApi::SctApi::findEndcapModule INT32  disk,
INT32  quadrant,
INT32  number
 

IPC: Immediate response Conf: Lookup.

Referenced by TApi::findEndcapModule().

UINT32 SctApi::SctApi::findModule INT32  mur,
INT32  module
 

IPC: Immediate response Conf: Lookup.

UINT32 SctApi::SctApi::findModule std::string  sn  ) 
 

Parameters:
sn Module serial number
Returns:
The unique identifier, BAD_MODULE if not found
IPC: Immediate response Conf: Lookup

Referenced by TApi::findModule(), and SctApi::ScanControlRODHisto::readHistograms().

void SctApi::SctApi::flashLED unsigned int  rod,
long  slaveNumber,
long  period = 1000,
long  flashes = 10
 

This creates its own primitive list and sends it to a slave DSP on the ROD.

Parameters:
period Flash period given in ms
slaveNumber Slave number or -1 for Master
IPC: Possible during a scan? Conf: No interaction

Referenced by TApi::flashLED().

void SctApi::SctApi::freeTriggers  ) 
 

IPC: Not during scan Conf: No communication.

Referenced by TApi::freeTriggers().

virtual void SctApi::SctApi::getABCDModule UINT32  mid,
BankType  bank
[virtual]
 

IPC: Immediate response Conf: Lookup LocalCache: Yes.

Referenced by TApi::getABCDModule().

virtual boost::shared_ptr<ABCDModule> SctApi::SctApi::getABCDModuleRaw unsigned int  rod,
UINT32  slot,
BankType  bank
[virtual]
 

IPC: Immediate response Conf: Lookup LocalCache: No.

void SctApi::SctApi::getABCDModules BankType  bank  ) 
 

IPC: Immediate response Conf: Lookup LocalCache: Yes.

Referenced by TApi::getABCDModules().

std::vector<double> SctApi::SctApi::getBOCMonitorArray unsigned int  rod  ) 
 

IPC: Should be OK during scan, only reads from BOC Conf: Nothing.

Crate* SctApi::SctApi::getCrate  )  const [private]
 

Lookup the Crate object to send instructions to.

Return 0 if not found.

int SctApi::SctApi::getLastEventFrame unsigned int  rod,
int  slave
[protected]
 

Return the frame in which the last event starts.

SctApiConfigCache& SctApi::SctApi::getModuleConfigCache  ) 
 

needed by ScanControl to update the cache to the last point in the scan.

Referenced by SctApi::ScanControlRODHisto::readHistogramData().

ModuleList SctApi::SctApi::getModuleList  ) 
 

Return list of configured modules.

unsigned long* SctApi::SctApi::getResponse unsigned int  rod,
unsigned long &  length
 

(No interaction with VME) IPC: Allow during a scan (only expert mode) Conf: No interaction!

Referenced by TApi::getResponse().

bool SctApi::SctApi::getRodMessage unsigned int  rod,
char *  buffer,
unsigned long &  length
 

Get a message in the text buffer.

Get a message from a ROD text buffer Returns whether the action was completed

Referenced by TApi::getRodMessage().

int SctApi::SctApi::getRodRevision const RodLabel label  ) 
 

Return the revision of a ROD.

int SctApi::SctApi::getRodRevision unsigned int  rod  ) 
 

Return the revision of a ROD.

Referenced by SctApi::ScanControlRODHisto::dumpHistoStatus(), SctApi::ScanControlRODHisto::finishHistogram(), SctApi::ScanControlRODHisto::getEventCounter(), SctApi::ScanControlRODHisto::getHistogramChunk(), SctApi::ScanControlRODHisto::getProcTime(), and SctApi::ScanControlRODHisto::getTrapBuffers().

long SctApi::SctApi::getRodSlot unsigned int  rod  ) 
 

Return slot this ROD is in.

void SctApi::SctApi::getrpcrc UINT32  mid,
unsigned int &  rpartition,
unsigned int &  rcrate,
unsigned int &  rrod,
unsigned &  rchannel
[private]
 

XXX What does it do on failure!!!

UINT32 SctApi::SctApi::getRunNumber  ) 
 

IPC: Don't do during a scan.

UINT32 SctApi::SctApi::getScanNumber  ) 
 

IPC: Don't do during a scan.

bool SctApi::SctApi::hasFinishedScanning  ) 
 

Used to determine whether or not SctApi is busy. See also "SctApi::unsetBusy()".

const Idiosyncrasy& SctApi::SctApi::idiosyncrasy  ) 
 

Method to allow others to see what makes us "special" in comparison to allthe other crate controllers.

void SctApi::SctApi::initialiseAll int  run  ) 
 

Initialise the crates and create the Rod/Vme objects.

Load the system configuration from the database. Create crates and RODs as necessary. Calls initialiseRod and initialiseModule as necessary.

Store the module configuration in the RODs (UNIMPLEMENTED)

Return: 0 for success Possibly error code for failure

IPC: Should block everything else - but you need to check initialisationStatus() to see how it is getting on.

Referenced by TApi::initialiseAll().

virtual int SctApi::SctApi::initialiseModule std::string  module,
bool  toRod = true
[protected, virtual]
 

Load module configuration from database Send module configuration to ROD (unless toRod is set to false).

Return 0 for success

virtual int SctApi::SctApi::initialiseRod unsigned int  rod  )  [protected, virtual]
 

Proxy for Crate.

Return 0 for success

void SctApi::SctApi::insertISStats  )  [private]
 

Insert SctApiCounters into IS.

bool SctApi::SctApi::isInitialised  ) 
 

returns the status of the initialisation during the initialisation.

To check if it is complete, use the bool

Referenced by TApi::isInitialised().

bool SctApi::SctApi::isRODPresent unsigned int  rod  ) 
 

Return true if ROD can accept commands (Doesn't go so far as to access ROD hardware).

void SctApi::SctApi::lasersOff  ) 
 

IPC: Immediate response Conf: No communication.

Referenced by TApi::lasersOff().

std::vector<std::string> SctApi::SctApi::listDebugOptions  )  const
 

List possible debug options.

DDC: No action IPC: Class action, immediate response Conf: No communication

Referenced by TApi::listDebugOptions().

std::list<std::string> SctApi::SctApi::listEnabledDebugOptions  )  const
 

Get the currently enabled debug options.

DDC: No action IPC: Class action, immediate response Conf: No communication

Referenced by TApi::listEnabledDebugOptions().

const std::list<RodLabel> SctApi::SctApi::listRods  )  const
 

Return a list of the RODs that have been configured.

Referenced by TApi::listRods(), SctApi::ScanControlRODHisto::readHistograms(), and SctApi::AutoConf::AutoConfigurer::run().

void SctApi::SctApi::loadConfiguration std::string  filename  ) 
 

IPC: Don't do during a scan Conf: Definite interaction!

void SctApi::SctApi::loadConfiguration  ) 
 

IPC: Don't do during a scan Conf: Definite interaction!

Referenced by TApi::loadConfiguration().

boost::shared_array<unsigned long> SctApi::SctApi::loadFile std::string  filename,
unsigned long &  length
 

Get block of memory from file.

int SctApi::SctApi::loadModuleConfigurations  ) 
 

Return number of module loaded.

Referenced by TApi::loadModuleConfigurations().

ABCDModule* SctApi::SctApi::lookupConfig UINT32  mid  )  [protected]
 

Lookup module configuration in the cache.

void SctApi::SctApi::modifyABCDMask UINT32  mid,
UINT32 *  mask
 

Set the channel mask of all chips in a module.

IPC: Not during scan Conf: No communication

Referenced by TApi::modifyABCDMask().

void SctApi::SctApi::modifyABCDRC UINT32  mid,
UINT32  chip,
UINT16  function,
FLOAT32  p0,
FLOAT32  p1,
FLOAT32  p2
 

IPC: Not during scan Conf: No communication.

void SctApi::SctApi::modifyABCDTrims UINT32  mid,
UINT8 *  trims
 

Modify a module's trim configuration.

IPC: Not during scan Conf: No communication

Referenced by TApi::modifyABCDTrims().

void SctApi::SctApi::modifyABCDVar UINT32  mid,
UINT32  chip,
UINT32  typ,
FLOAT32  var
 

IPC: Not during scan Conf: No communication.

void SctApi::SctApi::modifyABCDVar UINT32  mid,
UINT32  typ,
FLOAT32  var
 

IPC: Not during scan Conf: No communication.

void SctApi::SctApi::modifyABCDVar UINT32  typ,
FLOAT32  var
 

IPC: Not during scan Conf: No communication.

Referenced by TApi::modifyABCDVar().

void SctApi::SctApi::modifyABCDVarAllModulesOneChip UINT32  chip,
UINT32  typ,
FLOAT32  var
 

modify a variable on one chip, but all modules

void SctApi::SctApi::modifyABCDVarROD UINT32  type,
FLOAT32  value,
std::list< BankType banks
 

IPC: Not during scan Conf: No communication.

void SctApi::SctApi::modifyABCDVarROD UINT32  mid,
UINT32  typ,
FLOAT32  var,
std::list< BankType banks
 

IPC: Not during scan Conf: No communication.

void SctApi::SctApi::modifyABCDVarROD UINT32  mid,
UINT32  chip,
UINT32  typ,
FLOAT32  var,
std::list< BankType banks
 

IPC: Not during scan Conf: No communication.

Referenced by TApi::modifyABCDVarROD(), SctApi::ScanControlAsyncHisto::nextBin(), and SctApi::ScanControlTIMHisto::nextBin().

void SctApi::SctApi::modifyBOCParam unsigned int  type,
unsigned int  val
 

IPC: Not during scan Conf: No communication.

void SctApi::SctApi::modifyBOCParam unsigned int  rod,
unsigned int  channel,
unsigned int  type,
unsigned int  val
 

IPC: Not during scan Conf: No communication.

Referenced by TApi::modifyBOCParam(), SctApi::ScanControlTIMHisto::nextBin(), and SctApi::AutoConf::AutoConfigurer::run().

void SctApi::SctApi::modifyTIMParam unsigned int  param,
unsigned int  value
 

modify a TIM parameter.

Referenced by SctApi::ScanControlTIMHisto::nextBin().

virtual int SctApi::SctApi::pollHistogramming boost::shared_ptr< ScanControl controller,
int  timeout = 5
[protected, virtual]
 

Wait for the number of bins to equal (bins - 1) on all master dsps involved in the scan.

Then wait for the number of events on the slave to equal to events

Timeout if the bin count doesn't change, and if the number of events doesn't change

int SctApi::SctApi::pollRegister unsigned int  rod,
int  r,
int  off,
int  width,
int  val,
int  timeout = 1000000
 

Poll a register.

virtual bool SctApi::SctApi::preScanHardwareCheck const Scan scan,
ScanEx extra
[protected, virtual]
 

Perform necessary hardware checks before a scan.

Returns:
true if successful, false otherwise

void SctApi::SctApi::preScanModuleSetup const Scan scan  )  [private]
 

Needs scan to know whether to set formatters into expanded mode.

unsigned long* SctApi::SctApi::primReadSlaveDsp unsigned int  rod,
int  s,
int  add,
int  words
 

Don't use if important to preserve primitive state!

Returns new[]ed block of memory

IPC: Possible during a scan Conf: No interaction

Referenced by SctApi::ScanControlRODHisto::getEventCountChunk(), and SctApi::ScanControlRODHisto::getHistogramChunk().

void SctApi::SctApi::primWriteSlaveDsp unsigned int  rod,
int  s,
int  add,
int  numWords,
unsigned long *  data
 

Don't use if important to preserve primitive state!

IPC: Possible during a scan Conf: No interaction

void SctApi::SctApi::print_calib unsigned int  rod  ) 
 

Print ROD calibration registers.

void SctApi::SctApi::printABCDModule int  mid  ) 
 

Uses the sctConf method.

IPC: Not very useful without feedback Conf: Possible lookup

Referenced by TApi::printABCDModule().

void SctApi::SctApi::printABCDRodModule int  mid,
BankType  bank
 

First retrieve the configuration from the ROD Uses the sctConf method.

IPC: Not very useful without feedback Conf: Possible lookup

Referenced by TApi::printABCDRodModule().

void SctApi::SctApi::printBOCRegisters unsigned int  rod  ) 
 

IPC: Immediate response Conf: No communication.

Referenced by TApi::printBOCRegisters().

void SctApi::SctApi::printBOCSetup unsigned int  rod  ) 
 

IPC: Immediate response Conf: No communication.

Referenced by TApi::printBOCSetup().

std::vector<char> SctApi::SctApi::probe unsigned int  rod,
signed int  harness = -1
 

Do quick scan of channels Recognises all the same, clock by 2 and an event header Return a char for each link examined 0 All zero's 1 All one's 2 Clock by 2 4 Clock by 4 L L1A E Event Header S Soft Reset B BC Reset J Junk (ie anything else).

IPC: Needs feedback, some delay to response Conf: Some lookup?!

Referenced by TApi::probe().

std::vector<std::vector<char> > SctApi::SctApi::probeScan unsigned int  rod,
boost::shared_ptr< Scan scan,
signed int  harness = -1
 

Scan over a variable and perform a probe for each.

Referenced by TApi::probeScan().

std::vector<char> SctApi::SctApi::probeWithTrigger unsigned int  rod,
const Trigger trigger,
signed int  harness = -1
 

Do quick scan of channels Recognises all the same, clock by 2 and an event header Return a char for each link examined 0 All zero's 1 All one's 2 Clock by 2 4 Clock by 4 L L1A E Event Header S Soft Reset B BC Reset {b,a,d, ,c,r,a,t,e} : Nothing can be returned -- no such crate! (only relevant over top level ipc) J Junk (ie anything else).

IPC: Needs feedback, some delay to response Conf: Some lookup?!

Referenced by TApi::probeWithTrigger().

void SctApi::SctApi::rawData unsigned int  rod,
int  delay,
int  units,
bool  setMask = true,
const Trigger trig = 0
 

IPC: Needs feedback, immediate response Conf: No Communication.

Referenced by TApi::rawData().

UINT32* SctApi::SctApi::readEventBuffer unsigned int  rod,
int  sl,
bool  extFlag,
bool  errorType
[protected]
 

IPC: Needs feedback, immediate response Conf: No Communication.

void SctApi::SctApi::readRawData unsigned int  rod,
int  delay,
bool  setMask
[private]
 

Read raw data from all links into one "histogram".

unsigned long SctApi::SctApi::readRodCommandReg unsigned int  rod,
long  regNumber
 

IPC: Immediate response Conf: No interaction.

Referenced by TApi::readRodCommandReg().

unsigned int SctApi::SctApi::readRODRegister unsigned int  rod,
int  r
 

Read a register from the ROD.

unsigned long SctApi::SctApi::readRodStatusReg unsigned int  rod,
long  regNumber
 

IPC: Immediate response Conf: No interaction.

Referenced by TApi::readRodStatusReg().

virtual void SctApi::SctApi::really_getABCDModule UINT32  mid,
BankType  bank
[protected, virtual]
 

version of getABCDModule which will not look at the crate controller's local cache but will actually get it from the ROD

virtual void SctApi::SctApi::really_setABCDModule UINT32  mid,
std::list< BankType banks,
UINT32  api_cfg_bits
[protected, virtual]
 

version of setABCDModule which will not look at the crate controller's local cache but will actually set it to the ROD.

void SctApi::SctApi::reportEventErrors  ) 
 

Suggest problems with modules based on events in event buffer.

Referenced by SctApi::ScanControlRODHisto::reportEventErrors().

void SctApi::SctApi::restoreBOCRegisters unsigned int  rod,
BankType  bank
 

Restore BOC registers.

Referenced by TApi::restoreBOCRegisters().

void SctApi::SctApi::restoreBOCSetup unsigned int  rod,
BankType  bank
 

Response BOC setup.

Referenced by TApi::restoreBOCSetup().

void SctApi::SctApi::resumePolling  ) 
 

Resume the primitive polling thread.

Referenced by TApi::resumePolling().

ABCDModule* SctApi::SctApi::retrieveModule UINT32  mid  ) 
 

Module data as cached from Configuration.

IPC: Immediate response Conf: Interaction

Referenced by TApi::retrieveModule().

void SctApi::SctApi::rodMode unsigned int  rod,
int  mode,
int  flag,
int  fifoSetup,
int  nBins,
int  delay,
int  message
 

Direct write of ROD mode!

Referenced by TApi::rodMode().

void SctApi::SctApi::saveBOCRegisters unsigned int  rod,
BankType  bank
 

Save BOC registers.

Referenced by TApi::saveBOCRegisters().

void SctApi::SctApi::saveBOCSetup unsigned int  rod,
BankType  bank
 

Save BOC setup.

Referenced by TApi::saveBOCSetup().

void SctApi::SctApi::scanEvents unsigned int  rod,
int  sl,
bool  extFlag,
bool  errorType
 

IPC: Needs feedback, immediate response Conf: No Communication.

Referenced by TApi::scanEvents().

virtual void SctApi::SctApi::sendABCDModule UINT32  mid,
BankType  bank,
ConfigType  type = SCTAPI_CONFIG_ALL,
const bool  enableDataMode = true
[virtual]
 

Parameters:
mid Unique identifier of the module to send
bank Configuration bank in the ROD
type How much configuration to transmit
DDC: Check module state Set select line IPC: Not during scan Conf: No Lookup

Referenced by TApi::sendABCDModule().

virtual void SctApi::SctApi::sendAllABCDModules BankType  bank,
ConfigType  type = SCTAPI_CONFIG_ALL,
const bool  enableDataMode = true
[virtual]
 

Parameters:
bank Configuration bank in the ROD
type How much configuration to transmit
DDC: Check module state Set select line IPC: Not during scan Conf: No Lookup LocalCache: not as of 1/3/2005 AJB

Referenced by SctApi::ScanControlTIMHisto::nextBin(), and TApi::sendABCDModules().

std::pair<UINT32, UINT32> SctApi::SctApi::sendData unsigned int  rod,
int  type,
int  dsp
 

Send a SEND_DATA primitive and retrieve the (pointer, length) result.

Referenced by SctApi::ScanControlRODHisto::getEventCountChunk(), and SctApi::ScanControlRODHisto::getHistogramChunk().

void SctApi::SctApi::sendDebugPrimList unsigned int  rod  ) 
 

IPC: Immediate response (expert) Conf: No Interaction.

Referenced by TApi::sendDebugPrimList().

void SctApi::SctApi::sendDebugPrimListAll  ) 
 

IPC: Immediate response (expert) Conf: No Interaction.

Referenced by TApi::sendDebugPrimListAll().

void SctApi::SctApi::sendDebugSlavePrimList unsigned int  rod,
unsigned int  slave,
bool  await,
bool  response
 

Send the previously created prim list to a slave dsp.

Parameters:
await Master prim list waits for slave list to complete
response Expect a reply
IPC: Immediate response (expert) Conf: No Interaction

Referenced by TApi::sendDebugSlavePrimList().

void SctApi::SctApi::sendL1A unsigned int  rod,
bool  capture = false
 

The mask is unchanged in this function and it is set up to go to all modules.

IPC: Not during scan Conf: No Communication

void SctApi::SctApi::sendPrimList unsigned int  rod,
boost::shared_ptr< PrimListWrapper prim
 

A helper function for other methods in this class, to be used only internally to this class as it exposes the RodPrimList class.

Referenced by SctApi::ScanControlRODHisto::nextBin().

void SctApi::SctApi::sendPrimListAll boost::shared_ptr< PrimListWrapper prim  )  [private]
 

A helper function for other methods in this class, to be used only internally to this class as it exposes the RodPrimList class.

void SctApi::SctApi::sendRodTrigger unsigned int  rod,
const Trigger trig,
long unsigned  count,
int  scan_point = 0
 

IPC: Not during any other scan Conf: No communication.

Referenced by TApi::sendRodTrigger().

void SctApi::SctApi::sendSlavePrimList unsigned int  rod,
boost::shared_ptr< PrimListWrapper prim,
unsigned int  slave,
bool  await,
bool  response
[private]
 

Send a RodPrimList to the Master DSP which contains the RodPrimList which is passed as an argument.

Parameters:
await If true master waits for completion of slave primlist
response If true master expects reponse from slave

unsigned long SctApi::SctApi::sendTimBurst unsigned long  count,
int  random,
bool  external = false
 

Send burst of triggers to TIM.

Returns:
last l1id

Referenced by TApi::sendTimBurst().

unsigned long SctApi::SctApi::sendTriggers const Trigger trig,
unsigned long  count,
int  scan_point = 0
 

Send lots of triggers: frequency and source worked out from trigger.

Returns:
last l1id

Referenced by TApi::sendTriggers().

virtual void SctApi::SctApi::setABCDModule UINT32  mid,
std::list< BankType banks
[virtual]
 

IPC: Don't do during scan Conf: Possible cache LocalCache: Yes.

Referenced by TApi::setABCDModule().

virtual void SctApi::SctApi::setABCDModules std::list< BankType bank  )  [virtual]
 

IPC: Don't do during scan Conf: Possible cache LocalCache: Yes.

Referenced by TApi::setABCDModules().

void SctApi::SctApi::setAutoUpdateBanks std::list< BankType banks  ) 
 

List of banks to be kept up to date with.

Referenced by TApi::setAutoUpdateBank().

void SctApi::SctApi::setDebugOption std::string  opt  ) 
 

Enable a debug option.

DDC: No action IPC: Class action Conf: No communication

Referenced by TApi::setDebugOption().

void SctApi::SctApi::setErrorMasks  ) 
 

put all EFB error masks to their cached values

Referenced by SctApi::ScanControlRODHisto::postScanModuleSetup().

void SctApi::SctApi::setIsDictionary  ) 
 

C++ only method to tell a IS aware program to go and look up the dictionary which will tell it where to write to.

void SctApi::SctApi::setMrsStream MRSStream *  stream  ) 
 

C++ only method to tell a MRS aware program where to write to.

void SctApi::SctApi::setRunNumber UINT32  newRun  ) 
 

IPC: Don't do during a scan.

Referenced by TApi::setRunNumber().

void SctApi::SctApi::setScanNumber UINT32  newScan  ) 
 

IPC: Don't do during a scan.

Referenced by TApi::setScanNumber().

void SctApi::SctApi::setSlaveBlock unsigned int  rod,
int  s,
long  sAdd,
int  words,
long  value = 0,
bool  usePrim = true
 

Set block of slave memory to value (using RW_SLAVE_MEMORY).

void SctApi::SctApi::setup  )  [private]
 

This sets the unexpected handler to interpret all sorts of exceptions.

Called by constructor

void SctApi::SctApi::setupEventDump const Scan scan,
const ScanEx ex,
const   RodLabel,
boost::shared_ptr< PrimListWrapper list
[private]
 

Setup an event dump according to scan and ex.

void SctApi::SctApi::setupEventTrapping const Scan scan,
const ScanEx ex,
const   RodLabel,
boost::shared_ptr< PrimListWrapper list
[private]
 

Setup event trapping according to scan and ex.

void SctApi::SctApi::setupHistogramming const Scan scan,
const ScanEx ex,
const   RodLabel,
bool  tim,
boost::shared_ptr< PrimListWrapper list
[private]
 

Setup histogramming according to scan and ex.

void SctApi::SctApi::setupModuleMask int  port,
int  slvs,
boost::shared_ptr< PrimListWrapper list
 

Add set module masks command to primitive list.

void SctApi::SctApi::setupModuleMask unsigned int  rod,
int  port,
int  slvs
 

Set module masks.

virtual int SctApi::SctApi::setupRawData unsigned int  rod,
int  delay,
int  units,
bool  setMask,
const Trigger trig = 0
[private, virtual]
 

Put raw data into FIFOs ready to read out.

void SctApi::SctApi::setupScanMasks ScanEx extra,
int  distSlave,
bool  dual
[private]
 

Setup module, dsp masks etc.

void SctApi::SctApi::shutdownAll  ) 
 

Leave everything in a suitable state and delete all the objects.

Shutdown anything that needs shutting down This is where we should send DCS to standby message??

IPC: Block everything else!

Referenced by TApi::shutdownAll().

void SctApi::SctApi::standardRegisterDump unsigned int  rod  ) 
 

Dump to ${tempDir}/Dump_05d.

void SctApi::SctApi::standardRegisterDump RodLabel  rl  ) 
 

Dump to ${tempDir}/Dump_05d.

Parameters:
rl Refers to the ROD to dump

Referenced by TApi::standardRegisterDump().

void SctApi::SctApi::standardRegisterDumpAll  ) 
 

Dump to ${tempDir}/Dump_05d RODs sent to consecutive d.

boost::shared_ptr<ScanMonitor> SctApi::SctApi::startAsyncScan boost::shared_ptr< const Scan scan  ) 
 

DDC: Check modules configured.

.. Check select IPC: Not during any other scan Conf: Lookup

Referenced by TApi::startAsyncScan().

void SctApi::SctApi::startEventTrap int  slave,
boost::shared_ptr< PrimListWrapper primList
 

Start event trap on a slave.

void SctApi::SctApi::startEventTrapping const Scan scan,
const ScanEx ex,
const   RodLabel,
boost::shared_ptr< PrimListWrapper primList
[private]
 

Start event trapping according to scan and ex.

void SctApi::SctApi::startHistogramTask const Scan scan,
const ScanEx ex,
const   RodLabel,
unsigned int  startBin,
unsigned int  nBins,
unsigned int  nTrigs,
boost::shared_ptr< PrimListWrapper list
 

Create histogram task primitive.

Referenced by SctApi::ScanControlRODHisto::nextBin().

boost::shared_ptr<ScanControl> SctApi::SctApi::startScan boost::shared_ptr< const Scan scan,
bool  pollTriggers
 

DDC: Check modules configured.

.. Check select IPC: Not during any other scan Conf: Lookup

void SctApi::SctApi::startSlave unsigned int  rod,
unsigned int  slave
 

Send the start slave primitive to a DSP.

void SctApi::SctApi::startupModules  ) 
 

DDC: Check modules in configurable state.

Correct run state and no warnings

IPC: Don't do during a scan Conf: Maybe interaction

std::string SctApi::SctApi::status  ) 
 

IPC: Immediate response (sane in all eventualities!) Conf: No communication.

Referenced by TApi::status().

void SctApi::SctApi::stopEventTrap int  slave,
boost::shared_ptr< PrimListWrapper primList
 

Stop event trap on a slave.

void SctApi::SctApi::stopHistogramming const ScanEx ex  ) 
 

Stop the histogramming and event trapping tasks.

void SctApi::SctApi::stopPolling  ) 
 

Pause the primitive polling thread.

Referenced by TApi::stopPolling().

void SctApi::SctApi::stopTriggers  ) 
 

IPC: Not during scan Conf: No communication.

Referenced by TApi::stopTriggers().

void SctApi::SctApi::storeBOCConfigurations  ) 
 

IPC: Don't do during a scan Conf: Definite interaction!

void SctApi::SctApi::storeModuleConfigurations BankType  bank  ) 
 

IPC: Don't do during a scan Conf: Definite interaction!

int SctApi::SctApi::synchSendPrimList unsigned int  rod,
boost::shared_ptr< PrimListWrapper primList,
int  timeout = 10
 

A helper function for other methods in this class, to be used only internally to this class as it exposes the RodPrimList class.

int SctApi::SctApi::synchSendPrimListAll boost::shared_ptr< PrimListWrapper primList,
int  timeout = 10
 

A helper function for other methods in this class, to be used only internally to this class as it exposes the RodPrimList class.

unsigned int SctApi::SctApi::testLinkOutRetrieve unsigned int  rod  ) 
 

Return selected link to send to ROD front panel LEMO.

void SctApi::SctApi::testLinkOutSelect unsigned int  rod,
unsigned int  link
 

Select link to send to ROD front panel LEMO.

Referenced by TApi::testLinkOutSelect().

void SctApi::SctApi::tidyHistogramming  ) 
 

Stop all tasks to do with histogramming.

This is a lower level function than abort, which returns to a know state

DDC: If changed? IPC: Any time Conf: No communication

Referenced by TApi::tidyHistogramming().

void SctApi::SctApi::timBCReset  ) 
 

IPC: Not during scan Conf: No communication.

Referenced by TApi::timBCReset().

void SctApi::SctApi::timCalL1A int  delay  ) 
 

IPC: Not during scan Conf: No communication.

Referenced by TApi::timCalL1A().

double SctApi::SctApi::timGetResetFrequency  ) 
 

get reset frequency (Hz)

Referenced by TApi::timGetResetFrequency().

double SctApi::SctApi::timGetTriggerFrequency  ) 
 

get trigger frequency (kHz)

Referenced by TApi::timGetTriggerFrequency().

void SctApi::SctApi::timL1A  ) 
 

IPC: Not during scan Conf: No communication.

Referenced by TApi::timL1A().

void SctApi::SctApi::timLoadSequence const std::vector< unsigned > &  seq  ) 
 

load a tim sequence - see Crate for detail

UINT16 SctApi::SctApi::timReadRegister int  reg  ) 
 

Parameters:
reg VME address of the register

Referenced by SctApi::ScanControl::printVetoStatus(), and TApi::timReadRegister().

unsigned long SctApi::SctApi::timRunSequence unsigned long  ntrigs,
int  random,
bool  external = false
 

run the tim sequence

Returns:
last l1id

Referenced by TApi::runTimSequence().

void SctApi::SctApi::timSetFrequency double  trigFreq,
double  rstFreq
 

Freq is approximated by divider circuit Available frequencies are 600, 60, 6, 0.6 kHz Divided by: 1, 2, 3, 4, 5, 6, (10, 12).

Referenced by TApi::timSetFrequency().

void SctApi::SctApi::timSoftReset  ) 
 

IPC: Not during scan Conf: No communication.

Referenced by TApi::timSoftReset().

void SctApi::SctApi::timVerbose  ) 
 

Print all TIM registers to stdout.

Referenced by TApi::timVerbose().

void SctApi::SctApi::timWriteRegister int  reg,
UINT16  val
 

Parameters:
reg VME address of the register

Referenced by SctApi::ScanControlTIMHisto::startHistogramming(), and TApi::timRegLoad().

void SctApi::SctApi::unsetBusy  ) 
 

For use in emergency situations only (not as a matter of course) use unsetBusy() to override SctApi's present busy state and ask it to appear "not busy" to the outside world.

See also "SctApi::hasFinishedScanning()".

void SctApi::SctApi::unsetDebugOption std::string  opt  ) 
 

Disable a debug option.

DDC: No action IPC: Class action Conf: No communication

Referenced by TApi::unsetDebugOption().

void SctApi::SctApi::updateISStats  )  [private]
 

Update the IS version of SctApiCounters.

void SctApi::SctApi::validateScan boost::shared_ptr< const Scan scan  ) 
 

Check that a scan is ok to run.

Exceptions:
SctApiException if there is a problem in the scan

void SctApi::SctApi::writeRODRegister unsigned int  rod,
int  reg,
int  off,
int  width,
int  value
 

Write to a ROD register.


Field Documentation

const unsigned int SctApi::SctApi::BAD_MODULE [static]
 

The constant returned as an unknown module.

Definition at line 118 of file SctApi.h.

boost::shared_ptr<SctConfiguration::Configuration> SctApi::SctApi::config [private]
 

The configuration database.

Definition at line 1620 of file SctApi.h.

boost::shared_ptr<Crate> SctApi::SctApi::crateObject [private]
 

Map to retrieve crate objects.

Definition at line 1630 of file SctApi.h.

RunType SctApi::SctApi::currentRunMode [private]
 

Current run mode.

Definition at line 1647 of file SctApi.h.

boost::shared_ptr<PrimListWrapper> SctApi::SctApi::debugPrimList [private]
 

The current debug primitive list.

Definition at line 1626 of file SctApi.h.

boost::shared_ptr<const Scan> SctApi::SctApi::lastDebugScan [private]
 

For debug only, save the scan information.

Definition at line 1634 of file SctApi.h.

std::list<BankType> SctApi::SctApi::m_autoUpdateBanks [private]
 

list of banks to automatically update on ROD

Definition at line 1650 of file SctApi.h.

boost::shared_ptr<Idiosyncrasy> SctApi::SctApi::m_id [private]
 

This Idiosyncrasy is what makes us different from every other crate controller.

Definition at line 1617 of file SctApi.h.

Referenced by ucid().

std::auto_ptr<boost::thread> SctApi::SctApi::m_initialisationThread [private]
 

initialisation threads

Definition at line 1666 of file SctApi.h.

boost::shared_ptr<Log> SctApi::SctApi::m_log [private]
 

Log everything that is called.

Definition at line 1633 of file SctApi.h.

Referenced by log().

SctApiConfigCache SctApi::SctApi::module_cache [private]
 

configuration cache

Definition at line 1672 of file SctApi.h.

std::map<UINT32, ABCDModule> SctApi::SctApi::moduleMap [protected]
 

Cache of module configurations.

Definition at line 1493 of file SctApi.h.

boost::mutex SctApi::SctApi::moduleMapAccess [protected]
 

Controls access to module configurations during initialisation.

Definition at line 1496 of file SctApi.h.

std::map<RodLabel, RodInfo> SctApi::SctApi::rodInfoList [protected]
 

List them again, but with additional info...

Definition at line 1489 of file SctApi.h.

std::list<RodLabel> SctApi::SctApi::rodList [protected]
 

List all the RODs.

Definition at line 1486 of file SctApi.h.

UINT32 SctApi::SctApi::runNumber [private]
 

Current run number.

Definition at line 1644 of file SctApi.h.

UINT32 SctApi::SctApi::scanNumber [private]
 

Current scan number.

Definition at line 1641 of file SctApi.h.


The documentation for this class was generated from the following files:
Generated on Mon Feb 6 14:04:38 2006 for SCT DAQ/DCS Software - C++ by  doxygen 1.4.6