Transceiver52M: Add vectorized radio burst capability

This patch allows multiple signalVectors to be stored within
a single radioVector object. The motivation is to provide
a facility for diversity and/or MIMO burst handling. When
no channel value is specified, single channel bevhaviour
is maintained.

Signed-off-by: Thomas Tsou <tom@tsou.cc>
diff --git a/Transceiver52M/radioVector.cpp b/Transceiver52M/radioVector.cpp
index 8ab6695..ead4481 100644
--- a/Transceiver52M/radioVector.cpp
+++ b/Transceiver52M/radioVector.cpp
@@ -21,19 +21,24 @@
 
 #include "radioVector.h"
 
-radioVector::radioVector(const signalVector& wVector, GSM::Time& wTime)
-	: signalVector(wVector), mTime(wTime)
+radioVector::radioVector(GSM::Time &time, size_t size,
+			 size_t start, size_t chans)
+	: vectors(chans), mTime(time)
 {
+	for (size_t i = 0; i < vectors.size(); i++)
+		vectors[i] = new signalVector(size, start);
 }
 
-radioVector::radioVector(size_t size, GSM::Time& wTime)
-	: signalVector(size), mTime(wTime)
+radioVector::radioVector(GSM::Time& wTime, signalVector *vector)
+	: vectors(1), mTime(wTime)
 {
+	vectors[0] = vector;
 }
 
-radioVector::radioVector(size_t size, size_t start, GSM::Time& wTime)
-	: signalVector(size, start), mTime(wTime)
+radioVector::~radioVector()
 {
+	for (size_t i = 0; i < vectors.size(); i++)
+		delete vectors[i];
 }
 
 GSM::Time radioVector::getTime() const
@@ -51,6 +56,24 @@
 	return mTime > other.mTime;
 }
 
+signalVector *radioVector::getVector(size_t chan)
+{
+	if (chan >= vectors.size())
+		return NULL;
+
+	return vectors[chan];
+}
+
+bool radioVector::setVector(signalVector *vector, size_t chan)
+{
+	if (chan >= vectors.size())
+		return false;
+
+	vectors[chan] = vector;
+
+	return true;
+}
+
 noiseVector::noiseVector(size_t n)
 {
 	this->resize(n);