MCS: move Coding Scheme enum outside of class definition
Move generic MCS enum to C header file to simplify further modifications
to GprsCodingScheme class in follow-up patches. This also allows us
to use standard libosmocore value_sting functions in upcoming patches
for IA Rest Octet encoding/decoding.
Related: OS#3014
Change-Id: I993b49d9a82b8c7ad677d52d11003794aeabe117
diff --git a/src/rlc.cpp b/src/rlc.cpp
index ee88bd9..323fde4 100644
--- a/src/rlc.cpp
+++ b/src/rlc.cpp
@@ -391,27 +391,27 @@
enum egprs_puncturing_values punct2, bool with_padding)
{
/* validate that punct and punct2 are as expected */
- switch (GprsCodingScheme::Scheme(cs)) {
- case GprsCodingScheme::MCS9:
- case GprsCodingScheme::MCS8:
- case GprsCodingScheme::MCS7:
+ switch (CodingScheme(cs)) {
+ case MCS9:
+ case MCS8:
+ case MCS7:
if (punct2 == EGPRS_PS_INVALID) {
LOGP(DRLCMACDL, LOGL_ERROR,
"Invalid punct2 value for coding scheme %d: %d\n",
- GprsCodingScheme::Scheme(cs), punct2);
+ CodingScheme(cs), punct2);
return -1;
}
/* fall through */
- case GprsCodingScheme::MCS6:
- case GprsCodingScheme::MCS5:
- case GprsCodingScheme::MCS4:
- case GprsCodingScheme::MCS3:
- case GprsCodingScheme::MCS2:
- case GprsCodingScheme::MCS1:
+ case MCS6:
+ case MCS5:
+ case MCS4:
+ case MCS3:
+ case MCS2:
+ case MCS1:
if (punct == EGPRS_PS_INVALID) {
LOGP(DRLCMACDL, LOGL_ERROR,
"Invalid punct value for coding scheme %d: %d\n",
- GprsCodingScheme::Scheme(cs), punct);
+ CodingScheme(cs), punct);
return -1;
}
break;
@@ -420,26 +420,26 @@
}
/* See 3GPP TS 44.060 10.4.8a.3.1, 10.4.8a.2.1, 10.4.8a.1.1 */
- switch (GprsCodingScheme::Scheme(cs)) {
- case GprsCodingScheme::MCS1: return 0b1011 +
+ switch (CodingScheme(cs)) {
+ case MCS1: return 0b1011 +
punct % EGPRS_MAX_PS_NUM_2;
- case GprsCodingScheme::MCS2: return 0b1001 +
+ case MCS2: return 0b1001 +
punct % EGPRS_MAX_PS_NUM_2;
- case GprsCodingScheme::MCS3: return (with_padding ? 0b0110 : 0b0011) +
+ case MCS3: return (with_padding ? 0b0110 : 0b0011) +
punct % EGPRS_MAX_PS_NUM_3;
- case GprsCodingScheme::MCS4: return 0b0000 +
+ case MCS4: return 0b0000 +
punct % EGPRS_MAX_PS_NUM_3;
- case GprsCodingScheme::MCS5: return 0b100 +
+ case MCS5: return 0b100 +
punct % EGPRS_MAX_PS_NUM_2;
- case GprsCodingScheme::MCS6: return (with_padding ? 0b010 : 0b000) +
+ case MCS6: return (with_padding ? 0b010 : 0b000) +
punct % EGPRS_MAX_PS_NUM_2;
- case GprsCodingScheme::MCS7: return 0b10100 +
+ case MCS7: return 0b10100 +
3 * (punct % EGPRS_MAX_PS_NUM_3) +
punct2 % EGPRS_MAX_PS_NUM_3;
- case GprsCodingScheme::MCS8: return 0b01011 +
+ case MCS8: return 0b01011 +
3 * (punct % EGPRS_MAX_PS_NUM_3) +
punct2 % EGPRS_MAX_PS_NUM_3;
- case GprsCodingScheme::MCS9: return 0b00000 +
+ case MCS9: return 0b00000 +
4 * (punct % EGPRS_MAX_PS_NUM_3) +
punct2 % EGPRS_MAX_PS_NUM_3;
default: ;
@@ -454,24 +454,24 @@
*punct2 = -1;
*with_padding = 0;
- switch (GprsCodingScheme::Scheme(cs)) {
- case GprsCodingScheme::MCS1:
+ switch (CodingScheme(cs)) {
+ case MCS1:
cps -= 0b1011; *punct = cps % 2; break;
- case GprsCodingScheme::MCS2:
+ case MCS2:
cps -= 0b1001; *punct = cps % 2; break;
- case GprsCodingScheme::MCS3:
+ case MCS3:
cps -= 0b0011; *punct = cps % 3; *with_padding = cps >= 3; break;
- case GprsCodingScheme::MCS4:
+ case MCS4:
cps -= 0b0000; *punct = cps % 3; break;
- case GprsCodingScheme::MCS5:
+ case MCS5:
cps -= 0b100; *punct = cps % 2; break;
- case GprsCodingScheme::MCS6:
+ case MCS6:
cps -= 0b000; *punct = cps % 2; *with_padding = cps >= 2; break;
- case GprsCodingScheme::MCS7:
+ case MCS7:
cps -= 0b10100; *punct = cps / 3; *punct2 = cps % 3; break;
- case GprsCodingScheme::MCS8:
+ case MCS8:
cps -= 0b01011; *punct = cps / 3; *punct2 = cps % 3; break;
- case GprsCodingScheme::MCS9:
+ case MCS9:
cps -= 0b00000; *punct = cps / 4; *punct2 = cps % 3; break;
default: ;
}
@@ -501,23 +501,23 @@
return punct;
/* TS 44.060 9.3.2.1.1 */
- if ((GprsCodingScheme::Scheme(cs) == GprsCodingScheme::MCS9) &&
- (GprsCodingScheme::Scheme(cs_current) == GprsCodingScheme::MCS6)) {
+ if ((CodingScheme(cs) == MCS9) &&
+ (CodingScheme(cs_current) == MCS6)) {
if ((punct == EGPRS_PS_1) || (punct == EGPRS_PS_3))
return EGPRS_PS_1;
else if (punct == EGPRS_PS_2)
return EGPRS_PS_2;
- } else if ((GprsCodingScheme::Scheme(cs) == GprsCodingScheme::MCS6) &&
- (GprsCodingScheme::Scheme(cs_current) == GprsCodingScheme::MCS9)) {
+ } else if ((CodingScheme(cs) == MCS6) &&
+ (CodingScheme(cs_current) == MCS9)) {
if (punct == EGPRS_PS_1)
return EGPRS_PS_3;
else if (punct == EGPRS_PS_2)
return EGPRS_PS_2;
- } else if ((GprsCodingScheme::Scheme(cs) == GprsCodingScheme::MCS7) &&
- (GprsCodingScheme::Scheme(cs_current) == GprsCodingScheme::MCS5))
+ } else if ((CodingScheme(cs) == MCS7) &&
+ (CodingScheme(cs_current) == MCS5))
return EGPRS_PS_1;
- else if ((GprsCodingScheme::Scheme(cs) == GprsCodingScheme::MCS5) &&
- (GprsCodingScheme::Scheme(cs_current) == GprsCodingScheme::MCS7))
+ else if ((CodingScheme(cs) == MCS5) &&
+ (CodingScheme(cs_current) == MCS7))
return EGPRS_PS_2;
else if (cs != cs_current)
return EGPRS_PS_1;
@@ -540,19 +540,19 @@
void gprs_update_punct_scheme(enum egprs_puncturing_values *punct,
const GprsCodingScheme &cs)
{
- switch (GprsCodingScheme::Scheme(cs)) {
- case GprsCodingScheme::MCS1 :
- case GprsCodingScheme::MCS2 :
- case GprsCodingScheme::MCS5 :
- case GprsCodingScheme::MCS6 :
+ switch (CodingScheme(cs)) {
+ case MCS1 :
+ case MCS2 :
+ case MCS5 :
+ case MCS6 :
*punct = ((enum egprs_puncturing_values)((*punct + 1) %
EGPRS_MAX_PS_NUM_2));
break;
- case GprsCodingScheme::MCS3 :
- case GprsCodingScheme::MCS4 :
- case GprsCodingScheme::MCS7 :
- case GprsCodingScheme::MCS8 :
- case GprsCodingScheme::MCS9 :
+ case MCS3 :
+ case MCS4 :
+ case MCS7 :
+ case MCS8 :
+ case MCS9 :
*punct = ((enum egprs_puncturing_values)((*punct + 1) %
EGPRS_MAX_PS_NUM_3));
break;