From 44a5b930be57e5ab4dc16d18c0b7a7b67ee7c146 Mon Sep 17 00:00:00 2001
From: Auke Klazema <klazema@astron.nl>
Date: Mon, 28 Jan 2019 09:56:42 +0000
Subject: [PATCH] task SW-575: Change location of checking if enough complex
 values are given

---
 MAC/APL/PIC/RSP_Driver/src/rspctl.cc | 34 +++++++++++++++-------------
 1 file changed, 18 insertions(+), 16 deletions(-)

diff --git a/MAC/APL/PIC/RSP_Driver/src/rspctl.cc b/MAC/APL/PIC/RSP_Driver/src/rspctl.cc
index 100d822ee56..2e3b38a353f 100644
--- a/MAC/APL/PIC/RSP_Driver/src/rspctl.cc
+++ b/MAC/APL/PIC/RSP_Driver/src/rspctl.cc
@@ -206,7 +206,7 @@ void WeightsCommand::send()
 		setweights.rcumask   = getRCUMask();
 		logMessage(cerr,formatString("rcumask.count()=%d",setweights.rcumask.count()));
 
-        int nBanks = (MAX_BITS_PER_SAMPLE / itsBitsPerSample);
+		int nBanks = (MAX_BITS_PER_SAMPLE / itsBitsPerSample);
 		setweights.weights().resize(1, setweights.rcumask.count(), nBanks, maxBeamletsPerBank(itsBitsPerSample));
 
 		//bitset<maxBeamlets(bitsPerSample)> beamlet_mask = getBEAMLETSMask();
@@ -216,25 +216,27 @@ void WeightsCommand::send()
 		setweights.weights() = itsWeights;
 		int rcunr = 0;
 		int max_beamlets = maxBeamlets(itsBitsPerSample);
-        bool multiple_values = (m_values.size() > 1);
+		bool multiple_values = (m_values.size() > 1);
 		for (int rcu = 0; rcu < MAX_RCUS; rcu++) {
 			if (setweights.rcumask.test(rcu)) {
-                std::list<complex<double>>::iterator itr = m_values.begin();
+				std::list<complex<double>>::iterator itr = m_values.begin();
 				for (int beamlet = 0; beamlet < max_beamlets; beamlet++) {
 					if (beamlet_mask.test(beamlet)) {
-                        complex<double> value = *itr;
-                        value *= (1<<14); // -.99999 should become -16383 and 1 should become 16384
-					    int plane = beamlet / maxBeamletsPerBank(itsBitsPerSample);
-						int beamletnr = beamlet % maxBeamletsPerBank(itsBitsPerSample);
-						setweights.weights()(0,rcunr,plane,beamletnr) = complex<int16>((int16)value.real(), (int16)value.imag());
-						//setweights.weights()(0,rcunr,plane,beamletnr) = complex<int16>(10+plane, beamletnr); // for testing
-                        if(multiple_values) { // advance value if we have multiple values otherwise use the single value for all beamlets
-                            itr++;
-                            if(itr == m_values.end()) {
-                                logMessage(cerr,formatString("Error: not enough complex numbers for the amount of beamlets"));
-                                rspctl_exit_code = EXIT_FAILURE;
-                            }
-                        }
+                            			if(itr != m_values.end()) {
+							complex<double> value = *itr;
+							value *= (1<<14); // -.99999 should become -16383 and 1 should become 16384
+							int plane = beamlet / maxBeamletsPerBank(itsBitsPerSample);
+							int beamletnr = beamlet % maxBeamletsPerBank(itsBitsPerSample);
+							setweights.weights()(0,rcunr,plane,beamletnr) = complex<int16>((int16)value.real(), (int16)value.imag());
+							//setweights.weights()(0,rcunr,plane,beamletnr) = complex<int16>(10+plane, beamletnr); // for testing
+							if(multiple_values) { // advance value if we have multiple values otherwise use the single value for all beamlets
+								itr++;
+							}
+						}
+						else {
+							logMessage(cerr,formatString("Error: not enough complex numbers for the amount of beamlets"));
+							rspctl_exit_code = EXIT_FAILURE;
+						}
 					}
 				} // beamlet
 				rcunr++;
-- 
GitLab