From 4e3b40e9c6d01e2449657e921d457cba64c1850b Mon Sep 17 00:00:00 2001 From: wierenga <sdos@astron.nl> Date: Wed, 24 May 2006 15:15:37 +0000 Subject: [PATCH] BugID: 646 Fix some minor bugs in the RegisterState class. Now the state of all registers is properly reported. --- MAC/APL/PIC/RSPDriver/src/RCUProtocolWrite.cc | 2 +- MAC/APL/PIC/RSPDriver/src/RCUResultRead.cc | 12 +--------- MAC/APL/PIC/RSPDriver/src/RCUResultRead.h | 1 - MAC/APL/PIC/RSPDriver/src/TDSProtocolWrite.cc | 2 +- .../APL/RSP_Protocol/AllRegisterState.h | 22 +++++++++---------- .../include/APL/RTCCommon/RegisterState.h | 3 ++- MAC/APL/RTCCommon/src/RegisterState.cc | 6 +++-- 7 files changed, 20 insertions(+), 28 deletions(-) diff --git a/MAC/APL/PIC/RSPDriver/src/RCUProtocolWrite.cc b/MAC/APL/PIC/RSPDriver/src/RCUProtocolWrite.cc index d99a7aaa191..9b881fd6a7e 100644 --- a/MAC/APL/PIC/RSPDriver/src/RCUProtocolWrite.cc +++ b/MAC/APL/PIC/RSPDriver/src/RCUProtocolWrite.cc @@ -166,7 +166,7 @@ GCFEvent::TResult RCUProtocolWrite::handleack(GCFEvent& event, GCFPortInterface& // Mark modification as applied when write of RCU result register has completed - Cache::getInstance().getState().rcuprotocol().schedule_read(global_rcu); + Cache::getInstance().getState().rcuprotocol().read_schedule(global_rcu); } diff --git a/MAC/APL/PIC/RSPDriver/src/RCUResultRead.cc b/MAC/APL/PIC/RSPDriver/src/RCUResultRead.cc index 8b1b4fb40f7..370b4643077 100644 --- a/MAC/APL/PIC/RSPDriver/src/RCUResultRead.cc +++ b/MAC/APL/PIC/RSPDriver/src/RCUResultRead.cc @@ -38,11 +38,8 @@ using namespace LOFAR; using namespace RSP; using namespace EPA_Protocol; -#define RCURESULTREAD_DELAY 2 - RCUResultRead::RCUResultRead(GCFPortInterface& board_port, int board_id) - : SyncAction(board_port, board_id, StationSettings::instance()->nrBlpsPerBoard() * MEPHeader::N_POL), // *N_POL for X and Y - m_delay(0) + : SyncAction(board_port, board_id, StationSettings::instance()->nrBlpsPerBoard() * MEPHeader::N_POL) // *N_POL for X and Y { memset(&m_hdr, 0, sizeof(MEPHeader)); } @@ -62,13 +59,6 @@ void RCUResultRead::sendrequest() return; } - // delay TDSRESULTREAD_DELAY periods - if (m_delay++ < RCURESULTREAD_DELAY) { - setContinue(true); - return; - } - m_delay = 0; - // set appropriate header MEPHeader::FieldsType hdr; if (0 == global_rcu % MEPHeader::N_POL) { diff --git a/MAC/APL/PIC/RSPDriver/src/RCUResultRead.h b/MAC/APL/PIC/RSPDriver/src/RCUResultRead.h index 98cc3e888d5..52ed9ebf25f 100644 --- a/MAC/APL/PIC/RSPDriver/src/RCUResultRead.h +++ b/MAC/APL/PIC/RSPDriver/src/RCUResultRead.h @@ -60,7 +60,6 @@ namespace LOFAR { private: EPA_Protocol::MEPHeader m_hdr; - int m_delay; // used to delay reading back results }; }; }; diff --git a/MAC/APL/PIC/RSPDriver/src/TDSProtocolWrite.cc b/MAC/APL/PIC/RSPDriver/src/TDSProtocolWrite.cc index 97d4317ee90..be4d181b5ce 100644 --- a/MAC/APL/PIC/RSPDriver/src/TDSProtocolWrite.cc +++ b/MAC/APL/PIC/RSPDriver/src/TDSProtocolWrite.cc @@ -223,7 +223,7 @@ GCFEvent::TResult TDSProtocolWrite::handleack(GCFEvent& event, GCFPortInterface& // Mark register modification as applied // Still needs to be confirmed by TDSRegisterRead if (0 == m_remaining) { - Cache::getInstance().getState().tds().schedule_read(getBoardId()); + Cache::getInstance().getState().tds().read_schedule(getBoardId()); } return GCFEvent::HANDLED; diff --git a/MAC/APL/PIC/RSP_Protocol/include/APL/RSP_Protocol/AllRegisterState.h b/MAC/APL/PIC/RSP_Protocol/include/APL/RSP_Protocol/AllRegisterState.h index 66386960f47..c5f6720c9ec 100644 --- a/MAC/APL/PIC/RSP_Protocol/include/APL/RSP_Protocol/AllRegisterState.h +++ b/MAC/APL/PIC/RSP_Protocol/include/APL/RSP_Protocol/AllRegisterState.h @@ -83,24 +83,24 @@ namespace LOFAR { void force() { sys_state.read(); - bf_state.write(); - ss_state.write(); - rcusettings_state.write(); - rcuprotocol_state.write(); - rsuclear_state.write(); - diagwgsettings_state.write(); + bf_state.write_force(); + ss_state.write_force(); + rcusettings_state.write_force(); + rcuprotocol_state.write_force(); + rsuclear_state.write_force(); + diagwgsettings_state.write_force(); sst_state.read(); bst_state.read(); xst_state.read(); - cdo_state.write(); - bs_state.write(); - tds_state.write(); + cdo_state.write_force(); + bs_state.write_force(); + tds_state.write_force(); } void schedule() { sys_state.read(); - bf_state.write(); - ss_state.write(); + bf_state.write_force(); + ss_state.write_force(); rcusettings_state.check(); rcuprotocol_state.check(); rsuclear_state.check(); diff --git a/MAC/APL/RTCCommon/include/APL/RTCCommon/RegisterState.h b/MAC/APL/RTCCommon/include/APL/RTCCommon/RegisterState.h index 6efd4db0194..c5c36ddfd44 100644 --- a/MAC/APL/RTCCommon/include/APL/RTCCommon/RegisterState.h +++ b/MAC/APL/RTCCommon/include/APL/RTCCommon/RegisterState.h @@ -99,9 +99,10 @@ namespace LOFAR { void read (int i = -1) { tran(IDLE, READ, i); } void check (int i = -1) { tran(IDLE, CHECK, i); } + void write_force (int i = -1) { tran(IDLE, WRITE, i); } void unmodified (int i = -1) { tran(CHECK, IDLE, i); } void write (int i = -1) { tran(CHECK, WRITE, i); } - void schedule_read(int i = -1) { tran(WRITE, READ, i); } + void read_schedule(int i = -1) { tran(WRITE, READ, i); } void read_ack (int i = -1) { tran(READ, DONE, i); } void write_ack (int i = -1) { tran(WRITE, DONE, i); } void read_error (int i = -1) { tran(READ, READ_ERROR, i); } diff --git a/MAC/APL/RTCCommon/src/RegisterState.cc b/MAC/APL/RTCCommon/src/RegisterState.cc index e3ab1f3e9c7..0c953dbdc05 100644 --- a/MAC/APL/RTCCommon/src/RegisterState.cc +++ b/MAC/APL/RTCCommon/src/RegisterState.cc @@ -36,7 +36,8 @@ void RegisterState::tran(State source, State target, int i) ub = m_state.extent(blitz::firstDim); } else { ASSERT(i >= 0 && i < m_state.extent(blitz::firstDim)); - lb = ub = i; + lb = i; + ub = i + 1; } for (int j = lb; j < ub; j++) { @@ -59,7 +60,8 @@ void RegisterState::clear(int i) ub = m_state.extent(blitz::firstDim); } else { ASSERT(i >= 0 && i < m_state.extent(blitz::firstDim)); - lb = ub = i; + lb = i; + ub = i + 1; } for (int j = lb; j < ub; j++) { -- GitLab