<p>Max <strong>merged</strong> this change.</p><p><a href="https://gerrit.osmocom.org/13163">View Change</a></p><div style="white-space:pre-wrap">Approvals:
  osmith: Looks good to me, but someone else must approve
  Harald Welte: Looks good to me, approved
  Jenkins Builder: Verified

</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">MCS: move Mode enum outside of class definition<br><br>Move Mode (EDGE/GPRS) definition and related functions outside of<br>GprsCodingScheme class. This allows us to use standard libosmocore<br>value_string functions.<br><br>Change-Id: I3baaac7f1ca3f5b88917a23c1679d63847455f47<br>---<br>M src/coding_scheme.c<br>M src/coding_scheme.h<br>M src/gprs_coding_scheme.cpp<br>M src/gprs_coding_scheme.h<br>M src/gprs_ms.cpp<br>M src/gprs_ms.h<br>M src/pcu_vty_functions.cpp<br>M src/tbf.cpp<br>M tests/edge/EdgeTest.cpp<br>9 files changed, 50 insertions(+), 51 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/src/coding_scheme.c b/src/coding_scheme.c</span><br><span>index 93278e7..135ddd2 100644</span><br><span>--- a/src/coding_scheme.c</span><br><span>+++ b/src/coding_scheme.c</span><br><span>@@ -85,3 +85,14 @@</span><br><span>         OSMO_ASSERT(ht < NUM_HEADER_TYPES);</span><br><span>       return hdr_type_info[ht].data_block_header_bits;</span><br><span> }</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+const struct value_string mode_names[] = {</span><br><span style="color: hsl(120, 100%, 40%);">+   { GPRS, "GPRS" },</span><br><span style="color: hsl(120, 100%, 40%);">+   { EGPRS_GMSK, "EGPRS_GMSK-only"},</span><br><span style="color: hsl(120, 100%, 40%);">+   { EGPRS, "EGPRS"},</span><br><span style="color: hsl(120, 100%, 40%);">+  { 0, NULL }</span><br><span style="color: hsl(120, 100%, 40%);">+};</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+const char *mode_name(enum mcs_kind val) {</span><br><span style="color: hsl(120, 100%, 40%);">+ return get_value_string(mode_names, val);</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span>diff --git a/src/coding_scheme.h b/src/coding_scheme.h</span><br><span>index 1e8ca78..f69a76e 100644</span><br><span>--- a/src/coding_scheme.h</span><br><span>+++ b/src/coding_scheme.h</span><br><span>@@ -49,3 +49,11 @@</span><br><span> uint8_t num_data_header_bits_UL(enum HeaderType ht);</span><br><span> uint8_t num_data_header_bits_DL(enum HeaderType ht);</span><br><span> uint8_t num_data_block_header_bits(enum HeaderType ht);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+enum mcs_kind {</span><br><span style="color: hsl(120, 100%, 40%);">+      GPRS,</span><br><span style="color: hsl(120, 100%, 40%);">+ EGPRS_GMSK,</span><br><span style="color: hsl(120, 100%, 40%);">+   EGPRS,</span><br><span style="color: hsl(120, 100%, 40%);">+};</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+const char *mode_name(enum mcs_kind val);</span><br><span>diff --git a/src/gprs_coding_scheme.cpp b/src/gprs_coding_scheme.cpp</span><br><span>index 53b3b07..1a89b77 100644</span><br><span>--- a/src/gprs_coding_scheme.cpp</span><br><span>+++ b/src/gprs_coding_scheme.cpp</span><br><span>@@ -198,7 +198,7 @@</span><br><span>   return mcs_info[m_scheme].data_hdr;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-void GprsCodingScheme::inc(Mode mode)</span><br><span style="color: hsl(120, 100%, 40%);">+void GprsCodingScheme::inc(enum mcs_kind mode)</span><br><span> {</span><br><span>       if (!isCompatible(mode))</span><br><span>             /* This should not happen. TODO: Use assert? */</span><br><span>@@ -212,7 +212,7 @@</span><br><span>        m_scheme = new_cs;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-void GprsCodingScheme::dec(Mode mode)</span><br><span style="color: hsl(120, 100%, 40%);">+void GprsCodingScheme::dec(enum mcs_kind mode)</span><br><span> {</span><br><span>        if (!isCompatible(mode))</span><br><span>             /* This should not happen. TODO: Use assert? */</span><br><span>@@ -254,16 +254,6 @@</span><br><span>       m_scheme = CodingScheme(m_scheme - 1);</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-const char *GprsCodingScheme::modeName(Mode mode)</span><br><span style="color: hsl(0, 100%, 40%);">-{</span><br><span style="color: hsl(0, 100%, 40%);">-       switch (mode) {</span><br><span style="color: hsl(0, 100%, 40%);">- case GPRS:       return "GPRS";</span><br><span style="color: hsl(0, 100%, 40%);">-       case EGPRS_GMSK: return "EGPRS_GMSK-only";</span><br><span style="color: hsl(0, 100%, 40%);">-    case EGPRS:      return "EGPRS";</span><br><span style="color: hsl(0, 100%, 40%);">-      default:         return "???";</span><br><span style="color: hsl(0, 100%, 40%);">-        }</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span> bool GprsCodingScheme::isFamilyCompatible(GprsCodingScheme o) const</span><br><span> {</span><br><span>       if (*this == o)</span><br><span>diff --git a/src/gprs_coding_scheme.h b/src/gprs_coding_scheme.h</span><br><span>index 055c166..6f965d6 100644</span><br><span>--- a/src/gprs_coding_scheme.h</span><br><span>+++ b/src/gprs_coding_scheme.h</span><br><span>@@ -34,12 +34,6 @@</span><br><span> #define EGPRS_ARQ1            0x0</span><br><span> #define EGPRS_ARQ2            0x1</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- enum Mode {</span><br><span style="color: hsl(0, 100%, 40%);">-             GPRS,</span><br><span style="color: hsl(0, 100%, 40%);">-           EGPRS_GMSK,</span><br><span style="color: hsl(0, 100%, 40%);">-             EGPRS,</span><br><span style="color: hsl(0, 100%, 40%);">-  };</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span>   GprsCodingScheme(CodingScheme s = UNKNOWN);</span><br><span> </span><br><span>      operator bool() const {return m_scheme != UNKNOWN;}</span><br><span>@@ -54,12 +48,12 @@</span><br><span>    bool isGprs()   const {return CS1 <= m_scheme && m_scheme <= CS4;}</span><br><span>     bool isEgprs()  const {return m_scheme >= MCS1;}</span><br><span>  bool isEgprsGmsk()  const {return isEgprs() && m_scheme <= MCS4;}</span><br><span style="color: hsl(0, 100%, 40%);">-    bool isCompatible(Mode mode) const;</span><br><span style="color: hsl(120, 100%, 40%);">+   bool isCompatible(enum mcs_kind mode) const;</span><br><span>         bool isCompatible(GprsCodingScheme o) const;</span><br><span>         bool isFamilyCompatible(GprsCodingScheme o) const;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-  void inc(Mode mode);</span><br><span style="color: hsl(0, 100%, 40%);">-    void dec(Mode mode);</span><br><span style="color: hsl(120, 100%, 40%);">+  void inc(enum mcs_kind mode);</span><br><span style="color: hsl(120, 100%, 40%);">+ void dec(enum mcs_kind mode);</span><br><span>        void inc();</span><br><span>  void dec();</span><br><span>  void decToSingleBlock(bool *needStuffing);</span><br><span>@@ -81,7 +75,6 @@</span><br><span>       static GprsCodingScheme getGprsByNum(unsigned num);</span><br><span>  static GprsCodingScheme getEgprsByNum(unsigned num);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-        static const char *modeName(Mode mode);</span><br><span>      static CodingScheme get_retx_mcs(const GprsCodingScheme mcs,</span><br><span>                                 const GprsCodingScheme retx_mcs,</span><br><span>                             const unsigned arq_type);</span><br><span>@@ -102,7 +95,7 @@</span><br><span>       return 0;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-inline bool GprsCodingScheme::isCompatible(Mode mode) const</span><br><span style="color: hsl(120, 100%, 40%);">+inline bool GprsCodingScheme::isCompatible(enum mcs_kind mode) const</span><br><span> {</span><br><span>     switch (mode) {</span><br><span>      case GPRS: return isGprs();</span><br><span>diff --git a/src/gprs_ms.cpp b/src/gprs_ms.cpp</span><br><span>index 3c28319..e64bee4 100644</span><br><span>--- a/src/gprs_ms.cpp</span><br><span>+++ b/src/gprs_ms.cpp</span><br><span>@@ -110,7 +110,7 @@</span><br><span>   m_reserved_ul_slots(0),</span><br><span>      m_current_trx(NULL),</span><br><span>         m_codel_state(NULL),</span><br><span style="color: hsl(0, 100%, 40%);">-    m_mode(GprsCodingScheme::GPRS),</span><br><span style="color: hsl(120, 100%, 40%);">+       m_mode(GPRS),</span><br><span>        m_dl_ctrl_msg(0)</span><br><span> {</span><br><span>        int codel_interval = LLC_CODEL_USE_DEFAULT;</span><br><span>@@ -213,7 +213,7 @@</span><br><span>    unref();</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-void GprsMs::set_mode(GprsCodingScheme::Mode mode)</span><br><span style="color: hsl(120, 100%, 40%);">+void GprsMs::set_mode(enum mcs_kind mode)</span><br><span> {</span><br><span>  m_mode = mode;</span><br><span> </span><br><span>@@ -221,7 +221,7 @@</span><br><span>             return;</span><br><span> </span><br><span>  switch (m_mode) {</span><br><span style="color: hsl(0, 100%, 40%);">-       case GprsCodingScheme::GPRS:</span><br><span style="color: hsl(120, 100%, 40%);">+  case GPRS:</span><br><span>           if (!m_current_cs_ul.isGprs()) {</span><br><span>                     m_current_cs_ul = GprsCodingScheme::getGprsByNum(</span><br><span>                            m_bts->bts_data()->initial_cs_ul);</span><br><span>@@ -236,8 +236,8 @@</span><br><span>               }</span><br><span>            break;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-      case GprsCodingScheme::EGPRS_GMSK:</span><br><span style="color: hsl(0, 100%, 40%);">-      case GprsCodingScheme::EGPRS:</span><br><span style="color: hsl(120, 100%, 40%);">+ case EGPRS_GMSK:</span><br><span style="color: hsl(120, 100%, 40%);">+      case EGPRS:</span><br><span>          if (!m_current_cs_ul.isEgprs()) {</span><br><span>                    m_current_cs_ul = GprsCodingScheme::getEgprsByNum(</span><br><span>                           m_bts->bts_data()->initial_mcs_ul);</span><br><span>diff --git a/src/gprs_ms.h b/src/gprs_ms.h</span><br><span>index 0a9efb8..ad8ca1d 100644</span><br><span>--- a/src/gprs_ms.h</span><br><span>+++ b/src/gprs_ms.h</span><br><span>@@ -74,8 +74,8 @@</span><br><span>       bool check_tlli(uint32_t tlli);</span><br><span> </span><br><span>  void reset();</span><br><span style="color: hsl(0, 100%, 40%);">-   GprsCodingScheme::Mode mode() const;</span><br><span style="color: hsl(0, 100%, 40%);">-    void set_mode(GprsCodingScheme::Mode mode);</span><br><span style="color: hsl(120, 100%, 40%);">+   enum mcs_kind mode() const;</span><br><span style="color: hsl(120, 100%, 40%);">+   void set_mode(enum mcs_kind mode);</span><br><span> </span><br><span>       const char *imsi() const;</span><br><span>    void set_imsi(const char *imsi);</span><br><span>@@ -181,7 +181,7 @@</span><br><span>       gprs_rlcmac_trx *m_current_trx;</span><br><span> </span><br><span>  struct gprs_codel *m_codel_state;</span><br><span style="color: hsl(0, 100%, 40%);">-       GprsCodingScheme::Mode m_mode;</span><br><span style="color: hsl(120, 100%, 40%);">+        enum mcs_kind m_mode;</span><br><span> </span><br><span>    unsigned m_dl_ctrl_msg;</span><br><span> };</span><br><span>@@ -237,7 +237,7 @@</span><br><span>  return m_current_cs_ul;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-inline GprsCodingScheme::Mode GprsMs::mode() const</span><br><span style="color: hsl(120, 100%, 40%);">+inline enum mcs_kind GprsMs::mode() const</span><br><span> {</span><br><span>   return m_mode;</span><br><span> }</span><br><span>diff --git a/src/pcu_vty_functions.cpp b/src/pcu_vty_functions.cpp</span><br><span>index 47a0559..c93935d 100644</span><br><span>--- a/src/pcu_vty_functions.cpp</span><br><span>+++ b/src/pcu_vty_functions.cpp</span><br><span>@@ -79,7 +79,7 @@</span><br><span>                     ul_tbf->window_size(), win->v_q(), win->v_r());</span><br><span>             vty_out(vty, "%s", VTY_NEWLINE);</span><br><span>           vty_out(vty, " TBF Statistics:%s", VTY_NEWLINE);</span><br><span style="color: hsl(0, 100%, 40%);">-              if(GprsCodingScheme::GPRS == tbf->ms()->mode()) {</span><br><span style="color: hsl(120, 100%, 40%);">+               if(GPRS == tbf->ms()->mode()) {</span><br><span>                        vty_out_rate_ctr_group(vty, " ", ul_tbf->m_ul_gprs_ctrs);</span><br><span>               } else {</span><br><span>                     vty_out_rate_ctr_group(vty, " ", ul_tbf->m_ul_egprs_ctrs);</span><br><span>@@ -92,7 +92,7 @@</span><br><span>                  win->window_stalled() ? " STALLED" : "");</span><br><span>             vty_out(vty, "%s", VTY_NEWLINE);</span><br><span>           vty_out_rate_ctr_group(vty, " ", tbf->m_ctrs);</span><br><span style="color: hsl(0, 100%, 40%);">-             if(GprsCodingScheme::GPRS == tbf->ms()->mode()) {</span><br><span style="color: hsl(120, 100%, 40%);">+               if(GPRS == tbf->ms()->mode()) {</span><br><span>                        vty_out_rate_ctr_group(vty, " ", dl_tbf->m_dl_gprs_ctrs);</span><br><span>               } else {</span><br><span>                     vty_out_rate_ctr_group(vty, " ", dl_tbf->m_dl_egprs_ctrs);</span><br><span>@@ -153,8 +153,7 @@</span><br><span>                VTY_NEWLINE);</span><br><span>        vty_out(vty, "  Coding scheme downlink: %s%s", mcs_name(ms->current_cs_dl()),</span><br><span>           VTY_NEWLINE);</span><br><span style="color: hsl(0, 100%, 40%);">-   vty_out(vty, "  Mode:                   %s%s",</span><br><span style="color: hsl(0, 100%, 40%);">-                GprsCodingScheme::modeName(ms->mode()), VTY_NEWLINE);</span><br><span style="color: hsl(120, 100%, 40%);">+      vty_out(vty, "  Mode:                   %s%s", mode_name(ms->mode()), VTY_NEWLINE);</span><br><span>     vty_out(vty, "  MS class:               %d%s", ms->ms_class(), VTY_NEWLINE);</span><br><span>    vty_out(vty, "  EGPRS MS class:         %d%s", ms->egprs_ms_class(), VTY_NEWLINE);</span><br><span>      vty_out(vty, "  PACCH:                  ");</span><br><span>diff --git a/src/tbf.cpp b/src/tbf.cpp</span><br><span>index ffe8b82..3d9b5c4 100644</span><br><span>--- a/src/tbf.cpp</span><br><span>+++ b/src/tbf.cpp</span><br><span>@@ -897,7 +897,7 @@</span><br><span> </span><br><span>     bts = tbf->bts->bts_data();</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-   if (ms->mode() == GprsCodingScheme::EGPRS)</span><br><span style="color: hsl(120, 100%, 40%);">+ if (ms->mode() == EGPRS)</span><br><span>          ms_class = egprs_ms_class;</span><br><span> </span><br><span>       tbf->m_created_ts = time(NULL);</span><br><span>@@ -954,11 +954,11 @@</span><br><span> {</span><br><span>      if (GprsCodingScheme::getEgprsByNum(bts->max_mcs_ul).isEgprsGmsk() &&</span><br><span>             GprsCodingScheme::getEgprsByNum(bts->max_mcs_dl).isEgprsGmsk() &&</span><br><span style="color: hsl(0, 100%, 40%);">-            ms->mode() != GprsCodingScheme::EGPRS)</span><br><span style="color: hsl(120, 100%, 40%);">+             ms->mode() != EGPRS)</span><br><span>      {</span><br><span style="color: hsl(0, 100%, 40%);">-               ms->set_mode(GprsCodingScheme::EGPRS_GMSK);</span><br><span style="color: hsl(120, 100%, 40%);">+                ms->set_mode(EGPRS_GMSK);</span><br><span>         } else {</span><br><span style="color: hsl(0, 100%, 40%);">-                ms->set_mode(GprsCodingScheme::EGPRS);</span><br><span style="color: hsl(120, 100%, 40%);">+             ms->set_mode(EGPRS);</span><br><span>      }</span><br><span> }</span><br><span> </span><br><span>@@ -992,8 +992,7 @@</span><br><span>     if (egprs_ms_class > 0 && bts->egprs_enabled) {</span><br><span>                tbf->enable_egprs();</span><br><span>              setup_egprs_mode(bts, ms);</span><br><span style="color: hsl(0, 100%, 40%);">-              LOGPTBF(tbf, LOGL_INFO, "Enabled EGPRS, mode %s\n",</span><br><span style="color: hsl(0, 100%, 40%);">-                   GprsCodingScheme::modeName(ms->mode()));</span><br><span style="color: hsl(120, 100%, 40%);">+           LOGPTBF(tbf, LOGL_INFO, "Enabled EGPRS, mode %s\n", mode_name(ms->mode()));</span><br><span>     }</span><br><span> </span><br><span>        rc = setup_tbf(tbf, ms, use_trx, ms_class, egprs_ms_class, single_slot);</span><br><span>@@ -1085,8 +1084,7 @@</span><br><span>     if (egprs_ms_class > 0 && bts->egprs_enabled) {</span><br><span>                tbf->enable_egprs();</span><br><span>              setup_egprs_mode(bts, ms);</span><br><span style="color: hsl(0, 100%, 40%);">-              LOGPTBF(tbf, LOGL_INFO, "Enabled EGPRS, mode %s\n",</span><br><span style="color: hsl(0, 100%, 40%);">-                   GprsCodingScheme::modeName(ms->mode()));</span><br><span style="color: hsl(120, 100%, 40%);">+           LOGPTBF(tbf, LOGL_INFO, "Enabled EGPRS, mode %s\n", mode_name(ms->mode()));</span><br><span>     }</span><br><span> </span><br><span>        rc = setup_tbf(tbf, ms, use_trx, ms_class, 0, single_slot);</span><br><span>diff --git a/tests/edge/EdgeTest.cpp b/tests/edge/EdgeTest.cpp</span><br><span>index 41a1115..b902806 100644</span><br><span>--- a/tests/edge/EdgeTest.cpp</span><br><span>+++ b/tests/edge/EdgeTest.cpp</span><br><span>@@ -48,7 +48,7 @@</span><br><span> int16_t spoof_mnc = 0, spoof_mcc = 0;</span><br><span> bool spoof_mnc_3_digits = false;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-static void check_coding_scheme(GprsCodingScheme& cs, GprsCodingScheme::Mode mode)</span><br><span style="color: hsl(120, 100%, 40%);">+static void check_coding_scheme(GprsCodingScheme& cs, enum mcs_kind mode)</span><br><span> {</span><br><span>  volatile unsigned expected_size;</span><br><span>     bool need_padding;</span><br><span>@@ -148,9 +148,9 @@</span><br><span>     OSMO_ASSERT(!cs);</span><br><span>    OSMO_ASSERT(CodingScheme(cs) == UNKNOWN);</span><br><span>    OSMO_ASSERT(cs == GprsCodingScheme(UNKNOWN));</span><br><span style="color: hsl(0, 100%, 40%);">-   OSMO_ASSERT(!cs.isCompatible(GprsCodingScheme::GPRS));</span><br><span style="color: hsl(0, 100%, 40%);">-  OSMO_ASSERT(!cs.isCompatible(GprsCodingScheme::EGPRS_GMSK));</span><br><span style="color: hsl(0, 100%, 40%);">-    OSMO_ASSERT(!cs.isCompatible(GprsCodingScheme::EGPRS));</span><br><span style="color: hsl(120, 100%, 40%);">+       OSMO_ASSERT(!cs.isCompatible(GPRS));</span><br><span style="color: hsl(120, 100%, 40%);">+  OSMO_ASSERT(!cs.isCompatible(EGPRS_GMSK));</span><br><span style="color: hsl(120, 100%, 40%);">+    OSMO_ASSERT(!cs.isCompatible(EGPRS));</span><br><span> </span><br><span>    last_size_UL = 0;</span><br><span>    last_size_DL = 0;</span><br><span>@@ -170,7 +170,7 @@</span><br><span>              /* Check header types */</span><br><span>             OSMO_ASSERT(current_cs.headerTypeData() == HEADER_GPRS_DATA);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-               check_coding_scheme(current_cs, GprsCodingScheme::GPRS);</span><br><span style="color: hsl(120, 100%, 40%);">+              check_coding_scheme(current_cs, GPRS);</span><br><span>       }</span><br><span>    OSMO_ASSERT(i == 4);</span><br><span> </span><br><span>@@ -190,8 +190,8 @@</span><br><span>               last_size_DL = current_cs.maxBytesDL();</span><br><span> </span><br><span>          if (egprs_schemes[i].is_gmsk)</span><br><span style="color: hsl(0, 100%, 40%);">-                   check_coding_scheme(current_cs, GprsCodingScheme::EGPRS_GMSK);</span><br><span style="color: hsl(0, 100%, 40%);">-          check_coding_scheme(current_cs, GprsCodingScheme::EGPRS);</span><br><span style="color: hsl(120, 100%, 40%);">+                     check_coding_scheme(current_cs, EGPRS_GMSK);</span><br><span style="color: hsl(120, 100%, 40%);">+          check_coding_scheme(current_cs, EGPRS);</span><br><span>      }</span><br><span>    OSMO_ASSERT(i == 9);</span><br><span> </span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/13163">change 13163</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/13163"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: osmo-pcu </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-MessageType: merged </div>
<div style="display:none"> Gerrit-Change-Id: I3baaac7f1ca3f5b88917a23c1679d63847455f47 </div>
<div style="display:none"> Gerrit-Change-Number: 13163 </div>
<div style="display:none"> Gerrit-PatchSet: 7 </div>
<div style="display:none"> Gerrit-Owner: Max <msuraev@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: AndrĂ© Boddenberg <dr.blobb@gmail.com> </div>
<div style="display:none"> Gerrit-Reviewer: Daniel Willmann <dwillmann@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: Harald Welte <laforge@gnumonks.org> </div>
<div style="display:none"> Gerrit-Reviewer: Jenkins Builder (1000002) </div>
<div style="display:none"> Gerrit-Reviewer: Max <msuraev@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: Pau Espin Pedrol <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: osmith <osmith@sysmocom.de> </div>