transceiver: Properly handle MAXDLY.

Previously MAXDLY value was applied to Normal Bursts, which was nice
when working with sloppy test equipment like CMD57, but useless for
real world usage. At the same time documentation and de facto usage
of MAXDLY in OsmoBTS and OpenBTS assumed that it actually applies to
Access Bursts (RACH). So this patch changes osmo-rx behavior to apply
MAXDLY to RACH bursts and introduces a new command MAXDLYNB for the
old behavior.
diff --git a/Transceiver52M/Transceiver.cpp b/Transceiver52M/Transceiver.cpp
index a1c6f1b..1f59f78 100644
--- a/Transceiver52M/Transceiver.cpp
+++ b/Transceiver52M/Transceiver.cpp
@@ -119,7 +119,8 @@
     mTransmitLatency(wTransmitLatency), mRadioInterface(wRadioInterface),
     rssiOffset(wRssiOffset),
     mSPSTx(tx_sps), mSPSRx(rx_sps), mChans(chans), mOn(false),
-    mTxFreq(0.0), mRxFreq(0.0), mTSC(0), mMaxExpectedDelay(0), mWriteBurstToDiskMask(0)
+    mTxFreq(0.0), mRxFreq(0.0), mTSC(0), mMaxExpectedDelayAB(0), mMaxExpectedDelayNB(0),
+    mWriteBurstToDiskMask(0)
 {
   txFullScale = mRadioInterface->fullScaleInputValue();
   rxFullScale = mRadioInterface->fullScaleOutputValue();
@@ -535,18 +536,19 @@
   switch (type) {
   case EDGE:
     rc = detectEdgeBurst(burst, mTSC, threshold, mSPSRx,
-                         amp, toa, mMaxExpectedDelay);
+                         amp, toa, mMaxExpectedDelayNB);
     if (rc > 0)
       break;
     else
       type = TSC;
   case TSC:
     rc = analyzeTrafficBurst(burst, mTSC, threshold, mSPSRx,
-                             amp, toa, mMaxExpectedDelay);
+                             amp, toa, mMaxExpectedDelayNB);
     break;
   case RACH:
     threshold = 6.0;
-    rc = detectRACHBurst(burst, threshold, mSPSRx, amp, toa);
+    rc = detectRACHBurst(burst, threshold, mSPSRx, amp, toa,
+                         mMaxExpectedDelayAB);
     break;
   default:
     LOG(ERR) << "Invalid correlation type";
@@ -753,9 +755,16 @@
     //set expected maximum time-of-arrival
     int maxDelay;
     sscanf(buffer,"%3s %s %d",cmdcheck,command,&maxDelay);
-    mMaxExpectedDelay = maxDelay; // 1 GSM symbol is approx. 1 km
+    mMaxExpectedDelayAB = maxDelay; // 1 GSM symbol is approx. 1 km
     sprintf(response,"RSP SETMAXDLY 0 %d",maxDelay);
   }
+  else if (strcmp(command,"SETMAXDLYNB")==0) {
+    //set expected maximum time-of-arrival
+    int maxDelay;
+    sscanf(buffer,"%3s %s %d",cmdcheck,command,&maxDelay);
+    mMaxExpectedDelayNB = maxDelay; // 1 GSM symbol is approx. 1 km
+    sprintf(response,"RSP SETMAXDLYNB 0 %d",maxDelay);
+  }
   else if (strcmp(command,"SETRXGAIN")==0) {
     //set expected maximum time-of-arrival
     int newGain;