Transceiver: Support SETFORMAT command

Only old v0 is supported so far.

Related: OS#4006
Change-Id: If9fc22f9987238a5ff870df7718de4efc9e04289
diff --git a/Transceiver52M/Transceiver.cpp b/Transceiver52M/Transceiver.cpp
index 6bbf3a3..080afd1 100644
--- a/Transceiver52M/Transceiver.cpp
+++ b/Transceiver52M/Transceiver.cpp
@@ -868,6 +868,20 @@
     mStates[chan].chanType[timeslot] = (ChannelCombination) corrCode;
     setModulus(timeslot, chan);
     sprintf(response,"RSP SETSLOT 0 %d %d",timeslot,corrCode);
+  } else if (match_cmd(command, "SETFORMAT", &params)) {
+    // set TRXD protocol version
+    unsigned version_recv;
+    sscanf(params, "%u", &version_recv);
+    LOGC(DTRXCTRL, INFO) << "BTS requests TRXD version switch: " << version_recv;
+    if (version_recv > TRX_DATA_FORMAT_VER) {
+      LOGC(DTRXCTRL, INFO) << "rejecting TRXD version " << version_recv
+                           << "in favor of " <<  TRX_DATA_FORMAT_VER;
+      sprintf(response, "RSP SETFORMAT %u %u", TRX_DATA_FORMAT_VER, version_recv);
+    } else {
+      LOGC(DTRXCTRL, NOTICE) << "switching to TRXD version " << version_recv;
+      mVersionTRXD = version_recv;
+      sprintf(response, "RSP SETFORMAT %u %u", version_recv, version_recv);
+    }
   } else if (match_cmd(command, "_SETBURSTTODISKMASK", &params)) {
     // debug command! may change or disapear without notice
     // set a mask which bursts to dump to disk