Cat
Public Types | Public Member Functions | Private Attributes | List of all members
A3PE Class Reference

#include <A3PE.h>

Inheritance diagram for A3PE:
Element Hierarchy Object Attrib

Public Types

typedef unsigned long U32
 
typedef unsigned short U16
 
typedef unsigned char U8
 
- Public Types inherited from Attrib
enum  Attribut {
  UNDEFINED, PASSIVE, ACTIVE, INTERFACE,
  IO, IODATA, ELEMENT, HARDWARE,
  PROCESSUS, SOFTWARE
}
 

Public Member Functions

 A3PE ()
 
 ~A3PE ()
 
void help ()
 
StatusCode init ()
 
void reset ()
 
StatusCode resetStorageFifo ()
 
StatusCode resetUsbPhasers ()
 
StatusCode resetLatencyCounter ()
 
StatusCode resetAcquisitionWriteCounter ()
 
StatusCode resetPatternFifo ()
 
StatusCode resetTriggerFifo ()
 
StatusCode resetToAXRam ()
 
StatusCode resetFromAXRam ()
 
StatusCode resetSequenceFromToAX ()
 
StatusCode resetFE ()
 
StatusCode resetSPI ()
 
StatusCode setEnableADC (unsigned int, bool)
 
StatusCode setWriteStorageFifoUsb (bool)
 
bool enableADC (unsigned int)
 
bool writeStorageFifoUsb ()
 
StatusCode setReadPatternFifoUsb (bool)
 
bool readPatternFifoUsb ()
 
StatusCode setReadTriggerFifoUsb (bool)
 
bool readTriggerFifoUsb ()
 
StatusCode setReadToAXRamUsb (bool)
 
bool readToAXRamUsb ()
 
StatusCode setWriteFromAXRamUsb (bool)
 
bool writeFromAXRamUsb ()
 
StatusCode setAXRamUsb (bool)
 
StatusCode startSequenceAX ()
 
StatusCode setSoftwareTrigger (bool)
 
bool softwareTrigger ()
 
StatusCode setClockDivision (unsigned int)
 
StatusCode setTriggerDelay (unsigned int)
 
StatusCode setSeqPulseDelay (unsigned int)
 
StatusCode setTriggerRate (unsigned int)
 
StatusCode setNTrigger (unsigned int)
 
StatusCode setFifoLatency (unsigned short)
 
StatusCode setFifoDepth (unsigned int)
 
unsigned int clockDivision ()
 
unsigned int triggerDelay ()
 
unsigned int seqPulseDelay ()
 
unsigned int triggerRate ()
 
unsigned int nTrigger ()
 
unsigned int fifoLatency ()
 
unsigned int fifoDepth ()
 
StatusCode acquisition ()
 
StatusCode enableStorage ()
 
StatusCode trigger ()
 
bool dataReady ()
 
void update ()
 
StatusCode setInternalAXSequence (bool)
 
bool internalAXSequence ()
 
StatusCode setLengthAX (unsigned int)
 
unsigned int lengthAX ()
 
StatusCode setLatencyAX (unsigned int)
 
unsigned int latencyAX ()
 
StatusCode setPipeline (unsigned int)
 
unsigned int pipeline ()
 
RegisterctrlReg ()
 
RegistersetupReg ()
 
RegisterresetReg ()
 
RegisterstatusReg ()
 
RegisteracqReg ()
 
RegisterlatencyReg ()
 
RegisterwriteLengthFifoReg ()
 
RegisterctrlAnaMezzReg ()
 
RegisterclockDivisionReg ()
 
RegistertriggerReg ()
 
RegistertoAXReg ()
 
RegisterfromAXReg ()
 
Registerspare3Reg ()
 
RAMstorageRam ()
 
RAMpatternRam ()
 
RAMtriggerRam ()
 
RAMtoAXRam ()
 
RAMfromAXRam ()
 
RAMtestRam ()
 
RegisterfromAXRamPtrReg ()
 
RegistertoAXRamPtrReg ()
 
void dumpStorage ()
 
void loadStorage (std::string)
 
void dumpPattern ()
 
void loadPattern (std::string)
 
void dumpTrigger ()
 
void loadTrigger (std::string)
 
void dumpToAX ()
 
void loadToAX (std::string)
 
void dumpFromAX ()
 
void loadFromAX (std::string)
 
StatusCode setAddToAXRam (int)
 
StatusCode setAddFromAXRam (int)
 
- Public Member Functions inherited from Element
 Element ()
 Standard constructor. More...
 
virtual ~Element ()
 Destructor. More...
 
void recursiveInitElement ()
 
void recursiveInitCommunications ()
 
StatusCode setConnection (Hierarchy *)
 
Hierarchyconnection ()
 
- Public Member Functions inherited from Hierarchy
 Hierarchy ()
 Standard constructor. More...
 
virtual ~Hierarchy ()
 Destructor. More...
 
void clear ()
 
void setParent (Hierarchy *parent)
 
Hierarchyparent ()
 
Hierarchyparent (std::string)
 
Hierarchyorigin ()
 
virtual void addChild (Hierarchy *element)
 
std::vector< Hierarchy * > children ()
 
Hierarchychild (std::string)
 
HierarchychildTyped (std::string)
 
unsigned long numberOfChildren ()
 
bool hasChildren ()
 
void delChild (Hierarchy *)
 
void delChild (std::string)
 
std::string path (std::string=std::string(""))
 
std::string pathTyped (std::string=std::string(""))
 
void tree (std::string indent=std::string(""))
 
void tree ()
 
- Public Member Functions inherited from Object
 Object ()
 Standard constructor. More...
 
virtual ~Object ()
 Destructor. More...
 
std::string name () const
 
std::string type ()
 
unsigned char id ()
 
std::string title ()
 
void msgSvc (int level, std::string msg, std::string name)
 
void msg (std::string mymsg)
 
void verbose (std::string mymsg)
 
void debug (std::string mymsg)
 
void info (std::string mymsg)
 
void warning (std::string mymsg)
 
void error (std::string mymsg)
 
void fatal (std::string mymsg)
 
void msg (std::string mymsg, std::string name)
 
void verbose (std::string mymsg, std::string name)
 
void debug (std::string mymsg, std::string name)
 
void info (std::string mymsg, std::string name)
 
void warning (std::string mymsg, std::string name)
 
void error (std::string mymsg, std::string name)
 
void fatal (std::string mymsg, std::string name)
 
void setName (std::string name)
 
void setType (std::string type)
 
void setId (unsigned char id)
 
void setTitle (std::string title)
 
void setDllName (std::string dllName)
 
std::string dllName ()
 
- Public Member Functions inherited from Attrib
 Attrib ()
 Standard constructor. More...
 
virtual ~Attrib ()
 Destructor. More...
 
bool is (int attribut)
 
void add (int attribut)
 
void remove (int attribut)
 
std::string attributs ()
 

Private Attributes

Registerm_globalUsbReset
 
Registerm_ctrlReg
 
Registerm_resetReg
 
Registerm_setupReg
 
Registerm_statusReg
 
Registerm_acqReg
 
Registerm_latencyReg
 
Registerm_writeLengthFifoReg
 
Registerm_ctrlAnaMezzReg
 
Registerm_clockDivisionReg
 
Registerm_triggerReg
 
Registerm_toAXReg
 
Registerm_fromAXReg
 
Registerm_spare3Reg
 
RAMm_storageRam
 
RAMm_patternRam
 
RAMm_triggerRam
 
Registerm_toAXRamPtr
 
Registerm_fromAXRamPtr
 
RAMm_toAXRam
 
RAMm_fromAXRam
 
Registerm_latencyAX
 
Registerm_lengthAX
 
RAMm_testRam
 

Additional Inherited Members

- Protected Attributes inherited from Element
Hierarchym_connection
 
- Protected Attributes inherited from Attrib
std::string m_attribString [10]
 

Detailed Description

Definition at line 20 of file A3PE.h.

Member Typedef Documentation

◆ U16

typedef unsigned short A3PE::U16

Definition at line 23 of file A3PE.h.

◆ U32

typedef unsigned long A3PE::U32

Definition at line 22 of file A3PE.h.

◆ U8

typedef unsigned char A3PE::U8

Definition at line 24 of file A3PE.h.

Constructor & Destructor Documentation

◆ A3PE()

A3PE::A3PE ( )
inline

Definition at line 25 of file A3PE.h.

References Attrib::add(), Hierarchy::addChild(), Object::debug(), IOdata::defDataU16(), IOdata::defDataU32(), Attrib::ELEMENT, Attrib::HARDWARE, IOobject::io(), m_acqReg, m_clockDivisionReg, m_ctrlAnaMezzReg, m_ctrlReg, m_fromAXRam, m_fromAXRamPtr, m_fromAXReg, m_globalUsbReset, m_latencyAX, m_latencyReg, m_lengthAX, m_patternRam, m_resetReg, m_setupReg, m_spare3Reg, m_statusReg, m_storageRam, m_testRam, m_toAXRam, m_toAXRamPtr, m_toAXReg, m_triggerRam, m_triggerReg, m_writeLengthFifoReg, IOobject::setAddress(), Object::setId(), Object::setName(), RAM::setSize(), and Object::setType().

25  {
26  setType("A3PE");
27  setId(0);
29  debug("A3PE built.","A3PE::A3PE");
30 
33  m_globalUsbReset->setName("GlobalUsbReset");
36 
37  m_ctrlReg=new Register();
39  m_ctrlReg->setName("CtrlRegister");
40  m_ctrlReg->io()->defDataU32(1);
41  m_ctrlReg->setAddress(20);
42 
43  m_resetReg=new Register();
45  m_resetReg->setName("ResetRegister");
46  m_resetReg->io()->defDataU16(1);
48 
49  m_statusReg=new Register();
51  m_statusReg->setName("StatusRegister");
52  m_statusReg->io()->defDataU16(1);
54 
55  m_setupReg=new Register();
57  m_setupReg->setName("SetupRegister");
58  m_setupReg->io()->defDataU16(1);
60 
61  m_acqReg=new Register();
63  m_acqReg->setName("AcqRegister");
64  m_acqReg->io()->defDataU16(1);
65  m_acqReg->setAddress(4);
66 
67  m_latencyReg=new Register();
69  m_latencyReg->setName("LatencyRegister");
70  m_latencyReg->io()->defDataU16(1);
72 
75  m_writeLengthFifoReg->setName("WriteLengthFifoRegister");
78 
79  //ICECAL Analog Mezzanine Relays:
82  m_ctrlAnaMezzReg->setName("CtrlAnaMezzReg");
85 
88  m_clockDivisionReg->setName("ClockDivisionReg");
91 
92  m_triggerReg=new Register();
94  m_triggerReg->setName("TriggerReg");
95  m_triggerReg->io()->defDataU32(1);
97 
98  m_toAXReg=new Register();
100  m_toAXReg->setName("ToAXReg");
101  m_toAXReg->io()->defDataU32(1);
102  m_toAXReg->setAddress(26);
103 
104  m_fromAXReg=new Register();
106  m_fromAXReg->setName("FromAXReg");
107  m_fromAXReg->io()->defDataU32(1);
108  m_fromAXReg->setAddress(27);
109 
110  m_spare3Reg=new Register();
112  m_spare3Reg->setName("Spare3Reg");
113  m_spare3Reg->io()->defDataU32(1);
114  m_spare3Reg->setAddress(19);
115 
116  m_storageRam=new RAM();
118  m_storageRam->setName("StorageRam");
119  m_storageRam->setSize(96,512);
121 
122  m_patternRam=new RAM();
124  m_patternRam->setName("PatternRam");
125  m_patternRam->setSize(96,512);
127 
128  m_triggerRam=new RAM();
130  m_triggerRam->setName("TriggerRam");
131  m_triggerRam->setSize(8,512);
133 
134  m_toAXRamPtr=new Register();
136  m_toAXRamPtr->setName("ToAXRamPtr");
137  m_toAXRamPtr->io()->defDataU16(1);
139 
140  m_toAXRam=new RAM();
142  m_toAXRam->setName("ToAXRam");
143  m_toAXRam->setSize(32,512);
144  m_toAXRam->setAddress(29);
145 
146  m_fromAXRamPtr=new Register();
148  m_fromAXRamPtr->setName("FromAXRamPtr");
151 
152  m_fromAXRam=new RAM();
154  m_fromAXRam->setName("FromAXRam");
155  m_fromAXRam->setSize(32,512);
156  m_fromAXRam->setAddress(30);
157 
158  m_latencyAX=new Register();
160  m_latencyAX->setName("LatencyAX");
161  m_latencyAX->io()->defDataU32(1);
162  m_latencyAX->setAddress(32);
163 
164  m_lengthAX=new Register();
166  m_lengthAX->setName("LengthAX");
167  m_lengthAX->io()->defDataU16(1);
168  m_lengthAX->setAddress(34);
169 
170  m_testRam=new RAM();
172  m_testRam->setName("TestRam");
173  m_testRam->setSize(32,50);
174  m_testRam->setAddress(27);
175  }
Register * m_triggerReg
Definition: A3PE.h:597
Definition: RAM.h:16
RAM * m_testRam
Definition: A3PE.h:610
void defDataU32(unsigned long size)
Definition: IOdata.h:193
RAM * m_triggerRam
Definition: A3PE.h:603
StatusCode setSize(unsigned int, unsigned int)
Definition: RAM.cpp:29
void add(int attribut)
Definition: Attrib.h:67
void setName(std::string name)
Definition: Object.h:51
Register * m_toAXReg
Definition: A3PE.h:598
Register * m_fromAXRamPtr
Definition: A3PE.h:605
Register * m_statusReg
Definition: A3PE.h:591
Register * m_lengthAX
Definition: A3PE.h:609
void defDataU16(unsigned long size)
Definition: IOdata.h:186
Register * m_writeLengthFifoReg
Definition: A3PE.h:594
Register * m_fromAXReg
Definition: A3PE.h:599
Register * m_setupReg
Definition: A3PE.h:590
Register * m_ctrlAnaMezzReg
Definition: A3PE.h:595
void setType(std::string type)
Definition: Object.h:52
void setId(unsigned char id)
Definition: Object.h:53
void debug(std::string mymsg)
Definition: Object.h:37
RAM * m_patternRam
Definition: A3PE.h:602
Register * m_ctrlReg
Definition: A3PE.h:588
Register * m_resetReg
Definition: A3PE.h:589
RAM * m_storageRam
Definition: A3PE.h:601
Register * m_clockDivisionReg
Definition: A3PE.h:596
void setAddress(U32 address)
Definition: IOobject.h:84
Register * m_latencyReg
Definition: A3PE.h:593
Register * m_spare3Reg
Definition: A3PE.h:600
Register * m_acqReg
Definition: A3PE.h:592
Register * m_latencyAX
Definition: A3PE.h:608
Register * m_globalUsbReset
Definition: A3PE.h:587
virtual void addChild(Hierarchy *element)
Definition: Hierarchy.cpp:83
Register * m_toAXRamPtr
Definition: A3PE.h:604
IOdata * io()
Definition: IOobject.h:66
RAM * m_toAXRam
Definition: A3PE.h:606
RAM * m_fromAXRam
Definition: A3PE.h:607

◆ ~A3PE()

A3PE::~A3PE ( )
inline

Definition at line 177 of file A3PE.h.

177  {
178  /*
179  delete m_globalUsbReset;
180  delete m_ctrlReg;
181  delete m_resetReg;
182  delete m_setupReg;
183  delete m_statusReg;
184  delete m_acqReg;
185  delete m_latencyReg;
186  delete m_writeLengthFifoReg;
187  delete m_clockDivisionReg;
188  delete m_triggerReg;
189  delete m_toAXReg;
190  delete m_fromAXReg;
191  delete m_spare3Reg;
192  delete m_storageRam;
193  delete m_patternRam;
194  delete m_triggerRam;
195  delete m_toAXRam;
196  delete m_fromAXRam;
197  delete m_toAXRamPtr;
198  delete m_fromAXRamPtr;
199  delete m_lengthAX;
200  delete m_latencyAX;
201  delete m_testRam;
202  */
203  }

Member Function Documentation

◆ acqReg()

Register* A3PE::acqReg ( )
inline

Definition at line 500 of file A3PE.h.

References m_acqReg.

Referenced by BOOST_PYTHON_MODULE().

500  {
501  return m_acqReg;
502  }
Register * m_acqReg
Definition: A3PE.h:592

◆ acquisition()

StatusCode A3PE::acquisition ( )

Definition at line 417 of file A3PE.cpp.

References Object::debug(), m_acqReg, Register::setBit(), and Object::warning().

Referenced by BOOST_PYTHON_MODULE(), StorageFifoAcquisition::execute(), StorageFifo::execute(), and reset().

417  {
418  debug("Acquisition sequence started","A3PE::acquisition");
419  warning("This acquisition trigger does not release the busy bit !",
420  "A3PE::acquisition");
421  return m_acqReg->setBit(3,1);
422 }
void debug(std::string mymsg)
Definition: Object.h:37
StatusCode setBit(unsigned int, bool)
Definition: Register.cpp:32
Register * m_acqReg
Definition: A3PE.h:592
void warning(std::string mymsg)
Definition: Object.h:39

◆ clockDivision()

unsigned int A3PE::clockDivision ( )

Definition at line 448 of file A3PE.cpp.

References shell::data(), IOdata::dataU32(), Object::error(), IOobject::io(), StatusCode::isFailure(), m_clockDivisionReg, Object::name(), and IOobject::read().

Referenced by BOOST_PYTHON_MODULE(), and reset().

448  {
450  error("Cannot read Clock Division register "+m_clockDivisionReg->name(),
451  "Register::setClockDivision");
452  return 0;
453  }
454  unsigned long int data=m_clockDivisionReg->io()->dataU32()[0];
455  return (data&(16777215)); // switch last 24 bits at 0
456 }
bool isFailure() const
Definition: StatusCode.h:68
U32 * dataU32()
Definition: IOdata.h:222
virtual StatusCode read()
Definition: IOobject.h:73
void error(std::string mymsg)
Definition: Object.h:40
def data(object, stream=None)
Definition: shell.py:150
Register * m_clockDivisionReg
Definition: A3PE.h:596
std::string name() const
Definition: Object.h:28
IOdata * io()
Definition: IOobject.h:66

◆ clockDivisionReg()

Register* A3PE::clockDivisionReg ( )
inline

Definition at line 516 of file A3PE.h.

References m_clockDivisionReg.

Referenced by BOOST_PYTHON_MODULE().

516  {
517  return m_clockDivisionReg;
518  }
Register * m_clockDivisionReg
Definition: A3PE.h:596

◆ ctrlAnaMezzReg()

Register* A3PE::ctrlAnaMezzReg ( )
inline

Definition at line 512 of file A3PE.h.

References m_ctrlAnaMezzReg.

Referenced by BOOST_PYTHON_MODULE().

512  {
513  return m_ctrlAnaMezzReg;
514  }
Register * m_ctrlAnaMezzReg
Definition: A3PE.h:595

◆ ctrlReg()

Register* A3PE::ctrlReg ( )
inline

Definition at line 484 of file A3PE.h.

References m_ctrlReg.

Referenced by BOOST_PYTHON_MODULE().

484  {
485  return m_ctrlReg;
486  }
Register * m_ctrlReg
Definition: A3PE.h:588

◆ dataReady()

bool A3PE::dataReady ( )

Definition at line 406 of file A3PE.cpp.

References Object::debug(), Register::getBit(), and m_acqReg.

Referenced by BOOST_PYTHON_MODULE(), Acquisition::execute(), and reset().

406  {
407  bool isReady=m_acqReg->getBit(2);
408  if (isReady) {
409  debug("Spying EnableStorage bit - Data Ready: NO ","A3PE::dataReady");
410  }
411  else {
412  debug("Spying EnableStorage bit - Data Ready: YES","A3PE::dataReady");
413  }
414  return (!isReady);
415 }
bool getBit(unsigned int)
Definition: Register.cpp:66
void debug(std::string mymsg)
Definition: Object.h:37
Register * m_acqReg
Definition: A3PE.h:592

◆ dumpFromAX()

void A3PE::dumpFromAX ( )

Definition at line 896 of file A3PE.cpp.

References IOdata::dataU8(), fromAXRam(), Object::info(), IOobject::io(), itos(), lengthAX(), IOobject::read(), setAddFromAXRam(), and setAXRamUsb().

Referenced by BOOST_PYTHON_MODULE(), and toAXRamPtrReg().

896  {
897  setAXRamUsb(true);
898  setAddFromAXRam(0);
899  fromAXRam()->read();
900  U8* val=fromAXRam()->io()->dataU8();
901  unsigned int l=lengthAX();
902  info("Length AX="+itos(l));
903  char line[100];
904  for (int d=0; d<l+2; ++d){
905  sprintf(line,"%3d -> %1d %1d %1d %1d",
906  d,val[4*d],val[1+4*d],val[2+4*d],val[3+4*d]);
907  info(line);
908  }
909 }
void info(std::string mymsg)
Definition: Object.h:38
std::string itos(int)
Definition: Tools.cpp:46
RAM * fromAXRam()
Definition: A3PE.h:552
virtual StatusCode read()
Definition: IOobject.h:73
unsigned char U8
Definition: ICECALv3.h:55
StatusCode setAddFromAXRam(int)
Definition: A3PE.cpp:190
unsigned int lengthAX()
Definition: A3PE.cpp:338
U8 * dataU8()
Definition: IOdata.h:214
StatusCode setAXRamUsb(bool)
Definition: A3PE.cpp:225
IOdata * io()
Definition: IOobject.h:66

◆ dumpPattern()

void A3PE::dumpPattern ( )

Definition at line 716 of file A3PE.cpp.

References IOdata::dataU8(), RAM::depth(), Object::info(), IOobject::io(), patternRam(), IOobject::read(), and setReadPatternFifoUsb().

Referenced by BOOST_PYTHON_MODULE(), and toAXRamPtrReg().

716  {
717  RAM* fifo=patternRam();
718  setReadPatternFifoUsb(true);
719  fifo->read();
720  setReadPatternFifoUsb(false);
721  int val[12];
722  char line[100];
723  for (unsigned int d=0; d<fifo->depth(); ++d){
724  val[0] =fifo->io()->dataU8( 0+12*d);
725  val[1] =fifo->io()->dataU8( 1+12*d);
726  val[2] =fifo->io()->dataU8( 2+12*d);
727  val[3] =fifo->io()->dataU8( 3+12*d);
728  val[4] =fifo->io()->dataU8( 4+12*d);
729  val[5] =fifo->io()->dataU8( 5+12*d);
730  val[6] =fifo->io()->dataU8( 6+12*d);
731  val[7] =fifo->io()->dataU8( 7+12*d);
732  val[8] =fifo->io()->dataU8( 8+12*d);
733  val[9] =fifo->io()->dataU8( 9+12*d);
734  val[10]=fifo->io()->dataU8(10+12*d);
735  val[11]=fifo->io()->dataU8(11+12*d);
736  sprintf(line,"%3d -> %4d %4d %4d %4d %4d %4d %4d %4d",
737  d,
738  val[0]+((val[1]&0xf)<<8),(val[1]>>4)+(val[2]<<4),
739  val[3]+((val[4]&0xf)<<8),(val[4]>>4)+(val[5]<<4),
740  val[6]+((val[7]&0xf)<<8),(val[7]>>4)+(val[8]<<4),
741  val[9]+((val[10]&0xf)<<8),(val[10]>>4)+(val[11]<<4)
742  );
743  info(line);
744  }
745 }
void info(std::string mymsg)
Definition: Object.h:38
Definition: RAM.h:16
StatusCode setReadPatternFifoUsb(bool)
Definition: A3PE.cpp:124
RAM * patternRam()
Definition: A3PE.h:540
virtual StatusCode read()
Definition: IOobject.h:73
int depth()
Definition: RAM.h:32
U8 * dataU8()
Definition: IOdata.h:214
IOdata * io()
Definition: IOobject.h:66

◆ dumpStorage()

void A3PE::dumpStorage ( )

Definition at line 641 of file A3PE.cpp.

References IOdata::dataU8(), fifoDepth(), Object::info(), IOobject::io(), IOobject::read(), and storageRam().

Referenced by BOOST_PYTHON_MODULE(), and toAXRamPtrReg().

641  {
642  RAM* fifo=storageRam();
643  fifo->read();
644  int val[12];
645  char line[100];
646  for (unsigned int d=0; d<fifoDepth(); ++d){
647  val[0] =fifo->io()->dataU8( 0+12*d);
648  val[1] =fifo->io()->dataU8( 1+12*d);
649  val[2] =fifo->io()->dataU8( 2+12*d);
650  val[3] =fifo->io()->dataU8( 3+12*d);
651  val[4] =fifo->io()->dataU8( 4+12*d);
652  val[5] =fifo->io()->dataU8( 5+12*d);
653  val[6] =fifo->io()->dataU8( 6+12*d);
654  val[7] =fifo->io()->dataU8( 7+12*d);
655  val[8] =fifo->io()->dataU8( 8+12*d);
656  val[9] =fifo->io()->dataU8( 9+12*d);
657  val[10]=fifo->io()->dataU8(10+12*d);
658  val[11]=fifo->io()->dataU8(11+12*d);
659  sprintf(line,"%3d -> %4d %4d %4d %4d %4d %4d %4d %4d",
660  d,
661  val[0]+((val[1]&0xf)<<8),(val[1]>>4)+(val[2]<<4),
662  val[3]+((val[4]&0xf)<<8),(val[4]>>4)+(val[5]<<4),
663  val[6]+((val[7]&0xf)<<8),(val[7]>>4)+(val[8]<<4),
664  val[9]+((val[10]&0xf)<<8),(val[10]>>4)+(val[11]<<4)
665  );
666  info(line);
667  }
668 }
void info(std::string mymsg)
Definition: Object.h:38
Definition: RAM.h:16
RAM * storageRam()
Definition: A3PE.h:536
virtual StatusCode read()
Definition: IOobject.h:73
U8 * dataU8()
Definition: IOdata.h:214
unsigned int fifoDepth()
Definition: A3PE.cpp:631
IOdata * io()
Definition: IOobject.h:66

◆ dumpToAX()

void A3PE::dumpToAX ( )

Definition at line 844 of file A3PE.cpp.

References IOdata::dataU8(), RAM::depth(), Object::info(), IOobject::io(), IOobject::read(), setAddToAXRam(), setReadToAXRamUsb(), and toAXRam().

Referenced by BOOST_PYTHON_MODULE(), and toAXRamPtrReg().

844  {
845  setAddToAXRam(0);
846  setReadToAXRamUsb(true);
847  toAXRam()->read();
848  setReadToAXRamUsb(false);
849  U8* val=toAXRam()->io()->dataU8();
850  char line[100];
851  for (int d=0; d<toAXRam()->depth(); ++d){
852  sprintf(line,"%3d -> %1d %1d %1d %1d",
853  d,val[4*d],val[1+4*d],val[2+4*d],val[3+4*d]);
854  info(line);
855  }
856 }
void info(std::string mymsg)
Definition: Object.h:38
StatusCode setReadToAXRamUsb(bool)
Definition: A3PE.cpp:201
StatusCode setAddToAXRam(int)
Definition: A3PE.cpp:179
virtual StatusCode read()
Definition: IOobject.h:73
unsigned char U8
Definition: ICECALv3.h:55
int depth()
Definition: RAM.h:32
U8 * dataU8()
Definition: IOdata.h:214
RAM * toAXRam()
Definition: A3PE.h:548
IOdata * io()
Definition: IOobject.h:66

◆ dumpTrigger()

void A3PE::dumpTrigger ( )

Definition at line 791 of file A3PE.cpp.

References IOdata::dataU8(), RAM::depth(), Object::info(), IOobject::io(), IOobject::read(), setReadTriggerFifoUsb(), and triggerRam().

Referenced by BOOST_PYTHON_MODULE(), and toAXRamPtrReg().

791  {
792  RAM* fifo=triggerRam();
793  setReadTriggerFifoUsb(true);
794  fifo->read();
795  setReadTriggerFifoUsb(false);
796  int val;
797  char line[100];
798  for (int d=0; d<fifo->depth(); ++d){
799  val=fifo->io()->dataU8(d);
800  sprintf(line,"%3d -> %1d %1d %1d %1d %1d %1d %1d %1d",
801  d,
802  val&0x1,(val>>1)&0x1,(val>>2)&0x1,(val>>3)&0x1,
803  (val>>4)&0x1,(val>>5)&0x1,(val>>6)&0x1,(val>>7)&0x1);
804  info(line);
805  }
806 }
void info(std::string mymsg)
Definition: Object.h:38
Definition: RAM.h:16
RAM * triggerRam()
Definition: A3PE.h:544
virtual StatusCode read()
Definition: IOobject.h:73
StatusCode setReadTriggerFifoUsb(bool)
Definition: A3PE.cpp:152
int depth()
Definition: RAM.h:32
U8 * dataU8()
Definition: IOdata.h:214
IOdata * io()
Definition: IOobject.h:66

◆ enableADC()

bool A3PE::enableADC ( unsigned int  adc)

Definition at line 265 of file A3PE.cpp.

References Register::getBit(), and m_setupReg.

Referenced by BOOST_PYTHON_MODULE(), and reset().

265  {
266  if (adc<8){
267  return m_setupReg->getBit(adc);
268  }
269  return false;
270 }
bool getBit(unsigned int)
Definition: Register.cpp:66
Register * m_setupReg
Definition: A3PE.h:590

◆ enableStorage()

StatusCode A3PE::enableStorage ( )

Definition at line 383 of file A3PE.cpp.

References shell::data(), IOdata::dataU16(), Object::error(), StatusCode::FAILURE, IOobject::io(), StatusCode::isFailure(), m_acqReg, m_resetReg, Object::name(), IOobject::read(), IOdata::setU16(), StatusCode::SUCCESS, and IOobject::write().

Referenced by BOOST_PYTHON_MODULE(), Acquisition::execute(), and reset().

383  {
384  // enable data storage
385  if (m_acqReg->read().isFailure()){
386  error("Cannot read acquisition register "+name(),"A3P3::enableStorage");
387  return StatusCode::FAILURE;
388  }
389  unsigned int data=m_acqReg->io()->dataU16()[0];
390  // info("Value before acquisition: "+itos(data));
391  data|=4;
392  m_acqReg->io()->setU16(0,data);
393  if (m_acqReg->write().isFailure()){
394  error("Cannot write acquisition register ","A3P3::enableStorage");
395  return StatusCode::FAILURE;
396  }
397  // reset the busy line
398  m_resetReg->io()->setU16(0,8);
399  if (m_resetReg->write().isFailure()){
400  error("Cannot reset Busy line"+name(),"A3P3::enableStorage");
401  return StatusCode::FAILURE;
402  }
403  return StatusCode::SUCCESS;
404 }
bool isFailure() const
Definition: StatusCode.h:68
virtual StatusCode write()
Definition: IOobject.h:80
StatusCode setU16(unsigned long int, U16)
Definition: IOdata.cpp:60
virtual StatusCode read()
Definition: IOobject.h:73
void error(std::string mymsg)
Definition: Object.h:40
def data(object, stream=None)
Definition: shell.py:150
Register * m_resetReg
Definition: A3PE.h:589
U16 * dataU16()
Definition: IOdata.h:218
Register * m_acqReg
Definition: A3PE.h:592
std::string name() const
Definition: Object.h:28
IOdata * io()
Definition: IOobject.h:66

◆ fifoDepth()

unsigned int A3PE::fifoDepth ( )

Definition at line 631 of file A3PE.cpp.

References shell::data(), IOdata::dataU16(), Object::error(), IOobject::io(), StatusCode::isFailure(), m_writeLengthFifoReg, Object::name(), and IOobject::read().

Referenced by BOOST_PYTHON_MODULE(), dumpStorage(), StorageFifo::initialize(), loadStorage(), and reset().

631  {
633  error("Cannot read writeLengthFifo register "+m_writeLengthFifoReg->name(),
634  "Register::setFifoDepth");
635  return 0;
636  }
637  unsigned short data=m_writeLengthFifoReg->io()->dataU16()[0];
638  return (data&511);
639 }
bool isFailure() const
Definition: StatusCode.h:68
Register * m_writeLengthFifoReg
Definition: A3PE.h:594
virtual StatusCode read()
Definition: IOobject.h:73
void error(std::string mymsg)
Definition: Object.h:40
def data(object, stream=None)
Definition: shell.py:150
U16 * dataU16()
Definition: IOdata.h:218
std::string name() const
Definition: Object.h:28
IOdata * io()
Definition: IOobject.h:66

◆ fifoLatency()

unsigned int A3PE::fifoLatency ( )

Definition at line 599 of file A3PE.cpp.

References shell::data(), IOdata::dataU16(), Object::error(), IOobject::io(), StatusCode::isFailure(), m_latencyReg, Object::name(), and IOobject::read().

Referenced by BOOST_PYTHON_MODULE(), and reset().

599  {
600  if (m_latencyReg->read().isFailure()){
601  error("Cannot read Latency register "+m_latencyReg->name(),
602  "Register::setFifoLatency");
603  return 0;
604  }
605  unsigned short data=m_latencyReg->io()->dataU16()[0];
606  return (data&65535);
607 }
bool isFailure() const
Definition: StatusCode.h:68
virtual StatusCode read()
Definition: IOobject.h:73
void error(std::string mymsg)
Definition: Object.h:40
def data(object, stream=None)
Definition: shell.py:150
U16 * dataU16()
Definition: IOdata.h:218
Register * m_latencyReg
Definition: A3PE.h:593
std::string name() const
Definition: Object.h:28
IOdata * io()
Definition: IOobject.h:66

◆ fromAXRam()

RAM* A3PE::fromAXRam ( )
inline

Definition at line 552 of file A3PE.h.

References m_fromAXRam.

Referenced by BOOST_PYTHON_MODULE(), dumpFromAX(), A3PE_BitFlip::initialize(), and loadFromAX().

552  {
553  return m_fromAXRam;
554  }
RAM * m_fromAXRam
Definition: A3PE.h:607

◆ fromAXRamPtrReg()

Register* A3PE::fromAXRamPtrReg ( )
inline

Definition at line 560 of file A3PE.h.

References m_fromAXRamPtr.

560  {
561  return m_fromAXRamPtr;
562  }
Register * m_fromAXRamPtr
Definition: A3PE.h:605

◆ fromAXReg()

Register* A3PE::fromAXReg ( )
inline

Definition at line 528 of file A3PE.h.

References m_fromAXReg.

Referenced by BOOST_PYTHON_MODULE().

528  {
529  return m_fromAXReg;
530  }
Register * m_fromAXReg
Definition: A3PE.h:599

◆ help()

void A3PE::help ( )
inlinevirtual

printout help for the element

Implements Element.

Definition at line 208 of file A3PE.h.

References Object::info(), and Object::name().

208 { info("A3PE "+name()+". No help.","A3PE::help"); };
void info(std::string mymsg)
Definition: Object.h:38
std::string name() const
Definition: Object.h:28

◆ init()

StatusCode A3PE::init ( )
inlinevirtual

init the component

Returns
void

Implements Element.

Definition at line 214 of file A3PE.h.

References StatusCode::SUCCESS.

214  {
215  return StatusCode::SUCCESS;
216  };

◆ internalAXSequence()

bool A3PE::internalAXSequence ( )

Definition at line 285 of file A3PE.cpp.

References Object::debug(), Register::getBit(), and m_setupReg.

Referenced by BOOST_PYTHON_MODULE(), A3PE_BitFlip::initialize(), and update().

285  {
286  debug("Get fpga loop mode","A3PE::internalAXSequence");
287  return m_setupReg->getBit(12);
288 }
bool getBit(unsigned int)
Definition: Register.cpp:66
Register * m_setupReg
Definition: A3PE.h:590
void debug(std::string mymsg)
Definition: Object.h:37

◆ latencyAX()

unsigned int A3PE::latencyAX ( )

Definition at line 348 of file A3PE.cpp.

References shell::data(), IOdata::dataU32(), Object::error(), IOobject::io(), StatusCode::isFailure(), m_latencyAX, Object::name(), and IOobject::read().

Referenced by BOOST_PYTHON_MODULE(), A3PE_BitFlip::initialize(), and update().

348  {
349  if (m_latencyAX->read().isFailure()){
350  error("Cannot read Latency AX register "+m_latencyAX->name(),
351  "A3PE::latencyAX");
352  return 0;
353  }
354  unsigned long int data=m_latencyAX->io()->dataU32()[0];
355  return (data&0xffffff);
356  return 0;
357 }
bool isFailure() const
Definition: StatusCode.h:68
U32 * dataU32()
Definition: IOdata.h:222
virtual StatusCode read()
Definition: IOobject.h:73
void error(std::string mymsg)
Definition: Object.h:40
def data(object, stream=None)
Definition: shell.py:150
Register * m_latencyAX
Definition: A3PE.h:608
std::string name() const
Definition: Object.h:28
IOdata * io()
Definition: IOobject.h:66

◆ latencyReg()

Register* A3PE::latencyReg ( )
inline

Definition at line 504 of file A3PE.h.

References m_latencyReg.

504  {
505  return m_latencyReg;
506  }
Register * m_latencyReg
Definition: A3PE.h:593

◆ lengthAX()

unsigned int A3PE::lengthAX ( )

Definition at line 338 of file A3PE.cpp.

References shell::data(), IOdata::dataU16(), Object::error(), IOobject::io(), StatusCode::isFailure(), m_lengthAX, Object::name(), and IOobject::read().

Referenced by BOOST_PYTHON_MODULE(), dumpFromAX(), A3PE_BitFlip::initialize(), and update().

338  {
339  if (m_lengthAX->read().isFailure()){
340  error("Cannot read Length AX register "+m_lengthAX->name(),
341  "A3PE::lengthAX");
342  return 0;
343  }
344  unsigned long int data=m_lengthAX->io()->dataU16()[0];
345  return (data&0xffff);
346 }
bool isFailure() const
Definition: StatusCode.h:68
Register * m_lengthAX
Definition: A3PE.h:609
virtual StatusCode read()
Definition: IOobject.h:73
void error(std::string mymsg)
Definition: Object.h:40
def data(object, stream=None)
Definition: shell.py:150
U16 * dataU16()
Definition: IOdata.h:218
std::string name() const
Definition: Object.h:28
IOdata * io()
Definition: IOobject.h:66

◆ loadFromAX()

void A3PE::loadFromAX ( std::string  filename)

Definition at line 911 of file A3PE.cpp.

References shell::data(), IOdata::dataU8(), RAM::depth(), fromAXRam(), Object::info(), IOobject::io(), itos(), setAddFromAXRam(), setWriteFromAXRamUsb(), and IOobject::write().

Referenced by BOOST_PYTHON_MODULE(), and toAXRamPtrReg().

911  {
912  setAddFromAXRam(0);
913  std::ifstream ifs(filename.c_str(),std::ifstream::in);
914  std::string s;
915  std::string comment;
916  std::istringstream instream;
917  U8* data=fromAXRam()->io()->dataU8();
918  int depth=fromAXRam()->depth();
919  int d=0;
920  int c0, c1, c2, c3;
921  while (getline(ifs, s) && d<depth) { // Reads line into s
922  instream.clear(); // Reset from possible previous errors.
923  instream.str(s); // Use s as source of input.
924  instream>>std::ws;
925  if (!instream.eof()) {
926  instream >> comment;
927  if (comment==std::string("#")) {
928  info(s);
929  }
930  else {
931  instream.clear(); // Reset from possible previous errors.
932  instream.str(s); // Use s as source of input.
933  instream>>c0>>c1>>c2>>c3;
934  info(itos(c0)+" "+itos(c1)+" "+itos(c2)+" "+itos(c3));
935  data[ 4*d]=c0&0xff;
936  data[1+4*d]=c1&0xff;
937  data[2+4*d]=c2&0xff;
938  data[3+4*d]=c3&0xff;
939  d++;
940  }
941  }
942  }
943  ifs.close();
944  setWriteFromAXRamUsb(true);
945  fromAXRam()->write();
946  setWriteFromAXRamUsb(false);
947 }
void info(std::string mymsg)
Definition: Object.h:38
std::string itos(int)
Definition: Tools.cpp:46
RAM * fromAXRam()
Definition: A3PE.h:552
virtual StatusCode write()
Definition: IOobject.h:80
unsigned char U8
Definition: ICECALv3.h:55
def data(object, stream=None)
Definition: shell.py:150
StatusCode setAddFromAXRam(int)
Definition: A3PE.cpp:190
int depth()
Definition: RAM.h:32
U8 * dataU8()
Definition: IOdata.h:214
IOdata * io()
Definition: IOobject.h:66
StatusCode setWriteFromAXRamUsb(bool)
Definition: A3PE.cpp:213

◆ loadPattern()

void A3PE::loadPattern ( std::string  filename)

Definition at line 747 of file A3PE.cpp.

References shell::data(), IOdata::dataU8(), RAM::depth(), Object::info(), IOobject::io(), itos(), patternRam(), and IOobject::write().

Referenced by BOOST_PYTHON_MODULE(), and toAXRamPtrReg().

747  {
748  std::ifstream ifs(filename.c_str(),std::ifstream::in);
749  std::string s;
750  std::string comment;
751  std::istringstream instream;
752  U8* data=patternRam()->io()->dataU8();
753  int depth=patternRam()->depth();
754  int d=0;
755  int c0, c1, c2, c3, c4, c5, c6, c7;
756  while (getline(ifs, s) && d<depth) { // Reads line into s
757  instream.clear(); // Reset from possible previous errors.
758  instream.str(s); // Use s as source of input.
759  instream>>std::ws;
760  if (!instream.eof()) {
761  instream >> comment;
762  if (comment==std::string("#")) {
763  info(s);
764  }
765  else {
766  instream.clear(); // Reset from possible previous errors.
767  instream.str(s); // Use s as source of input.
768  instream>>c0>>c1>>c2>>c3>>c4>>c5>>c6>>c7;
769  info(itos(c0)+" "+itos(c1)+" "+itos(c2)+" "+itos(c3)
770  +" "+itos(c4)+" "+itos(c5)+" "+itos(c6)+" "+itos(c7));
771  data[ 12*d]=(c0&0xff);
772  data[ 1+12*d]=((c0>>8)&0xf)+((c1<<4)&0xf0);
773  data[ 2+12*d]=((c1>>4)&0xff);
774  data[ 3+12*d]=(c2&0xff);
775  data[ 4+12*d]=((c2>>8)&0xf)+((c3<<4)&0xf0);
776  data[ 5+12*d]=((c3>>4)&0xff);
777  data[ 6+12*d]=(c4&0xff);
778  data[ 7+12*d]=((c4>>8)&0xf)+((c5<<4)&0xf0);
779  data[ 8+12*d]=((c5>>4)&0xff);
780  data[ 9+12*d]=(c6&0xff);
781  data[10+12*d]=((c6>>8)&0xf)+((c7<<4)&0xf0);
782  data[11+12*d]=((c7>>4)&0xff);
783  d++;
784  }
785  }
786  }
787  ifs.close();
788  patternRam()->write();
789 }
void info(std::string mymsg)
Definition: Object.h:38
std::string itos(int)
Definition: Tools.cpp:46
virtual StatusCode write()
Definition: IOobject.h:80
RAM * patternRam()
Definition: A3PE.h:540
unsigned char U8
Definition: ICECALv3.h:55
def data(object, stream=None)
Definition: shell.py:150
int depth()
Definition: RAM.h:32
U8 * dataU8()
Definition: IOdata.h:214
IOdata * io()
Definition: IOobject.h:66

◆ loadStorage()

void A3PE::loadStorage ( std::string  filename)

Definition at line 670 of file A3PE.cpp.

References shell::data(), IOdata::dataU8(), fifoDepth(), Object::info(), IOobject::io(), itos(), setWriteStorageFifoUsb(), storageRam(), and IOobject::write().

Referenced by BOOST_PYTHON_MODULE(), and toAXRamPtrReg().

670  {
671  std::ifstream ifs(filename.c_str(),std::ifstream::in);
672  std::string s;
673  std::string comment;
674  std::istringstream instream;
675  U8* data=storageRam()->io()->dataU8();
676  int depth=fifoDepth();
677  int d=0;
678  int c0, c1, c2, c3, c4, c5, c6, c7;
679  while (getline(ifs, s) && d<depth) { // Reads line into s
680  instream.clear(); // Reset from possible previous errors.
681  instream.str(s); // Use s as source of input.
682  instream>>std::ws;
683  if (!instream.eof()) {
684  instream >> comment;
685  if (comment==std::string("#")) {
686  info(s);
687  }
688  else {
689  instream.clear(); // Reset from possible previous errors.
690  instream.str(s); // Use s as source of input.
691  instream>>c0>>c1>>c2>>c3>>c4>>c5>>c6>>c7;
692  info(itos(c0)+" "+itos(c1)+" "+itos(c2)+" "+itos(c3)
693  +" "+itos(c4)+" "+itos(c5)+" "+itos(c6)+" "+itos(c7));
694  data[ 12*d]=(c0&0xff);
695  data[ 1+12*d]=((c0>>8)&0xf)+((c1<<4)&0xf0);
696  data[ 2+12*d]=((c1>>4)&0xff);
697  data[ 3+12*d]=(c2&0xff);
698  data[ 4+12*d]=((c2>>8)&0xf)+((c3<<4)&0xf0);
699  data[ 5+12*d]=((c3>>4)&0xff);
700  data[ 6+12*d]=(c4&0xff);
701  data[ 7+12*d]=((c4>>8)&0xf)+((c5<<4)&0xf0);
702  data[ 8+12*d]=((c5>>4)&0xff);
703  data[ 9+12*d]=(c6&0xff);
704  data[10+12*d]=((c6>>8)&0xf)+((c7<<4)&0xf0);
705  data[11+12*d]=((c7>>4)&0xff);
706  d++;
707  }
708  }
709  }
710  ifs.close();
712  storageRam()->write();
713  setWriteStorageFifoUsb(false);
714 }
void info(std::string mymsg)
Definition: Object.h:38
std::string itos(int)
Definition: Tools.cpp:46
virtual StatusCode write()
Definition: IOobject.h:80
RAM * storageRam()
Definition: A3PE.h:536
unsigned char U8
Definition: ICECALv3.h:55
def data(object, stream=None)
Definition: shell.py:150
U8 * dataU8()
Definition: IOdata.h:214
StatusCode setWriteStorageFifoUsb(bool)
Definition: A3PE.cpp:99
unsigned int fifoDepth()
Definition: A3PE.cpp:631
IOdata * io()
Definition: IOobject.h:66

◆ loadToAX()

void A3PE::loadToAX ( std::string  filename)

Definition at line 858 of file A3PE.cpp.

References shell::data(), IOdata::dataU8(), RAM::depth(), Object::info(), IOobject::io(), itos(), setAddToAXRam(), setAXRamUsb(), toAXRam(), and IOobject::write().

Referenced by BOOST_PYTHON_MODULE(), A3PE_BitFlip::initialize(), and toAXRamPtrReg().

858  {
859  setAXRamUsb(true);
860  setAddToAXRam(0);
861  info("loadtoax="+filename);
862  std::ifstream ifs(filename.c_str(),std::ifstream::in);
863  std::string s;
864  std::string comment;
865  std::istringstream instream;
866  U8* data=toAXRam()->io()->dataU8();
867  int depth=toAXRam()->depth();
868  int d=0;
869  int c0, c1, c2, c3;
870  while (getline(ifs, s) && d<depth) { // Reads line into s
871  instream.clear(); // Reset from possible previous errors.
872  instream.str(s); // Use s as source of input.
873  instream>>std::ws;
874  if (!instream.eof()) {
875  instream >> comment;
876  if (comment==std::string("#")) {
877  info(s);
878  }
879  else {
880  instream.clear(); // Reset from possible previous errors.
881  instream.str(s); // Use s as source of input.
882  instream>>c0>>c1>>c2>>c3;
883  info(itos(c0)+" "+itos(c1)+" "+itos(c2)+" "+itos(c3));
884  data[ 4*d]=c0&0xff;
885  data[1+4*d]=c1&0xff;
886  data[2+4*d]=c2&0xff;
887  data[3+4*d]=c3&0xff;
888  d++;
889  }
890  }
891  }
892  ifs.close();
893  toAXRam()->write();
894 }
void info(std::string mymsg)
Definition: Object.h:38
std::string itos(int)
Definition: Tools.cpp:46
virtual StatusCode write()
Definition: IOobject.h:80
StatusCode setAddToAXRam(int)
Definition: A3PE.cpp:179
unsigned char U8
Definition: ICECALv3.h:55
def data(object, stream=None)
Definition: shell.py:150
int depth()
Definition: RAM.h:32
U8 * dataU8()
Definition: IOdata.h:214
RAM * toAXRam()
Definition: A3PE.h:548
StatusCode setAXRamUsb(bool)
Definition: A3PE.cpp:225
IOdata * io()
Definition: IOobject.h:66

◆ loadTrigger()

void A3PE::loadTrigger ( std::string  filename)

Definition at line 809 of file A3PE.cpp.

References shell::data(), IOdata::dataU8(), RAM::depth(), Object::info(), IOobject::io(), itos(), triggerRam(), Object::warning(), and IOobject::write().

Referenced by BOOST_PYTHON_MODULE(), and toAXRamPtrReg().

809  {
810  std::ifstream ifs(filename.c_str(),std::ifstream::in);
811  std::string s;
812  std::string comment;
813  std::istringstream instream;
814  U8* data=triggerRam()->io()->dataU8();
815  int depth=triggerRam()->depth();
816  int d=0;
817  int c0, c1, c2, c3, c4, c5, c6, c7;
818  while (getline(ifs, s) && d<depth) { // Reads line into s
819  instream.clear(); // Reset from possible previous errors.
820  instream.str(s); // Use s as source of input.
821  instream>>std::ws;
822  if (!instream.eof()) {
823  instream >> comment;
824  if (comment==std::string("#")) {
825  info(s);
826  }
827  else {
828  instream.clear(); // Reset from possible previous errors.
829  instream.str(s); // Use s as source of input.
830  instream>>c0>>c1>>c2>>c3>>c4>>c5>>c6>>c7;
831  info(itos(c0)+" "+itos(c1)+" "+itos(c2)+" "+itos(c3)
832  +" "+itos(c4)+" "+itos(c5)+" "+itos(c6)+" "+itos(c7));
833  data[d]=c0+((c1&0x1)<<1)+((c2&0x1)<<2)+((c3&0x1)<<3)+
834  ((c4&0x1)<<4)+((c5&0x1)<<5)+((c6&0x1)<<6)+((c7&0x1)<<7);
835  warning(itos(d)+" => "+itos(data[d]));
836  d++;
837  }
838  }
839  }
840  ifs.close();
841  triggerRam()->write();
842 }
void info(std::string mymsg)
Definition: Object.h:38
std::string itos(int)
Definition: Tools.cpp:46
virtual StatusCode write()
Definition: IOobject.h:80
RAM * triggerRam()
Definition: A3PE.h:544
unsigned char U8
Definition: ICECALv3.h:55
def data(object, stream=None)
Definition: shell.py:150
int depth()
Definition: RAM.h:32
U8 * dataU8()
Definition: IOdata.h:214
void warning(std::string mymsg)
Definition: Object.h:39
IOdata * io()
Definition: IOobject.h:66

◆ nTrigger()

unsigned int A3PE::nTrigger ( )

Definition at line 568 of file A3PE.cpp.

References shell::data(), IOdata::dataU32(), Object::error(), IOobject::io(), StatusCode::isFailure(), m_triggerReg, Object::name(), and IOobject::read().

Referenced by BOOST_PYTHON_MODULE(), and reset().

568  {
569  if (m_triggerReg->read().isFailure()){
570  error("Cannot read Trigger register "+m_triggerReg->name(),
571  "Register::setNTrigger");
572  return 0;
573  }
574  unsigned long int data=m_triggerReg->io()->dataU32()[0];
575  return ((data>>24)&255);
576 }
Register * m_triggerReg
Definition: A3PE.h:597
bool isFailure() const
Definition: StatusCode.h:68
U32 * dataU32()
Definition: IOdata.h:222
virtual StatusCode read()
Definition: IOobject.h:73
void error(std::string mymsg)
Definition: Object.h:40
def data(object, stream=None)
Definition: shell.py:150
std::string name() const
Definition: Object.h:28
IOdata * io()
Definition: IOobject.h:66

◆ patternRam()

RAM* A3PE::patternRam ( )
inline

Definition at line 540 of file A3PE.h.

References m_patternRam.

Referenced by BOOST_PYTHON_MODULE(), dumpPattern(), and loadPattern().

540  {
541  return m_patternRam;
542  }
RAM * m_patternRam
Definition: A3PE.h:602

◆ pipeline()

unsigned int A3PE::pipeline ( )

Definition at line 307 of file A3PE.cpp.

References IOdata::dataU16(), Object::error(), IOobject::io(), StatusCode::isFailure(), m_acqReg, Object::name(), and IOobject::read().

Referenced by BOOST_PYTHON_MODULE(), and update().

307  {
308  if (m_acqReg->read().isFailure()){
309  error("Cannot read acquisition register "+m_acqReg->name(),
310  "A3PE::pipeline");
311  return 0;
312  }
313  return (((m_acqReg->io()->dataU16()[0])>>6)&3);
314 }
bool isFailure() const
Definition: StatusCode.h:68
virtual StatusCode read()
Definition: IOobject.h:73
void error(std::string mymsg)
Definition: Object.h:40
U16 * dataU16()
Definition: IOdata.h:218
Register * m_acqReg
Definition: A3PE.h:592
std::string name() const
Definition: Object.h:28
IOdata * io()
Definition: IOobject.h:66

◆ readPatternFifoUsb()

bool A3PE::readPatternFifoUsb ( )

Definition at line 253 of file A3PE.cpp.

References Register::getBit(), and m_setupReg.

Referenced by BOOST_PYTHON_MODULE(), and reset().

253  {
254  if (m_setupReg->getBit(9)==1) return true;
255  return false;
256 }
bool getBit(unsigned int)
Definition: Register.cpp:66
Register * m_setupReg
Definition: A3PE.h:590

◆ readToAXRamUsb()

bool A3PE::readToAXRamUsb ( )

Definition at line 272 of file A3PE.cpp.

References Register::getBit(), and m_setupReg.

Referenced by BOOST_PYTHON_MODULE(), and reset().

272  {
273  return (m_setupReg->getBit(10)==1&&m_setupReg->getBit(11)==1);
274 }
bool getBit(unsigned int)
Definition: Register.cpp:66
Register * m_setupReg
Definition: A3PE.h:590

◆ readTriggerFifoUsb()

bool A3PE::readTriggerFifoUsb ( )

Definition at line 258 of file A3PE.cpp.

References Register::getBit(), and m_setupReg.

Referenced by BOOST_PYTHON_MODULE(), and reset().

258  {
259  if (m_setupReg->getBit(9)==1) return true;
260  return false;
261 }
bool getBit(unsigned int)
Definition: Register.cpp:66
Register * m_setupReg
Definition: A3PE.h:590

◆ reset()

void A3PE::reset ( )
inlinevirtual

Resets the Element so that is is in a standard and safe situation. Different from Element::init which configure the Element. Element::reset() is more an Emergency pull. It is often/usually called by the recursiveInitElement method at the start of the program.

Implements Element.

Definition at line 225 of file A3PE.h.

References acquisition(), clockDivision(), dataReady(), enableADC(), enableStorage(), Object::error(), fifoDepth(), fifoLatency(), Object::info(), IOobject::io(), StatusCode::isFailure(), m_globalUsbReset, m_resetReg, Object::name(), nTrigger(), readPatternFifoUsb(), readToAXRamUsb(), readTriggerFifoUsb(), resetAcquisitionWriteCounter(), resetFE(), resetFromAXRam(), resetLatencyCounter(), resetPatternFifo(), resetSequenceFromToAX(), resetSPI(), resetStorageFifo(), resetToAXRam(), resetTriggerFifo(), resetUsbPhasers(), seqPulseDelay(), setAXRamUsb(), setClockDivision(), setEnableADC(), setFifoDepth(), setFifoLatency(), setNTrigger(), setReadPatternFifoUsb(), setReadToAXRamUsb(), setReadTriggerFifoUsb(), setSeqPulseDelay(), setSoftwareTrigger(), setTriggerDelay(), setTriggerRate(), IOdata::setU16(), setWriteFromAXRamUsb(), setWriteStorageFifoUsb(), softwareTrigger(), startSequenceAX(), trigger(), triggerDelay(), triggerRate(), IOobject::write(), writeFromAXRamUsb(), and writeStorageFifoUsb().

Referenced by BOOST_PYTHON_MODULE(), and Proto40MHz_v1::reset().

225  {
226  info("A3PE reset procedure.");
227  info("A3PE global usb reset.","A3PE::reset");
228  if (m_globalUsbReset->write().isFailure()){
229  error("Cannot trigger a Global Usb reset on A3PE "+name(),"A3PE::reset");
230  }
231  info("A3PE global reset.","A3PE::reset");
232  m_resetReg->io()->setU16(0,0xFFFF);
233  if (m_resetReg->write().isFailure()){
234  error("Cannot trigger a Global reset on A3PE "+name(),"A3PE::reset");
235  }
236  };
void info(std::string mymsg)
Definition: Object.h:38
bool isFailure() const
Definition: StatusCode.h:68
virtual StatusCode write()
Definition: IOobject.h:80
StatusCode setU16(unsigned long int, U16)
Definition: IOdata.cpp:60
void error(std::string mymsg)
Definition: Object.h:40
Register * m_resetReg
Definition: A3PE.h:589
std::string name() const
Definition: Object.h:28
Register * m_globalUsbReset
Definition: A3PE.h:587
IOdata * io()
Definition: IOobject.h:66

◆ resetAcquisitionWriteCounter()

StatusCode A3PE::resetAcquisitionWriteCounter ( )

Definition at line 42 of file A3PE.cpp.

References Object::info(), m_resetReg, and Register::setBit().

Referenced by reset().

42  {
43  info("Reset acquisition write counter","A3PE::resetAcquisitionWriteCounter");
44  return m_resetReg->setBit(5,1);
45 }
void info(std::string mymsg)
Definition: Object.h:38
StatusCode setBit(unsigned int, bool)
Definition: Register.cpp:32
Register * m_resetReg
Definition: A3PE.h:589

◆ resetFE()

StatusCode A3PE::resetFE ( )

Definition at line 72 of file A3PE.cpp.

References Object::info(), m_resetReg, and Register::setBit().

Referenced by BOOST_PYTHON_MODULE(), and reset().

72  {
73  info("Reset FE triggered.","A3PE::resetFE");
74  return m_resetReg->setBit(14,1);
75 }
void info(std::string mymsg)
Definition: Object.h:38
StatusCode setBit(unsigned int, bool)
Definition: Register.cpp:32
Register * m_resetReg
Definition: A3PE.h:589

◆ resetFromAXRam()

StatusCode A3PE::resetFromAXRam ( )

Definition at line 62 of file A3PE.cpp.

References Object::info(), m_resetReg, and Register::setBit().

Referenced by BOOST_PYTHON_MODULE(), and reset().

62  {
63  info("Reset FromAX Ram","A3PE::resetFromAXRam");
64  return m_resetReg->setBit(9,1);
65 }
void info(std::string mymsg)
Definition: Object.h:38
StatusCode setBit(unsigned int, bool)
Definition: Register.cpp:32
Register * m_resetReg
Definition: A3PE.h:589

◆ resetLatencyCounter()

StatusCode A3PE::resetLatencyCounter ( )

Definition at line 37 of file A3PE.cpp.

References Object::info(), m_resetReg, and Register::setBit().

Referenced by BOOST_PYTHON_MODULE(), and reset().

37  {
38  info("Reset Latency counter","A3PE::resetLatencyCounter");
39  return m_resetReg->setBit(4,1);
40 }
void info(std::string mymsg)
Definition: Object.h:38
StatusCode setBit(unsigned int, bool)
Definition: Register.cpp:32
Register * m_resetReg
Definition: A3PE.h:589

◆ resetPatternFifo()

StatusCode A3PE::resetPatternFifo ( )

Definition at line 47 of file A3PE.cpp.

References Object::info(), m_resetReg, and Register::setBit().

Referenced by BOOST_PYTHON_MODULE(), and reset().

47  {
48  info("Reset Pattern Fifo","A3PE::resetPatternFifo");
49  return m_resetReg->setBit(6,1);
50 }
void info(std::string mymsg)
Definition: Object.h:38
StatusCode setBit(unsigned int, bool)
Definition: Register.cpp:32
Register * m_resetReg
Definition: A3PE.h:589

◆ resetReg()

Register* A3PE::resetReg ( )
inline

Definition at line 492 of file A3PE.h.

References m_resetReg.

Referenced by BOOST_PYTHON_MODULE().

492  {
493  return m_resetReg;
494  }
Register * m_resetReg
Definition: A3PE.h:589

◆ resetSequenceFromToAX()

StatusCode A3PE::resetSequenceFromToAX ( )

Definition at line 67 of file A3PE.cpp.

References Object::info(), m_resetReg, and Register::setBit().

Referenced by BOOST_PYTHON_MODULE(), and reset().

67  {
68  info("Reset Sequence From-To AX","A3PE::resetSequenceFromToAX");
69  return m_resetReg->setBit(10,1);
70 }
void info(std::string mymsg)
Definition: Object.h:38
StatusCode setBit(unsigned int, bool)
Definition: Register.cpp:32
Register * m_resetReg
Definition: A3PE.h:589

◆ resetSPI()

StatusCode A3PE::resetSPI ( )

Definition at line 77 of file A3PE.cpp.

References Object::info(), m_resetReg, and Register::setBit().

Referenced by BOOST_PYTHON_MODULE(), and reset().

77  {
78  info("Reset SPI triggered.","A3PE::resetSPI");
79  return m_resetReg->setBit(15,1);
80 }
void info(std::string mymsg)
Definition: Object.h:38
StatusCode setBit(unsigned int, bool)
Definition: Register.cpp:32
Register * m_resetReg
Definition: A3PE.h:589

◆ resetStorageFifo()

StatusCode A3PE::resetStorageFifo ( )

Definition at line 27 of file A3PE.cpp.

References Object::info(), m_resetReg, and Register::setBit().

Referenced by BOOST_PYTHON_MODULE(), and reset().

27  {
28  info("Reset Storage Fifo","A3PE::resetStorageFifo");
29  return m_resetReg->setBit(1,1);
30 }
void info(std::string mymsg)
Definition: Object.h:38
StatusCode setBit(unsigned int, bool)
Definition: Register.cpp:32
Register * m_resetReg
Definition: A3PE.h:589

◆ resetToAXRam()

StatusCode A3PE::resetToAXRam ( )

Definition at line 57 of file A3PE.cpp.

References Object::info(), m_resetReg, and Register::setBit().

Referenced by BOOST_PYTHON_MODULE(), and reset().

57  {
58  info("Reset ToAx Ram","A3PE::resetToAXRam");
59  return m_resetReg->setBit(8,1);
60 }
void info(std::string mymsg)
Definition: Object.h:38
StatusCode setBit(unsigned int, bool)
Definition: Register.cpp:32
Register * m_resetReg
Definition: A3PE.h:589

◆ resetTriggerFifo()

StatusCode A3PE::resetTriggerFifo ( )

Definition at line 52 of file A3PE.cpp.

References Object::info(), m_resetReg, and Register::setBit().

Referenced by BOOST_PYTHON_MODULE(), and reset().

52  {
53  info("Reset Trigger Fifo","A3PE::resetTriggerFifo");
54  return m_resetReg->setBit(7,1);
55 }
void info(std::string mymsg)
Definition: Object.h:38
StatusCode setBit(unsigned int, bool)
Definition: Register.cpp:32
Register * m_resetReg
Definition: A3PE.h:589

◆ resetUsbPhasers()

StatusCode A3PE::resetUsbPhasers ( )

Definition at line 32 of file A3PE.cpp.

References Object::info(), m_resetReg, and Register::setBit().

Referenced by BOOST_PYTHON_MODULE(), and reset().

32  {
33  info("Reset USB Phasers","A3PE::resetUsbPhasers");
34  return m_resetReg->setBit(2,1);
35 }
void info(std::string mymsg)
Definition: Object.h:38
StatusCode setBit(unsigned int, bool)
Definition: Register.cpp:32
Register * m_resetReg
Definition: A3PE.h:589

◆ seqPulseDelay()

unsigned int A3PE::seqPulseDelay ( )

Referenced by reset().

◆ setAddFromAXRam()

StatusCode A3PE::setAddFromAXRam ( int  add)

Definition at line 190 of file A3PE.cpp.

References Object::debug(), Object::error(), StatusCode::FAILURE, IOobject::io(), StatusCode::isFailure(), itos(), m_fromAXRamPtr, Object::name(), IOdata::setU16(), StatusCode::SUCCESS, and IOobject::write().

Referenced by BOOST_PYTHON_MODULE(), dumpFromAX(), A3PE_BitFlip::execute(), loadFromAX(), startSequenceAX(), and toAXRamPtrReg().

190  {
191  m_fromAXRamPtr->io()->setU16(0,(add&0x1FF));
192  if (m_fromAXRamPtr->write().isFailure()){
193  error("Cannot write AddFromAxRam register "+m_fromAXRamPtr->name(),
194  "A3PE::setAddFromAXRam");
195  return StatusCode::FAILURE;
196  }
197  debug("fromAXRamPtr register set to "+itos(add)+".","A3PE::setAddFromAXRam");
198  return StatusCode::SUCCESS;
199 }
std::string itos(int)
Definition: Tools.cpp:46
bool isFailure() const
Definition: StatusCode.h:68
void add(int attribut)
Definition: Attrib.h:67
virtual StatusCode write()
Definition: IOobject.h:80
Register * m_fromAXRamPtr
Definition: A3PE.h:605
StatusCode setU16(unsigned long int, U16)
Definition: IOdata.cpp:60
void error(std::string mymsg)
Definition: Object.h:40
void debug(std::string mymsg)
Definition: Object.h:37
std::string name() const
Definition: Object.h:28
IOdata * io()
Definition: IOobject.h:66

◆ setAddToAXRam()

StatusCode A3PE::setAddToAXRam ( int  add)

Definition at line 179 of file A3PE.cpp.

References Object::debug(), Object::error(), StatusCode::FAILURE, IOobject::io(), StatusCode::isFailure(), itos(), m_toAXRamPtr, Object::name(), IOdata::setU16(), StatusCode::SUCCESS, and IOobject::write().

Referenced by BOOST_PYTHON_MODULE(), dumpToAX(), loadToAX(), A3PE_BitFlip::randomValues(), startSequenceAX(), and toAXRamPtrReg().

179  {
180  m_toAXRamPtr->io()->setU16(0,(add&0x1FF));
181  if (m_toAXRamPtr->write().isFailure()){
182  error("Cannot write toAxRamPtr register "+m_toAXRamPtr->name(),
183  "A3PE::setAddToAXRam");
184  return StatusCode::FAILURE;
185  }
186  debug("toAXRamPtr register set to "+itos(add)+".","A3PE::setAddToAXRam");
187  return StatusCode::SUCCESS;
188 }
std::string itos(int)
Definition: Tools.cpp:46
bool isFailure() const
Definition: StatusCode.h:68
void add(int attribut)
Definition: Attrib.h:67
virtual StatusCode write()
Definition: IOobject.h:80
StatusCode setU16(unsigned long int, U16)
Definition: IOdata.cpp:60
void error(std::string mymsg)
Definition: Object.h:40
void debug(std::string mymsg)
Definition: Object.h:37
std::string name() const
Definition: Object.h:28
Register * m_toAXRamPtr
Definition: A3PE.h:604
IOdata * io()
Definition: IOobject.h:66

◆ setAXRamUsb()

StatusCode A3PE::setAXRamUsb ( bool  enable)

Definition at line 225 of file A3PE.cpp.

References Object::debug(), Object::error(), StatusCode::FAILURE, StatusCode::isFailure(), itos(), m_setupReg, Register::setBit(), and StatusCode::SUCCESS.

Referenced by dumpFromAX(), A3PE_BitFlip::execute(), loadToAX(), A3PE_BitFlip::randomValues(), reset(), and startSequenceAX().

225  {
226  if (enable) {
227  if (m_setupReg->setBit(9,1).isFailure()||
228  m_setupReg->setBit(11,1).isFailure()
229  //||m_setupReg->setBit(12,0).isFailure()
230  ){
231  error("Cannot set AXRam USB clock mode","A3PE::setAXRamUsb");
232  return StatusCode::FAILURE;
233  }
234  }
235  else {
236  if (m_setupReg->setBit(9,0).isFailure()||
237  m_setupReg->setBit(11,0).isFailure()
238  //||m_setupReg->setBit(12,1).isFailure()
239  ){
240  error("Cannot set AXRam acquisition clock mode","A3PE::setAXRamUsb");
241  return StatusCode::FAILURE;
242  }
243  }
244  debug("AXRam USB clock mode set to "+itos(enable),"A3PE::setAXRamUsb");
245  return StatusCode::SUCCESS;
246 }
std::string itos(int)
Definition: Tools.cpp:46
bool isFailure() const
Definition: StatusCode.h:68
Register * m_setupReg
Definition: A3PE.h:590
void error(std::string mymsg)
Definition: Object.h:40
void debug(std::string mymsg)
Definition: Object.h:37
StatusCode setBit(unsigned int, bool)
Definition: Register.cpp:32

◆ setClockDivision()

StatusCode A3PE::setClockDivision ( unsigned int  val)

Definition at line 429 of file A3PE.cpp.

References shell::data(), IOdata::dataU32(), Object::error(), StatusCode::FAILURE, Object::info(), IOobject::io(), StatusCode::isFailure(), itos(), m_clockDivisionReg, Object::name(), IOobject::read(), IOdata::setU32(), StatusCode::SUCCESS, and IOobject::write().

Referenced by BOOST_PYTHON_MODULE(), and reset().

429  {
431  error("Cannot read Clock Division register "+m_clockDivisionReg->name(),
432  "Register::setClockDivision");
433  return StatusCode::FAILURE;
434  }
435  unsigned long int data=m_clockDivisionReg->io()->dataU32()[0];
436  data &= ~(16777215); // switch last 24 bits at 0
437  data |= ( val & 16777215 ); // or with the desired value
438  m_clockDivisionReg->io()->setU32(0,data);
440  error("Cannot write Clock Division register "+m_clockDivisionReg->name(),
441  "Register::setClockDivision");
442  return StatusCode::FAILURE;
443  }
444  info("Clock Division set to "+itos(val),"A3PE::setClockDivision");
445  return StatusCode::SUCCESS;
446 }
void info(std::string mymsg)
Definition: Object.h:38
std::string itos(int)
Definition: Tools.cpp:46
bool isFailure() const
Definition: StatusCode.h:68
virtual StatusCode write()
Definition: IOobject.h:80
U32 * dataU32()
Definition: IOdata.h:222
virtual StatusCode read()
Definition: IOobject.h:73
StatusCode setU32(unsigned long int, U32)
Definition: IOdata.cpp:77
void error(std::string mymsg)
Definition: Object.h:40
def data(object, stream=None)
Definition: shell.py:150
Register * m_clockDivisionReg
Definition: A3PE.h:596
std::string name() const
Definition: Object.h:28
IOdata * io()
Definition: IOobject.h:66

◆ setEnableADC()

StatusCode A3PE::setEnableADC ( unsigned int  adc,
bool  enable 
)

Definition at line 87 of file A3PE.cpp.

References StatusCode::FAILURE, Object::info(), itos(), m_setupReg, Register::setBit(), and Object::warning().

Referenced by BOOST_PYTHON_MODULE(), StorageFifoAcquisition::initialize(), StorageFifo::initialize(), Acquisition::initialize(), and reset().

87  {
88  if (adc<8){
89  info("Configuring ADC "+itos(adc)+" input enable to "+itos(enable));
90  return m_setupReg->setBit(adc,enable);
91  }
92  else{
93  warning("You cannot setup adc number "+itos(adc)+
94  ". No action.","A3PE::setEnableADC");
95  return StatusCode::FAILURE;
96  }
97 }
void info(std::string mymsg)
Definition: Object.h:38
std::string itos(int)
Definition: Tools.cpp:46
Register * m_setupReg
Definition: A3PE.h:590
StatusCode setBit(unsigned int, bool)
Definition: Register.cpp:32
void warning(std::string mymsg)
Definition: Object.h:39

◆ setFifoDepth()

StatusCode A3PE::setFifoDepth ( unsigned int  val)

Definition at line 612 of file A3PE.cpp.

References shell::data(), IOdata::dataU16(), Object::error(), StatusCode::FAILURE, Object::info(), IOobject::io(), StatusCode::isFailure(), itos(), m_storageRam, m_writeLengthFifoReg, Object::name(), IOobject::read(), RAM::setSize(), IOdata::setU16(), StatusCode::SUCCESS, and IOobject::write().

Referenced by BOOST_PYTHON_MODULE(), StorageFifoAcquisition::initialize(), Acquisition::initialize(), and reset().

612  {
614  error("Cannot read writeLengthFifo register "+m_writeLengthFifoReg->name(),
615  "Register::setFifoDepth");
616  return StatusCode::FAILURE;
617  m_storageRam->setSize(96,val);
618  }
619  unsigned short data=m_writeLengthFifoReg->io()->dataU16()[0];
620  data = (val & 511);
621  m_writeLengthFifoReg->io()->setU16(0,data);
623  error("Cannot write writeLengthFifo register "+m_writeLengthFifoReg->name(),
624  "Register::setFifoDepth");
625  return StatusCode::FAILURE;
626  }
627  info("Fifo Depth set to "+itos(val),"Register::setFifoDepth");
628  return StatusCode::SUCCESS;
629 }
void info(std::string mymsg)
Definition: Object.h:38
std::string itos(int)
Definition: Tools.cpp:46
bool isFailure() const
Definition: StatusCode.h:68
StatusCode setSize(unsigned int, unsigned int)
Definition: RAM.cpp:29
virtual StatusCode write()
Definition: IOobject.h:80
Register * m_writeLengthFifoReg
Definition: A3PE.h:594
StatusCode setU16(unsigned long int, U16)
Definition: IOdata.cpp:60
virtual StatusCode read()
Definition: IOobject.h:73
void error(std::string mymsg)
Definition: Object.h:40
def data(object, stream=None)
Definition: shell.py:150
RAM * m_storageRam
Definition: A3PE.h:601
U16 * dataU16()
Definition: IOdata.h:218
std::string name() const
Definition: Object.h:28
IOdata * io()
Definition: IOobject.h:66

◆ setFifoLatency()

StatusCode A3PE::setFifoLatency ( unsigned short  val)

Definition at line 581 of file A3PE.cpp.

References shell::data(), IOdata::dataU16(), Object::error(), StatusCode::FAILURE, Object::info(), IOobject::io(), StatusCode::isFailure(), itos(), m_latencyReg, Object::name(), IOobject::read(), IOdata::setU16(), StatusCode::SUCCESS, and IOobject::write().

Referenced by BOOST_PYTHON_MODULE(), and reset().

581  {
582  if (m_latencyReg->read().isFailure()){
583  error("Cannot read Latency register "+m_latencyReg->name(),
584  "Register::setFifoLatency");
585  return StatusCode::FAILURE;
586  }
587  unsigned short data=m_latencyReg->io()->dataU16()[0];
588  data = (val & 65535);
589  m_latencyReg->io()->setU16(0,data);
590  if (m_latencyReg->write().isFailure()){
591  error("Cannot write Latency register "+m_latencyReg->name(),
592  "Register::setFifoLatency");
593  return StatusCode::FAILURE;
594  }
595  info("Trigger Fifo Latency set to "+itos(val),"Register::setFifoLatency");
596  return StatusCode::SUCCESS;
597 }
void info(std::string mymsg)
Definition: Object.h:38
std::string itos(int)
Definition: Tools.cpp:46
bool isFailure() const
Definition: StatusCode.h:68
virtual StatusCode write()
Definition: IOobject.h:80
StatusCode setU16(unsigned long int, U16)
Definition: IOdata.cpp:60
virtual StatusCode read()
Definition: IOobject.h:73
void error(std::string mymsg)
Definition: Object.h:40
def data(object, stream=None)
Definition: shell.py:150
U16 * dataU16()
Definition: IOdata.h:218
Register * m_latencyReg
Definition: A3PE.h:593
std::string name() const
Definition: Object.h:28
IOdata * io()
Definition: IOobject.h:66

◆ setInternalAXSequence()

StatusCode A3PE::setInternalAXSequence ( bool  mode)

Definition at line 280 of file A3PE.cpp.

References Object::info(), itos(), m_setupReg, and Register::setBit().

Referenced by BOOST_PYTHON_MODULE(), and update().

280  {
281  info("Switch AX internal loop mode to "+itos(mode),"A3PE::setInternalAXSequence");
282  return m_setupReg->setBit(12,mode);
283 }
void info(std::string mymsg)
Definition: Object.h:38
std::string itos(int)
Definition: Tools.cpp:46
Register * m_setupReg
Definition: A3PE.h:590
StatusCode setBit(unsigned int, bool)
Definition: Register.cpp:32

◆ setLatencyAX()

StatusCode A3PE::setLatencyAX ( unsigned int  val)

Definition at line 327 of file A3PE.cpp.

References Object::debug(), Object::error(), StatusCode::FAILURE, IOobject::io(), StatusCode::isFailure(), itos(), m_latencyAX, Object::name(), IOdata::setU32(), StatusCode::SUCCESS, and IOobject::write().

Referenced by BOOST_PYTHON_MODULE(), A3PE_BitFlip::execute(), A3PE_BitFlip::finalize(), and update().

327  {
328  m_latencyAX->io()->setU32(0,val);
329  if (m_latencyAX->write().isFailure()){
330  error("Cannot write latency AX register "+m_latencyAX->name(),
331  "Register::setLatencyAX");
332  return StatusCode::FAILURE;
333  }
334  debug("LatencyAX register set to "+itos(val),"A3PE::setLatencyAX");
335  return StatusCode::SUCCESS;
336 }
std::string itos(int)
Definition: Tools.cpp:46
bool isFailure() const
Definition: StatusCode.h:68
virtual StatusCode write()
Definition: IOobject.h:80
StatusCode setU32(unsigned long int, U32)
Definition: IOdata.cpp:77
void error(std::string mymsg)
Definition: Object.h:40
void debug(std::string mymsg)
Definition: Object.h:37
Register * m_latencyAX
Definition: A3PE.h:608
std::string name() const
Definition: Object.h:28
IOdata * io()
Definition: IOobject.h:66

◆ setLengthAX()

StatusCode A3PE::setLengthAX ( unsigned int  val)

Definition at line 316 of file A3PE.cpp.

References Object::debug(), Object::error(), StatusCode::FAILURE, IOobject::io(), StatusCode::isFailure(), itos(), m_lengthAX, Object::name(), IOdata::setU16(), StatusCode::SUCCESS, and IOobject::write().

Referenced by BOOST_PYTHON_MODULE(), and update().

316  {
317  m_lengthAX->io()->setU16(0,val&0xfff);
318  if (m_lengthAX->write().isFailure()){
319  error("Cannot write length AX register "+m_lengthAX->name(),
320  "Register::setLengthAX");
321  return StatusCode::FAILURE;
322  }
323  debug("LengthAX register set to "+itos(val),"A3PE::setLengthAX");
324  return StatusCode::SUCCESS;
325 }
std::string itos(int)
Definition: Tools.cpp:46
bool isFailure() const
Definition: StatusCode.h:68
virtual StatusCode write()
Definition: IOobject.h:80
Register * m_lengthAX
Definition: A3PE.h:609
StatusCode setU16(unsigned long int, U16)
Definition: IOdata.cpp:60
void error(std::string mymsg)
Definition: Object.h:40
void debug(std::string mymsg)
Definition: Object.h:37
std::string name() const
Definition: Object.h:28
IOdata * io()
Definition: IOobject.h:66

◆ setNTrigger()

StatusCode A3PE::setNTrigger ( unsigned int  val)

Definition at line 549 of file A3PE.cpp.

References shell::data(), IOdata::dataU32(), Object::error(), StatusCode::FAILURE, Object::info(), IOobject::io(), StatusCode::isFailure(), itos(), m_triggerReg, Object::name(), IOobject::read(), IOdata::setU32(), StatusCode::SUCCESS, and IOobject::write().

Referenced by BOOST_PYTHON_MODULE(), and reset().

549  {
550  if (m_triggerReg->read().isFailure()){
551  error("Cannot read Trigger register "+m_triggerReg->name(),
552  "Register::setNTrigger");
553  return StatusCode::FAILURE;
554  }
555  unsigned long int data=m_triggerReg->io()->dataU32()[0];
556  data &= ~(255<<24); // switch last 8 bits at 0
557  data |= (( val & 255)<<24); // or with the desired value
558  m_triggerReg->io()->setU32(0,data);
559  if (m_triggerReg->write().isFailure()){
560  error("Cannot write Trigger register "+m_triggerReg->name(),
561  "Register::setNTrigger");
562  return StatusCode::FAILURE;
563  }
564  info("Trigger counter set to "+itos(val),"A3PE::setNTrigger");
565  return StatusCode::SUCCESS;
566 }
void info(std::string mymsg)
Definition: Object.h:38
std::string itos(int)
Definition: Tools.cpp:46
Register * m_triggerReg
Definition: A3PE.h:597
bool isFailure() const
Definition: StatusCode.h:68
virtual StatusCode write()
Definition: IOobject.h:80
U32 * dataU32()
Definition: IOdata.h:222
virtual StatusCode read()
Definition: IOobject.h:73
StatusCode setU32(unsigned long int, U32)
Definition: IOdata.cpp:77
void error(std::string mymsg)
Definition: Object.h:40
def data(object, stream=None)
Definition: shell.py:150
std::string name() const
Definition: Object.h:28
IOdata * io()
Definition: IOobject.h:66

◆ setPipeline()

StatusCode A3PE::setPipeline ( unsigned int  val)

Definition at line 290 of file A3PE.cpp.

References shell::data(), IOdata::dataU16(), Object::error(), StatusCode::FAILURE, Object::info(), IOobject::io(), StatusCode::isFailure(), itos(), m_acqReg, Object::name(), IOobject::read(), IOdata::setU16(), StatusCode::SUCCESS, Object::warning(), and IOobject::write().

Referenced by BOOST_PYTHON_MODULE(), and update().

290  {
291  if (val>2) {
292  warning("Cannot set pipeline to coded value "+itos(val),"A3PE::setPipeline");
293  return StatusCode::FAILURE;
294  }
295  m_acqReg->read();
296  unsigned int data=(m_acqReg->io()->dataU16()[0])&0xFF3F;
297  m_acqReg->io()->setU16(0,data|(((val&3)<<6)));
298  if (m_acqReg->write().isFailure()){
299  error("Cannot write acquisition register "+m_acqReg->name(),
300  "A3PE::setPipeline");
301  return StatusCode::FAILURE;
302  }
303  info("Acquisition register bits set to "+itos(val),"A3PE::setPipeline");
304  return StatusCode::SUCCESS;
305 }
void info(std::string mymsg)
Definition: Object.h:38
std::string itos(int)
Definition: Tools.cpp:46
bool isFailure() const
Definition: StatusCode.h:68
virtual StatusCode write()
Definition: IOobject.h:80
StatusCode setU16(unsigned long int, U16)
Definition: IOdata.cpp:60
virtual StatusCode read()
Definition: IOobject.h:73
void error(std::string mymsg)
Definition: Object.h:40
def data(object, stream=None)
Definition: shell.py:150
U16 * dataU16()
Definition: IOdata.h:218
Register * m_acqReg
Definition: A3PE.h:592
std::string name() const
Definition: Object.h:28
void warning(std::string mymsg)
Definition: Object.h:39
IOdata * io()
Definition: IOobject.h:66

◆ setReadPatternFifoUsb()

StatusCode A3PE::setReadPatternFifoUsb ( bool  enable)

Definition at line 124 of file A3PE.cpp.

References Object::error(), StatusCode::FAILURE, Object::info(), StatusCode::isFailure(), m_setupReg, Register::setBit(), and StatusCode::SUCCESS.

Referenced by BOOST_PYTHON_MODULE(), dumpPattern(), and reset().

124  {
125  if (enable){
126  if (m_setupReg->setBit(9,true).isFailure()){
127  error("Cannot set pattern fifo read bit",
128  "A3PE::setReadPatternFifoUsb");
129  return StatusCode::FAILURE;
130  }
131  else {
132  info("Pattern Fifo Usb read mode set.",
133  "A3PE::setReadPatternFifoUsb");
134  }
135  return StatusCode::SUCCESS;
136  }
137  else {
138  if (m_setupReg->setBit(9,false).isFailure()){
139  error("Cannot set pattern fifo read bit",
140  "A3PE::setReadPatternFifoUsb");
141  return StatusCode::FAILURE;
142  }
143  else {
144  info("Pattern Fifo 40MHz read mode set.",
145  "A3PE::setWritePatternFifoUsb");
146  }
147  return StatusCode::SUCCESS;
148  }
149 }
void info(std::string mymsg)
Definition: Object.h:38
bool isFailure() const
Definition: StatusCode.h:68
Register * m_setupReg
Definition: A3PE.h:590
void error(std::string mymsg)
Definition: Object.h:40
StatusCode setBit(unsigned int, bool)
Definition: Register.cpp:32

◆ setReadToAXRamUsb()

StatusCode A3PE::setReadToAXRamUsb ( bool  enable)

Definition at line 201 of file A3PE.cpp.

References Object::debug(), Object::error(), StatusCode::FAILURE, StatusCode::isFailure(), m_setupReg, Register::setBit(), and StatusCode::SUCCESS.

Referenced by BOOST_PYTHON_MODULE(), dumpToAX(), and reset().

201  {
202  if (m_setupReg->setBit(10,enable).isFailure()||
203  m_setupReg->setBit(11,enable).isFailure()){
204  error("Cannot set ToAXfifo read bit","A3PE::setReadToAXRamUsb");
205  return StatusCode::FAILURE;
206  }
207  else {
208  debug("ToAXRam read mode set.","A3PE::setReadToAXRamUsb");
209  }
210  return StatusCode::SUCCESS;
211 }
bool isFailure() const
Definition: StatusCode.h:68
Register * m_setupReg
Definition: A3PE.h:590
void error(std::string mymsg)
Definition: Object.h:40
void debug(std::string mymsg)
Definition: Object.h:37
StatusCode setBit(unsigned int, bool)
Definition: Register.cpp:32

◆ setReadTriggerFifoUsb()

StatusCode A3PE::setReadTriggerFifoUsb ( bool  enable)

Definition at line 152 of file A3PE.cpp.

References Object::error(), StatusCode::FAILURE, Object::info(), StatusCode::isFailure(), m_setupReg, Register::setBit(), and StatusCode::SUCCESS.

Referenced by BOOST_PYTHON_MODULE(), dumpTrigger(), and reset().

152  {
153  if (enable){
154  if (m_setupReg->setBit(11,true).isFailure()){
155  error("Cannot set trigger fifo read bit",
156  "A3PE::setReadtriggerFifoUsb");
157  return StatusCode::FAILURE;
158  }
159  else {
160  info("Trigger Fifo Usb read mode set.",
161  "A3PE::setReadTriggerFifoUsb");
162  }
163  return StatusCode::SUCCESS;
164  }
165  else {
166  if (m_setupReg->setBit(11,false).isFailure()){
167  error("Cannot set trigger fifo read bit",
168  "A3PE::setReadTriggerFifoUsb");
169  return StatusCode::FAILURE;
170  }
171  else {
172  info("Trigger Fifo 40MHz read mode set.",
173  "A3PE::setReadTriggerFifoUsb");
174  }
175  return StatusCode::SUCCESS;
176  }
177 }
void info(std::string mymsg)
Definition: Object.h:38
bool isFailure() const
Definition: StatusCode.h:68
Register * m_setupReg
Definition: A3PE.h:590
void error(std::string mymsg)
Definition: Object.h:40
StatusCode setBit(unsigned int, bool)
Definition: Register.cpp:32

◆ setSeqPulseDelay()

StatusCode A3PE::setSeqPulseDelay ( unsigned  int)

Referenced by reset().

◆ setSoftwareTrigger()

StatusCode A3PE::setSoftwareTrigger ( bool  enable)

Definition at line 368 of file A3PE.cpp.

References Object::error(), StatusCode::FAILURE, Object::info(), StatusCode::isFailure(), itos(), m_acqReg, Register::setBit(), and StatusCode::SUCCESS.

Referenced by BOOST_PYTHON_MODULE(), StorageFifoAcquisition::initialize(), StorageFifo::initialize(), Acquisition::initialize(), and reset().

368  {
369  if (m_acqReg->setBit(1,enable).isFailure()){
370  error("Cannot set software trigger bit","A3PE::setSoftwareTrigger");
371  return StatusCode::FAILURE;
372  }
373  else{
374  info("Software trigger mode set to "+itos(enable),"A3PE::setSoftwareTrigger");
375  }
376  return StatusCode::SUCCESS;
377 }
void info(std::string mymsg)
Definition: Object.h:38
std::string itos(int)
Definition: Tools.cpp:46
bool isFailure() const
Definition: StatusCode.h:68
void error(std::string mymsg)
Definition: Object.h:40
StatusCode setBit(unsigned int, bool)
Definition: Register.cpp:32
Register * m_acqReg
Definition: A3PE.h:592

◆ setTriggerDelay()

StatusCode A3PE::setTriggerDelay ( unsigned int  val)

Definition at line 461 of file A3PE.cpp.

References shell::data(), IOdata::dataU32(), Object::error(), StatusCode::FAILURE, Object::info(), IOobject::io(), StatusCode::isFailure(), itos(), m_triggerReg, Object::name(), IOobject::read(), IOdata::setU32(), StatusCode::SUCCESS, and IOobject::write().

Referenced by BOOST_PYTHON_MODULE(), and reset().

461  {
462  if (m_triggerReg->read().isFailure()){
463  error("Cannot read Trigger register "+m_triggerReg->name(),
464  "Register::setTriggerDelay");
465  return StatusCode::FAILURE;
466  }
467  unsigned long int data=m_triggerReg->io()->dataU32()[0];
468  data &= ~(255); // switch last 8 bits to 0
469  data |= ( val & 255); // or with the desired value
470  m_triggerReg->io()->setU32(0,data);
471  if (m_triggerReg->write().isFailure()){
472  error("Cannot write Trigger register "+m_triggerReg->name(),
473  "Register::setTriggerDelay");
474  return StatusCode::FAILURE;
475  }
476  info("Trigger delay set to "+itos(val),"A3PE::setTriggerDelay");
477  return StatusCode::SUCCESS;
478 }
void info(std::string mymsg)
Definition: Object.h:38
std::string itos(int)
Definition: Tools.cpp:46
Register * m_triggerReg
Definition: A3PE.h:597
bool isFailure() const
Definition: StatusCode.h:68
virtual StatusCode write()
Definition: IOobject.h:80
U32 * dataU32()
Definition: IOdata.h:222
virtual StatusCode read()
Definition: IOobject.h:73
StatusCode setU32(unsigned long int, U32)
Definition: IOdata.cpp:77
void error(std::string mymsg)
Definition: Object.h:40
def data(object, stream=None)
Definition: shell.py:150
std::string name() const
Definition: Object.h:28
IOdata * io()
Definition: IOobject.h:66

◆ setTriggerRate()

StatusCode A3PE::setTriggerRate ( unsigned int  val)

Definition at line 520 of file A3PE.cpp.

References shell::data(), IOdata::dataU32(), Object::error(), StatusCode::FAILURE, Object::info(), IOobject::io(), StatusCode::isFailure(), itos(), m_triggerReg, Object::name(), IOobject::read(), IOdata::setU32(), StatusCode::SUCCESS, and IOobject::write().

Referenced by BOOST_PYTHON_MODULE(), and reset().

520  {
521  if (m_triggerReg->read().isFailure()){
522  error("Cannot read Trigger register "+m_triggerReg->name(),
523  "Register::setTriggerRate");
524  return StatusCode::FAILURE;
525  }
526  unsigned long int data=m_triggerReg->io()->dataU32()[0];
527  data &= ~(65535<<8); // switch 16 bits to 0
528  data |= ( (val & 65535)<<8); // or with the desired value
529  m_triggerReg->io()->setU32(0,data);
530  if (m_triggerReg->write().isFailure()){
531  error("Cannot write Trigger register "+m_triggerReg->name(),
532  "Register::setTriggerRate");
533  return StatusCode::FAILURE;
534  }
535  info("Trigger rate set to "+itos(val),"A3PE::setTriggerRate");
536  return StatusCode::SUCCESS;
537 }
void info(std::string mymsg)
Definition: Object.h:38
std::string itos(int)
Definition: Tools.cpp:46
Register * m_triggerReg
Definition: A3PE.h:597
bool isFailure() const
Definition: StatusCode.h:68
virtual StatusCode write()
Definition: IOobject.h:80
U32 * dataU32()
Definition: IOdata.h:222
virtual StatusCode read()
Definition: IOobject.h:73
StatusCode setU32(unsigned long int, U32)
Definition: IOdata.cpp:77
void error(std::string mymsg)
Definition: Object.h:40
def data(object, stream=None)
Definition: shell.py:150
std::string name() const
Definition: Object.h:28
IOdata * io()
Definition: IOobject.h:66

◆ setupReg()

Register* A3PE::setupReg ( )
inline

Definition at line 488 of file A3PE.h.

References m_setupReg.

Referenced by BOOST_PYTHON_MODULE().

488  {
489  return m_setupReg;
490  }
Register * m_setupReg
Definition: A3PE.h:590

◆ setWriteFromAXRamUsb()

StatusCode A3PE::setWriteFromAXRamUsb ( bool  enable)

Definition at line 213 of file A3PE.cpp.

References Object::debug(), Object::error(), StatusCode::FAILURE, StatusCode::isFailure(), m_setupReg, Register::setBit(), and StatusCode::SUCCESS.

Referenced by BOOST_PYTHON_MODULE(), loadFromAX(), and reset().

213  {
214  if (m_setupReg->setBit(10,enable).isFailure()||
215  m_setupReg->setBit(11,enable).isFailure()){
216  error("Cannot set usb FromAXfifo write bit","A3PE::writeFromAXFifoUsb");
217  return StatusCode::FAILURE;
218  }
219  else {
220  debug("write FromAXFifo USB Write mode set.","A3PE::writeFromAXFifoUsb");
221  }
222  return StatusCode::SUCCESS;
223 }
bool isFailure() const
Definition: StatusCode.h:68
Register * m_setupReg
Definition: A3PE.h:590
void error(std::string mymsg)
Definition: Object.h:40
void debug(std::string mymsg)
Definition: Object.h:37
StatusCode setBit(unsigned int, bool)
Definition: Register.cpp:32

◆ setWriteStorageFifoUsb()

StatusCode A3PE::setWriteStorageFifoUsb ( bool  enable)

Definition at line 99 of file A3PE.cpp.

References Object::error(), StatusCode::FAILURE, Object::info(), StatusCode::isFailure(), m_setupReg, Register::setBit(), and StatusCode::SUCCESS.

Referenced by BOOST_PYTHON_MODULE(), StorageFifo::initialize(), StorageFifoAcquisition::initialize(), Acquisition::initialize(), loadStorage(), and reset().

99  {
100  if (enable) {
101  if (m_setupReg->setBit(8,true).isFailure()||
102  m_setupReg->setBit(9,true).isFailure()){
103  error("Cannot set usb storage fifo write bit","A3PE::setWriteStorageFifoUsb");
104  return StatusCode::FAILURE;
105  }
106  else {
107  info("Storage Fifo Usb Write mode set.","A3PE::setWriteStorageFifoUsb");
108  }
109  return StatusCode::SUCCESS;
110  }
111  else {
112  if (m_setupReg->setBit(8,false).isFailure()||
113  m_setupReg->setBit(9,false).isFailure()){
114  error("Cannot set fifo storage ADC write bit","A3PE::setWriteStorageFifoUsb");
115  return StatusCode::FAILURE;
116  }
117  else {
118  info("Storage Fifo ADC Write mode set.","A3PE::setWriteStorageFifoUsb");
119  }
120  return StatusCode::SUCCESS;
121  }
122 }
void info(std::string mymsg)
Definition: Object.h:38
bool isFailure() const
Definition: StatusCode.h:68
Register * m_setupReg
Definition: A3PE.h:590
void error(std::string mymsg)
Definition: Object.h:40
StatusCode setBit(unsigned int, bool)
Definition: Register.cpp:32

◆ softwareTrigger()

bool A3PE::softwareTrigger ( )

Definition at line 379 of file A3PE.cpp.

References Register::getBit(), and m_acqReg.

Referenced by BOOST_PYTHON_MODULE(), and reset().

379  {
380  return m_acqReg->getBit(1);
381 }
bool getBit(unsigned int)
Definition: Register.cpp:66
Register * m_acqReg
Definition: A3PE.h:592

◆ spare3Reg()

Register* A3PE::spare3Reg ( )
inline

Definition at line 532 of file A3PE.h.

References m_spare3Reg.

Referenced by BOOST_PYTHON_MODULE().

532  {
533  return m_spare3Reg;
534  }
Register * m_spare3Reg
Definition: A3PE.h:600

◆ startSequenceAX()

StatusCode A3PE::startSequenceAX ( )

Definition at line 949 of file A3PE.cpp.

References Object::error(), StatusCode::FAILURE, StatusCode::isFailure(), m_acqReg, setAddFromAXRam(), setAddToAXRam(), setAXRamUsb(), Register::setBit(), and StatusCode::SUCCESS.

Referenced by BOOST_PYTHON_MODULE(), A3PE_BitFlip::execute(), and reset().

949  {
950  setAXRamUsb(false);
951  setAddToAXRam(0);
952  setAddFromAXRam(0);
953  if (m_acqReg->setBit(4,1).isFailure()){
954  error("Cannot set AX sequence start bit bit","A3PE::startAXSequence");
955  return StatusCode::FAILURE;
956  }
957  return StatusCode::SUCCESS;
958 }
bool isFailure() const
Definition: StatusCode.h:68
StatusCode setAddToAXRam(int)
Definition: A3PE.cpp:179
void error(std::string mymsg)
Definition: Object.h:40
StatusCode setBit(unsigned int, bool)
Definition: Register.cpp:32
StatusCode setAddFromAXRam(int)
Definition: A3PE.cpp:190
Register * m_acqReg
Definition: A3PE.h:592
StatusCode setAXRamUsb(bool)
Definition: A3PE.cpp:225

◆ statusReg()

Register* A3PE::statusReg ( )
inline

Definition at line 496 of file A3PE.h.

References m_statusReg.

Referenced by BOOST_PYTHON_MODULE().

496  {
497  return m_statusReg;
498  }
Register * m_statusReg
Definition: A3PE.h:591

◆ storageRam()

RAM* A3PE::storageRam ( )
inline

Definition at line 536 of file A3PE.h.

References m_storageRam.

Referenced by BOOST_PYTHON_MODULE(), dumpStorage(), StorageFifo::initialize(), StorageFifoAcquisition::initialize(), Acquisition::initialize(), and loadStorage().

536  {
537  return m_storageRam;
538  }
RAM * m_storageRam
Definition: A3PE.h:601

◆ testRam()

RAM* A3PE::testRam ( )
inline

Definition at line 556 of file A3PE.h.

References m_testRam.

Referenced by BOOST_PYTHON_MODULE().

556  {
557  return m_testRam;
558  }
RAM * m_testRam
Definition: A3PE.h:610

◆ toAXRam()

RAM* A3PE::toAXRam ( )
inline

Definition at line 548 of file A3PE.h.

References m_toAXRam.

Referenced by BOOST_PYTHON_MODULE(), dumpToAX(), A3PE_BitFlip::initialize(), and loadToAX().

548  {
549  return m_toAXRam;
550  }
RAM * m_toAXRam
Definition: A3PE.h:606

◆ toAXRamPtrReg()

Register* A3PE::toAXRamPtrReg ( )
inline

◆ toAXReg()

Register* A3PE::toAXReg ( )
inline

Definition at line 524 of file A3PE.h.

References m_toAXReg.

Referenced by BOOST_PYTHON_MODULE().

524  {
525  return m_toAXReg;
526  }
Register * m_toAXReg
Definition: A3PE.h:598

◆ trigger()

StatusCode A3PE::trigger ( )

Definition at line 363 of file A3PE.cpp.

References Object::debug(), m_acqReg, and Register::setBit().

Referenced by BOOST_PYTHON_MODULE(), Acquisition::execute(), and reset().

363  {
364  debug("Trigger sequence started","A3PE::trigger");
365  return m_acqReg->setBit(0,1);
366 }
void debug(std::string mymsg)
Definition: Object.h:37
StatusCode setBit(unsigned int, bool)
Definition: Register.cpp:32
Register * m_acqReg
Definition: A3PE.h:592

◆ triggerDelay()

unsigned int A3PE::triggerDelay ( )

Definition at line 480 of file A3PE.cpp.

References shell::data(), IOdata::dataU32(), Object::error(), IOobject::io(), StatusCode::isFailure(), m_triggerReg, Object::name(), and IOobject::read().

Referenced by BOOST_PYTHON_MODULE(), and reset().

480  {
481  if (m_triggerReg->read().isFailure()){
482  error("Cannot read Trigger register "+m_triggerReg->name(),
483  "Register::triggerDelay");
484  return 0;
485  }
486  unsigned long int data=m_triggerReg->io()->dataU32()[0];
487  return (data&(255));
488 }
Register * m_triggerReg
Definition: A3PE.h:597
bool isFailure() const
Definition: StatusCode.h:68
U32 * dataU32()
Definition: IOdata.h:222
virtual StatusCode read()
Definition: IOobject.h:73
void error(std::string mymsg)
Definition: Object.h:40
def data(object, stream=None)
Definition: shell.py:150
std::string name() const
Definition: Object.h:28
IOdata * io()
Definition: IOobject.h:66

◆ triggerRam()

RAM* A3PE::triggerRam ( )
inline

Definition at line 544 of file A3PE.h.

References m_triggerRam.

Referenced by BOOST_PYTHON_MODULE(), dumpTrigger(), and loadTrigger().

544  {
545  return m_triggerRam;
546  }
RAM * m_triggerRam
Definition: A3PE.h:603

◆ triggerRate()

unsigned int A3PE::triggerRate ( )

Definition at line 539 of file A3PE.cpp.

References shell::data(), IOdata::dataU32(), Object::error(), IOobject::io(), StatusCode::isFailure(), m_triggerReg, Object::name(), and IOobject::read().

Referenced by BOOST_PYTHON_MODULE(), and reset().

539  {
540  if (m_triggerReg->read().isFailure()){
541  error("Cannot read Trigger register "+m_triggerReg->name(),
542  "Register::setTriggerRate");
543  return 0;
544  }
545  unsigned long int data=m_triggerReg->io()->dataU32()[0];
546  return (data>>8) & (65535) ;
547 }
Register * m_triggerReg
Definition: A3PE.h:597
bool isFailure() const
Definition: StatusCode.h:68
U32 * dataU32()
Definition: IOdata.h:222
virtual StatusCode read()
Definition: IOobject.h:73
void error(std::string mymsg)
Definition: Object.h:40
def data(object, stream=None)
Definition: shell.py:150
std::string name() const
Definition: Object.h:28
IOdata * io()
Definition: IOobject.h:66

◆ triggerReg()

Register* A3PE::triggerReg ( )
inline

Definition at line 520 of file A3PE.h.

References m_triggerReg.

Referenced by BOOST_PYTHON_MODULE().

520  {
521  return m_triggerReg;
522  }
Register * m_triggerReg
Definition: A3PE.h:597

◆ update()

void A3PE::update ( )
inlinevirtual

◆ writeFromAXRamUsb()

bool A3PE::writeFromAXRamUsb ( )

Definition at line 276 of file A3PE.cpp.

References Register::getBit(), and m_setupReg.

Referenced by BOOST_PYTHON_MODULE(), and reset().

276  {
277  return (m_setupReg->getBit(10)==1&&m_setupReg->getBit(11)==1);
278 }
bool getBit(unsigned int)
Definition: Register.cpp:66
Register * m_setupReg
Definition: A3PE.h:590

◆ writeLengthFifoReg()

Register* A3PE::writeLengthFifoReg ( )
inline

Definition at line 508 of file A3PE.h.

References m_writeLengthFifoReg.

Referenced by BOOST_PYTHON_MODULE().

508  {
509  return m_writeLengthFifoReg;
510  }
Register * m_writeLengthFifoReg
Definition: A3PE.h:594

◆ writeStorageFifoUsb()

bool A3PE::writeStorageFifoUsb ( )

Definition at line 248 of file A3PE.cpp.

References Register::getBit(), and m_setupReg.

Referenced by BOOST_PYTHON_MODULE(), and reset().

248  {
249  if (m_setupReg->getBit(8)==1&&m_setupReg->getBit(9)==1) return true;
250  return false;
251 }
bool getBit(unsigned int)
Definition: Register.cpp:66
Register * m_setupReg
Definition: A3PE.h:590

Member Data Documentation

◆ m_acqReg

Register* A3PE::m_acqReg
private

◆ m_clockDivisionReg

Register* A3PE::m_clockDivisionReg
private

Definition at line 596 of file A3PE.h.

Referenced by A3PE(), clockDivision(), clockDivisionReg(), and setClockDivision().

◆ m_ctrlAnaMezzReg

Register* A3PE::m_ctrlAnaMezzReg
private

Definition at line 595 of file A3PE.h.

Referenced by A3PE(), and ctrlAnaMezzReg().

◆ m_ctrlReg

Register* A3PE::m_ctrlReg
private

Definition at line 588 of file A3PE.h.

Referenced by A3PE(), and ctrlReg().

◆ m_fromAXRam

RAM* A3PE::m_fromAXRam
private

Definition at line 607 of file A3PE.h.

Referenced by A3PE(), and fromAXRam().

◆ m_fromAXRamPtr

Register* A3PE::m_fromAXRamPtr
private

Definition at line 605 of file A3PE.h.

Referenced by A3PE(), fromAXRamPtrReg(), and setAddFromAXRam().

◆ m_fromAXReg

Register* A3PE::m_fromAXReg
private

Definition at line 599 of file A3PE.h.

Referenced by A3PE(), and fromAXReg().

◆ m_globalUsbReset

Register* A3PE::m_globalUsbReset
private

Definition at line 587 of file A3PE.h.

Referenced by A3PE(), and reset().

◆ m_latencyAX

Register* A3PE::m_latencyAX
private

Definition at line 608 of file A3PE.h.

Referenced by A3PE(), latencyAX(), and setLatencyAX().

◆ m_latencyReg

Register* A3PE::m_latencyReg
private

Definition at line 593 of file A3PE.h.

Referenced by A3PE(), fifoLatency(), latencyReg(), and setFifoLatency().

◆ m_lengthAX

Register* A3PE::m_lengthAX
private

Definition at line 609 of file A3PE.h.

Referenced by A3PE(), lengthAX(), and setLengthAX().

◆ m_patternRam

RAM* A3PE::m_patternRam
private

Definition at line 602 of file A3PE.h.

Referenced by A3PE(), and patternRam().

◆ m_resetReg

Register* A3PE::m_resetReg
private

◆ m_setupReg

Register* A3PE::m_setupReg
private

◆ m_spare3Reg

Register* A3PE::m_spare3Reg
private

Definition at line 600 of file A3PE.h.

Referenced by A3PE(), and spare3Reg().

◆ m_statusReg

Register* A3PE::m_statusReg
private

Definition at line 591 of file A3PE.h.

Referenced by A3PE(), and statusReg().

◆ m_storageRam

RAM* A3PE::m_storageRam
private

Definition at line 601 of file A3PE.h.

Referenced by A3PE(), setFifoDepth(), and storageRam().

◆ m_testRam

RAM* A3PE::m_testRam
private

Definition at line 610 of file A3PE.h.

Referenced by A3PE(), and testRam().

◆ m_toAXRam

RAM* A3PE::m_toAXRam
private

Definition at line 606 of file A3PE.h.

Referenced by A3PE(), and toAXRam().

◆ m_toAXRamPtr

Register* A3PE::m_toAXRamPtr
private

Definition at line 604 of file A3PE.h.

Referenced by A3PE(), setAddToAXRam(), and toAXRamPtrReg().

◆ m_toAXReg

Register* A3PE::m_toAXReg
private

Definition at line 598 of file A3PE.h.

Referenced by A3PE(), and toAXReg().

◆ m_triggerRam

RAM* A3PE::m_triggerRam
private

Definition at line 603 of file A3PE.h.

Referenced by A3PE(), and triggerRam().

◆ m_triggerReg

Register* A3PE::m_triggerReg
private

◆ m_writeLengthFifoReg

Register* A3PE::m_writeLengthFifoReg
private

Definition at line 594 of file A3PE.h.

Referenced by A3PE(), fifoDepth(), setFifoDepth(), and writeLengthFifoReg().


The documentation for this class was generated from the following files: