aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/osmocom/gmr1/sdr/nb.h1
-rw-r--r--src/sdr/nb.c31
2 files changed, 32 insertions, 0 deletions
diff --git a/include/osmocom/gmr1/sdr/nb.h b/include/osmocom/gmr1/sdr/nb.h
index 656527c..d391a7f 100644
--- a/include/osmocom/gmr1/sdr/nb.h
+++ b/include/osmocom/gmr1/sdr/nb.h
@@ -37,6 +37,7 @@ struct gmr1_pi4cxpsk_burst;
extern struct gmr1_pi4cxpsk_burst gmr1_bcch_burst;
extern struct gmr1_pi4cxpsk_burst gmr1_dc2_burst;
extern struct gmr1_pi4cxpsk_burst gmr1_dc6_burst;
+extern struct gmr1_pi4cxpsk_burst gmr1_dc12_burst;
extern struct gmr1_pi4cxpsk_burst gmr1_nt3_speech_burst;
extern struct gmr1_pi4cxpsk_burst gmr1_nt3_facch_burst;
extern struct gmr1_pi4cxpsk_burst gmr1_nt6_burst;
diff --git a/src/sdr/nb.c b/src/sdr/nb.c
index 46d69d9..e0be9c0 100644
--- a/src/sdr/nb.c
+++ b/src/sdr/nb.c
@@ -120,6 +120,37 @@ struct gmr1_pi4cxpsk_burst gmr1_dc6_burst = {
};
+/* DC12 ------------------------------------------------------------------- */
+
+static struct gmr1_pi4cxpsk_sync _dc12_sync[] = {
+ { 10, 10, { 0, 0, 1, 0, 0, 0, 1, 1, 1, 1 } },
+ { 228, 11, { 0, 0, 1, 0, 0, 0, 1, 1, 1, 0, 1 } },
+ { 447, 10, { 0, 0, 1, 0, 0, 0, 1, 1, 1, 1 } },
+ { -1 },
+};
+
+static struct gmr1_pi4cxpsk_data _dc12_data[] = {
+ { 2, 8 }, /* e0 ... e7 */
+ { 20, 208 }, /* e8 ... e215 */
+ { 239, 208 }, /* e216 ... e423 */
+ { 457, 8 }, /* e424 ... e431 */
+ { -1 },
+};
+
+/*! \brief DC12 bursts
+ * See GMR-1 05.002 (ETSI TS 101 376-5-2 V3.1.1) - Section 7.4.16
+ */
+struct gmr1_pi4cxpsk_burst gmr1_dc12_burst = {
+ .mod = &gmr1_pi2cbpsk,
+ .guard_pre = 2,
+ .guard_post = 3,
+ .len = 39 * 12,
+ .ebits = 432,
+ .sync = { _dc12_sync, NULL },
+ .data = _dc12_data,
+};
+
+
/* NT3 Speech ------------------------------------------------------------- */
static struct gmr1_pi4cxpsk_sync _nt3_speech_sync[] = {