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