From fb66c6dcee1cab76e7c7fd90800bb16e27df12cc Mon Sep 17 00:00:00 2001
From: Pieter Donker <donker@astron.nl>
Date: Thu, 19 Aug 2010 20:05:53 +0000
Subject: [PATCH] Bug 335: modified TBBDriver

---
 MAC/APL/PIC/TBB_Driver/src/DriverSettings.cc |  9 +++------
 MAC/APL/PIC/TBB_Driver/src/DriverSettings.h  |  2 +-
 MAC/APL/PIC/TBB_Driver/src/TBBDriver.cc      | 16 ++++++++++++----
 3 files changed, 16 insertions(+), 11 deletions(-)

diff --git a/MAC/APL/PIC/TBB_Driver/src/DriverSettings.cc b/MAC/APL/PIC/TBB_Driver/src/DriverSettings.cc
index 5647b74ffaa..890fec86ccc 100644
--- a/MAC/APL/PIC/TBB_Driver/src/DriverSettings.cc
+++ b/MAC/APL/PIC/TBB_Driver/src/DriverSettings.cc
@@ -323,7 +323,7 @@ int32 TbbSettings::getFirstChannelNr(int32 board, int32 mp)
 	return((board * itsChannelsOnBoard) + (mp * itsChannelsOnMp));
 }
 
-void TbbSettings::setDestination(int32 rcunr, char *storage)
+void TbbSettings::setDestination(int32 channelnr, char *storage)
 {
     char mac[20];
     char ip[20];
@@ -355,11 +355,8 @@ void TbbSettings::setDestination(int32 rcunr, char *storage)
 		LOG_DEBUG_STR(formatString("storage=%s NOT found", key));
 	}
 	else {
-	    int32 ch;
-	    int32 board;
-	    convertRcu2Ch(rcunr, &board, &ch);
-	    itsChannelInfo[ch * board].dstIpCep = static_cast<string>(ip);
-	    itsChannelInfo[ch * board].dstMacCep = static_cast<string>(mac);
+	    itsChannelInfo[channelnr].dstIpCep = static_cast<string>(ip);
+	    itsChannelInfo[channelnr].dstMacCep = static_cast<string>(mac);
 	}
 }
 
diff --git a/MAC/APL/PIC/TBB_Driver/src/DriverSettings.h b/MAC/APL/PIC/TBB_Driver/src/DriverSettings.h
index 88a6fb7f309..9487f823b78 100644
--- a/MAC/APL/PIC/TBB_Driver/src/DriverSettings.h
+++ b/MAC/APL/PIC/TBB_Driver/src/DriverSettings.h
@@ -189,7 +189,7 @@ public:
 	void setDstIpCep(int32 channelnr, string ip);
 	void setSrcMacCep(int32 boardnr, string mac);
 	void setDstMacCep(int32 channelnr, string mac);
-	void setDestination(int32 boardnr, char *storage);
+	void setDestination(int32 channelnr, char *storage);
 	
 	
 	void clearRcuSettings(int32 boardnr);
diff --git a/MAC/APL/PIC/TBB_Driver/src/TBBDriver.cc b/MAC/APL/PIC/TBB_Driver/src/TBBDriver.cc
index 77fa015e3c8..946f6fb197c 100644
--- a/MAC/APL/PIC/TBB_Driver/src/TBBDriver.cc
+++ b/MAC/APL/PIC/TBB_Driver/src/TBBDriver.cc
@@ -1077,13 +1077,17 @@ bool TBBDriver::sendInfo(GCFEvent& event, GCFPortInterface& port)
     		    TBBModeEvent tbb_event(event);
     		    for (int32 rcu = 0; rcu < TS->maxChannels(); rcu++) {
     		        if (tbb_event.rcu_mask.test(rcu)) {
-    		            TS->setChOperatingMode(rcu, tbb_event.rec_mode[rcu]);
+    		            int chan;
+    		            int board;
+    		            TS->convertRcu2Ch(rcu, &board, &chan);
+    		            chan += board * TS->nrChannelsOnBoard();
+    		            TS->setChOperatingMode(chan, tbb_event.rec_mode[rcu]);
     		        }
     		    }
     		    
     		    TBBModeAckEvent ack;
         		for (int32 i = 0; i < TS->maxBoards(); i++) {
-        			ack.status_mask[i] = 0;
+        			ack.status_mask[i] = TBB_SUCCESS;
         		}
     		    port.send(ack);
     		} else {
@@ -1097,12 +1101,16 @@ bool TBBDriver::sendInfo(GCFEvent& event, GCFPortInterface& port)
     		    TBBCepStorageEvent tbb_event(event);
     		    for (int32 rcu = 0; rcu < TS->maxChannels(); rcu++) {
     		        if (tbb_event.rcu_mask.test(rcu)) {
-    		            TS->setDestination(rcu, tbb_event.destination);
+    		            int chan;
+    		            int board;
+    		            TS->convertRcu2Ch(rcu, &board, &chan);
+    		            chan += board * TS->nrChannelsOnBoard();
+    		            TS->setDestination(chan, tbb_event.destination);
     		        }
     		    }
     		    TBBCepStorageAckEvent tbb_ack;
         		for (int32 i = 0; i < TS->maxBoards(); i++) {
-        			tbb_ack.status_mask[i] = 0;
+        			tbb_ack.status_mask[i] = TBB_SUCCESS;
         		}
     		    port.send(tbb_ack);
     		} else {
-- 
GitLab