<p>pespin has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/c/osmo-trx/+/14629">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">Introduce structs to encode TRXD packets<br><br>This will ease adding new protocol versions in the future.<br><br>Related: OS#4006<br>Change-Id: I67ffede171eddde436f9057191ed76015a8ea6eb<br>---<br>M Transceiver52M/Makefile.am<br>M Transceiver52M/Transceiver.cpp<br>A Transceiver52M/proto_trxd.h<br>3 files changed, 42 insertions(+), 10 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/29/14629/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/Transceiver52M/Makefile.am b/Transceiver52M/Makefile.am</span><br><span>index 89ab796..4adf474 100644</span><br><span>--- a/Transceiver52M/Makefile.am</span><br><span>+++ b/Transceiver52M/Makefile.am</span><br><span>@@ -25,6 +25,7 @@</span><br><span> </span><br><span> AM_CPPFLAGS = -Wall $(STD_DEFINES_AND_INCLUDES) -I${srcdir}/arch/common -I${srcdir}/device/common</span><br><span> AM_CXXFLAGS = -lpthread $(LIBOSMOCORE_CFLAGS) $(LIBOSMOCTRL_CFLAGS) $(LIBOSMOVTY_CFLAGS)</span><br><span style="color: hsl(120, 100%, 40%);">+AM_CFLAGS = -lpthread $(LIBOSMOCORE_CFLAGS) $(LIBOSMOCTRL_CFLAGS) $(LIBOSMOVTY_CFLAGS)</span><br><span> </span><br><span> rev2dir = $(datadir)/usrp/rev2</span><br><span> rev4dir = $(datadir)/usrp/rev4</span><br><span>@@ -66,7 +67,8 @@</span><br><span>         Resampler.h \</span><br><span>        ChannelizerBase.h \</span><br><span>  Channelizer.h \</span><br><span style="color: hsl(0, 100%, 40%);">- Synthesis.h</span><br><span style="color: hsl(120, 100%, 40%);">+   Synthesis.h \</span><br><span style="color: hsl(120, 100%, 40%);">+ proto_trxd.h</span><br><span> </span><br><span> COMMON_LDADD = \</span><br><span>         libtransceiver_common.la \</span><br><span>diff --git a/Transceiver52M/Transceiver.cpp b/Transceiver52M/Transceiver.cpp</span><br><span>index 0aa4ff5..de4b622 100644</span><br><span>--- a/Transceiver52M/Transceiver.cpp</span><br><span>+++ b/Transceiver52M/Transceiver.cpp</span><br><span>@@ -29,6 +29,9 @@</span><br><span> </span><br><span> extern "C" {</span><br><span> #include "osmo_signal.h"</span><br><span style="color: hsl(120, 100%, 40%);">+#include "proto_trxd.h"</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+#include <osmocom/core/bits.h></span><br><span> }</span><br><span> </span><br><span> #ifdef HAVE_CONFIG_H</span><br><span>@@ -951,21 +954,20 @@</span><br><span>   TOAint = (int) (TOA * 256.0 + 0.5); // round to closest integer</span><br><span> </span><br><span>   char burstString[nbits + 10];</span><br><span style="color: hsl(0, 100%, 40%);">-  burstString[0] = burstTime.TN();</span><br><span style="color: hsl(0, 100%, 40%);">-  for (int i = 0; i < 4; i++)</span><br><span style="color: hsl(0, 100%, 40%);">-    burstString[1+i] = (burstTime.FN() >> ((3-i)*8)) & 0x0ff;</span><br><span style="color: hsl(0, 100%, 40%);">-  burstString[5] = (int)dBm;</span><br><span style="color: hsl(0, 100%, 40%);">-  burstString[6] = (TOAint >> 8) & 0x0ff;</span><br><span style="color: hsl(0, 100%, 40%);">-  burstString[7] = TOAint & 0x0ff;</span><br><span style="color: hsl(120, 100%, 40%);">+  struct trxd_hdr_v0* pkt = (struct trxd_hdr_v0*)burstString;</span><br><span style="color: hsl(120, 100%, 40%);">+  pkt->common.tn = burstTime.TN();</span><br><span style="color: hsl(120, 100%, 40%);">+  osmo_store32be(burstTime.FN(), &pkt->common.fn);</span><br><span style="color: hsl(120, 100%, 40%);">+  pkt->v0.rssi = dBm;</span><br><span style="color: hsl(120, 100%, 40%);">+  osmo_store16be(TOAint, &pkt->v0.toa);</span><br><span>   SoftVector::iterator burstItr = rxBurst->begin();</span><br><span> </span><br><span>   for (unsigned i = 0; i < nbits; i++)</span><br><span style="color: hsl(0, 100%, 40%);">-    burstString[8 + i] = (char) round((*burstItr++) * 255.0);</span><br><span style="color: hsl(120, 100%, 40%);">+    pkt->soft_bits[i] = (char) round((*burstItr++) * 255.0);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-  burstString[nbits + 9] = '\0';</span><br><span style="color: hsl(120, 100%, 40%);">+  pkt->soft_bits[nbits] = '\0';</span><br><span>   delete rxBurst;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-  mDataSockets[chan]->write(burstString, nbits + 10);</span><br><span style="color: hsl(120, 100%, 40%);">+  mDataSockets[chan]->write(burstString, sizeof(struct trxd_hdr_v0) + nbits + 1);</span><br><span> }</span><br><span> </span><br><span> void Transceiver::driveTxFIFO()</span><br><span>diff --git a/Transceiver52M/proto_trxd.h b/Transceiver52M/proto_trxd.h</span><br><span>new file mode 100644</span><br><span>index 0000000..9da18db</span><br><span>--- /dev/null</span><br><span>+++ b/Transceiver52M/proto_trxd.h</span><br><span>@@ -0,0 +1,28 @@</span><br><span style="color: hsl(120, 100%, 40%);">+#pragma once</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+#include <stdint.h></span><br><span style="color: hsl(120, 100%, 40%);">+#include <osmocom/core/endian.h></span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+struct trxd_hdr_common {</span><br><span style="color: hsl(120, 100%, 40%);">+#if OSMO_IS_LITTLE_ENDIAN</span><br><span style="color: hsl(120, 100%, 40%);">+        uint8_t tn:3,</span><br><span style="color: hsl(120, 100%, 40%);">+                reserved:1,</span><br><span style="color: hsl(120, 100%, 40%);">+                version:4;</span><br><span style="color: hsl(120, 100%, 40%);">+#elif OSMO_IS_BIG_ENDIAN</span><br><span style="color: hsl(120, 100%, 40%);">+        uint8_t version:4,</span><br><span style="color: hsl(120, 100%, 40%);">+                reserved:1,</span><br><span style="color: hsl(120, 100%, 40%);">+                tn:3;</span><br><span style="color: hsl(120, 100%, 40%);">+#endif</span><br><span style="color: hsl(120, 100%, 40%);">+        uint32_t fn; /* big endian */</span><br><span style="color: hsl(120, 100%, 40%);">+} __attribute__ ((packed));</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+struct trxd_hdr_v0_specific {</span><br><span style="color: hsl(120, 100%, 40%);">+        uint8_t rssi;</span><br><span style="color: hsl(120, 100%, 40%);">+        uint16_t toa; /* big endian */</span><br><span style="color: hsl(120, 100%, 40%);">+} __attribute__ ((packed));</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+struct trxd_hdr_v0 {</span><br><span style="color: hsl(120, 100%, 40%);">+        struct trxd_hdr_common common;</span><br><span style="color: hsl(120, 100%, 40%);">+        struct trxd_hdr_v0_specific v0;</span><br><span style="color: hsl(120, 100%, 40%);">+        uint8_t soft_bits[0];</span><br><span style="color: hsl(120, 100%, 40%);">+} __attribute__ ((packed));</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-trx/+/14629">change 14629</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/+/14629"/><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: I67ffede171eddde436f9057191ed76015a8ea6eb </div>
<div style="display:none"> Gerrit-Change-Number: 14629 </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>