diff options
author | Tom Tsou <tom.tsou@ettus.com> | 2016-07-01 02:46:04 -0700 |
---|---|---|
committer | Tom Tsou <tom.tsou@ettus.com> | 2016-07-01 03:16:03 -0700 |
commit | e88710881b3287b4f9901df8824836ac01ef3799 (patch) | |
tree | 9a17b5abcb0d00fe95fe8674b5875208f20aa92d /Transceiver52M | |
parent | a84e162672b1ccca94994f132b89fb024bcd15d4 (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>
Diffstat (limited to 'Transceiver52M')
-rw-r--r-- | Transceiver52M/Transceiver.cpp | 14 |
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()) |