<p>Max <strong>merged</strong> this change.</p><p><a href="https://gerrit.osmocom.org/13064">View Change</a></p><div style="white-space:pre-wrap">Approvals:
Jenkins Builder: Verified
Harald Welte: Looks good to me, approved
</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">MCS: move Coding Scheme enum outside of class definition<br><br>Move generic MCS enum to C header file to simplify further modifications<br>to GprsCodingScheme class in follow-up patches. This also allows us<br>to use standard libosmocore value_sting functions in upcoming patches<br>for IA Rest Octet encoding/decoding.<br><br>Related: OS#3014<br>Change-Id: I993b49d9a82b8c7ad677d52d11003794aeabe117<br>---<br>M debian/copyright<br>M src/Makefile.am<br>A 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/rlc.cpp<br>M src/tbf_dl.cpp<br>M src/tbf_ul.cpp<br>M tests/edge/EdgeTest.cpp<br>M tests/tbf/TbfTest.cpp<br>12 files changed, 248 insertions(+), 230 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/debian/copyright b/debian/copyright</span><br><span>index 853cd6e..5bb2110 100644</span><br><span>--- a/debian/copyright</span><br><span>+++ b/debian/copyright</span><br><span>@@ -15,6 +15,7 @@</span><br><span> src/gprs_ms.h</span><br><span> src/gprs_coding_scheme.cpp</span><br><span> src/gprs_coding_scheme.h</span><br><span style="color: hsl(120, 100%, 40%);">+ src/coding_scheme.h</span><br><span> src/cxx_linuxlist.h</span><br><span> src/pcu_vty_functions.cpp</span><br><span> src/pcu_vty_functions.h</span><br><span>diff --git a/src/Makefile.am b/src/Makefile.am</span><br><span>index 50e0eda..eb4a2bb 100644</span><br><span>--- a/src/Makefile.am</span><br><span>+++ b/src/Makefile.am</span><br><span>@@ -97,6 +97,7 @@</span><br><span> cxx_linuxlist.h \</span><br><span> gprs_codel.h \</span><br><span> gprs_coding_scheme.h \</span><br><span style="color: hsl(120, 100%, 40%);">+ coding_scheme.h \</span><br><span> egprs_rlc_compression.h</span><br><span> </span><br><span> osmo_pcu_SOURCES = pcu_main.cpp</span><br><span>diff --git a/src/coding_scheme.h b/src/coding_scheme.h</span><br><span>new file mode 100644</span><br><span>index 0000000..3705ea4</span><br><span>--- /dev/null</span><br><span>+++ b/src/coding_scheme.h</span><br><span>@@ -0,0 +1,29 @@</span><br><span style="color: hsl(120, 100%, 40%);">+/* coding_scheme.h</span><br><span style="color: hsl(120, 100%, 40%);">+ *</span><br><span style="color: hsl(120, 100%, 40%);">+ * Copyright (C) 2015-2019 by sysmocom s.f.m.c. GmbH</span><br><span style="color: hsl(120, 100%, 40%);">+ *</span><br><span style="color: hsl(120, 100%, 40%);">+ * This program is free software; you can redistribute it and/or</span><br><span style="color: hsl(120, 100%, 40%);">+ * modify it under the terms of the GNU General Public License</span><br><span style="color: hsl(120, 100%, 40%);">+ * as published by the Free Software Foundation; either version 2</span><br><span style="color: hsl(120, 100%, 40%);">+ * of the License, or (at your option) any later version.</span><br><span style="color: hsl(120, 100%, 40%);">+ *</span><br><span style="color: hsl(120, 100%, 40%);">+ * This program is distributed in the hope that it will be useful,</span><br><span style="color: hsl(120, 100%, 40%);">+ * but WITHOUT ANY WARRANTY; without even the implied warranty of</span><br><span style="color: hsl(120, 100%, 40%);">+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span><br><span style="color: hsl(120, 100%, 40%);">+ * GNU General Public License for more details.</span><br><span style="color: hsl(120, 100%, 40%);">+ *</span><br><span style="color: hsl(120, 100%, 40%);">+ * You should have received a copy of the GNU General Public License</span><br><span style="color: hsl(120, 100%, 40%);">+ * along with this program; if not, write to the Free Software</span><br><span style="color: hsl(120, 100%, 40%);">+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.</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%);">+#pragma once</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+enum CodingScheme {</span><br><span style="color: hsl(120, 100%, 40%);">+ UNKNOWN,</span><br><span style="color: hsl(120, 100%, 40%);">+ /* GPRS Coding Schemes: */</span><br><span style="color: hsl(120, 100%, 40%);">+ CS1, CS2, CS3, CS4,</span><br><span style="color: hsl(120, 100%, 40%);">+ /* EDGE/EGPRS Modulation and Coding Schemes: */</span><br><span style="color: hsl(120, 100%, 40%);">+ MCS1, MCS2, MCS3, MCS4, MCS5, MCS6, MCS7, MCS8, MCS9,</span><br><span style="color: hsl(120, 100%, 40%);">+ NUM_SCHEMES</span><br><span style="color: hsl(120, 100%, 40%);">+};</span><br><span>diff --git a/src/gprs_coding_scheme.cpp b/src/gprs_coding_scheme.cpp</span><br><span>index bbac6e7..990e278 100644</span><br><span>--- a/src/gprs_coding_scheme.cpp</span><br><span>+++ b/src/gprs_coding_scheme.cpp</span><br><span>@@ -27,7 +27,7 @@</span><br><span> * 1st level is Original MCS( index 0 corresponds to MCS1 and so on)</span><br><span> * 2nd level is MS MCS (index 0 corresponds to MCS1 and so on)</span><br><span> */</span><br><span style="color: hsl(0, 100%, 40%);">-enum GprsCodingScheme::Scheme GprsCodingScheme::egprs_mcs_retx_tbl[MAX_NUM_ARQ]</span><br><span style="color: hsl(120, 100%, 40%);">+enum CodingScheme GprsCodingScheme::egprs_mcs_retx_tbl[MAX_NUM_ARQ]</span><br><span> [MAX_NUM_MCS][MAX_NUM_MCS] = {</span><br><span> {</span><br><span> {MCS1, MCS1, MCS1, MCS1, MCS1, MCS1, MCS1, MCS1, MCS1},</span><br><span>@@ -71,7 +71,7 @@</span><br><span> const char *name;</span><br><span> GprsCodingScheme::HeaderType data_hdr;</span><br><span> enum Family family;</span><br><span style="color: hsl(0, 100%, 40%);">-} mcs_info[GprsCodingScheme::NUM_SCHEMES] = {</span><br><span style="color: hsl(120, 100%, 40%);">+} mcs_info[NUM_SCHEMES] = {</span><br><span> {{0, 0}, {0, 0}, 0, 0, "UNKNOWN",</span><br><span> GprsCodingScheme::HEADER_INVALID, FAMILY_INVALID},</span><br><span> {{23, 0}, {23, 0}, 20, 0, "CS-1",</span><br><span>@@ -233,7 +233,7 @@</span><br><span> /* This should not happen. TODO: Use assert? */</span><br><span> return;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- Scheme new_cs(Scheme(m_scheme + 1));</span><br><span style="color: hsl(120, 100%, 40%);">+ CodingScheme new_cs(CodingScheme(m_scheme + 1));</span><br><span> if (!GprsCodingScheme(new_cs).isCompatible(mode))</span><br><span> /* Clipping, do not change the value */</span><br><span> return;</span><br><span>@@ -247,7 +247,7 @@</span><br><span> /* This should not happen. TODO: Use assert? */</span><br><span> return;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- Scheme new_cs(Scheme(m_scheme - 1));</span><br><span style="color: hsl(120, 100%, 40%);">+ CodingScheme new_cs(CodingScheme(m_scheme - 1));</span><br><span> if (!GprsCodingScheme(new_cs).isCompatible(mode))</span><br><span> /* Clipping, do not change the value */</span><br><span> return;</span><br><span>@@ -266,7 +266,7 @@</span><br><span> if (!isValid())</span><br><span> return;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- m_scheme = Scheme(m_scheme + 1);</span><br><span style="color: hsl(120, 100%, 40%);">+ m_scheme = CodingScheme(m_scheme + 1);</span><br><span> }</span><br><span> </span><br><span> void GprsCodingScheme::dec()</span><br><span>@@ -280,7 +280,7 @@</span><br><span> if (!isValid())</span><br><span> return;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- m_scheme = Scheme(m_scheme - 1);</span><br><span style="color: hsl(120, 100%, 40%);">+ m_scheme = CodingScheme(m_scheme - 1);</span><br><span> }</span><br><span> </span><br><span> const char *GprsCodingScheme::modeName(Mode mode)</span><br><span>diff --git a/src/gprs_coding_scheme.h b/src/gprs_coding_scheme.h</span><br><span>index 31f0940..045d34a 100644</span><br><span>--- a/src/gprs_coding_scheme.h</span><br><span>+++ b/src/gprs_coding_scheme.h</span><br><span>@@ -25,6 +25,7 @@</span><br><span> </span><br><span> extern "C" {</span><br><span> #include <osmocom/core/utils.h></span><br><span style="color: hsl(120, 100%, 40%);">+ #include "coding_scheme.h"</span><br><span> }</span><br><span> </span><br><span> class GprsCodingScheme {</span><br><span>@@ -35,14 +36,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 Scheme {</span><br><span style="color: hsl(0, 100%, 40%);">- UNKNOWN,</span><br><span style="color: hsl(0, 100%, 40%);">- CS1, CS2, CS3, CS4,</span><br><span style="color: hsl(0, 100%, 40%);">- MCS1, MCS2, MCS3, MCS4,</span><br><span style="color: hsl(0, 100%, 40%);">- MCS5, MCS6, MCS7, MCS8, MCS9,</span><br><span style="color: hsl(0, 100%, 40%);">- NUM_SCHEMES</span><br><span style="color: hsl(0, 100%, 40%);">- };</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span> enum Mode {</span><br><span> GPRS,</span><br><span> EGPRS_GMSK,</span><br><span>@@ -59,14 +52,14 @@</span><br><span> NUM_HEADER_TYPES</span><br><span> };</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- GprsCodingScheme(Scheme s = UNKNOWN);</span><br><span style="color: hsl(120, 100%, 40%);">+ GprsCodingScheme(CodingScheme s = UNKNOWN);</span><br><span> </span><br><span> operator bool() const {return m_scheme != UNKNOWN;}</span><br><span style="color: hsl(0, 100%, 40%);">- operator Scheme() const {return m_scheme;}</span><br><span style="color: hsl(120, 100%, 40%);">+ operator CodingScheme() const {return m_scheme;}</span><br><span> uint8_t to_num() const;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- GprsCodingScheme& operator =(Scheme s);</span><br><span style="color: hsl(0, 100%, 40%);">- bool operator == (Scheme s) const;</span><br><span style="color: hsl(120, 100%, 40%);">+ GprsCodingScheme& operator =(CodingScheme s);</span><br><span style="color: hsl(120, 100%, 40%);">+ bool operator == (CodingScheme s) const;</span><br><span> GprsCodingScheme& operator =(GprsCodingScheme o);</span><br><span> </span><br><span> bool isValid() const {return UNKNOWN <= m_scheme && m_scheme <= MCS9;}</span><br><span>@@ -106,16 +99,16 @@</span><br><span> static GprsCodingScheme getEgprsByNum(unsigned num);</span><br><span> </span><br><span> static const char *modeName(Mode mode);</span><br><span style="color: hsl(0, 100%, 40%);">- static Scheme get_retx_mcs(const GprsCodingScheme mcs,</span><br><span style="color: hsl(120, 100%, 40%);">+ 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> </span><br><span style="color: hsl(0, 100%, 40%);">- static enum Scheme egprs_mcs_retx_tbl[MAX_NUM_ARQ]</span><br><span style="color: hsl(120, 100%, 40%);">+ static enum CodingScheme egprs_mcs_retx_tbl[MAX_NUM_ARQ]</span><br><span> [MAX_NUM_MCS][MAX_NUM_MCS];</span><br><span> private:</span><br><span> GprsCodingScheme(int s); /* fail on use */</span><br><span> GprsCodingScheme& operator =(int s); /* fail on use */</span><br><span style="color: hsl(0, 100%, 40%);">- enum Scheme m_scheme;</span><br><span style="color: hsl(120, 100%, 40%);">+ enum CodingScheme m_scheme;</span><br><span> };</span><br><span> </span><br><span> inline uint8_t GprsCodingScheme::to_num() const</span><br><span>@@ -145,14 +138,14 @@</span><br><span> return (isGprs() && o.isGprs()) || (isEgprs() && o.isEgprs());</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-inline GprsCodingScheme::GprsCodingScheme(Scheme s)</span><br><span style="color: hsl(120, 100%, 40%);">+inline GprsCodingScheme::GprsCodingScheme(CodingScheme s)</span><br><span> : m_scheme(s)</span><br><span> {</span><br><span> if (!isValid())</span><br><span> m_scheme = UNKNOWN;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-inline GprsCodingScheme& GprsCodingScheme::operator =(Scheme s)</span><br><span style="color: hsl(120, 100%, 40%);">+inline GprsCodingScheme& GprsCodingScheme::operator =(CodingScheme s)</span><br><span> {</span><br><span> m_scheme = s;</span><br><span> </span><br><span>@@ -173,7 +166,7 @@</span><br><span> if (num < 1 || num > 4)</span><br><span> return GprsCodingScheme();</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- return GprsCodingScheme(Scheme(CS1 + (num - 1)));</span><br><span style="color: hsl(120, 100%, 40%);">+ return GprsCodingScheme(CodingScheme(CS1 + (num - 1)));</span><br><span> }</span><br><span> </span><br><span> inline GprsCodingScheme GprsCodingScheme::getEgprsByNum(unsigned num)</span><br><span>@@ -181,16 +174,11 @@</span><br><span> if (num < 1 || num > 9)</span><br><span> return GprsCodingScheme();</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- return GprsCodingScheme(Scheme(MCS1 + (num - 1)));</span><br><span style="color: hsl(120, 100%, 40%);">+ return GprsCodingScheme(CodingScheme(MCS1 + (num - 1)));</span><br><span> }</span><br><span> </span><br><span> /* The coding schemes form a partial ordering */</span><br><span style="color: hsl(0, 100%, 40%);">-inline bool operator ==(GprsCodingScheme a, GprsCodingScheme b)</span><br><span style="color: hsl(0, 100%, 40%);">-{</span><br><span style="color: hsl(0, 100%, 40%);">- return GprsCodingScheme::Scheme(a) == GprsCodingScheme::Scheme(b);</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%);">-inline bool GprsCodingScheme::operator == (Scheme scheme) const</span><br><span style="color: hsl(120, 100%, 40%);">+inline bool GprsCodingScheme::operator == (CodingScheme scheme) const</span><br><span> {</span><br><span> return this->m_scheme == scheme;</span><br><span> }</span><br><span>@@ -202,11 +190,10 @@</span><br><span> </span><br><span> inline bool operator <(GprsCodingScheme a, GprsCodingScheme b)</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">- return a.isCompatible(b) &&</span><br><span style="color: hsl(0, 100%, 40%);">- GprsCodingScheme::Scheme(a) < GprsCodingScheme::Scheme(b);</span><br><span style="color: hsl(120, 100%, 40%);">+ return a.isCompatible(b) && a.to_num() < b.to_num();</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-inline GprsCodingScheme::Scheme GprsCodingScheme::get_retx_mcs(</span><br><span style="color: hsl(120, 100%, 40%);">+inline CodingScheme GprsCodingScheme::get_retx_mcs(</span><br><span> const GprsCodingScheme mcs,</span><br><span> const GprsCodingScheme demanded_mcs,</span><br><span> const unsigned arq_type)</span><br><span>diff --git a/src/gprs_ms.cpp b/src/gprs_ms.cpp</span><br><span>index 8855053..77a8f2e 100644</span><br><span>--- a/src/gprs_ms.cpp</span><br><span>+++ b/src/gprs_ms.cpp</span><br><span>@@ -225,13 +225,13 @@</span><br><span> m_current_cs_ul = GprsCodingScheme::getGprsByNum(</span><br><span> m_bts->bts_data()->initial_cs_ul);</span><br><span> if (!m_current_cs_ul.isValid())</span><br><span style="color: hsl(0, 100%, 40%);">- m_current_cs_ul = GprsCodingScheme::CS1;</span><br><span style="color: hsl(120, 100%, 40%);">+ m_current_cs_ul = CS1;</span><br><span> }</span><br><span> if (!m_current_cs_dl.isGprs()) {</span><br><span> m_current_cs_dl = GprsCodingScheme::getGprsByNum(</span><br><span> m_bts->bts_data()->initial_cs_dl);</span><br><span> if (!m_current_cs_dl.isValid())</span><br><span style="color: hsl(0, 100%, 40%);">- m_current_cs_dl = GprsCodingScheme::CS1;</span><br><span style="color: hsl(120, 100%, 40%);">+ m_current_cs_dl = CS1;</span><br><span> }</span><br><span> break;</span><br><span> </span><br><span>@@ -241,13 +241,13 @@</span><br><span> m_current_cs_ul = GprsCodingScheme::getEgprsByNum(</span><br><span> m_bts->bts_data()->initial_mcs_ul);</span><br><span> if (!m_current_cs_ul.isValid())</span><br><span style="color: hsl(0, 100%, 40%);">- m_current_cs_ul = GprsCodingScheme::MCS1;</span><br><span style="color: hsl(120, 100%, 40%);">+ m_current_cs_ul = MCS1;</span><br><span> }</span><br><span> if (!m_current_cs_dl.isEgprs()) {</span><br><span> m_current_cs_dl = GprsCodingScheme::getEgprsByNum(</span><br><span> m_bts->bts_data()->initial_mcs_dl);</span><br><span> if (!m_current_cs_dl.isValid())</span><br><span style="color: hsl(0, 100%, 40%);">- m_current_cs_dl = GprsCodingScheme::MCS1;</span><br><span style="color: hsl(120, 100%, 40%);">+ m_current_cs_dl = MCS1;</span><br><span> }</span><br><span> break;</span><br><span> }</span><br><span>@@ -565,7 +565,7 @@</span><br><span> </span><br><span> if (m_current_cs_ul.isGprs()) {</span><br><span> if (!bts_data->max_cs_ul)</span><br><span style="color: hsl(0, 100%, 40%);">- return GprsCodingScheme(GprsCodingScheme::CS4);</span><br><span style="color: hsl(120, 100%, 40%);">+ return GprsCodingScheme(CS4);</span><br><span> </span><br><span> return GprsCodingScheme::getGprsByNum(bts_data->max_cs_ul);</span><br><span> }</span><br><span>@@ -578,10 +578,10 @@</span><br><span> else if (bts_data->max_cs_ul)</span><br><span> return GprsCodingScheme::getEgprsByNum(bts_data->max_cs_ul);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- return GprsCodingScheme(GprsCodingScheme::MCS4);</span><br><span style="color: hsl(120, 100%, 40%);">+ return GprsCodingScheme(MCS4);</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-void GprsMs::set_current_cs_dl(GprsCodingScheme::Scheme scheme)</span><br><span style="color: hsl(120, 100%, 40%);">+void GprsMs::set_current_cs_dl(CodingScheme scheme)</span><br><span> {</span><br><span> m_current_cs_dl = scheme;</span><br><span> }</span><br><span>@@ -595,7 +595,7 @@</span><br><span> </span><br><span> if (m_current_cs_dl.isGprs()) {</span><br><span> if (!bts_data->max_cs_dl)</span><br><span style="color: hsl(0, 100%, 40%);">- return GprsCodingScheme(GprsCodingScheme::CS4);</span><br><span style="color: hsl(120, 100%, 40%);">+ return GprsCodingScheme(CS4);</span><br><span> </span><br><span> return GprsCodingScheme::getGprsByNum(bts_data->max_cs_dl);</span><br><span> }</span><br><span>@@ -608,7 +608,7 @@</span><br><span> else if (bts_data->max_cs_dl)</span><br><span> return GprsCodingScheme::getEgprsByNum(bts_data->max_cs_dl);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- return GprsCodingScheme(GprsCodingScheme::MCS4);</span><br><span style="color: hsl(120, 100%, 40%);">+ return GprsCodingScheme(MCS4);</span><br><span> }</span><br><span> </span><br><span> void GprsMs::update_cs_ul(const pcu_l1_meas *meas)</span><br><span>@@ -746,7 +746,7 @@</span><br><span> cs.dec(mode());</span><br><span> </span><br><span> /* CS-2 doesn't gain throughput with small packets, further reduce to CS-1 */</span><br><span style="color: hsl(0, 100%, 40%);">- if (cs == GprsCodingScheme(GprsCodingScheme::CS2))</span><br><span style="color: hsl(120, 100%, 40%);">+ if (cs == GprsCodingScheme(CS2))</span><br><span> cs.dec(mode());</span><br><span> </span><br><span> return cs;</span><br><span>diff --git a/src/gprs_ms.h b/src/gprs_ms.h</span><br><span>index 857f0c9..0a9efb8 100644</span><br><span>--- a/src/gprs_ms.h</span><br><span>+++ b/src/gprs_ms.h</span><br><span>@@ -86,7 +86,7 @@</span><br><span> uint8_t egprs_ms_class() const;</span><br><span> void set_ms_class(uint8_t ms_class);</span><br><span> void set_egprs_ms_class(uint8_t ms_class);</span><br><span style="color: hsl(0, 100%, 40%);">- void set_current_cs_dl(GprsCodingScheme::Scheme scheme);</span><br><span style="color: hsl(120, 100%, 40%);">+ void set_current_cs_dl(CodingScheme scheme);</span><br><span> </span><br><span> GprsCodingScheme current_cs_ul() const;</span><br><span> GprsCodingScheme current_cs_dl() const;</span><br><span>diff --git a/src/rlc.cpp b/src/rlc.cpp</span><br><span>index ee88bd9..323fde4 100644</span><br><span>--- a/src/rlc.cpp</span><br><span>+++ b/src/rlc.cpp</span><br><span>@@ -391,27 +391,27 @@</span><br><span> enum egprs_puncturing_values punct2, bool with_padding)</span><br><span> {</span><br><span> /* validate that punct and punct2 are as expected */</span><br><span style="color: hsl(0, 100%, 40%);">- switch (GprsCodingScheme::Scheme(cs)) {</span><br><span style="color: hsl(0, 100%, 40%);">- case GprsCodingScheme::MCS9:</span><br><span style="color: hsl(0, 100%, 40%);">- case GprsCodingScheme::MCS8:</span><br><span style="color: hsl(0, 100%, 40%);">- case GprsCodingScheme::MCS7:</span><br><span style="color: hsl(120, 100%, 40%);">+ switch (CodingScheme(cs)) {</span><br><span style="color: hsl(120, 100%, 40%);">+ case MCS9:</span><br><span style="color: hsl(120, 100%, 40%);">+ case MCS8:</span><br><span style="color: hsl(120, 100%, 40%);">+ case MCS7:</span><br><span> if (punct2 == EGPRS_PS_INVALID) {</span><br><span> LOGP(DRLCMACDL, LOGL_ERROR,</span><br><span> "Invalid punct2 value for coding scheme %d: %d\n",</span><br><span style="color: hsl(0, 100%, 40%);">- GprsCodingScheme::Scheme(cs), punct2);</span><br><span style="color: hsl(120, 100%, 40%);">+ CodingScheme(cs), punct2);</span><br><span> return -1;</span><br><span> }</span><br><span> /* fall through */</span><br><span style="color: hsl(0, 100%, 40%);">- case GprsCodingScheme::MCS6:</span><br><span style="color: hsl(0, 100%, 40%);">- case GprsCodingScheme::MCS5:</span><br><span style="color: hsl(0, 100%, 40%);">- case GprsCodingScheme::MCS4:</span><br><span style="color: hsl(0, 100%, 40%);">- case GprsCodingScheme::MCS3:</span><br><span style="color: hsl(0, 100%, 40%);">- case GprsCodingScheme::MCS2:</span><br><span style="color: hsl(0, 100%, 40%);">- case GprsCodingScheme::MCS1:</span><br><span style="color: hsl(120, 100%, 40%);">+ case MCS6:</span><br><span style="color: hsl(120, 100%, 40%);">+ case MCS5:</span><br><span style="color: hsl(120, 100%, 40%);">+ case MCS4:</span><br><span style="color: hsl(120, 100%, 40%);">+ case MCS3:</span><br><span style="color: hsl(120, 100%, 40%);">+ case MCS2:</span><br><span style="color: hsl(120, 100%, 40%);">+ case MCS1:</span><br><span> if (punct == EGPRS_PS_INVALID) {</span><br><span> LOGP(DRLCMACDL, LOGL_ERROR,</span><br><span> "Invalid punct value for coding scheme %d: %d\n",</span><br><span style="color: hsl(0, 100%, 40%);">- GprsCodingScheme::Scheme(cs), punct);</span><br><span style="color: hsl(120, 100%, 40%);">+ CodingScheme(cs), punct);</span><br><span> return -1;</span><br><span> }</span><br><span> break;</span><br><span>@@ -420,26 +420,26 @@</span><br><span> }</span><br><span> </span><br><span> /* See 3GPP TS 44.060 10.4.8a.3.1, 10.4.8a.2.1, 10.4.8a.1.1 */</span><br><span style="color: hsl(0, 100%, 40%);">- switch (GprsCodingScheme::Scheme(cs)) {</span><br><span style="color: hsl(0, 100%, 40%);">- case GprsCodingScheme::MCS1: return 0b1011 +</span><br><span style="color: hsl(120, 100%, 40%);">+ switch (CodingScheme(cs)) {</span><br><span style="color: hsl(120, 100%, 40%);">+ case MCS1: return 0b1011 +</span><br><span> punct % EGPRS_MAX_PS_NUM_2;</span><br><span style="color: hsl(0, 100%, 40%);">- case GprsCodingScheme::MCS2: return 0b1001 +</span><br><span style="color: hsl(120, 100%, 40%);">+ case MCS2: return 0b1001 +</span><br><span> punct % EGPRS_MAX_PS_NUM_2;</span><br><span style="color: hsl(0, 100%, 40%);">- case GprsCodingScheme::MCS3: return (with_padding ? 0b0110 : 0b0011) +</span><br><span style="color: hsl(120, 100%, 40%);">+ case MCS3: return (with_padding ? 0b0110 : 0b0011) +</span><br><span> punct % EGPRS_MAX_PS_NUM_3;</span><br><span style="color: hsl(0, 100%, 40%);">- case GprsCodingScheme::MCS4: return 0b0000 +</span><br><span style="color: hsl(120, 100%, 40%);">+ case MCS4: return 0b0000 +</span><br><span> punct % EGPRS_MAX_PS_NUM_3;</span><br><span style="color: hsl(0, 100%, 40%);">- case GprsCodingScheme::MCS5: return 0b100 +</span><br><span style="color: hsl(120, 100%, 40%);">+ case MCS5: return 0b100 +</span><br><span> punct % EGPRS_MAX_PS_NUM_2;</span><br><span style="color: hsl(0, 100%, 40%);">- case GprsCodingScheme::MCS6: return (with_padding ? 0b010 : 0b000) +</span><br><span style="color: hsl(120, 100%, 40%);">+ case MCS6: return (with_padding ? 0b010 : 0b000) +</span><br><span> punct % EGPRS_MAX_PS_NUM_2;</span><br><span style="color: hsl(0, 100%, 40%);">- case GprsCodingScheme::MCS7: return 0b10100 +</span><br><span style="color: hsl(120, 100%, 40%);">+ case MCS7: return 0b10100 +</span><br><span> 3 * (punct % EGPRS_MAX_PS_NUM_3) +</span><br><span> punct2 % EGPRS_MAX_PS_NUM_3;</span><br><span style="color: hsl(0, 100%, 40%);">- case GprsCodingScheme::MCS8: return 0b01011 +</span><br><span style="color: hsl(120, 100%, 40%);">+ case MCS8: return 0b01011 +</span><br><span> 3 * (punct % EGPRS_MAX_PS_NUM_3) +</span><br><span> punct2 % EGPRS_MAX_PS_NUM_3;</span><br><span style="color: hsl(0, 100%, 40%);">- case GprsCodingScheme::MCS9: return 0b00000 +</span><br><span style="color: hsl(120, 100%, 40%);">+ case MCS9: return 0b00000 +</span><br><span> 4 * (punct % EGPRS_MAX_PS_NUM_3) +</span><br><span> punct2 % EGPRS_MAX_PS_NUM_3;</span><br><span> default: ;</span><br><span>@@ -454,24 +454,24 @@</span><br><span> *punct2 = -1;</span><br><span> *with_padding = 0;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- switch (GprsCodingScheme::Scheme(cs)) {</span><br><span style="color: hsl(0, 100%, 40%);">- case GprsCodingScheme::MCS1:</span><br><span style="color: hsl(120, 100%, 40%);">+ switch (CodingScheme(cs)) {</span><br><span style="color: hsl(120, 100%, 40%);">+ case MCS1:</span><br><span> cps -= 0b1011; *punct = cps % 2; break;</span><br><span style="color: hsl(0, 100%, 40%);">- case GprsCodingScheme::MCS2:</span><br><span style="color: hsl(120, 100%, 40%);">+ case MCS2:</span><br><span> cps -= 0b1001; *punct = cps % 2; break;</span><br><span style="color: hsl(0, 100%, 40%);">- case GprsCodingScheme::MCS3:</span><br><span style="color: hsl(120, 100%, 40%);">+ case MCS3:</span><br><span> cps -= 0b0011; *punct = cps % 3; *with_padding = cps >= 3; break;</span><br><span style="color: hsl(0, 100%, 40%);">- case GprsCodingScheme::MCS4:</span><br><span style="color: hsl(120, 100%, 40%);">+ case MCS4:</span><br><span> cps -= 0b0000; *punct = cps % 3; break;</span><br><span style="color: hsl(0, 100%, 40%);">- case GprsCodingScheme::MCS5:</span><br><span style="color: hsl(120, 100%, 40%);">+ case MCS5:</span><br><span> cps -= 0b100; *punct = cps % 2; break;</span><br><span style="color: hsl(0, 100%, 40%);">- case GprsCodingScheme::MCS6:</span><br><span style="color: hsl(120, 100%, 40%);">+ case MCS6:</span><br><span> cps -= 0b000; *punct = cps % 2; *with_padding = cps >= 2; break;</span><br><span style="color: hsl(0, 100%, 40%);">- case GprsCodingScheme::MCS7:</span><br><span style="color: hsl(120, 100%, 40%);">+ case MCS7:</span><br><span> cps -= 0b10100; *punct = cps / 3; *punct2 = cps % 3; break;</span><br><span style="color: hsl(0, 100%, 40%);">- case GprsCodingScheme::MCS8:</span><br><span style="color: hsl(120, 100%, 40%);">+ case MCS8:</span><br><span> cps -= 0b01011; *punct = cps / 3; *punct2 = cps % 3; break;</span><br><span style="color: hsl(0, 100%, 40%);">- case GprsCodingScheme::MCS9:</span><br><span style="color: hsl(120, 100%, 40%);">+ case MCS9:</span><br><span> cps -= 0b00000; *punct = cps / 4; *punct2 = cps % 3; break;</span><br><span> default: ;</span><br><span> }</span><br><span>@@ -501,23 +501,23 @@</span><br><span> return punct;</span><br><span> </span><br><span> /* TS 44.060 9.3.2.1.1 */</span><br><span style="color: hsl(0, 100%, 40%);">- if ((GprsCodingScheme::Scheme(cs) == GprsCodingScheme::MCS9) &&</span><br><span style="color: hsl(0, 100%, 40%);">- (GprsCodingScheme::Scheme(cs_current) == GprsCodingScheme::MCS6)) {</span><br><span style="color: hsl(120, 100%, 40%);">+ if ((CodingScheme(cs) == MCS9) &&</span><br><span style="color: hsl(120, 100%, 40%);">+ (CodingScheme(cs_current) == MCS6)) {</span><br><span> if ((punct == EGPRS_PS_1) || (punct == EGPRS_PS_3))</span><br><span> return EGPRS_PS_1;</span><br><span> else if (punct == EGPRS_PS_2)</span><br><span> return EGPRS_PS_2;</span><br><span style="color: hsl(0, 100%, 40%);">- } else if ((GprsCodingScheme::Scheme(cs) == GprsCodingScheme::MCS6) &&</span><br><span style="color: hsl(0, 100%, 40%);">- (GprsCodingScheme::Scheme(cs_current) == GprsCodingScheme::MCS9)) {</span><br><span style="color: hsl(120, 100%, 40%);">+ } else if ((CodingScheme(cs) == MCS6) &&</span><br><span style="color: hsl(120, 100%, 40%);">+ (CodingScheme(cs_current) == MCS9)) {</span><br><span> if (punct == EGPRS_PS_1)</span><br><span> return EGPRS_PS_3;</span><br><span> else if (punct == EGPRS_PS_2)</span><br><span> return EGPRS_PS_2;</span><br><span style="color: hsl(0, 100%, 40%);">- } else if ((GprsCodingScheme::Scheme(cs) == GprsCodingScheme::MCS7) &&</span><br><span style="color: hsl(0, 100%, 40%);">- (GprsCodingScheme::Scheme(cs_current) == GprsCodingScheme::MCS5))</span><br><span style="color: hsl(120, 100%, 40%);">+ } else if ((CodingScheme(cs) == MCS7) &&</span><br><span style="color: hsl(120, 100%, 40%);">+ (CodingScheme(cs_current) == MCS5))</span><br><span> return EGPRS_PS_1;</span><br><span style="color: hsl(0, 100%, 40%);">- else if ((GprsCodingScheme::Scheme(cs) == GprsCodingScheme::MCS5) &&</span><br><span style="color: hsl(0, 100%, 40%);">- (GprsCodingScheme::Scheme(cs_current) == GprsCodingScheme::MCS7))</span><br><span style="color: hsl(120, 100%, 40%);">+ else if ((CodingScheme(cs) == MCS5) &&</span><br><span style="color: hsl(120, 100%, 40%);">+ (CodingScheme(cs_current) == MCS7))</span><br><span> return EGPRS_PS_2;</span><br><span> else if (cs != cs_current)</span><br><span> return EGPRS_PS_1;</span><br><span>@@ -540,19 +540,19 @@</span><br><span> void gprs_update_punct_scheme(enum egprs_puncturing_values *punct,</span><br><span> const GprsCodingScheme &cs)</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">- switch (GprsCodingScheme::Scheme(cs)) {</span><br><span style="color: hsl(0, 100%, 40%);">- case GprsCodingScheme::MCS1 :</span><br><span style="color: hsl(0, 100%, 40%);">- case GprsCodingScheme::MCS2 :</span><br><span style="color: hsl(0, 100%, 40%);">- case GprsCodingScheme::MCS5 :</span><br><span style="color: hsl(0, 100%, 40%);">- case GprsCodingScheme::MCS6 :</span><br><span style="color: hsl(120, 100%, 40%);">+ switch (CodingScheme(cs)) {</span><br><span style="color: hsl(120, 100%, 40%);">+ case MCS1 :</span><br><span style="color: hsl(120, 100%, 40%);">+ case MCS2 :</span><br><span style="color: hsl(120, 100%, 40%);">+ case MCS5 :</span><br><span style="color: hsl(120, 100%, 40%);">+ case MCS6 :</span><br><span> *punct = ((enum egprs_puncturing_values)((*punct + 1) %</span><br><span> EGPRS_MAX_PS_NUM_2));</span><br><span> break;</span><br><span style="color: hsl(0, 100%, 40%);">- case GprsCodingScheme::MCS3 :</span><br><span style="color: hsl(0, 100%, 40%);">- case GprsCodingScheme::MCS4 :</span><br><span style="color: hsl(0, 100%, 40%);">- case GprsCodingScheme::MCS7 :</span><br><span style="color: hsl(0, 100%, 40%);">- case GprsCodingScheme::MCS8 :</span><br><span style="color: hsl(0, 100%, 40%);">- case GprsCodingScheme::MCS9 :</span><br><span style="color: hsl(120, 100%, 40%);">+ case MCS3 :</span><br><span style="color: hsl(120, 100%, 40%);">+ case MCS4 :</span><br><span style="color: hsl(120, 100%, 40%);">+ case MCS7 :</span><br><span style="color: hsl(120, 100%, 40%);">+ case MCS8 :</span><br><span style="color: hsl(120, 100%, 40%);">+ case MCS9 :</span><br><span> *punct = ((enum egprs_puncturing_values)((*punct + 1) %</span><br><span> EGPRS_MAX_PS_NUM_3));</span><br><span> break;</span><br><span>diff --git a/src/tbf_dl.cpp b/src/tbf_dl.cpp</span><br><span>index 0ef3032..7b0052f 100644</span><br><span>--- a/src/tbf_dl.cpp</span><br><span>+++ b/src/tbf_dl.cpp</span><br><span>@@ -395,9 +395,9 @@</span><br><span> * transistion is handled.</span><br><span> * Refer commit be881c028fc4da00c4046ecd9296727975c206a3</span><br><span> */</span><br><span style="color: hsl(0, 100%, 40%);">- if (m_rlc.block(bsn)->cs_init == GprsCodingScheme::MCS8)</span><br><span style="color: hsl(120, 100%, 40%);">+ if (m_rlc.block(bsn)->cs_init == MCS8)</span><br><span> m_rlc.block(bsn)->cs_current_trans =</span><br><span style="color: hsl(0, 100%, 40%);">- GprsCodingScheme::MCS8;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCS8;</span><br><span> } else</span><br><span> m_rlc.block(bsn)->cs_current_trans =</span><br><span> m_rlc.block(bsn)->cs_last;</span><br><span>@@ -701,9 +701,9 @@</span><br><span> * if the intial mcs is 8 and retransmission mcs is either 6 or 3</span><br><span> * we have to include the padding of 6 octets in first segment</span><br><span> */</span><br><span style="color: hsl(0, 100%, 40%);">- if ((GprsCodingScheme::Scheme(cs_init) == GprsCodingScheme::MCS8) &&</span><br><span style="color: hsl(0, 100%, 40%);">- (GprsCodingScheme::Scheme(cs) == GprsCodingScheme::MCS6 ||</span><br><span style="color: hsl(0, 100%, 40%);">- GprsCodingScheme::Scheme(cs) == GprsCodingScheme::MCS3)) {</span><br><span style="color: hsl(120, 100%, 40%);">+ if ((CodingScheme(cs_init) == MCS8) &&</span><br><span style="color: hsl(120, 100%, 40%);">+ (CodingScheme(cs) == MCS6 ||</span><br><span style="color: hsl(120, 100%, 40%);">+ CodingScheme(cs) == MCS3)) {</span><br><span> if (spb_status == EGPRS_RESEG_DL_DEFAULT ||</span><br><span> spb_status == EGPRS_RESEG_SECOND_SEG_SENT)</span><br><span> need_padding = true;</span><br><span>@@ -715,7 +715,7 @@</span><br><span> * Refer commit be881c028fc4da00c4046ecd9296727975c206a3</span><br><span> * dated 2016-02-07 23:45:40 (UTC)</span><br><span> */</span><br><span style="color: hsl(0, 100%, 40%);">- if (cs != GprsCodingScheme(GprsCodingScheme::MCS8))</span><br><span style="color: hsl(120, 100%, 40%);">+ if (cs != GprsCodingScheme(MCS8))</span><br><span> cs.decToSingleBlock(&need_padding);</span><br><span> }</span><br><span> </span><br><span>@@ -1261,19 +1261,19 @@</span><br><span> if (cs_current_trans.headerTypeData() ==</span><br><span> GprsCodingScheme::HEADER_EGPRS_DATA_TYPE_3) {</span><br><span> if (*block_status_dl == EGPRS_RESEG_FIRST_SEG_SENT) {</span><br><span style="color: hsl(0, 100%, 40%);">- switch (GprsCodingScheme::Scheme(cs_init)) {</span><br><span style="color: hsl(0, 100%, 40%);">- case GprsCodingScheme::MCS6 :</span><br><span style="color: hsl(0, 100%, 40%);">- case GprsCodingScheme::MCS9 :</span><br><span style="color: hsl(120, 100%, 40%);">+ switch (CodingScheme(cs_init)) {</span><br><span style="color: hsl(120, 100%, 40%);">+ case MCS6 :</span><br><span style="color: hsl(120, 100%, 40%);">+ case MCS9 :</span><br><span> *block_data = &rlc_data->block[37];</span><br><span> break;</span><br><span style="color: hsl(0, 100%, 40%);">- case GprsCodingScheme::MCS7 :</span><br><span style="color: hsl(0, 100%, 40%);">- case GprsCodingScheme::MCS5 :</span><br><span style="color: hsl(120, 100%, 40%);">+ case MCS7 :</span><br><span style="color: hsl(120, 100%, 40%);">+ case MCS5 :</span><br><span> *block_data = &rlc_data->block[28];</span><br><span> break;</span><br><span style="color: hsl(0, 100%, 40%);">- case GprsCodingScheme::MCS8 :</span><br><span style="color: hsl(120, 100%, 40%);">+ case MCS8 :</span><br><span> *block_data = &rlc_data->block[31];</span><br><span> break;</span><br><span style="color: hsl(0, 100%, 40%);">- case GprsCodingScheme::MCS4 :</span><br><span style="color: hsl(120, 100%, 40%);">+ case MCS4 :</span><br><span> *block_data = &rlc_data->block[22];</span><br><span> break;</span><br><span> default:</span><br><span>@@ -1291,10 +1291,10 @@</span><br><span> (cs_init.headerTypeData() ==</span><br><span> GprsCodingScheme::HEADER_EGPRS_DATA_TYPE_2)) {</span><br><span> return EGPRS_RESEG_FIRST_SEG_SENT;</span><br><span style="color: hsl(0, 100%, 40%);">- } else if ((GprsCodingScheme::Scheme(cs_init) ==</span><br><span style="color: hsl(0, 100%, 40%);">- GprsCodingScheme::MCS4) &&</span><br><span style="color: hsl(0, 100%, 40%);">- (GprsCodingScheme::Scheme(cs_current_trans) ==</span><br><span style="color: hsl(0, 100%, 40%);">- GprsCodingScheme::MCS1)) {</span><br><span style="color: hsl(120, 100%, 40%);">+ } else if ((CodingScheme(cs_init) ==</span><br><span style="color: hsl(120, 100%, 40%);">+ MCS4) &&</span><br><span style="color: hsl(120, 100%, 40%);">+ (CodingScheme(cs_current_trans) ==</span><br><span style="color: hsl(120, 100%, 40%);">+ MCS1)) {</span><br><span> return EGPRS_RESEG_FIRST_SEG_SENT;</span><br><span> }</span><br><span> }</span><br><span>@@ -1343,10 +1343,10 @@</span><br><span> GprsCodingScheme::HEADER_EGPRS_DATA_TYPE_2)) {</span><br><span> bts->spb_downlink_first_segment();</span><br><span> return EGPRS_RLCMAC_DL_FIRST_SEG;</span><br><span style="color: hsl(0, 100%, 40%);">- } else if ((GprsCodingScheme::Scheme(cs_init) ==</span><br><span style="color: hsl(0, 100%, 40%);">- GprsCodingScheme::MCS4) &&</span><br><span style="color: hsl(0, 100%, 40%);">- (GprsCodingScheme::Scheme(cs_current_trans) ==</span><br><span style="color: hsl(0, 100%, 40%);">- GprsCodingScheme::MCS1)) {</span><br><span style="color: hsl(120, 100%, 40%);">+ } else if ((CodingScheme(cs_init) ==</span><br><span style="color: hsl(120, 100%, 40%);">+ MCS4) &&</span><br><span style="color: hsl(120, 100%, 40%);">+ (CodingScheme(cs_current_trans) ==</span><br><span style="color: hsl(120, 100%, 40%);">+ MCS1)) {</span><br><span> bts->spb_downlink_first_segment();</span><br><span> return EGPRS_RLCMAC_DL_FIRST_SEG;</span><br><span> }</span><br><span>@@ -1367,61 +1367,61 @@</span><br><span> {</span><br><span> uint8_t coding_scheme = 0;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- coding_scheme = GprsCodingScheme::Scheme(cs);</span><br><span style="color: hsl(120, 100%, 40%);">+ coding_scheme = CodingScheme(cs);</span><br><span> if (cs.isGprs()) {</span><br><span> switch (coding_scheme) {</span><br><span style="color: hsl(0, 100%, 40%);">- case GprsCodingScheme::CS1 :</span><br><span style="color: hsl(120, 100%, 40%);">+ case CS1 :</span><br><span> bts->gprs_dl_cs1();</span><br><span> rate_ctr_inc(&m_dl_gprs_ctrs->ctr[TBF_CTR_GPRS_DL_CS1]);</span><br><span> break;</span><br><span style="color: hsl(0, 100%, 40%);">- case GprsCodingScheme::CS2 :</span><br><span style="color: hsl(120, 100%, 40%);">+ case CS2 :</span><br><span> bts->gprs_dl_cs2();</span><br><span> rate_ctr_inc(&m_dl_gprs_ctrs->ctr[TBF_CTR_GPRS_DL_CS2]);</span><br><span> break;</span><br><span style="color: hsl(0, 100%, 40%);">- case GprsCodingScheme::CS3 :</span><br><span style="color: hsl(120, 100%, 40%);">+ case CS3 :</span><br><span> bts->gprs_dl_cs3();</span><br><span> rate_ctr_inc(&m_dl_gprs_ctrs->ctr[TBF_CTR_GPRS_DL_CS3]);</span><br><span> break;</span><br><span style="color: hsl(0, 100%, 40%);">- case GprsCodingScheme::CS4 :</span><br><span style="color: hsl(120, 100%, 40%);">+ case CS4 :</span><br><span> bts->gprs_dl_cs4();</span><br><span> rate_ctr_inc(&m_dl_gprs_ctrs->ctr[TBF_CTR_GPRS_DL_CS4]);</span><br><span> break;</span><br><span> }</span><br><span> } else {</span><br><span> switch (coding_scheme) {</span><br><span style="color: hsl(0, 100%, 40%);">- case GprsCodingScheme::MCS1 :</span><br><span style="color: hsl(120, 100%, 40%);">+ case MCS1 :</span><br><span> bts->egprs_dl_mcs1();</span><br><span> rate_ctr_inc(&m_dl_egprs_ctrs->ctr[TBF_CTR_EGPRS_DL_MCS1]);</span><br><span> break;</span><br><span style="color: hsl(0, 100%, 40%);">- case GprsCodingScheme::MCS2 :</span><br><span style="color: hsl(120, 100%, 40%);">+ case MCS2 :</span><br><span> bts->egprs_dl_mcs2();</span><br><span> rate_ctr_inc(&m_dl_egprs_ctrs->ctr[TBF_CTR_EGPRS_DL_MCS2]);</span><br><span> break;</span><br><span style="color: hsl(0, 100%, 40%);">- case GprsCodingScheme::MCS3 :</span><br><span style="color: hsl(120, 100%, 40%);">+ case MCS3 :</span><br><span> bts->egprs_dl_mcs3();</span><br><span> rate_ctr_inc(&m_dl_egprs_ctrs->ctr[TBF_CTR_EGPRS_DL_MCS3]);</span><br><span> break;</span><br><span style="color: hsl(0, 100%, 40%);">- case GprsCodingScheme::MCS4 :</span><br><span style="color: hsl(120, 100%, 40%);">+ case MCS4 :</span><br><span> bts->egprs_dl_mcs4();</span><br><span> rate_ctr_inc(&m_dl_egprs_ctrs->ctr[TBF_CTR_EGPRS_DL_MCS4]);</span><br><span> break;</span><br><span style="color: hsl(0, 100%, 40%);">- case GprsCodingScheme::MCS5 :</span><br><span style="color: hsl(120, 100%, 40%);">+ case MCS5 :</span><br><span> bts->egprs_dl_mcs5();</span><br><span> rate_ctr_inc(&m_dl_egprs_ctrs->ctr[TBF_CTR_EGPRS_DL_MCS5]);</span><br><span> break;</span><br><span style="color: hsl(0, 100%, 40%);">- case GprsCodingScheme::MCS6 :</span><br><span style="color: hsl(120, 100%, 40%);">+ case MCS6 :</span><br><span> bts->egprs_dl_mcs6();</span><br><span> rate_ctr_inc(&m_dl_egprs_ctrs->ctr[TBF_CTR_EGPRS_DL_MCS6]);</span><br><span> break;</span><br><span style="color: hsl(0, 100%, 40%);">- case GprsCodingScheme::MCS7 :</span><br><span style="color: hsl(120, 100%, 40%);">+ case MCS7 :</span><br><span> bts->egprs_dl_mcs7();</span><br><span> rate_ctr_inc(&m_dl_egprs_ctrs->ctr[TBF_CTR_EGPRS_DL_MCS7]);</span><br><span> break;</span><br><span style="color: hsl(0, 100%, 40%);">- case GprsCodingScheme::MCS8 :</span><br><span style="color: hsl(120, 100%, 40%);">+ case MCS8 :</span><br><span> bts->egprs_dl_mcs8();</span><br><span> rate_ctr_inc(&m_dl_egprs_ctrs->ctr[TBF_CTR_EGPRS_DL_MCS8]);</span><br><span> break;</span><br><span style="color: hsl(0, 100%, 40%);">- case GprsCodingScheme::MCS9 :</span><br><span style="color: hsl(120, 100%, 40%);">+ case MCS9 :</span><br><span> bts->egprs_dl_mcs9();</span><br><span> rate_ctr_inc(&m_dl_egprs_ctrs->ctr[TBF_CTR_EGPRS_DL_MCS9]);</span><br><span> break;</span><br><span>diff --git a/src/tbf_ul.cpp b/src/tbf_ul.cpp</span><br><span>index 7937f8b..bc36733 100644</span><br><span>--- a/src/tbf_ul.cpp</span><br><span>+++ b/src/tbf_ul.cpp</span><br><span>@@ -501,18 +501,18 @@</span><br><span> * upgrade the MCS to the type 2</span><br><span> */</span><br><span> if (assemble_status == EGPRS_RESEG_DEFAULT) {</span><br><span style="color: hsl(0, 100%, 40%);">- switch (GprsCodingScheme::Scheme(rlc->cs)) {</span><br><span style="color: hsl(0, 100%, 40%);">- case GprsCodingScheme::MCS3 :</span><br><span style="color: hsl(0, 100%, 40%);">- block->cs_last = GprsCodingScheme::MCS6;</span><br><span style="color: hsl(120, 100%, 40%);">+ switch (CodingScheme(rlc->cs)) {</span><br><span style="color: hsl(120, 100%, 40%);">+ case MCS3 :</span><br><span style="color: hsl(120, 100%, 40%);">+ block->cs_last = MCS6;</span><br><span> LOGPTBFUL(this, LOGL_DEBUG, "Upgrading to MCS6\n");</span><br><span> break;</span><br><span style="color: hsl(0, 100%, 40%);">- case GprsCodingScheme::MCS2 :</span><br><span style="color: hsl(0, 100%, 40%);">- block->cs_last = GprsCodingScheme::MCS5;</span><br><span style="color: hsl(120, 100%, 40%);">+ case MCS2 :</span><br><span style="color: hsl(120, 100%, 40%);">+ block->cs_last = MCS5;</span><br><span> LOGPTBFUL(this, LOGL_DEBUG, "Upgrading to MCS5\n");</span><br><span> break;</span><br><span style="color: hsl(0, 100%, 40%);">- case GprsCodingScheme::MCS1 :</span><br><span style="color: hsl(120, 100%, 40%);">+ case MCS1 :</span><br><span> LOGPTBFUL(this, LOGL_DEBUG, "Upgrading to MCS4\n");</span><br><span style="color: hsl(0, 100%, 40%);">- block->cs_last = GprsCodingScheme::MCS4;</span><br><span style="color: hsl(120, 100%, 40%);">+ block->cs_last = MCS4;</span><br><span> break;</span><br><span> default:</span><br><span> LOGPTBFUL(this, LOGL_ERROR,</span><br><span>@@ -528,61 +528,61 @@</span><br><span> {</span><br><span> uint8_t coding_scheme = 0;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- coding_scheme = GprsCodingScheme::Scheme(cs);</span><br><span style="color: hsl(120, 100%, 40%);">+ coding_scheme = CodingScheme(cs);</span><br><span> if (cs.isGprs()) {</span><br><span> switch (coding_scheme) {</span><br><span style="color: hsl(0, 100%, 40%);">- case GprsCodingScheme::CS1 :</span><br><span style="color: hsl(120, 100%, 40%);">+ case CS1 :</span><br><span> bts->gprs_ul_cs1();</span><br><span> rate_ctr_inc(&m_ul_gprs_ctrs->ctr[TBF_CTR_GPRS_UL_CS1]);</span><br><span> break;</span><br><span style="color: hsl(0, 100%, 40%);">- case GprsCodingScheme::CS2 :</span><br><span style="color: hsl(120, 100%, 40%);">+ case CS2 :</span><br><span> bts->gprs_ul_cs2();</span><br><span> rate_ctr_inc(&m_ul_gprs_ctrs->ctr[TBF_CTR_GPRS_UL_CS2]);</span><br><span> break;</span><br><span style="color: hsl(0, 100%, 40%);">- case GprsCodingScheme::CS3 :</span><br><span style="color: hsl(120, 100%, 40%);">+ case CS3 :</span><br><span> bts->gprs_ul_cs3();</span><br><span> rate_ctr_inc(&m_ul_gprs_ctrs->ctr[TBF_CTR_GPRS_UL_CS3]);</span><br><span> break;</span><br><span style="color: hsl(0, 100%, 40%);">- case GprsCodingScheme::CS4 :</span><br><span style="color: hsl(120, 100%, 40%);">+ case CS4 :</span><br><span> bts->gprs_ul_cs4();</span><br><span> rate_ctr_inc(&m_ul_gprs_ctrs->ctr[TBF_CTR_GPRS_UL_CS4]);</span><br><span> break;</span><br><span> }</span><br><span> } else {</span><br><span> switch (coding_scheme) {</span><br><span style="color: hsl(0, 100%, 40%);">- case GprsCodingScheme::MCS1 :</span><br><span style="color: hsl(120, 100%, 40%);">+ case MCS1 :</span><br><span> bts->egprs_ul_mcs1();</span><br><span> rate_ctr_inc(&m_ul_egprs_ctrs->ctr[TBF_CTR_EGPRS_UL_MCS1]);</span><br><span> break;</span><br><span style="color: hsl(0, 100%, 40%);">- case GprsCodingScheme::MCS2 :</span><br><span style="color: hsl(120, 100%, 40%);">+ case MCS2 :</span><br><span> bts->egprs_ul_mcs2();</span><br><span> rate_ctr_inc(&m_ul_egprs_ctrs->ctr[TBF_CTR_EGPRS_UL_MCS2]);</span><br><span> break;</span><br><span style="color: hsl(0, 100%, 40%);">- case GprsCodingScheme::MCS3 :</span><br><span style="color: hsl(120, 100%, 40%);">+ case MCS3 :</span><br><span> bts->egprs_ul_mcs3();</span><br><span> rate_ctr_inc(&m_ul_egprs_ctrs->ctr[TBF_CTR_EGPRS_UL_MCS3]);</span><br><span> break;</span><br><span style="color: hsl(0, 100%, 40%);">- case GprsCodingScheme::MCS4 :</span><br><span style="color: hsl(120, 100%, 40%);">+ case MCS4 :</span><br><span> bts->egprs_ul_mcs4();</span><br><span> rate_ctr_inc(&m_ul_egprs_ctrs->ctr[TBF_CTR_EGPRS_UL_MCS4]);</span><br><span> break;</span><br><span style="color: hsl(0, 100%, 40%);">- case GprsCodingScheme::MCS5 :</span><br><span style="color: hsl(120, 100%, 40%);">+ case MCS5 :</span><br><span> bts->egprs_ul_mcs5();</span><br><span> rate_ctr_inc(&m_ul_egprs_ctrs->ctr[TBF_CTR_EGPRS_UL_MCS5]);</span><br><span> break;</span><br><span style="color: hsl(0, 100%, 40%);">- case GprsCodingScheme::MCS6 :</span><br><span style="color: hsl(120, 100%, 40%);">+ case MCS6 :</span><br><span> bts->egprs_ul_mcs6();</span><br><span> rate_ctr_inc(&m_ul_egprs_ctrs->ctr[TBF_CTR_EGPRS_UL_MCS6]);</span><br><span> break;</span><br><span style="color: hsl(0, 100%, 40%);">- case GprsCodingScheme::MCS7 :</span><br><span style="color: hsl(120, 100%, 40%);">+ case MCS7 :</span><br><span> bts->egprs_ul_mcs7();</span><br><span> rate_ctr_inc(&m_ul_egprs_ctrs->ctr[TBF_CTR_EGPRS_UL_MCS7]);</span><br><span> break;</span><br><span style="color: hsl(0, 100%, 40%);">- case GprsCodingScheme::MCS8 :</span><br><span style="color: hsl(120, 100%, 40%);">+ case MCS8 :</span><br><span> bts->egprs_ul_mcs8();</span><br><span> rate_ctr_inc(&m_ul_egprs_ctrs->ctr[TBF_CTR_EGPRS_UL_MCS8]);</span><br><span> break;</span><br><span style="color: hsl(0, 100%, 40%);">- case GprsCodingScheme::MCS9 :</span><br><span style="color: hsl(120, 100%, 40%);">+ case MCS9 :</span><br><span> bts->egprs_ul_mcs9();</span><br><span> rate_ctr_inc(&m_ul_egprs_ctrs->ctr[TBF_CTR_EGPRS_UL_MCS9]);</span><br><span> break;</span><br><span>diff --git a/tests/edge/EdgeTest.cpp b/tests/edge/EdgeTest.cpp</span><br><span>index 0cb123e..9db90ca 100644</span><br><span>--- a/tests/edge/EdgeTest.cpp</span><br><span>+++ b/tests/edge/EdgeTest.cpp</span><br><span>@@ -121,33 +121,33 @@</span><br><span> unsigned i;</span><br><span> uint8_t last_size_UL;</span><br><span> uint8_t last_size_DL;</span><br><span style="color: hsl(0, 100%, 40%);">- GprsCodingScheme::Scheme gprs_schemes[] = {</span><br><span style="color: hsl(0, 100%, 40%);">- GprsCodingScheme::CS1,</span><br><span style="color: hsl(0, 100%, 40%);">- GprsCodingScheme::CS2,</span><br><span style="color: hsl(0, 100%, 40%);">- GprsCodingScheme::CS3,</span><br><span style="color: hsl(0, 100%, 40%);">- GprsCodingScheme::CS4</span><br><span style="color: hsl(120, 100%, 40%);">+ CodingScheme gprs_schemes[] = {</span><br><span style="color: hsl(120, 100%, 40%);">+ CS1,</span><br><span style="color: hsl(120, 100%, 40%);">+ CS2,</span><br><span style="color: hsl(120, 100%, 40%);">+ CS3,</span><br><span style="color: hsl(120, 100%, 40%);">+ CS4</span><br><span> };</span><br><span> struct {</span><br><span style="color: hsl(0, 100%, 40%);">- GprsCodingScheme::Scheme s;</span><br><span style="color: hsl(120, 100%, 40%);">+ CodingScheme s;</span><br><span> bool is_gmsk;</span><br><span> } egprs_schemes[] = {</span><br><span style="color: hsl(0, 100%, 40%);">- {GprsCodingScheme::MCS1, true},</span><br><span style="color: hsl(0, 100%, 40%);">- {GprsCodingScheme::MCS2, true},</span><br><span style="color: hsl(0, 100%, 40%);">- {GprsCodingScheme::MCS3, true},</span><br><span style="color: hsl(0, 100%, 40%);">- {GprsCodingScheme::MCS4, true},</span><br><span style="color: hsl(0, 100%, 40%);">- {GprsCodingScheme::MCS5, false},</span><br><span style="color: hsl(0, 100%, 40%);">- {GprsCodingScheme::MCS6, false},</span><br><span style="color: hsl(0, 100%, 40%);">- {GprsCodingScheme::MCS7, false},</span><br><span style="color: hsl(0, 100%, 40%);">- {GprsCodingScheme::MCS8, false},</span><br><span style="color: hsl(0, 100%, 40%);">- {GprsCodingScheme::MCS9, false},</span><br><span style="color: hsl(120, 100%, 40%);">+ { MCS1, true},</span><br><span style="color: hsl(120, 100%, 40%);">+ { MCS2, true},</span><br><span style="color: hsl(120, 100%, 40%);">+ { MCS3, true},</span><br><span style="color: hsl(120, 100%, 40%);">+ { MCS4, true},</span><br><span style="color: hsl(120, 100%, 40%);">+ { MCS5, false},</span><br><span style="color: hsl(120, 100%, 40%);">+ { MCS6, false},</span><br><span style="color: hsl(120, 100%, 40%);">+ { MCS7, false},</span><br><span style="color: hsl(120, 100%, 40%);">+ { MCS8, false},</span><br><span style="color: hsl(120, 100%, 40%);">+ { MCS9, false},</span><br><span> };</span><br><span> </span><br><span> printf("=== start %s ===\n", __func__);</span><br><span> </span><br><span> GprsCodingScheme cs;</span><br><span> OSMO_ASSERT(!cs);</span><br><span style="color: hsl(0, 100%, 40%);">- OSMO_ASSERT(GprsCodingScheme::Scheme(cs) == GprsCodingScheme::UNKNOWN);</span><br><span style="color: hsl(0, 100%, 40%);">- OSMO_ASSERT(cs == GprsCodingScheme(GprsCodingScheme::UNKNOWN));</span><br><span style="color: hsl(120, 100%, 40%);">+ OSMO_ASSERT(CodingScheme(cs) == UNKNOWN);</span><br><span style="color: hsl(120, 100%, 40%);">+ OSMO_ASSERT(cs == GprsCodingScheme(UNKNOWN));</span><br><span> OSMO_ASSERT(!cs.isCompatible(GprsCodingScheme::GPRS));</span><br><span> OSMO_ASSERT(!cs.isCompatible(GprsCodingScheme::EGPRS_GMSK));</span><br><span> OSMO_ASSERT(!cs.isCompatible(GprsCodingScheme::EGPRS));</span><br><span>@@ -160,7 +160,7 @@</span><br><span> OSMO_ASSERT(current_cs.isGprs());</span><br><span> OSMO_ASSERT(!current_cs.isEgprs());</span><br><span> OSMO_ASSERT(!current_cs.isEgprsGmsk());</span><br><span style="color: hsl(0, 100%, 40%);">- OSMO_ASSERT(GprsCodingScheme::Scheme(current_cs) == gprs_schemes[i]);</span><br><span style="color: hsl(120, 100%, 40%);">+ OSMO_ASSERT(CodingScheme(current_cs) == gprs_schemes[i]);</span><br><span> OSMO_ASSERT(current_cs == GprsCodingScheme(gprs_schemes[i]));</span><br><span> </span><br><span> OSMO_ASSERT(check_strong_monotonicity(¤t_cs, last_size_UL, last_size_DL));</span><br><span>@@ -183,7 +183,7 @@</span><br><span> OSMO_ASSERT(!current_cs.isGprs());</span><br><span> OSMO_ASSERT(current_cs.isEgprs());</span><br><span> OSMO_ASSERT(!!current_cs.isEgprsGmsk() == !!egprs_schemes[i].is_gmsk);</span><br><span style="color: hsl(0, 100%, 40%);">- OSMO_ASSERT(GprsCodingScheme::Scheme(current_cs) == egprs_schemes[i].s);</span><br><span style="color: hsl(120, 100%, 40%);">+ OSMO_ASSERT(CodingScheme(current_cs) == egprs_schemes[i].s);</span><br><span> OSMO_ASSERT(current_cs == GprsCodingScheme(egprs_schemes[i].s));</span><br><span> </span><br><span> OSMO_ASSERT(check_strong_monotonicity(¤t_cs, last_size_UL, last_size_DL));</span><br><span>@@ -213,7 +213,7 @@</span><br><span> printf("=== start %s ===\n", __func__);</span><br><span> </span><br><span> /* TS 44.060, B.1 */</span><br><span style="color: hsl(0, 100%, 40%);">- cs = GprsCodingScheme::CS4;</span><br><span style="color: hsl(120, 100%, 40%);">+ cs = CS4;</span><br><span> rdbi.data_len = cs.maxDataBlockBytes();</span><br><span> rdbi.e = 0;</span><br><span> rdbi.ti = 0;</span><br><span>@@ -237,7 +237,7 @@</span><br><span> OSMO_ASSERT(!chunks[2].is_complete);</span><br><span> </span><br><span> /* TS 44.060, B.2 */</span><br><span style="color: hsl(0, 100%, 40%);">- cs = GprsCodingScheme::CS1;</span><br><span style="color: hsl(120, 100%, 40%);">+ cs = CS1;</span><br><span> rdbi.data_len = cs.maxDataBlockBytes();</span><br><span> rdbi.e = 0;</span><br><span> rdbi.ti = 0;</span><br><span>@@ -271,7 +271,7 @@</span><br><span> OSMO_ASSERT(!chunks[1].is_complete);</span><br><span> </span><br><span> /* TS 44.060, B.3 */</span><br><span style="color: hsl(0, 100%, 40%);">- cs = GprsCodingScheme::CS1;</span><br><span style="color: hsl(120, 100%, 40%);">+ cs = CS1;</span><br><span> rdbi.data_len = cs.maxDataBlockBytes();</span><br><span> rdbi.e = 0;</span><br><span> rdbi.ti = 0;</span><br><span>@@ -292,7 +292,7 @@</span><br><span> OSMO_ASSERT(chunks[1].is_complete);</span><br><span> </span><br><span> /* TS 44.060, B.4 */</span><br><span style="color: hsl(0, 100%, 40%);">- cs = GprsCodingScheme::CS1;</span><br><span style="color: hsl(120, 100%, 40%);">+ cs = CS1;</span><br><span> rdbi.data_len = cs.maxDataBlockBytes();</span><br><span> rdbi.e = 1;</span><br><span> rdbi.ti = 0;</span><br><span>@@ -308,7 +308,7 @@</span><br><span> OSMO_ASSERT(!chunks[0].is_complete);</span><br><span> </span><br><span> /* TS 44.060, B.6 */</span><br><span style="color: hsl(0, 100%, 40%);">- cs = GprsCodingScheme::CS1;</span><br><span style="color: hsl(120, 100%, 40%);">+ cs = CS1;</span><br><span> rdbi.data_len = cs.maxDataBlockBytes();</span><br><span> rdbi.e = 1;</span><br><span> rdbi.ti = 0;</span><br><span>@@ -324,7 +324,7 @@</span><br><span> OSMO_ASSERT(chunks[0].is_complete);</span><br><span> </span><br><span> /* TS 44.060, B.8.1 */</span><br><span style="color: hsl(0, 100%, 40%);">- cs = GprsCodingScheme::MCS4;</span><br><span style="color: hsl(120, 100%, 40%);">+ cs = MCS4;</span><br><span> rdbi.data_len = cs.maxDataBlockBytes();</span><br><span> rdbi.e = 0;</span><br><span> rdbi.ti = 0;</span><br><span>@@ -353,7 +353,7 @@</span><br><span> * includes the FBI/E header bits into the N2 octet count which</span><br><span> * is not consistent with Section 10.3a.1 & 10.3a.2. */</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- cs = GprsCodingScheme::MCS2;</span><br><span style="color: hsl(120, 100%, 40%);">+ cs = MCS2;</span><br><span> rdbi.data_len = cs.maxDataBlockBytes();</span><br><span> rdbi.e = 0;</span><br><span> rdbi.ti = 0;</span><br><span>@@ -417,7 +417,7 @@</span><br><span> </span><br><span> /* Note that the spec confuses the byte numbering here, too (see above) */</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- cs = GprsCodingScheme::MCS2;</span><br><span style="color: hsl(120, 100%, 40%);">+ cs = MCS2;</span><br><span> rdbi.data_len = cs.maxDataBlockBytes();</span><br><span> rdbi.e = 1;</span><br><span> rdbi.ti = 0;</span><br><span>@@ -433,7 +433,7 @@</span><br><span> OSMO_ASSERT(chunks[0].is_complete);</span><br><span> </span><br><span> /* CS-1, TLLI, last block, single chunk until the end of the block */</span><br><span style="color: hsl(0, 100%, 40%);">- cs = GprsCodingScheme::CS1;</span><br><span style="color: hsl(120, 100%, 40%);">+ cs = CS1;</span><br><span> rdbi.data_len = cs.maxDataBlockBytes();</span><br><span> rdbi.e = 1;</span><br><span> rdbi.ti = 1;</span><br><span>@@ -454,7 +454,7 @@</span><br><span> OSMO_ASSERT(chunks[0].is_complete);</span><br><span> </span><br><span> /* Like TS 44.060, B.2, first RLC block but with TLLI */</span><br><span style="color: hsl(0, 100%, 40%);">- cs = GprsCodingScheme::CS1;</span><br><span style="color: hsl(120, 100%, 40%);">+ cs = CS1;</span><br><span> rdbi.data_len = cs.maxDataBlockBytes();</span><br><span> rdbi.e = 0;</span><br><span> rdbi.ti = 1;</span><br><span>@@ -476,7 +476,7 @@</span><br><span> OSMO_ASSERT(!chunks[0].is_complete);</span><br><span> </span><br><span> /* Like TS 44.060, B.8.1 but with TLLI */</span><br><span style="color: hsl(0, 100%, 40%);">- cs = GprsCodingScheme::MCS4;</span><br><span style="color: hsl(120, 100%, 40%);">+ cs = MCS4;</span><br><span> rdbi.data_len = cs.maxDataBlockBytes();</span><br><span> rdbi.e = 0;</span><br><span> rdbi.ti = 1;</span><br><span>@@ -543,7 +543,7 @@</span><br><span> llc.init();</span><br><span> </span><br><span> /* TS 44.060, B.1 */</span><br><span style="color: hsl(0, 100%, 40%);">- cs = GprsCodingScheme::CS4;</span><br><span style="color: hsl(120, 100%, 40%);">+ cs = CS4;</span><br><span> gprs_rlc_data_block_info_init(&rdbi, cs, false, 0);</span><br><span> num_chunks = 0;</span><br><span> write_offset = 0;</span><br><span>@@ -594,7 +594,7 @@</span><br><span> OSMO_ASSERT(data[2] == 0);</span><br><span> </span><br><span> /* TS 44.060, B.2 */</span><br><span style="color: hsl(0, 100%, 40%);">- cs = GprsCodingScheme::CS1;</span><br><span style="color: hsl(120, 100%, 40%);">+ cs = CS1;</span><br><span> </span><br><span> /* Block 1 */</span><br><span> gprs_rlc_data_block_info_init(&rdbi, cs, false, 0);</span><br><span>@@ -654,7 +654,7 @@</span><br><span> OSMO_ASSERT(data[1] == 0);</span><br><span> </span><br><span> /* TS 44.060, B.3 */</span><br><span style="color: hsl(0, 100%, 40%);">- cs = GprsCodingScheme::CS1;</span><br><span style="color: hsl(120, 100%, 40%);">+ cs = CS1;</span><br><span> </span><br><span> /* Block 1 */</span><br><span> gprs_rlc_data_block_info_init(&rdbi, cs, false, 0);</span><br><span>@@ -693,7 +693,7 @@</span><br><span> OSMO_ASSERT(data[2] == 0);</span><br><span> </span><br><span> /* TS 44.060, B.4 */</span><br><span style="color: hsl(0, 100%, 40%);">- cs = GprsCodingScheme::CS1;</span><br><span style="color: hsl(120, 100%, 40%);">+ cs = CS1;</span><br><span> </span><br><span> /* Block 1 */</span><br><span> gprs_rlc_data_block_info_init(&rdbi, cs, false, 0);</span><br><span>@@ -718,7 +718,7 @@</span><br><span> OSMO_ASSERT(data[0] == 0);</span><br><span> </span><br><span> /* TS 44.060, B.5 */</span><br><span style="color: hsl(0, 100%, 40%);">- cs = GprsCodingScheme::CS1;</span><br><span style="color: hsl(120, 100%, 40%);">+ cs = CS1;</span><br><span> </span><br><span> /* Block 1 */</span><br><span> gprs_rlc_data_block_info_init(&rdbi, cs, false, 0);</span><br><span>@@ -743,7 +743,7 @@</span><br><span> OSMO_ASSERT(data[0] == 0);</span><br><span> </span><br><span> /* TS 44.060, B.7 */</span><br><span style="color: hsl(0, 100%, 40%);">- cs = GprsCodingScheme::CS1;</span><br><span style="color: hsl(120, 100%, 40%);">+ cs = CS1;</span><br><span> </span><br><span> /* Block 1 */</span><br><span> gprs_rlc_data_block_info_init(&rdbi, cs, false, 0);</span><br><span>@@ -801,7 +801,7 @@</span><br><span> OSMO_ASSERT(data[1] == 0);</span><br><span> </span><br><span> /* TS 44.060, B.8.1 */</span><br><span style="color: hsl(0, 100%, 40%);">- cs = GprsCodingScheme::MCS4;</span><br><span style="color: hsl(120, 100%, 40%);">+ cs = MCS4;</span><br><span> </span><br><span> /* Block 1 */</span><br><span> gprs_rlc_data_block_info_init(&rdbi, cs, false, 0);</span><br><span>@@ -859,7 +859,7 @@</span><br><span> * includes the FBI/E header bits into the N2 octet count which</span><br><span> * is not consistent with Section 10.3a.1 & 10.3a.2. */</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- cs = GprsCodingScheme::MCS2;</span><br><span style="color: hsl(120, 100%, 40%);">+ cs = MCS2;</span><br><span> </span><br><span> /* Block 1 */</span><br><span> gprs_rlc_data_block_info_init(&rdbi, cs, false, 0);</span><br><span>@@ -991,7 +991,7 @@</span><br><span> </span><br><span> /* Note that the spec confuses the byte numbering here, too (see above) */</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- cs = GprsCodingScheme::MCS2;</span><br><span style="color: hsl(120, 100%, 40%);">+ cs = MCS2;</span><br><span> </span><br><span> /* Block 1 */</span><br><span> gprs_rlc_data_block_info_init(&rdbi, cs, false, 0);</span><br><span>@@ -1017,7 +1017,7 @@</span><br><span> </span><br><span> /* Final block with an LLC of size data_len-1 */</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- cs = GprsCodingScheme::MCS2;</span><br><span style="color: hsl(120, 100%, 40%);">+ cs = MCS2;</span><br><span> </span><br><span> /* Block 1 */</span><br><span> gprs_rlc_data_block_info_init(&rdbi, cs, false, 0);</span><br><span>@@ -1045,7 +1045,7 @@</span><br><span> </span><br><span> /* Final block with an LLC of size data_len-2 */</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- cs = GprsCodingScheme::MCS2;</span><br><span style="color: hsl(120, 100%, 40%);">+ cs = MCS2;</span><br><span> </span><br><span> /* Block 1 */</span><br><span> gprs_rlc_data_block_info_init(&rdbi, cs, false, 0);</span><br><span>@@ -1081,13 +1081,13 @@</span><br><span> uint8_t saved_block[256];</span><br><span> uint8_t test_block[256];</span><br><span> uint8_t out_block[256];</span><br><span style="color: hsl(0, 100%, 40%);">- GprsCodingScheme::Scheme scheme;</span><br><span style="color: hsl(120, 100%, 40%);">+ CodingScheme scheme;</span><br><span> int pattern;</span><br><span> volatile unsigned int block_idx, i;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- for (scheme = GprsCodingScheme::CS1;</span><br><span style="color: hsl(0, 100%, 40%);">- scheme < GprsCodingScheme::NUM_SCHEMES;</span><br><span style="color: hsl(0, 100%, 40%);">- scheme = GprsCodingScheme::Scheme(scheme + 1))</span><br><span style="color: hsl(120, 100%, 40%);">+ for (scheme = CS1;</span><br><span style="color: hsl(120, 100%, 40%);">+ scheme < NUM_SCHEMES;</span><br><span style="color: hsl(120, 100%, 40%);">+ scheme = CodingScheme(scheme + 1))</span><br><span> {</span><br><span> GprsCodingScheme cs(scheme);</span><br><span> </span><br><span>@@ -1148,13 +1148,13 @@</span><br><span> </span><br><span> printf("=== start %s ===\n", __func__);</span><br><span> gprs_rlc_data_info_init_dl(&rlc,</span><br><span style="color: hsl(0, 100%, 40%);">- GprsCodingScheme(GprsCodingScheme::CS1), false, 0);</span><br><span style="color: hsl(120, 100%, 40%);">+ GprsCodingScheme(CS1), false, 0);</span><br><span> OSMO_ASSERT(rlc.num_data_blocks == 1);</span><br><span> OSMO_ASSERT(rlc.data_offs_bits[0] == 24);</span><br><span> OSMO_ASSERT(rlc.block_info[0].data_len == 20);</span><br><span> </span><br><span> gprs_rlc_data_info_init_dl(&rlc,</span><br><span style="color: hsl(0, 100%, 40%);">- GprsCodingScheme(GprsCodingScheme::MCS1), false, 0);</span><br><span style="color: hsl(120, 100%, 40%);">+ GprsCodingScheme(MCS1), false, 0);</span><br><span> OSMO_ASSERT(rlc.num_data_blocks == 1);</span><br><span> OSMO_ASSERT(rlc.data_offs_bits[0] == 33);</span><br><span> OSMO_ASSERT(rlc.block_info[0].data_len == 22);</span><br><span>@@ -1193,7 +1193,7 @@</span><br><span> int rc, offs;</span><br><span> </span><br><span> /*without padding*/</span><br><span style="color: hsl(0, 100%, 40%);">- cs = GprsCodingScheme::MCS5;</span><br><span style="color: hsl(120, 100%, 40%);">+ cs = MCS5;</span><br><span> egprs2 = (struct gprs_rlc_ul_header_egprs_2 *) data;</span><br><span> egprs2->r = 1;</span><br><span> egprs2->si = 1;</span><br><span>@@ -1218,7 +1218,7 @@</span><br><span> OSMO_ASSERT(rlc.block_info[0].bsn == 0);</span><br><span> </span><br><span> /* with padding case */</span><br><span style="color: hsl(0, 100%, 40%);">- cs = GprsCodingScheme::MCS6;</span><br><span style="color: hsl(120, 100%, 40%);">+ cs = MCS6;</span><br><span> egprs2 = (struct gprs_rlc_ul_header_egprs_2 *) data;</span><br><span> egprs2->r = 1;</span><br><span> egprs2->si = 1;</span><br><span>@@ -1298,7 +1298,7 @@</span><br><span> tfi = 1;</span><br><span> </span><br><span> /* MCS 7 */</span><br><span style="color: hsl(0, 100%, 40%);">- cs = GprsCodingScheme::MCS7;</span><br><span style="color: hsl(120, 100%, 40%);">+ cs = MCS7;</span><br><span> egprs1 = (struct gprs_rlc_ul_header_egprs_1 *) data;</span><br><span> egprs1->si = 1;</span><br><span> egprs1->r = 1;</span><br><span>@@ -1326,7 +1326,7 @@</span><br><span> OSMO_ASSERT(rlc.tfi == 1);</span><br><span> </span><br><span> /* MCS 8 */</span><br><span style="color: hsl(0, 100%, 40%);">- cs = GprsCodingScheme::MCS8;</span><br><span style="color: hsl(120, 100%, 40%);">+ cs = MCS8;</span><br><span> egprs1 = (struct gprs_rlc_ul_header_egprs_1 *) data;</span><br><span> egprs1->si = 1;</span><br><span> egprs1->r = 1;</span><br><span>@@ -1354,7 +1354,7 @@</span><br><span> OSMO_ASSERT(rlc.tfi == 1);</span><br><span> </span><br><span> /* MCS 9 */</span><br><span style="color: hsl(0, 100%, 40%);">- cs = GprsCodingScheme::MCS9;</span><br><span style="color: hsl(120, 100%, 40%);">+ cs = MCS9;</span><br><span> egprs1 = (struct gprs_rlc_ul_header_egprs_1 *) data;</span><br><span> egprs1->si = 1;</span><br><span> egprs1->r = 1;</span><br><span>diff --git a/tests/tbf/TbfTest.cpp b/tests/tbf/TbfTest.cpp</span><br><span>index d78a4ab..0d473a1 100644</span><br><span>--- a/tests/tbf/TbfTest.cpp</span><br><span>+++ b/tests/tbf/TbfTest.cpp</span><br><span>@@ -720,7 +720,7 @@</span><br><span> * TS 44.060, B.8.1</span><br><span> * first seg received first, later second seg</span><br><span> */</span><br><span style="color: hsl(0, 100%, 40%);">- cs = GprsCodingScheme::MCS3;</span><br><span style="color: hsl(120, 100%, 40%);">+ cs = MCS3;</span><br><span> egprs3 = (struct gprs_rlc_ul_header_egprs_3 *) data_msg;</span><br><span> egprs3->si = 0;</span><br><span> egprs3->r = 1;</span><br><span>@@ -872,7 +872,7 @@</span><br><span> * TS 44.060, B.8.1</span><br><span> * first seg received first, later second seg</span><br><span> */</span><br><span style="color: hsl(0, 100%, 40%);">- cs = GprsCodingScheme::MCS3;</span><br><span style="color: hsl(120, 100%, 40%);">+ cs = MCS3;</span><br><span> egprs3 = (struct gprs_rlc_ul_header_egprs_3 *) data_msg;</span><br><span> egprs3->si = 1;</span><br><span> egprs3->r = 1;</span><br><span>@@ -917,7 +917,7 @@</span><br><span> OSMO_ASSERT(block->spb_status.block_status_ul ==</span><br><span> EGPRS_RESEG_DEFAULT);</span><br><span> OSMO_ASSERT(block->cs_last ==</span><br><span style="color: hsl(0, 100%, 40%);">- GprsCodingScheme::MCS6);</span><br><span style="color: hsl(120, 100%, 40%);">+ MCS6);</span><br><span> /* Assembled MCS is MCS6. so the size is 74 */</span><br><span> OSMO_ASSERT(block->len == 74);</span><br><span> </span><br><span>@@ -927,7 +927,7 @@</span><br><span> */</span><br><span> memset(data_msg, 0, sizeof(data_msg));</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- cs = GprsCodingScheme::MCS3;</span><br><span style="color: hsl(120, 100%, 40%);">+ cs = MCS3;</span><br><span> egprs3 = (struct gprs_rlc_ul_header_egprs_3 *) data_msg;</span><br><span> egprs3->si = 1;</span><br><span> egprs3->r = 1;</span><br><span>@@ -972,7 +972,7 @@</span><br><span> OSMO_ASSERT(block->spb_status.block_status_ul ==</span><br><span> EGPRS_RESEG_DEFAULT);</span><br><span> OSMO_ASSERT(block->cs_last ==</span><br><span style="color: hsl(0, 100%, 40%);">- GprsCodingScheme::MCS6);</span><br><span style="color: hsl(120, 100%, 40%);">+ MCS6);</span><br><span> /* Assembled MCS is MCS6. so the size is 74 */</span><br><span> OSMO_ASSERT(block->len == 74);</span><br><span> </span><br><span>@@ -980,7 +980,7 @@</span><br><span> * TS 44.060, B.8.1</span><br><span> * Error scenario with spb as 1</span><br><span> */</span><br><span style="color: hsl(0, 100%, 40%);">- cs = GprsCodingScheme::MCS3;</span><br><span style="color: hsl(120, 100%, 40%);">+ cs = MCS3;</span><br><span> egprs3 = (struct gprs_rlc_ul_header_egprs_3 *) data_msg;</span><br><span> egprs3->si = 1;</span><br><span> egprs3->r = 1;</span><br><span>@@ -1017,7 +1017,7 @@</span><br><span> for (i = 0; i < 42; i++)</span><br><span> data_msg[i] = i;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- cs = GprsCodingScheme::MCS3;</span><br><span style="color: hsl(120, 100%, 40%);">+ cs = MCS3;</span><br><span> egprs3 = (struct gprs_rlc_ul_header_egprs_3 *) data_msg;</span><br><span> egprs3->si = 1;</span><br><span> egprs3->r = 1;</span><br><span>@@ -1041,7 +1041,7 @@</span><br><span> OSMO_ASSERT(block->spb_status.block_status_ul ==</span><br><span> EGPRS_RESEG_FIRST_SEG_RXD);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- cs = GprsCodingScheme::MCS3;</span><br><span style="color: hsl(120, 100%, 40%);">+ cs = MCS3;</span><br><span> egprs3 = (struct gprs_rlc_ul_header_egprs_3 *) data_msg;</span><br><span> egprs3->si = 1;</span><br><span> egprs3->r = 1;</span><br><span>@@ -1067,9 +1067,9 @@</span><br><span> /* Assembled MCS is MCS6. so the size is 74 */</span><br><span> OSMO_ASSERT(block->len == 74);</span><br><span> OSMO_ASSERT(block->cs_last ==</span><br><span style="color: hsl(0, 100%, 40%);">- GprsCodingScheme::MCS6);</span><br><span style="color: hsl(120, 100%, 40%);">+ MCS6);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- cs = GprsCodingScheme::MCS3;</span><br><span style="color: hsl(120, 100%, 40%);">+ cs = MCS3;</span><br><span> egprs3 = (struct gprs_rlc_ul_header_egprs_3 *) data_msg;</span><br><span> egprs3->si = 1;</span><br><span> egprs3->r = 1;</span><br><span>@@ -1093,7 +1093,7 @@</span><br><span> OSMO_ASSERT(block->spb_status.block_status_ul ==</span><br><span> EGPRS_RESEG_FIRST_SEG_RXD);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- cs = GprsCodingScheme::MCS3;</span><br><span style="color: hsl(120, 100%, 40%);">+ cs = MCS3;</span><br><span> egprs3 = (struct gprs_rlc_ul_header_egprs_3 *) data_msg;</span><br><span> egprs3->si = 1;</span><br><span> egprs3->r = 1;</span><br><span>@@ -1117,7 +1117,7 @@</span><br><span> OSMO_ASSERT(block->spb_status.block_status_ul ==</span><br><span> EGPRS_RESEG_FIRST_SEG_RXD);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- cs = GprsCodingScheme::MCS3;</span><br><span style="color: hsl(120, 100%, 40%);">+ cs = MCS3;</span><br><span> egprs3 = (struct gprs_rlc_ul_header_egprs_3 *) data_msg;</span><br><span> egprs3->si = 1;</span><br><span> egprs3->r = 1;</span><br><span>@@ -1141,11 +1141,11 @@</span><br><span> OSMO_ASSERT(block->spb_status.block_status_ul ==</span><br><span> EGPRS_RESEG_DEFAULT);</span><br><span> OSMO_ASSERT(block->cs_last ==</span><br><span style="color: hsl(0, 100%, 40%);">- GprsCodingScheme::MCS6);</span><br><span style="color: hsl(120, 100%, 40%);">+ MCS6);</span><br><span> /* Assembled MCS is MCS6. so the size is 74 */</span><br><span> OSMO_ASSERT(block->len == 74);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- cs = GprsCodingScheme::MCS3;</span><br><span style="color: hsl(120, 100%, 40%);">+ cs = MCS3;</span><br><span> egprs3 = (struct gprs_rlc_ul_header_egprs_3 *) data_msg;</span><br><span> egprs3->si = 1;</span><br><span> egprs3->r = 1;</span><br><span>@@ -1169,7 +1169,7 @@</span><br><span> OSMO_ASSERT(block->spb_status.block_status_ul ==</span><br><span> EGPRS_RESEG_SECOND_SEG_RXD);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- cs = GprsCodingScheme::MCS3;</span><br><span style="color: hsl(120, 100%, 40%);">+ cs = MCS3;</span><br><span> egprs3 = (struct gprs_rlc_ul_header_egprs_3 *) data_msg;</span><br><span> egprs3->si = 1;</span><br><span> egprs3->r = 1;</span><br><span>@@ -1194,7 +1194,7 @@</span><br><span> OSMO_ASSERT(block->spb_status.block_status_ul ==</span><br><span> EGPRS_RESEG_DEFAULT);</span><br><span> OSMO_ASSERT(block->cs_last ==</span><br><span style="color: hsl(0, 100%, 40%);">- GprsCodingScheme::MCS6);</span><br><span style="color: hsl(120, 100%, 40%);">+ MCS6);</span><br><span> /* Assembled MCS is MCS6. so the size is 74 */</span><br><span> OSMO_ASSERT(block->len == 74);</span><br><span> </span><br><span>@@ -2407,7 +2407,7 @@</span><br><span> OSMO_ASSERT(ms->ta() == qta/4);</span><br><span> OSMO_ASSERT(ms->ul_tbf() == ul_tbf);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- cs = GprsCodingScheme::MCS4;</span><br><span style="color: hsl(120, 100%, 40%);">+ cs = MCS4;</span><br><span> egprs3 = (struct gprs_rlc_ul_header_egprs_3 *) data_msg;</span><br><span> egprs3->si = 0;</span><br><span> egprs3->r = 1;</span><br><span>@@ -2793,8 +2793,8 @@</span><br><span> OSMO_ASSERT(bsn1 == 0);</span><br><span> </span><br><span> dl_tbf->ms()->set_current_cs_dl</span><br><span style="color: hsl(0, 100%, 40%);">- (static_cast < GprsCodingScheme::Scheme ></span><br><span style="color: hsl(0, 100%, 40%);">- (GprsCodingScheme::CS4 + demanded_mcs));</span><br><span style="color: hsl(120, 100%, 40%);">+ (static_cast < CodingScheme ></span><br><span style="color: hsl(120, 100%, 40%);">+ (CS4 + demanded_mcs));</span><br><span> </span><br><span> fn = fn_add_blocks(fn, 1);</span><br><span> </span><br><span>@@ -2825,8 +2825,8 @@</span><br><span> </span><br><span> /* Handle (MCS3, MCS3) -> MCS6 case */</span><br><span> dl_tbf->ms()->set_current_cs_dl</span><br><span style="color: hsl(0, 100%, 40%);">- (static_cast < GprsCodingScheme::Scheme ></span><br><span style="color: hsl(0, 100%, 40%);">- (GprsCodingScheme::CS4 + mcs));</span><br><span style="color: hsl(120, 100%, 40%);">+ (static_cast < CodingScheme ></span><br><span style="color: hsl(120, 100%, 40%);">+ (CS4 + mcs));</span><br><span> </span><br><span> NACK(dl_tbf, 0);</span><br><span> </span><br><span>@@ -2874,8 +2874,8 @@</span><br><span> NACK(dl_tbf, 0);</span><br><span> </span><br><span> dl_tbf->ms()->set_current_cs_dl</span><br><span style="color: hsl(0, 100%, 40%);">- (static_cast < GprsCodingScheme::Scheme ></span><br><span style="color: hsl(0, 100%, 40%);">- (GprsCodingScheme::CS4 + demanded_mcs));</span><br><span style="color: hsl(120, 100%, 40%);">+ (static_cast < CodingScheme ></span><br><span style="color: hsl(120, 100%, 40%);">+ (CS4 + demanded_mcs));</span><br><span> </span><br><span> fn = fn_add_blocks(fn, 1);</span><br><span> </span><br><span>@@ -2961,8 +2961,8 @@</span><br><span> </span><br><span> /* Set the demanded MCS to demanded_mcs */</span><br><span> dl_tbf->ms()->set_current_cs_dl</span><br><span style="color: hsl(0, 100%, 40%);">- (static_cast < GprsCodingScheme::Scheme ></span><br><span style="color: hsl(0, 100%, 40%);">- (GprsCodingScheme::CS4 + demanded_mcs));</span><br><span style="color: hsl(120, 100%, 40%);">+ (static_cast < CodingScheme ></span><br><span style="color: hsl(120, 100%, 40%);">+ (CS4 + demanded_mcs));</span><br><span> </span><br><span> fn = fn_add_blocks(fn, 1);</span><br><span> /* Retransmit the first RLC data block with demanded_mcs */</span><br><span>@@ -2988,8 +2988,8 @@</span><br><span> NACK(dl_tbf, 1);</span><br><span> </span><br><span> dl_tbf->ms()->set_current_cs_dl</span><br><span style="color: hsl(0, 100%, 40%);">- (static_cast < GprsCodingScheme::Scheme ></span><br><span style="color: hsl(0, 100%, 40%);">- (GprsCodingScheme::CS4 + demanded_mcs));</span><br><span style="color: hsl(120, 100%, 40%);">+ (static_cast < CodingScheme ></span><br><span style="color: hsl(120, 100%, 40%);">+ (CS4 + demanded_mcs));</span><br><span> </span><br><span> fn = fn_add_blocks(fn, 1);</span><br><span> /* Send first, second RLC data blocks with demanded_mcs */</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/13064">change 13064</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/13064"/><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: I993b49d9a82b8c7ad677d52d11003794aeabe117 </div>
<div style="display:none"> Gerrit-Change-Number: 13064 </div>
<div style="display:none"> Gerrit-PatchSet: 5 </div>
<div style="display:none"> Gerrit-Owner: Max <msuraev@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>