egprs: Add CPS tables from TS 04.60
Includes EGPRS coding and puncturing scheme (CPS) tables from 3GPP
TS 04.60. Currently osmo-bts-trx is the only user of CPS table
values, but this may change with gprsdecode and other utilities.
Change-Id: I09fe6514a0e2e51bb3206f8387633f7e0255345f
diff --git a/include/Makefile.am b/include/Makefile.am
index e420a64..c125691 100644
--- a/include/Makefile.am
+++ b/include/Makefile.am
@@ -51,6 +51,7 @@
osmocom/gprs/gprs_msgb.h \
osmocom/gprs/gprs_ns.h \
osmocom/gprs/gprs_ns_frgre.h \
+ osmocom/gprs/gprs_rlc.h \
osmocom/gprs/protocol/gsm_04_60.h \
osmocom/gprs/protocol/gsm_08_16.h \
osmocom/gprs/protocol/gsm_08_18.h \
diff --git a/include/osmocom/gprs/gprs_rlc.h b/include/osmocom/gprs/gprs_rlc.h
new file mode 100644
index 0000000..d34d49b
--- /dev/null
+++ b/include/osmocom/gprs/gprs_rlc.h
@@ -0,0 +1,27 @@
+#pragma once
+
+#include <stdint.h>
+
+/*! \brief Structure for CPS coding and puncturing scheme (TS 04.60 10.4.8a) */
+struct egprs_cps {
+ uint8_t bits;
+ uint8_t mcs;
+ uint8_t p[2];
+};
+
+/*! \brief CPS puncturing table selection (TS 04.60 10.4.8a) */
+enum egprs_cps_punc {
+ EGPRS_CPS_P1,
+ EGPRS_CPS_P2,
+ EGPRS_CPS_P3,
+ EGPRS_CPS_NONE = -1,
+};
+
+/*! \brief EGPRS header types (TS 04.60 10.0a.2) */
+enum egprs_hdr_type {
+ EGPRS_HDR_TYPE1,
+ EGPRS_HDR_TYPE2,
+ EGPRS_HDR_TYPE3,
+};
+
+int egprs_get_cps(struct egprs_cps *cps, uint8_t type, uint8_t bits);