From 8efd4f301e1102e84c62874814fdf14114224cd5 Mon Sep 17 00:00:00 2001 From: Pieter Donker <donker@astron.nl> Date: Thu, 14 Jan 2010 18:48:33 +0000 Subject: [PATCH] Bug 335: add missed field to trigger msg --- MAC/APL/PIC/TBB_Driver/src/DriverSettings.h | 2 +- MAC/APL/PIC/TBB_Driver/src/MsgHandler.cc | 6 ++++-- MAC/APL/PIC/TBB_Driver/src/RawEvent.cc | 4 ++-- MAC/APL/PIC/TBB_Driver/src/TP_Protocol.prot | 2 +- MAC/APL/PIC/TBB_Driver/src/TrigInfoCmd.cc | 5 ++++- MAC/APL/PIC/TBB_Driver/src/TrigInfoCmd.h | 1 + MAC/APL/PIC/TBB_Driver/src/tbbctl.cc | 16 +++++++++------- MAC/APL/PIC/TBB_Driver/src/tbbctl.h | 2 +- 8 files changed, 23 insertions(+), 15 deletions(-) diff --git a/MAC/APL/PIC/TBB_Driver/src/DriverSettings.h b/MAC/APL/PIC/TBB_Driver/src/DriverSettings.h index 512c659fc1c..6f3a626dfae 100644 --- a/MAC/APL/PIC/TBB_Driver/src/DriverSettings.h +++ b/MAC/APL/PIC/TBB_Driver/src/DriverSettings.h @@ -35,7 +35,7 @@ namespace LOFAR { using GCF::TM::GCFPortInterface; namespace TBB { -static const int DRIVER_VERSION = 223; // TBBDriver V2.23 +static const int DRIVER_VERSION = 224; enum BoardStateT {noBoard, setImage1, image1Set, diff --git a/MAC/APL/PIC/TBB_Driver/src/MsgHandler.cc b/MAC/APL/PIC/TBB_Driver/src/MsgHandler.cc index 0a8ba18621d..9b7a3054119 100644 --- a/MAC/APL/PIC/TBB_Driver/src/MsgHandler.cc +++ b/MAC/APL/PIC/TBB_Driver/src/MsgHandler.cc @@ -107,6 +107,7 @@ void MsgHandler::sendTrigger(GCFEvent& event, int boardnr) tbb_event.peak_value = tp_event.trigger.peak; tbb_event.power_before = tp_event.trigger.pwr_bt_at & 0x0000FFFF; tbb_event.power_after = (tp_event.trigger.pwr_bt_at & 0xFFFF0000) >> 16; + tbb_event.missed = tp_event.trigger.missed; sendTriggerMessage(tbb_event); @@ -128,7 +129,7 @@ void MsgHandler::sendTrigger(GCFEvent& event, int boardnr) itsFile = fopen(itsFileName,"a"); } - err = fprintf(itsFile,"%d %u %u %u %u %u %u %u %u\n", + err = fprintf(itsFile,"%d %u %u %u %u %u %u %u %u %u\n", tbb_event.rcu, tbb_event.sequence_nr, tbb_event.time, @@ -137,7 +138,8 @@ void MsgHandler::sendTrigger(GCFEvent& event, int boardnr) tbb_event.trigger_samples, tbb_event.peak_value, tbb_event.power_before, - tbb_event.power_after); + tbb_event.power_after, + tbb_event.missed ); fflush(itsFile); } } diff --git a/MAC/APL/PIC/TBB_Driver/src/RawEvent.cc b/MAC/APL/PIC/TBB_Driver/src/RawEvent.cc index e77b36b4094..e8d106bcc45 100644 --- a/MAC/APL/PIC/TBB_Driver/src/RawEvent.cc +++ b/MAC/APL/PIC/TBB_Driver/src/RawEvent.cc @@ -84,7 +84,7 @@ GCFEvent::TResult RawEvent::dispatch(GCFTask& task, GCFPortInterface& port) break; case oc_TRIGGER: buf.event.signal = TP_TRIGGER; - buf.event.length = 44; + buf.event.length = 48; break; case oc_TRIG_RELEASE: buf.event.signal = TP_TRIG_RELEASE_ACK; @@ -104,7 +104,7 @@ GCFEvent::TResult RawEvent::dispatch(GCFTask& task, GCFPortInterface& port) break; case oc_TRIG_INFO: buf.event.signal = TP_TRIG_INFO_ACK; - buf.event.length = 40; + buf.event.length = 44; break; case oc_READ: buf.event.signal = TP_READ_ACK; diff --git a/MAC/APL/PIC/TBB_Driver/src/TP_Protocol.prot b/MAC/APL/PIC/TBB_Driver/src/TP_Protocol.prot index 1556f11950d..60793e41286 100644 --- a/MAC/APL/PIC/TBB_Driver/src/TP_Protocol.prot +++ b/MAC/APL/PIC/TBB_Driver/src/TP_Protocol.prot @@ -97,7 +97,7 @@ prelude = << PRELUDE_END uint32 samples; uint32 peak; uint32 pwr_bt_at; - uint32 end_code; + uint32 missed; }; typedef struct TpTriggerSetup // setup variables for 1 channel diff --git a/MAC/APL/PIC/TBB_Driver/src/TrigInfoCmd.cc b/MAC/APL/PIC/TBB_Driver/src/TrigInfoCmd.cc index 19c62c33b5d..2b75f62c842 100644 --- a/MAC/APL/PIC/TBB_Driver/src/TrigInfoCmd.cc +++ b/MAC/APL/PIC/TBB_Driver/src/TrigInfoCmd.cc @@ -36,7 +36,7 @@ using namespace TBB; //--Constructors for a TrigInfoCmd object.---------------------------------------- TrigInfoCmd::TrigInfoCmd(): itsRcu(0), itsSequenceNr(0), itsTime(0), itsSampleNr(0), itsTriggerSum(0), - itsTriggerSamples(0), itsPeakValue(0), itsPowerBefore(0), itsPowerAfter(0) + itsTriggerSamples(0), itsPeakValue(0), itsPowerBefore(0), itsPowerAfter(0), itsMissed(0) { TS = TbbSettings::instance(); setWaitAck(true); @@ -98,6 +98,7 @@ void TrigInfoCmd::saveTpAckEvent(GCFEvent& event) itsPeakValue = tp_ack.trigger.peak; itsPowerBefore = tp_ack.trigger.pwr_bt_at & 0x0000FFFF; itsPowerAfter = (tp_ack.trigger.pwr_bt_at & 0xFFFF0000) >> 16; + itsMissed = tp_ack.trigger.missed; } else { setStatus(0, (tp_ack.status << 24)); } @@ -120,6 +121,8 @@ void TrigInfoCmd::sendTbbAckEvent(GCFPortInterface* clientport) tbb_ack.peak_value = itsPeakValue; tbb_ack.power_before = itsPowerBefore; tbb_ack.power_after = itsPowerAfter; + tbb_ack.missed = itsMissed; + if (clientport->isConnected()) { clientport->send(tbb_ack); } } diff --git a/MAC/APL/PIC/TBB_Driver/src/TrigInfoCmd.h b/MAC/APL/PIC/TBB_Driver/src/TrigInfoCmd.h index 872ced665e3..f8b500dfddb 100644 --- a/MAC/APL/PIC/TBB_Driver/src/TrigInfoCmd.h +++ b/MAC/APL/PIC/TBB_Driver/src/TrigInfoCmd.h @@ -68,6 +68,7 @@ private: uint32 itsPeakValue; uint32 itsPowerBefore; uint32 itsPowerAfter; + uint32 itsMissed; }; } // end TBB namespace diff --git a/MAC/APL/PIC/TBB_Driver/src/tbbctl.cc b/MAC/APL/PIC/TBB_Driver/src/tbbctl.cc index 5c63515e399..fc81b16ebc9 100644 --- a/MAC/APL/PIC/TBB_Driver/src/tbbctl.cc +++ b/MAC/APL/PIC/TBB_Driver/src/tbbctl.cc @@ -437,8 +437,8 @@ TrigGenerateCmd::TrigGenerateCmd(GCFPortInterface& port) : Command(port) cout << endl; cout << "== TBB ============================ generate trigger on selected rcu's ====" << endl; cout << endl; - cout << "RCU seq_nr time sample sum samples peak pwr_before pwr_after" << endl; - cout << "--- --------- --------- ---------- ---------- --------- --------- ---------- ---------" << endl; + cout << "RCU seq_nr time sample sum samples peak pwr_before pwr_after missed " << endl; + cout << "--- --------- --------- ---------- ---------- --------- --------- ---------- --------- ---------" << endl; } //----------------------------------------------------------------------------- @@ -468,7 +468,7 @@ GCFEvent::TResult TrigGenerateCmd::ack(GCFEvent& e) } if (e.signal == TBB_TRIGGER) { TBBTriggerEvent trig(e); - cout << formatString(" %2d %9u %9u %10u %10u %9u %9u %9u %9u", + cout << formatString(" %2d %9u %9u %10u %10u %9u %9u %9u %9u %9u", trig.rcu, trig.sequence_nr, trig.time, @@ -477,7 +477,8 @@ GCFEvent::TResult TrigGenerateCmd::ack(GCFEvent& e) trig.trigger_samples, trig.peak_value, trig.power_before, - trig.power_after ) << endl; + trig.power_after, + trig.missed ) << endl; ++itsTriggerNr; if (itsTriggerNr == itsMaxChannels) { setCmdDone(true); @@ -680,8 +681,8 @@ void ListenCmd::send() release.rcu_start_mask = getRcuMask(); itsPort.send(release); cout << endl; - cout << "RCU seq_nr time sample sum samples peak pwr_before pwr_after" << endl; - cout << "--- --------- ---------- ---------- ---------- --------- --------- ---------- ---------" << endl; + cout << "RCU seq_nr time sample sum samples peak pwr_before pwr_after missed " << endl; + cout << "--- --------- ---------- ---------- ---------- --------- --------- ---------- --------- ---------" << endl; } break; default: { @@ -716,7 +717,7 @@ GCFEvent::TResult ListenCmd::ack(GCFEvent& e) TBBTriggerEvent trig(e); nummer++; - cout << formatString(" %2d %9u %9u %10u %10u %9u %9u %9u %9u (stopped) %6d", + cout << formatString(" %2d %9u %9u %10u %10u %9u %9u %9u %9u %9u (stopped) %6d", trig.rcu, trig.sequence_nr, trig.time, @@ -726,6 +727,7 @@ GCFEvent::TResult ListenCmd::ack(GCFEvent& e) trig.peak_value, trig.power_before, trig.power_after, + trig.missed, nummer ) << endl; if (itsListenMode == TBB_LISTEN_ONE_SHOT) { diff --git a/MAC/APL/PIC/TBB_Driver/src/tbbctl.h b/MAC/APL/PIC/TBB_Driver/src/tbbctl.h index 63f29f1c9d6..73d31703033 100644 --- a/MAC/APL/PIC/TBB_Driver/src/tbbctl.h +++ b/MAC/APL/PIC/TBB_Driver/src/tbbctl.h @@ -45,7 +45,7 @@ namespace LOFAR { GCFTimerPort* itsCmdTimer; -static const int TBBCTL_VERSION = 223; // tbbctl V2.23 +static const int TBBCTL_VERSION = 224; // MAX_N_TBBOARDS and MAX_N_RCUS come from TBB_protocol.ph -- GitLab