aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTom Tsou <tom.tsou@ettus.com>2016-07-01 02:46:04 -0700
committerTom Tsou <tom.tsou@ettus.com>2016-07-01 03:16:03 -0700
commite88710881b3287b4f9901df8824836ac01ef3799 (patch)
tree9a17b5abcb0d00fe95fe8674b5875208f20aa92d
parenta84e162672b1ccca94994f132b89fb024bcd15d4 (diff)
egprs: Enable 8-PSK length vectors on the Tx interface
Allow EGPRS 8-PSK length bit vectors of length 444 (148 * 3) to pass in through the Tx socket interface. Length is the sole factor in determining whether to modulate a bit vector using GMSK or 8-PSK. Tested with 8-PSK training sequences with random payload originating from osmo-bts. Output verified with Agilent E4406A. Signed-off-by: Tom Tsou <tom.tsou@ettus.com>
-rw-r--r--Transceiver52M/Transceiver.cpp14
1 files changed, 11 insertions, 3 deletions
diff --git a/Transceiver52M/Transceiver.cpp b/Transceiver52M/Transceiver.cpp
index 2e09512..aafeaba 100644
--- a/Transceiver52M/Transceiver.cpp
+++ b/Transceiver52M/Transceiver.cpp
@@ -877,12 +877,20 @@ void Transceiver::driveControl(size_t chan)
bool Transceiver::driveTxPriorityQueue(size_t chan)
{
- char buffer[gSlotLen+50];
+ int burstLen;
+ char buffer[EDGE_BURST_NBITS + 50];
// check data socket
size_t msgLen = mDataSockets[chan]->read(buffer, sizeof(buffer));
- if (msgLen!=gSlotLen+1+4+1) {
+ if (msgLen == gSlotLen + 1 + 4 + 1) {
+ burstLen = gSlotLen;
+ } else if (msgLen == EDGE_BURST_NBITS + 1 + 4 + 1) {
+ if (mSPSTx != 4)
+ return false;
+
+ burstLen = EDGE_BURST_NBITS;
+ } else {
LOG(ERR) << "badly formatted packet on GSM->TRX interface";
return false;
}
@@ -895,7 +903,7 @@ bool Transceiver::driveTxPriorityQueue(size_t chan)
LOG(DEBUG) << "rcvd. burst at: " << GSM::Time(frameNum,timeSlot);
int RSSI = (int) buffer[5];
- static BitVector newBurst(gSlotLen);
+ static BitVector newBurst(burstLen);
BitVector::iterator itr = newBurst.begin();
char *bufferItr = buffer+6;
while (itr < newBurst.end())