diff options
author | Thomas Tsou <tom@tsou.cc> | 2013-11-13 22:48:11 -0500 |
---|---|---|
committer | Thomas Tsou <tom@tsou.cc> | 2013-11-15 23:35:07 -0500 |
commit | a2fe91a688fb16f1055e3af77478cfb4bceb3ae2 (patch) | |
tree | 6ff5dc34e0664adeb7b2bd171e926e1fb48e6172 /Transceiver52M/radioVector.cpp | |
parent | e1ce92599af0054590aadab5b04a5bdb24bf6243 (diff) |
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>
Diffstat (limited to 'Transceiver52M/radioVector.cpp')
-rw-r--r-- | Transceiver52M/radioVector.cpp | 35 |
1 files changed, 29 insertions, 6 deletions
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 @@ bool radioVector::operator>(const radioVector& other) const 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); |