rlc: Support encoding of EGPRS header type 1 + 2

Currently only header type 3 (MCS-1 to MCS-4) is supported.

Add header structs to rlc.h and extend
Encoding::rlc_write_dl_data_header accordingly.

Sponsored-by: On-Waves ehf
diff --git a/src/rlc.cpp b/src/rlc.cpp
index e4a9563..efe4261 100644
--- a/src/rlc.cpp
+++ b/src/rlc.cpp
@@ -327,7 +327,8 @@
 	rdbi->spb = 0;
 }
 
-unsigned int gprs_rlc_mcs_cps(GprsCodingScheme cs, int punct, int with_padding)
+unsigned int gprs_rlc_mcs_cps(GprsCodingScheme cs, int punct, int punct2,
+	int with_padding)
 {
 	switch (GprsCodingScheme::Scheme(cs)) {
 	case GprsCodingScheme::MCS1: return 0b1011 + punct % 2;
@@ -335,7 +336,12 @@
 	case GprsCodingScheme::MCS3: return (with_padding ? 0b0110 : 0b0011) +
 					    punct % 3;
 	case GprsCodingScheme::MCS4: return 0b0000 + punct % 3;
-	/* TODO: Add missing MCS */
+	case GprsCodingScheme::MCS5: return  0b100 + punct % 2;
+	case GprsCodingScheme::MCS6: return (with_padding ? 0b010 : 0b000) +
+					    punct % 2;
+	case GprsCodingScheme::MCS7: return 0b10100 + 3 * (punct % 3) + punct2 % 3;
+	case GprsCodingScheme::MCS8: return 0b01011 + 3 * (punct % 3) + punct2 % 3;
+	case GprsCodingScheme::MCS9: return 0b00000 + 4 * (punct % 3) + punct2 % 3;
 	default: ;
 	}