Index: /trunk/FACT++/src/HeadersFAD.h
===================================================================
--- /trunk/FACT++/src/HeadersFAD.h	(revision 11374)
+++ /trunk/FACT++/src/HeadersFAD.h	(revision 11375)
@@ -17,15 +17,15 @@
     enum Enable
     {
-        kCmdDrsEnable       = 0x0600,  // CMD_DENABLE/CMD_DISABLE
-        kCmdDwrite          = 0x0800,  // CMD_DWRITE_RUN/CMD_DWRITE_STOP
-        kCmdSclk            = 0x1000,  // CMD_SCLK_ON/OFF
-        kCmdSrclk           = 0x1500,  // CMD_SRCLK_ON/OFF
-        kCmdTriggerLine     = 0x1800,  // CMD_TRIGGERS_ON/CMD_TRIGGERS_OFF
-        kCmdContTrigger     = 0x1f00,
-        kCmdRun             = 0x2200,  // CMD_Start/Stop
-        kCmdBusy            = 0x2400,  //
-        kCmdResetTriggerId  = 0x2A00,  //
-        kCmdSocket          = 0x3000,  // CMD_mode_command/CMD_mode_all_sockets
-        kCmdSingleTrigger   = 0xA000,  // CMD_Trigger
+        kCmdDrsEnable         = 0x0600,  // CMD_DENABLE/CMD_DISABLE
+        kCmdDwrite            = 0x0800,  // CMD_DWRITE_RUN/CMD_DWRITE_STOP
+        kCmdSclk              = 0x1000,  // CMD_SCLK_ON/OFF
+        kCmdSrclk             = 0x1500,  // CMD_SRCLK_ON/OFF
+        kCmdTriggerLine       = 0x1800,  // CMD_TRIGGERS_ON/CMD_TRIGGERS_OFF
+        kCmdContTrigger       = 0x1f00,
+        kCmdRun               = 0x2200,  // CMD_Start/Stop
+        kCmdBusy              = 0x2400,  //
+        kCmdResetEventCounter = 0x2A00,  //
+        kCmdSocket            = 0x3000,  // CMD_mode_command/CMD_mode_all_sockets
+        kCmdSingleTrigger     = 0xA000,  // CMD_Trigger
     };
 
@@ -60,5 +60,7 @@
         kDisconnected,
         kConnecting,
-        kConnected
+        kConnected,
+        kConfiguring,
+        kConfigured
     };
 
@@ -267,4 +269,15 @@
         }
 
+        bool operator==(const EventHeader &h) const
+        {
+            return
+                fStatus == h.fStatus &&
+                fRunNumber == h.fRunNumber &&
+                fEventCounter == h.fEventCounter &&
+                fAdcClockPhaseShift == h.fAdcClockPhaseShift &&
+                fTriggerGeneratorPrescaler == h.fTriggerGeneratorPrescaler &&
+                memcmp(fDac, h.fDac, sizeof(fDac))==0;
+        }
+
         float GetTemp(int i) const { return fTempDrs[i]/16.; }
 
@@ -276,5 +289,5 @@
                      : (fTempDrs[i]&0x007fff))>>3)/16.; }*/
 
-        uint8_t PLLLCK() const         { return  fStatus>>12; }
+        uint8_t PLLLCK() const         { return fStatus>>12; }
 
         bool HasDenable() const        { return fStatus&kDenable; }
@@ -342,94 +355,19 @@
     //   0x4242
     //   0x04fe
-/*
-    struct DimPassport
-    {
-        uint32_t fTimeStamp;
-
-        uint16_t fVersion;
-        uint16_t fBoardId;
-        uint64_t fDNA; // Xilinx DNA
-
-        DimPassport(const EventHeader &h) :
-            fTimeStamp(h.fTimeStamp),
-            fVersion(h.fVersion),
-            fBoardId(h.fBoardId),
-            fDNA(h.fDNA)
-        {
-        }
-
-    }  __attribute__((__packed__));
-
-    struct DimSetup
-    {
-        uint32_t fTimeStamp;
-
-        uint32_t fFreqRefClock;
-        uint16_t fStatus;
-        uint16_t fAdcClockPhaseShift;
-        uint16_t fNumTriggersToGenerate;
-        uint16_t fTriggerGeneratorPrescaler;
-        uint16_t fDac[kNumDac];
-
-        DimSetup(const EventHeader &h) :
-            fTimeStamp(h.fTimeStamp),
-            fFreqRefClock(h.fFreqRefClock),
-            fStatus(h.fStatus),
-            fAdcClockPhaseShift(h.fAdcClockPhaseShift),
-            fNumTriggersToGenerate(h.fNumTriggersToGenerate),
-            fTriggerGeneratorPrescaler(h.fTriggerGeneratorPrescaler)
-        {
-            memcpy(fDac, h.fDac, sizeof(fDac));
-        }
-
-        uint8_t PLLLCK() const         { return fStatus>>12; }
-
-        bool HasDenable() const        { return fStatus&EventHeader::kDenable; }
-        bool HasDwrite() const         { return fStatus&EventHeader::kDwrite; }
-        bool IsRefClockTooHigh() const { return fStatus&EventHeader::kRefClkTooHigh; }
-        bool IsRefClockTooLow() const  { return fStatus&EventHeader::kRefClkTooLow; }
-        bool IsDcmLocked() const       { return fStatus&EventHeader::kDcmLocked; }
-        bool IsDcmReady() const        { return fStatus&EventHeader::kDcmReady; }
-        bool HasSpiSclk() const        { return fStatus&EventHeader::kSpiSclk; }
-
-    }  __attribute__((__packed__));
-
-    struct DimTemperatures
-    {
-        uint32_t fTimeStamp;
-
-        float fTempDrs[kNumTemp];
-
-        DimTemperatures(const EventHeader &h) :
-            fTimeStamp(h.fTimeStamp)
-        {
-            for (int i=0; i<kNumTemp; i++)
-                fTempDrs[i] = h.GetTemp(i);
-        }
-
-    } __attribute__((__packed__));;
-
-    struct DimEventHeader
-    {
-        uint32_t fTimeStamp;
-
-        uint32_t fRunNumber;
-        uint32_t fEventCounter;
-        uint16_t fTriggerCrc;
-        uint16_t fTriggerType;
-        uint32_t fTriggerId;
-
-        DimEventHeader(const EventHeader &h) :
-            fTimeStamp(h.fTimeStamp),
-            fRunNumber(h.fRunNumber),
-            fEventCounter(h.fEventCounter),
-            fTriggerCrc(h.fTriggerCrc),
-            fTriggerType(h.fTriggerType),
-            fTriggerId(h.fTriggerId)
-        {
-        }
-
-    }  __attribute__((__packed__));
-*/
+
+    struct Configuration
+    {
+        bool     fDwrite;
+        bool     fDenable;
+        bool     fContinousTrigger;
+        uint16_t fTriggerRate;
+        uint16_t fRoi[FAD::kNumChannelsPerChip];
+        uint16_t fDac[FAD::kNumDac];
+
+#ifdef __cplusplus
+        Configuration() { init(*this); }
+#endif
+    };
+
     // --------------------------------------------------------------------
 #ifdef __cplusplus
