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>
This commit is contained in:
Tom Tsou 2016-07-01 02:46:04 -07:00
parent a84e162672
commit e88710881b
1 changed files with 11 additions and 3 deletions

View File

@ -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())