<p>pespin has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/c/osmo-trx/+/16659">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">Transceiver.cpp: Introduce and use new logging categories<br><br>Take the chance to clean up logging lines in this file:<br>* Use LOGCHAN in more places where chan is useful<br>* Replace inherited (old osmo-trx) categories such as WARNING with<br>osmocom ones.<br><br>Change-Id: Ic8c218f050f35d48046ccf1561fb0bfc505d4f63<br>---<br>M CommonLibs/debug.c<br>M CommonLibs/debug.h<br>M Transceiver52M/Transceiver.cpp<br>3 files changed, 56 insertions(+), 35 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://gerrit.osmocom.org:29418/osmo-trx refs/changes/59/16659/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/CommonLibs/debug.c b/CommonLibs/debug.c</span><br><span>index 09dab2b..cc5be44 100644</span><br><span>--- a/CommonLibs/debug.c</span><br><span>+++ b/CommonLibs/debug.c</span><br><span>@@ -35,12 +35,30 @@</span><br><span>               .color = NULL,</span><br><span>               .enabled = 1, .loglevel = LOGL_NOTICE,</span><br><span>       },</span><br><span style="color: hsl(120, 100%, 40%);">+    [DTRXCLK] = {</span><br><span style="color: hsl(120, 100%, 40%);">+                 .name = "DTRXCLK",</span><br><span style="color: hsl(120, 100%, 40%);">+                  .description = "TRX Master Clock",</span><br><span style="color: hsl(120, 100%, 40%);">+                  .color = NULL,</span><br><span style="color: hsl(120, 100%, 40%);">+                        .enabled = 1, .loglevel = LOGL_NOTICE,</span><br><span style="color: hsl(120, 100%, 40%);">+        },</span><br><span>   [DTRXCTRL] = {</span><br><span>                       .name = "DTRXCTRL",</span><br><span>                        .description = "TRX CTRL interface",</span><br><span>                       .color = "\033[1;33m",</span><br><span>                     .enabled = 1, .loglevel = LOGL_NOTICE,</span><br><span>       },</span><br><span style="color: hsl(120, 100%, 40%);">+    [DTRXDDL] = {</span><br><span style="color: hsl(120, 100%, 40%);">+                 .name = "DTRXDDL",</span><br><span style="color: hsl(120, 100%, 40%);">+                  .description = "TRX Data interface Downlink",</span><br><span style="color: hsl(120, 100%, 40%);">+                       .color = NULL,</span><br><span style="color: hsl(120, 100%, 40%);">+                        .enabled = 1, .loglevel = LOGL_NOTICE,</span><br><span style="color: hsl(120, 100%, 40%);">+        },</span><br><span style="color: hsl(120, 100%, 40%);">+    [DTRXDUL] = {</span><br><span style="color: hsl(120, 100%, 40%);">+                 .name = "DTRXDUL",</span><br><span style="color: hsl(120, 100%, 40%);">+                  .description = "TRX CTRL interface Uplink",</span><br><span style="color: hsl(120, 100%, 40%);">+                 .color = NULL,</span><br><span style="color: hsl(120, 100%, 40%);">+                        .enabled = 1, .loglevel = LOGL_NOTICE,</span><br><span style="color: hsl(120, 100%, 40%);">+        },</span><br><span>   [DDEV] = {</span><br><span>           .name = "DDEV",</span><br><span>            .description = "Device/Driver specific code",</span><br><span>diff --git a/CommonLibs/debug.h b/CommonLibs/debug.h</span><br><span>index ad12bb8..3837329 100644</span><br><span>--- a/CommonLibs/debug.h</span><br><span>+++ b/CommonLibs/debug.h</span><br><span>@@ -10,7 +10,10 @@</span><br><span> /* Debug Areas of the code */</span><br><span> enum {</span><br><span>         DMAIN,</span><br><span style="color: hsl(120, 100%, 40%);">+        DTRXCLK,</span><br><span>     DTRXCTRL,</span><br><span style="color: hsl(120, 100%, 40%);">+     DTRXDDL,</span><br><span style="color: hsl(120, 100%, 40%);">+      DTRXDUL,</span><br><span>     DDEV,</span><br><span>        DLMS,</span><br><span> };</span><br><span>diff --git a/Transceiver52M/Transceiver.cpp b/Transceiver52M/Transceiver.cpp</span><br><span>index 27049b9..beed033 100644</span><br><span>--- a/Transceiver52M/Transceiver.cpp</span><br><span>+++ b/Transceiver52M/Transceiver.cpp</span><br><span>@@ -180,12 +180,12 @@</span><br><span>   int d_srcport, d_dstport, c_srcport, c_dstport;</span><br><span> </span><br><span>   if (!mChans) {</span><br><span style="color: hsl(0, 100%, 40%);">-    LOG(ALERT) << "No channels assigned";</span><br><span style="color: hsl(120, 100%, 40%);">+    LOG(FATAL) << "No channels assigned";</span><br><span>     return false;</span><br><span>   }</span><br><span> </span><br><span>   if (!sigProcLibSetup()) {</span><br><span style="color: hsl(0, 100%, 40%);">-    LOG(ALERT) << "Failed to initialize signal processing library";</span><br><span style="color: hsl(120, 100%, 40%);">+    LOG(FATAL) << "Failed to initialize signal processing library";</span><br><span>     return false;</span><br><span>   }</span><br><span> </span><br><span>@@ -285,7 +285,7 @@</span><br><span>   mLatencyUpdateTime = time;</span><br><span> </span><br><span>   if (!mRadioInterface->start()) {</span><br><span style="color: hsl(0, 100%, 40%);">-    LOG(ALERT) << "Device failed to start";</span><br><span style="color: hsl(120, 100%, 40%);">+    LOG(FATAL) << "Device failed to start";</span><br><span>     return false;</span><br><span>   }</span><br><span> </span><br><span>@@ -371,12 +371,12 @@</span><br><span>   radioVector *radio_burst;</span><br><span> </span><br><span>   if (chan >= mTxPriorityQueues.size()) {</span><br><span style="color: hsl(0, 100%, 40%);">-    LOG(ALERT) << "Invalid channel " << chan;</span><br><span style="color: hsl(120, 100%, 40%);">+    LOGCHAN(chan, DTRXDDL, FATAL) << "Invalid channel";</span><br><span>     return;</span><br><span>   }</span><br><span> </span><br><span>   if (wTime.TN() > 7) {</span><br><span style="color: hsl(0, 100%, 40%);">-    LOG(ALERT) << "Received burst with invalid slot " << wTime.TN();</span><br><span style="color: hsl(120, 100%, 40%);">+    LOGCHAN(chan, DTRXDDL, FATAL) << "Received burst with invalid slot " << wTime.TN();</span><br><span>     return;</span><br><span>   }</span><br><span> </span><br><span>@@ -419,7 +419,7 @@</span><br><span>     state = &mStates[i];</span><br><span> </span><br><span>     while ((burst = mTxPriorityQueues[i].getStaleBurst(nowTime))) {</span><br><span style="color: hsl(0, 100%, 40%);">-      LOGCHAN(i, DMAIN, NOTICE) << "dumping STALE burst in TRX->SDR interface ("</span><br><span style="color: hsl(120, 100%, 40%);">+      LOGCHAN(i, DTRXDDL, NOTICE) << "dumping STALE burst in TRX->SDR interface ("</span><br><span>                   << burst->getTime() <<" vs " << nowTime << "), retrans=" << state->mRetrans;</span><br><span>       if (state->mRetrans)</span><br><span>         updateFillerTable(i, burst);</span><br><span>@@ -606,7 +606,7 @@</span><br><span>   /* Blocking FIFO read */</span><br><span>   radioVector *radio_burst = mReceiveFIFO[chan]->read();</span><br><span>   if (!radio_burst) {</span><br><span style="color: hsl(0, 100%, 40%);">-    LOGCHAN(chan, DMAIN, ERROR) << "ReceiveFIFO->read() returned no burst";</span><br><span style="color: hsl(120, 100%, 40%);">+    LOGCHAN(chan, DTRXDUL, ERROR) << "ReceiveFIFO->read() returned no burst";</span><br><span>     return -EIO;</span><br><span>   }</span><br><span> </span><br><span>@@ -651,7 +651,7 @@</span><br><span>   }</span><br><span> </span><br><span>   if (max_i < 0) {</span><br><span style="color: hsl(0, 100%, 40%);">-    LOG(ALERT) << "Received empty burst";</span><br><span style="color: hsl(120, 100%, 40%);">+    LOGCHAN(chan, DTRXDUL, FATAL) << "Received empty burst";</span><br><span>     goto ret_idle;</span><br><span>   }</span><br><span> </span><br><span>@@ -678,9 +678,9 @@</span><br><span>   rc = detectAnyBurst(*burst, mTSC, BURST_THRESH, mSPSRx, type, max_toa, &ebp);</span><br><span>   if (rc <= 0) {</span><br><span>     if (rc == -SIGERR_CLIP)</span><br><span style="color: hsl(0, 100%, 40%);">-      LOG(WARNING) << "Clipping detected on received RACH or Normal Burst";</span><br><span style="color: hsl(120, 100%, 40%);">+      LOGCHAN(chan, DTRXDUL, NOTICE) << "Clipping detected on received RACH or Normal Burst";</span><br><span>     else if (rc != SIGERR_NONE)</span><br><span style="color: hsl(0, 100%, 40%);">-      LOG(WARNING) << "Unhandled RACH or Normal Burst detection error";</span><br><span style="color: hsl(120, 100%, 40%);">+      LOGCHAN(chan, DTRXDUL, NOTICE) << "Unhandled RACH or Normal Burst detection error";</span><br><span>     goto ret_idle;</span><br><span>   }</span><br><span> </span><br><span>@@ -760,7 +760,7 @@</span><br><span>   /* Attempt to read from control socket */</span><br><span>   msgLen = read(mCtrlSockets[chan], buffer, MAX_PACKET_LENGTH);</span><br><span>   if (msgLen <= 0) {</span><br><span style="color: hsl(0, 100%, 40%);">-    LOGCHAN(chan, DTRXCTRL, WARNING) << "mCtrlSockets read(" << mCtrlSockets[chan] << ") failed: " << msgLen;</span><br><span style="color: hsl(120, 100%, 40%);">+    LOGCHAN(chan, DTRXCTRL, NOTICE) << "mCtrlSockets read(" << mCtrlSockets[chan] << ") failed: " << msgLen;</span><br><span>     return false;</span><br><span>   }</span><br><span> </span><br><span>@@ -769,7 +769,7 @@</span><br><span> </span><br><span>   /* Verify a command signature */</span><br><span>   if (strncmp(buffer, "CMD ", 4)) {</span><br><span style="color: hsl(0, 100%, 40%);">-    LOGC(DTRXCTRL, WARNING) << "bogus message on control interface";</span><br><span style="color: hsl(120, 100%, 40%);">+    LOGCHAN(chan, DTRXCTRL, NOTICE) << "bogus message on control interface";</span><br><span>     return false;</span><br><span>   }</span><br><span> </span><br><span>@@ -854,7 +854,7 @@</span><br><span>     sscanf(params, "%d", &freqKhz);</span><br><span>     mRxFreq = freqKhz * 1e3;</span><br><span>     if (!mRadioInterface->tuneRx(mRxFreq, chan)) {</span><br><span style="color: hsl(0, 100%, 40%);">-       LOGC(DTRXCTRL, ALERT) << "RX failed to tune";</span><br><span style="color: hsl(120, 100%, 40%);">+       LOGCHAN(chan, DTRXCTRL, FATAL) << "RX failed to tune";</span><br><span>        sprintf(response,"RSP RXTUNE 1 %d",freqKhz);</span><br><span>     }</span><br><span>     else</span><br><span>@@ -865,7 +865,7 @@</span><br><span>     sscanf(params, "%d", &freqKhz);</span><br><span>     mTxFreq = freqKhz * 1e3;</span><br><span>     if (!mRadioInterface->tuneTx(mTxFreq, chan)) {</span><br><span style="color: hsl(0, 100%, 40%);">-       LOGC(DTRXCTRL, ALERT) << "TX failed to tune";</span><br><span style="color: hsl(120, 100%, 40%);">+       LOGCHAN(chan, DTRXCTRL, FATAL) << "TX failed to tune";</span><br><span>        sprintf(response,"RSP TXTUNE 1 %d",freqKhz);</span><br><span>     }</span><br><span>     else</span><br><span>@@ -887,7 +887,7 @@</span><br><span>     int  timeslot;</span><br><span>     sscanf(params, "%d %d", &timeslot, &corrCode);</span><br><span>     if ((timeslot < 0) || (timeslot > 7)) {</span><br><span style="color: hsl(0, 100%, 40%);">-      LOGC(DTRXCTRL, WARNING) << "bogus message on control interface";</span><br><span style="color: hsl(120, 100%, 40%);">+      LOGCHAN(chan, DTRXCTRL, NOTICE) << "bogus message on control interface";</span><br><span>       sprintf(response,"RSP SETSLOT 1 %d %d",timeslot,corrCode);</span><br><span>       return true;</span><br><span>     }</span><br><span>@@ -916,14 +916,14 @@</span><br><span>     mWriteBurstToDiskMask = mask;</span><br><span>     sprintf(response,"RSP _SETBURSTTODISKMASK 0 %d",mask);</span><br><span>   } else {</span><br><span style="color: hsl(0, 100%, 40%);">-    LOGC(DTRXCTRL, WARNING) << "bogus command " << command << " on control interface.";</span><br><span style="color: hsl(120, 100%, 40%);">+    LOGCHAN(chan, DTRXCTRL, NOTICE) << "bogus command " << command << " on control interface.";</span><br><span>     sprintf(response,"RSP ERR 1");</span><br><span>   }</span><br><span> </span><br><span>   LOGCHAN(chan, DTRXCTRL, INFO) << "response is '" << response << "'";</span><br><span>   msgLen = write(mCtrlSockets[chan], response, strlen(response) + 1);</span><br><span>   if (msgLen <= 0) {</span><br><span style="color: hsl(0, 100%, 40%);">-    LOGCHAN(chan, DTRXCTRL, WARNING) << "mCtrlSockets write(" << mCtrlSockets[chan] << ") failed: " << msgLen;</span><br><span style="color: hsl(120, 100%, 40%);">+    LOGCHAN(chan, DTRXCTRL, NOTICE) << "mCtrlSockets write(" << mCtrlSockets[chan] << ") failed: " << msgLen;</span><br><span>     return false;</span><br><span>   }</span><br><span>   return true;</span><br><span>@@ -940,7 +940,7 @@</span><br><span>   // check data socket</span><br><span>   msgLen = read(mDataSockets[chan], buffer, sizeof(buffer));</span><br><span>   if (msgLen <= 0) {</span><br><span style="color: hsl(0, 100%, 40%);">-    LOGCHAN(chan, DTRXCTRL, WARNING) << "mDataSockets read(" << mCtrlSockets[chan] << ") failed: " << msgLen;</span><br><span style="color: hsl(120, 100%, 40%);">+    LOGCHAN(chan, DTRXDDL, NOTICE) << "mDataSockets read(" << mCtrlSockets[chan] << ") failed: " << msgLen;</span><br><span>     return false;</span><br><span>   }</span><br><span> </span><br><span>@@ -950,13 +950,13 @@</span><br><span>       break;</span><br><span>     case sizeof(*dl) + EDGE_BURST_NBITS: /* EDGE burst */</span><br><span>       if (mSPSTx != 4) {</span><br><span style="color: hsl(0, 100%, 40%);">-        LOG(ERR) << "EDGE burst received but SPS is set to " << mSPSTx;</span><br><span style="color: hsl(120, 100%, 40%);">+        LOGCHAN(chan, DTRXDDL, ERROR) << "EDGE burst received but SPS is set to " << mSPSTx;</span><br><span>         return false;</span><br><span>       }</span><br><span>       burstLen = EDGE_BURST_NBITS;</span><br><span>       break;</span><br><span>     default:</span><br><span style="color: hsl(0, 100%, 40%);">-      LOG(ERR) << "badly formatted packet on GSM->TRX interface (len="<< msgLen << ")";</span><br><span style="color: hsl(120, 100%, 40%);">+      LOGCHAN(chan, DTRXDDL, ERROR) << "badly formatted packet on GSM->TRX interface (len="<< msgLen << ")";</span><br><span>       return false;</span><br><span>   }</span><br><span> </span><br><span>@@ -972,13 +972,12 @@</span><br><span>   case 1:</span><br><span>     break;</span><br><span>   default:</span><br><span style="color: hsl(0, 100%, 40%);">-    LOG(ERR) << "Rx TRXD message with unknown header version " << unsigned(dl->common.version);</span><br><span style="color: hsl(120, 100%, 40%);">+    LOGCHAN(chan, DTRXDDL, ERROR) << "Rx TRXD message with unknown header version " << unsigned(dl->common.version);</span><br><span>     return false;</span><br><span>   }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-  LOG(DEBUG) << "Rx TRXD message (hdr_ver=" << unsigned(dl->common.version) << "): "</span><br><span style="color: hsl(0, 100%, 40%);">-             << "fn=" << fn << ", tn=" << unsigned(dl->common.tn) << ", "</span><br><span style="color: hsl(0, 100%, 40%);">-             << "burst_len=" << burstLen;</span><br><span style="color: hsl(120, 100%, 40%);">+  LOGCHAN(chan, DTRXDDL, DEBUG) << "Rx TRXD message (hdr_ver=" << unsigned(dl->common.version)</span><br><span style="color: hsl(120, 100%, 40%);">+    << "): fn=" << fn << ", tn=" << unsigned(dl->common.tn) << ", burst_len=" << burstLen;</span><br><span> </span><br><span>   BitVector newBurst(burstLen);</span><br><span>   BitVector::iterator itr = newBurst.begin();</span><br><span>@@ -1020,7 +1019,7 @@</span><br><span>     else os << "-";</span><br><span>   }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-  LOGCHAN(chan, DMAIN, DEBUG) << std::fixed << std::right</span><br><span style="color: hsl(120, 100%, 40%);">+  LOGCHAN(chan, DTRXDUL, DEBUG) << std::fixed << std::right</span><br><span>     << " time: "   << unsigned(bi->tn) << ":" << bi->fn</span><br><span>     << " RSSI: "   << std::setw(5) << std::setprecision(1) << (bi->rssi - rssiOffset)</span><br><span>                    << "dBFS/" << std::setw(6) << -bi->rssi << "dBm"</span><br><span>@@ -1038,7 +1037,7 @@</span><br><span> </span><br><span>   if ((rc = pullRadioVector(chan, &bi)) < 0) {</span><br><span>     if (rc == -ENOENT) { /* timeslot off, continue processing */</span><br><span style="color: hsl(0, 100%, 40%);">-      LOGCHAN(chan, DMAIN, DEBUG) << unsigned(bi.tn) << ":" << bi.fn << " timeslot is off";</span><br><span style="color: hsl(120, 100%, 40%);">+      LOGCHAN(chan, DTRXDUL, DEBUG) << unsigned(bi.tn) << ":" << bi.fn << " timeslot is off";</span><br><span>       return true;</span><br><span>     }</span><br><span>     return false; /* other errors: we want to stop the process */</span><br><span>@@ -1075,7 +1074,7 @@</span><br><span> </span><br><span>   if (mOn) {</span><br><span>     //radioClock->wait(); // wait until clock updates</span><br><span style="color: hsl(0, 100%, 40%);">-    LOG(DEBUG) << "radio clock " << radioClock->get();</span><br><span style="color: hsl(120, 100%, 40%);">+    LOGC(DTRXDDL, DEBUG) << "radio clock " << radioClock->get();</span><br><span>     while (radioClock->get() + mTransmitLatency > mTransmitDeadlineClock) {</span><br><span>       // if underrun, then we're not providing bursts to radio/USRP fast</span><br><span>       //   enough.  Need to increase latency by one GSM frame.</span><br><span>@@ -1084,8 +1083,9 @@</span><br><span>           // only update latency at the defined frame interval</span><br><span>           if (radioClock->get() > mLatencyUpdateTime + GSM::Time(USB_LATENCY_INTRVL)) {</span><br><span>             mTransmitLatency = mTransmitLatency + GSM::Time(1,0);</span><br><span style="color: hsl(0, 100%, 40%);">-            LOG(INFO) << "new latency: " << mTransmitLatency << " (underrun "</span><br><span style="color: hsl(0, 100%, 40%);">-                      << radioClock->get() << " vs " << mLatencyUpdateTime + GSM::Time(USB_LATENCY_INTRVL) << ")";</span><br><span style="color: hsl(120, 100%, 40%);">+            LOGC(DTRXDDL, INFO) << "new latency: " << mTransmitLatency << " (underrun "</span><br><span style="color: hsl(120, 100%, 40%);">+                                << radioClock->get() << " vs "</span><br><span style="color: hsl(120, 100%, 40%);">+                                << mLatencyUpdateTime + GSM::Time(USB_LATENCY_INTRVL) << ")";</span><br><span>             mLatencyUpdateTime = radioClock->get();</span><br><span>           }</span><br><span>         }</span><br><span>@@ -1095,7 +1095,7 @@</span><br><span>           if (mTransmitLatency > mRadioInterface->minLatency()) {</span><br><span>               if (radioClock->get() > mLatencyUpdateTime + GSM::Time(216,0)) {</span><br><span>               mTransmitLatency.decTN();</span><br><span style="color: hsl(0, 100%, 40%);">-              LOG(INFO) << "reduced latency: " << mTransmitLatency;</span><br><span style="color: hsl(120, 100%, 40%);">+              LOGC(DTRXDDL, INFO) << "reduced latency: " << mTransmitLatency;</span><br><span>               mLatencyUpdateTime = radioClock->get();</span><br><span>             }</span><br><span>           }</span><br><span>@@ -1119,11 +1119,11 @@</span><br><span>   // FIXME -- This should be adaptive.</span><br><span>   sprintf(command,"IND CLOCK %llu",(unsigned long long) (mTransmitDeadlineClock.FN()+2));</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-  LOG(INFO) << "ClockInterface: sending " << command;</span><br><span style="color: hsl(120, 100%, 40%);">+  LOGC(DTRXCLK, INFO) << "sending " << command;</span><br><span> </span><br><span>   msgLen = write(mClockSocket, command, strlen(command) + 1);</span><br><span>   if (msgLen <= 0) {</span><br><span style="color: hsl(0, 100%, 40%);">-    LOG(ERROR) << "mClockSocket write(" << mClockSocket << ") failed: " << msgLen;</span><br><span style="color: hsl(120, 100%, 40%);">+    LOGC(DTRXCLK, ERROR) << "mClockSocket write(" << mClockSocket << ") failed: " << msgLen;</span><br><span>     return false;</span><br><span>   }</span><br><span> </span><br><span>@@ -1144,7 +1144,7 @@</span><br><span> </span><br><span>   while (1) {</span><br><span>     if (!trx->driveReceiveFIFO(num)) {</span><br><span style="color: hsl(0, 100%, 40%);">-      LOGCHAN(num, DMAIN, FATAL) << "Something went wrong in thread " << thread_name << ", requesting stop";</span><br><span style="color: hsl(120, 100%, 40%);">+      LOGCHAN(num, DTRXDUL, FATAL) << "Something went wrong in thread " << thread_name << ", requesting stop";</span><br><span>       osmo_signal_dispatch(SS_MAIN, S_MAIN_STOP_REQUIRED, NULL);</span><br><span>       break;</span><br><span>     }</span><br><span>@@ -1159,7 +1159,7 @@</span><br><span> </span><br><span>   while (1) {</span><br><span>     if (!transceiver->driveReceiveRadio()) {</span><br><span style="color: hsl(0, 100%, 40%);">-      LOG(FATAL) << "Something went wrong in thread RxLower, requesting stop";</span><br><span style="color: hsl(120, 100%, 40%);">+      LOGC(DTRXDUL, FATAL) << "Something went wrong in thread RxLower, requesting stop";</span><br><span>       osmo_signal_dispatch(SS_MAIN, S_MAIN_STOP_REQUIRED, NULL);</span><br><span>       break;</span><br><span>     }</span><br><span>@@ -1214,7 +1214,7 @@</span><br><span> </span><br><span>   while (1) {</span><br><span>     if (!trx->driveTxPriorityQueue(num)) {</span><br><span style="color: hsl(0, 100%, 40%);">-      LOGCHAN(num, DMAIN, FATAL) << "Something went wrong in thread " << thread_name << ", requesting stop";</span><br><span style="color: hsl(120, 100%, 40%);">+      LOGCHAN(num, DTRXDDL, FATAL) << "Something went wrong in thread " << thread_name << ", requesting stop";</span><br><span>       osmo_signal_dispatch(SS_MAIN, S_MAIN_STOP_REQUIRED, NULL);</span><br><span>       break;</span><br><span>     }</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-trx/+/16659">change 16659</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://gerrit.osmocom.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://gerrit.osmocom.org/c/osmo-trx/+/16659"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: osmo-trx </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-Change-Id: Ic8c218f050f35d48046ccf1561fb0bfc505d4f63 </div>
<div style="display:none"> Gerrit-Change-Number: 16659 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: pespin <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>