fixeria has uploaded this change for review. ( 
https://gerrit.osmocom.org/c/libosmocore/+/34315?usp=email )


Change subject: gsm_12_21.h: add flags for NM_ATT_IPACC_SUPP_FEATURES
......................................................................

gsm_12_21.h: add flags for NM_ATT_IPACC_SUPP_FEATURES

Change-Id: Ia4208e10d61843dd6ae77398f6624c918dc81ea4
---
M include/osmocom/gsm/protocol/gsm_12_21.h
M src/gsm/abis_nm.c
M src/gsm/libosmogsm.map
3 files changed, 203 insertions(+), 0 deletions(-)



  git pull ssh://gerrit.osmocom.org:29418/libosmocore refs/changes/15/34315/1

diff --git a/include/osmocom/gsm/protocol/gsm_12_21.h 
b/include/osmocom/gsm/protocol/gsm_12_21.h
index 9cc0aa8..1339362 100644
--- a/include/osmocom/gsm/protocol/gsm_12_21.h
+++ b/include/osmocom/gsm/protocol/gsm_12_21.h
@@ -775,6 +775,98 @@
        NM_IPAC_EIE_BTS_ID              = 0x25,
 };

+/*! ip.access support flags for NM_IPAC_EIE_FREQ_BANDS */
+#define NM_IPAC_F_FREQ_BAND_PGSM               (1 << 0)
+#define NM_IPAC_F_FREQ_BAND_EGSM               (1 << 1)
+#define NM_IPAC_F_FREQ_BAND_RGSM               (1 << 2)
+#define NM_IPAC_F_FREQ_BAND_DCS                        (1 << 3)
+#define NM_IPAC_F_FREQ_BAND_PCS                        (1 << 4)
+#define NM_IPAC_F_FREQ_BAND_850                        (1 << 5)
+#define NM_IPAC_F_FREQ_BAND_480                        (1 << 6)
+#define NM_IPAC_F_FREQ_BAND_450                        (1 << 7)
+
+/*! ip.access support flags for NM_IPAC_EIE_CIPH_ALGOS */
+#define NM_IPAC_F_CIPH_ALGO_A51                        (1 << 0)
+#define NM_IPAC_F_CIPH_ALGO_A52                        (1 << 1)
+#define NM_IPAC_F_CIPH_ALGO_A53                        (1 << 2)
+#define NM_IPAC_F_CIPH_ALGO_A54                        (1 << 3)
+#define NM_IPAC_F_CIPH_ALGO_A55                        (1 << 4)
+#define NM_IPAC_F_CIPH_ALGO_A56                        (1 << 5)
+#define NM_IPAC_F_CIPH_ALGO_A57                        (1 << 6)
+#define NM_IPAC_F_CIPH_ALGO_A58                        (1 << 7)
+
+/*! ip.access support flags for NM_IPAC_EIE_CHAN_TYPES (1st octet) */
+#define NM_IPAC_F_CHANT_TCHF                   (1 << 0)
+#define NM_IPAC_F_CHANT_TCHH                   (1 << 1)
+#define NM_IPAC_F_CHANT_SDCCH8                 (1 << 2)
+#define NM_IPAC_F_CHANT_BCCH                   (1 << 3)
+#define NM_IPAC_F_CHANT_BCCH_SDCCH4            (1 << 4)
+#define NM_IPAC_F_CHANT_BCH                    (1 << 5)
+#define NM_IPAC_F_CHANT_BCCH_SDCCH4_CBCH       (1 << 6)
+#define NM_IPAC_F_CHANT_SDCCH8_CBCH            (1 << 7)
+/*! ip.access support flags for NM_IPAC_EIE_CHAN_TYPES (2nd octet) */
+#define NM_IPAC_F_CHANT_PCCHF                  (1 << 8)
+#define NM_IPAC_F_CHANT_TCHF_PDCHF             (1 << 9)
+#define NM_IPAC_F_CHANT_TCHH_PDCHH             (1 << 10)
+#define NM_IPAC_F_CHANT_TCHF_TCHH              (1 << 11)
+
+/*! ip.access support flags for NM_IPAC_EIE_CHAN_MODES (speech codecs) */
+#define NM_IPAC_F_CHANM_SPEECH_FS              (1 << 0)
+#define NM_IPAC_F_CHANM_SPEECH_EFS             (1 << 1)
+#define NM_IPAC_F_CHANM_SPEECH_AFS             (1 << 2)
+#define NM_IPAC_F_CHANM_SPEECH_HS              (1 << 3)
+#define NM_IPAC_F_CHANM_SPEECH_AHS             (1 << 4)
+/*! ip.access support flags for NM_IPAC_EIE_CHAN_MODES (CSD non-transparent) */
+#define NM_IPAC_F_CHANM_CSD_NT_4k8             (1 << 8)
+#define NM_IPAC_F_CHANM_CSD_NT_9k6             (1 << 9)
+#define NM_IPAC_F_CHANM_CSD_NT_14k4            (1 << 10)
+/*! ip.access support flags for NM_IPAC_EIE_CHAN_MODES (CSD transparent) */
+#define NM_IPAC_F_CHANM_CSD_T_1200_75          (1 << 16)
+#define NM_IPAC_F_CHANM_CSD_T_600              (1 << 17)
+#define NM_IPAC_F_CHANM_CSD_T_1k2              (1 << 18)
+#define NM_IPAC_F_CHANM_CSD_T_2k4              (1 << 19)
+#define NM_IPAC_F_CHANM_CSD_T_4k8              (1 << 20)
+#define NM_IPAC_F_CHANM_CSD_T_9k6              (1 << 21)
+#define NM_IPAC_F_CHANM_CSD_T_14k4             (1 << 22)
+
+/*! ip.access support flags for NM_IPAC_EIE_GPRS_CODING (GPRS) */
+#define NM_IPAC_F_GPRS_CODING_CS1              (1 << 0)
+#define NM_IPAC_F_GPRS_CODING_CS2              (1 << 1)
+#define NM_IPAC_F_GPRS_CODING_CS3              (1 << 2)
+#define NM_IPAC_F_GPRS_CODING_CS4              (1 << 3)
+/*! ip.access support flags for NM_IPAC_EIE_GPRS_CODING (EGPRS) */
+#define NM_IPAC_F_GPRS_CODING_MCS1             (1 << 7)
+#define NM_IPAC_F_GPRS_CODING_MCS2             (1 << 8)
+#define NM_IPAC_F_GPRS_CODING_MCS3             (1 << 9)
+#define NM_IPAC_F_GPRS_CODING_MCS4             (1 << 10)
+#define NM_IPAC_F_GPRS_CODING_MCS5             (1 << 11)
+#define NM_IPAC_F_GPRS_CODING_MCS6             (1 << 12)
+#define NM_IPAC_F_GPRS_CODING_MCS7             (1 << 13)
+#define NM_IPAC_F_GPRS_CODING_MCS8             (1 << 14)
+#define NM_IPAC_F_GPRS_CODING_MCS9             (1 << 15)
+
+/*! ip.access support flags for NM_IPAC_EIE_RTP_FEATURES */
+#define NM_IPAC_F_RTP_FEAT_COMPR_CONTROL       (1 << 0) /* RTP Compression 
Control */
+#define NM_IPAC_F_RTP_FEAT_IR_8k               (1 << 1) /* IR  8 kbit/s */
+#define NM_IPAC_F_RTP_FEAT_IR_16k              (1 << 2) /* IR 16 kbit/s */
+#define NM_IPAC_F_RTP_FEAT_IR_32k              (1 << 3) /* IR 32 kbit/s */
+#define NM_IPAC_F_RTP_FEAT_IR_64k              (1 << 4) /* IR 64 kbit/s */
+#define NM_IPAC_F_RTP_FEAT_MULTIPLEX_RTP       (1 << 6) /* RTP Multiplexing */
+#define NM_IPAC_F_RTP_FEAT_MULTIPLEX_SRTP      (1 << 7) /* SRTP Multiplexing */
+
+/*! ip.access support flags for NM_IPAC_EIE_RSL_FEATURES */
+#define NM_IPAC_F_RSL_FEAT_PHYSICAL_CONTEXT    (1 << 0)
+#define NM_IPAC_F_RSL_FEAT_DYN_PDCH_ACT                (1 << 1)
+#define NM_IPAC_F_RSL_FEAT_RTP_PT2             (1 << 2)
+
+extern const struct value_string abis_nm_ipacc_freq_band_desc[];
+extern const struct value_string abis_nm_ipacc_ciph_algo_desc[];
+extern const struct value_string abis_nm_ipacc_chant_desc[];
+extern const struct value_string abis_nm_ipacc_chanm_desc[];
+extern const struct value_string abis_nm_ipacc_gprs_coding_desc[];
+extern const struct value_string abis_nm_ipacc_rtp_feat_desc[];
+extern const struct value_string abis_nm_ipacc_rsl_feat_desc[];
+
 /*! ip.access NWL BCCH information type */
 enum ipac_bcch_info_type {
        IPAC_BINF_RXLEV                 = (1 << 8),
diff --git a/src/gsm/abis_nm.c b/src/gsm/abis_nm.c
index 38cd194..8059fc8 100644
--- a/src/gsm/abis_nm.c
+++ b/src/gsm/abis_nm.c
@@ -707,6 +707,100 @@
        /* FIXME: bounds check */
 };

+const struct value_string abis_nm_ipacc_freq_band_desc[] = {
+       { NM_IPAC_F_FREQ_BAND_PGSM,     "P-GSM" },
+       { NM_IPAC_F_FREQ_BAND_EGSM,     "E-GSM" },
+       { NM_IPAC_F_FREQ_BAND_RGSM,     "R-GSM" },
+       { NM_IPAC_F_FREQ_BAND_DCS,      "DCS-1800" },
+       { NM_IPAC_F_FREQ_BAND_PCS,      "PCS-1900" },
+       { NM_IPAC_F_FREQ_BAND_850,      "850" },
+       { NM_IPAC_F_FREQ_BAND_480,      "480" },
+       { NM_IPAC_F_FREQ_BAND_450,      "450" },
+       { 0, NULL }
+};
+
+const struct value_string abis_nm_ipacc_ciph_algo_desc[] = {
+       { NM_IPAC_F_CIPH_ALGO_A51,      "A5/1" },
+       { NM_IPAC_F_CIPH_ALGO_A52,      "A5/2" },
+       { NM_IPAC_F_CIPH_ALGO_A53,      "A5/3" },
+       { NM_IPAC_F_CIPH_ALGO_A54,      "A5/4" },
+       { NM_IPAC_F_CIPH_ALGO_A55,      "A5/5" },
+       { NM_IPAC_F_CIPH_ALGO_A56,      "A5/6" },
+       { NM_IPAC_F_CIPH_ALGO_A57,      "A5/7" },
+       { NM_IPAC_F_CIPH_ALGO_A58,      "A5/8" },
+       { 0, NULL }
+};
+
+const struct value_string abis_nm_ipacc_chant_desc[] = {
+       { NM_IPAC_F_CHANT_TCHF,                 "TCH/F" },
+       { NM_IPAC_F_CHANT_TCHH,                 "TCH/H" },
+       { NM_IPAC_F_CHANT_SDCCH8,               "SDCCH/8" },
+       { NM_IPAC_F_CHANT_BCCH,                 "BCCH" },
+       { NM_IPAC_F_CHANT_BCCH_SDCCH4,          "BCCH+SDCCH/4" },
+       { NM_IPAC_F_CHANT_BCH,                  "BCH" },
+       { NM_IPAC_F_CHANT_BCCH_SDCCH4_CBCH,     "BCCH+SDCCH/4+CBCH" },
+       { NM_IPAC_F_CHANT_SDCCH8_CBCH,          "SDCCH/8+CBCH" },
+       { NM_IPAC_F_CHANT_PCCHF,                "PDCH/F" },
+       { NM_IPAC_F_CHANT_TCHF_PDCHF,           "TCH/F or PDCH/F" },
+       { NM_IPAC_F_CHANT_TCHH_PDCHH,           "TCH/H+PDCH/H" },
+       { NM_IPAC_F_CHANT_TCHF_TCHH,            "TCH/F or TCH/H" },
+       { 0, NULL }
+};
+
+const struct value_string abis_nm_ipacc_chanm_desc[] = {
+       { NM_IPAC_F_CHANM_SPEECH_FS,            "FR1/FS" },
+       { NM_IPAC_F_CHANM_SPEECH_EFS,           "FR2/EFS" },
+       { NM_IPAC_F_CHANM_SPEECH_AFS,           "FR3/AFS" },
+       { NM_IPAC_F_CHANM_SPEECH_HS,            "HR1/HS" },
+       { NM_IPAC_F_CHANM_SPEECH_AHS,           "HR3/AHS" },
+       { NM_IPAC_F_CHANM_CSD_NT_4k8,           "CSD NT 4.8 kbit/s" },
+       { NM_IPAC_F_CHANM_CSD_NT_9k6,           "CSD NT 9.6 kbit/s" },
+       { NM_IPAC_F_CHANM_CSD_NT_14k4,          "CSD NT 14.4 kbit/s" },
+       { NM_IPAC_F_CHANM_CSD_T_1200_75,        "CSD T 1200/75 kbit/s" },
+       { NM_IPAC_F_CHANM_CSD_T_600,            "CSD T 600 kbit/s" },
+       { NM_IPAC_F_CHANM_CSD_T_1k2,            "CSD T 1k2 kbit/s" },
+       { NM_IPAC_F_CHANM_CSD_T_2k4,            "CSD T 2.4 kbit/s" },
+       { NM_IPAC_F_CHANM_CSD_T_4k8,            "CSD T 4.8 kbit/s" },
+       { NM_IPAC_F_CHANM_CSD_T_9k6,            "CSD T 9.6 kbit/s" },
+       { NM_IPAC_F_CHANM_CSD_T_14k4,           "CSD T 14.4 kbit/s" },
+       { 0, NULL }
+};
+
+const struct value_string abis_nm_ipacc_gprs_coding_desc[] = {
+       { NM_IPAC_F_GPRS_CODING_CS1,            "CS1" },
+       { NM_IPAC_F_GPRS_CODING_CS2,            "CS2" },
+       { NM_IPAC_F_GPRS_CODING_CS3,            "CS3" },
+       { NM_IPAC_F_GPRS_CODING_CS4,            "CS4" },
+       { NM_IPAC_F_GPRS_CODING_MCS1,           "MCS1" },
+       { NM_IPAC_F_GPRS_CODING_MCS2,           "MCS2" },
+       { NM_IPAC_F_GPRS_CODING_MCS3,           "MCS3" },
+       { NM_IPAC_F_GPRS_CODING_MCS4,           "MCS4" },
+       { NM_IPAC_F_GPRS_CODING_MCS5,           "MCS5" },
+       { NM_IPAC_F_GPRS_CODING_MCS6,           "MCS6" },
+       { NM_IPAC_F_GPRS_CODING_MCS7,           "MCS7" },
+       { NM_IPAC_F_GPRS_CODING_MCS8,           "MCS8" },
+       { NM_IPAC_F_GPRS_CODING_MCS9,           "MCS9" },
+       { 0, NULL }
+};
+
+const struct value_string abis_nm_ipacc_rtp_feat_desc[] = {
+       { NM_IPAC_F_RTP_FEAT_COMPR_CONTROL,     "Compression Control" },
+       { NM_IPAC_F_RTP_FEAT_IR_8k,             "Intermediate Rate 8 kbit/s" },
+       { NM_IPAC_F_RTP_FEAT_IR_16k,            "Intermediate Rate 16 kbit/s" },
+       { NM_IPAC_F_RTP_FEAT_IR_32k,            "Intermediate Rate 32 kbit/s" },
+       { NM_IPAC_F_RTP_FEAT_IR_64k,            "Intermediate Rate 64 kbit/s" },
+       { NM_IPAC_F_RTP_FEAT_MULTIPLEX_RTP,     "RTP Multiplex" },
+       { NM_IPAC_F_RTP_FEAT_MULTIPLEX_SRTP,    "SRTP Multiplex" },
+       { 0, NULL }
+};
+
+const struct value_string abis_nm_ipacc_rsl_feat_desc[] = {
+       { NM_IPAC_F_RSL_FEAT_PHYSICAL_CONTEXT,  "Physical Context" },
+       { NM_IPAC_F_RSL_FEAT_DYN_PDCH_ACT,      "Dynamic PDCH Activation" },
+       { NM_IPAC_F_RSL_FEAT_RTP_PT2,           "RTP Payload Type 2" },
+       { 0, NULL }
+};
+
 /*! Pack 3GPP TS 12.21 ยง 8.8.2 Failure Event Report into msgb */
 struct msgb *abis_nm_fail_evt_rep(enum abis_nm_event_type t,
                                  enum abis_nm_severity s,
diff --git a/src/gsm/libosmogsm.map b/src/gsm/libosmogsm.map
index 49db282..056d320 100644
--- a/src/gsm/libosmogsm.map
+++ b/src/gsm/libosmogsm.map
@@ -40,6 +40,14 @@
 abis_nm_get_sw_conf;
 abis_nm_get_sw_desc_len;

+abis_nm_ipacc_freq_band_desc;
+abis_nm_ipacc_ciph_algo_desc;
+abis_nm_ipacc_chant_desc;
+abis_nm_ipacc_chanm_desc;
+abis_nm_ipacc_gprs_coding_desc;
+abis_nm_ipacc_rtp_feat_desc;
+abis_nm_ipacc_rsl_feat_desc;
+
 osmo_sitype_strs;
 osmo_c4;
 osmo_get_rand_id;

--
To view, visit https://gerrit.osmocom.org/c/libosmocore/+/34315?usp=email
To unsubscribe, or for help writing mail filters, visit 
https://gerrit.osmocom.org/settings

Gerrit-Project: libosmocore
Gerrit-Branch: master
Gerrit-Change-Id: Ia4208e10d61843dd6ae77398f6624c918dc81ea4
Gerrit-Change-Number: 34315
Gerrit-PatchSet: 1
Gerrit-Owner: fixeria <[email protected]>
Gerrit-MessageType: newchange

Reply via email to