summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMax <msuraev@sysmocom.de>2017-01-02 13:42:24 +0100
committerMax <msuraev@sysmocom.de>2017-01-06 10:21:11 +0000
commit0bee65c0d89f81a4b90aa3d484016d9ba680dd46 (patch)
treeb87cd593abfb7b3796abf4a37ccfecb285119fed
parentedc8db21fa4fec3a87d7892d219ae26135858e9c (diff)
Add OML definitions from OsmoBTS
-rw-r--r--include/osmocom/gsm/abis_nm.h1
-rw-r--r--include/osmocom/gsm/protocol/gsm_12_21.h13
-rw-r--r--src/gsm/abis_nm.c60
-rw-r--r--src/gsm/libosmogsm.map2
4 files changed, 76 insertions, 0 deletions
diff --git a/include/osmocom/gsm/abis_nm.h b/include/osmocom/gsm/abis_nm.h
index 04bca432..14dbc08c 100644
--- a/include/osmocom/gsm/abis_nm.h
+++ b/include/osmocom/gsm/abis_nm.h
@@ -34,6 +34,7 @@ const char *abis_nm_opstate_name(uint8_t os);
const char *abis_nm_avail_name(uint8_t avail);
const char *abis_nm_test_name(uint8_t test);
extern const struct tlv_definition abis_nm_osmo_att_tlvdef;
+extern const struct tlv_definition abis_nm_att_tlvdef_ipa;
/*! \brief write a human-readable OML header to the debug log
* \param[in] ss Logging sub-system
diff --git a/include/osmocom/gsm/protocol/gsm_12_21.h b/include/osmocom/gsm/protocol/gsm_12_21.h
index 3c3a2c91..ed53dc64 100644
--- a/include/osmocom/gsm/protocol/gsm_12_21.h
+++ b/include/osmocom/gsm/protocol/gsm_12_21.h
@@ -615,6 +615,19 @@ struct abis_nm_channel {
uint8_t subslot; /*!< \brief E1 sub-slot */
} __attribute__ ((packed));
+/*! \brief 3GPP TS 12.21 9.4.53 T200 index */
+enum abis_nm_t200_idx {
+ T200_SDCCH = 0,
+ T200_FACCH_F = 1,
+ T200_FACCH_H = 2,
+ T200_SACCH_TCH_SAPI0 = 3,
+ T200_SACCH_SDCCH = 4,
+ T200_SDCCH_SAPI3 = 5,
+ T200_SACCH_TCH_SAPI3 = 6
+};
+
+extern const uint8_t abis_nm_t200_ms[];
+
/*! \brief Siemens BS-11 specific objects in the SienemsHW (0xA5) object class */
enum abis_bs11_objtype {
BS11_OBJ_ALCO = 0x01,
diff --git a/src/gsm/abis_nm.c b/src/gsm/abis_nm.c
index e607d30f..c085e069 100644
--- a/src/gsm/abis_nm.c
+++ b/src/gsm/abis_nm.c
@@ -227,6 +227,17 @@ const char *abis_nm_severity_name(uint8_t cause)
return get_value_string(severity_names, cause);
}
+/*! \brief 3GPP TS 12.21 9.4.53 T200 values (in msec) */
+const uint8_t abis_nm_t200_ms[] = {
+ [T200_SDCCH] = 5,
+ [T200_FACCH_F] = 5,
+ [T200_FACCH_H] = 5,
+ [T200_SACCH_TCH_SAPI0] = 10,
+ [T200_SACCH_SDCCH] = 10,
+ [T200_SDCCH_SAPI3] = 5,
+ [T200_SACCH_TCH_SAPI3] = 10
+};
+
/*! \brief Attributes that the BSC can set, not only get, according to Section 9.4 */
const enum abis_nm_attr abis_nm_att_settable[] = {
NM_ATT_ADD_INFO,
@@ -256,6 +267,55 @@ const enum abis_nm_attr abis_nm_att_settable[] = {
NM_ATT_MEAS_TYPE,
};
+/*! \brief GSM A-bis OML IPA TLV parser definition */
+const struct tlv_definition abis_nm_att_tlvdef_ipa = {
+ .def = {
+ /* ip.access specifics */
+ [NM_ATT_IPACC_DST_IP] = { TLV_TYPE_FIXED, 4 },
+ [NM_ATT_IPACC_DST_IP_PORT] = { TLV_TYPE_FIXED, 2 },
+ [NM_ATT_IPACC_STREAM_ID] = { TLV_TYPE_TV, },
+ [NM_ATT_IPACC_SEC_OML_CFG] = { TLV_TYPE_FIXED, 6 },
+ [NM_ATT_IPACC_IP_IF_CFG] = { TLV_TYPE_FIXED, 8 },
+ [NM_ATT_IPACC_IP_GW_CFG] = { TLV_TYPE_FIXED, 12 },
+ [NM_ATT_IPACC_IN_SERV_TIME] = { TLV_TYPE_FIXED, 4 },
+ [NM_ATT_IPACC_LOCATION] = { TLV_TYPE_TL16V },
+ [NM_ATT_IPACC_PAGING_CFG] = { TLV_TYPE_FIXED, 2 },
+ [NM_ATT_IPACC_UNIT_ID] = { TLV_TYPE_TL16V },
+ [NM_ATT_IPACC_UNIT_NAME] = { TLV_TYPE_TL16V },
+ [NM_ATT_IPACC_SNMP_CFG] = { TLV_TYPE_TL16V },
+ [NM_ATT_IPACC_PRIM_OML_CFG_LIST] = { TLV_TYPE_TL16V },
+ [NM_ATT_IPACC_NV_FLAGS] = { TLV_TYPE_TL16V },
+ [NM_ATT_IPACC_FREQ_CTRL] = { TLV_TYPE_FIXED, 2 },
+ [NM_ATT_IPACC_PRIM_OML_FB_TOUT] = { TLV_TYPE_TL16V },
+ [NM_ATT_IPACC_CUR_SW_CFG] = { TLV_TYPE_TL16V },
+ [NM_ATT_IPACC_TIMING_BUS] = { TLV_TYPE_TL16V },
+ [NM_ATT_IPACC_CGI] = { TLV_TYPE_TL16V },
+ [NM_ATT_IPACC_RAC] = { TLV_TYPE_TL16V },
+ [NM_ATT_IPACC_OBJ_VERSION] = { TLV_TYPE_TL16V },
+ [NM_ATT_IPACC_GPRS_PAGING_CFG]= { TLV_TYPE_TL16V },
+ [NM_ATT_IPACC_NSEI] = { TLV_TYPE_TL16V },
+ [NM_ATT_IPACC_BVCI] = { TLV_TYPE_TL16V },
+ [NM_ATT_IPACC_NSVCI] = { TLV_TYPE_TL16V },
+ [NM_ATT_IPACC_NS_CFG] = { TLV_TYPE_TL16V },
+ [NM_ATT_IPACC_BSSGP_CFG] = { TLV_TYPE_TL16V },
+ [NM_ATT_IPACC_NS_LINK_CFG] = { TLV_TYPE_TL16V },
+ [NM_ATT_IPACC_RLC_CFG] = { TLV_TYPE_TL16V },
+ [NM_ATT_IPACC_ALM_THRESH_LIST]= { TLV_TYPE_TL16V },
+ [NM_ATT_IPACC_MONIT_VAL_LIST] = { TLV_TYPE_TL16V },
+ [NM_ATT_IPACC_TIB_CONTROL] = { TLV_TYPE_TL16V },
+ [NM_ATT_IPACC_SUPP_FEATURES] = { TLV_TYPE_TL16V },
+ [NM_ATT_IPACC_CODING_SCHEMES] = { TLV_TYPE_TL16V },
+ [NM_ATT_IPACC_RLC_CFG_2] = { TLV_TYPE_TL16V },
+ [NM_ATT_IPACC_HEARTB_TOUT] = { TLV_TYPE_TL16V },
+ [NM_ATT_IPACC_UPTIME] = { TLV_TYPE_TL16V },
+ [NM_ATT_IPACC_RLC_CFG_3] = { TLV_TYPE_TL16V },
+ [NM_ATT_IPACC_SSL_CFG] = { TLV_TYPE_TL16V },
+ [NM_ATT_IPACC_SEC_POSSIBLE] = { TLV_TYPE_TL16V },
+ [NM_ATT_IPACC_IML_SSL_STATE] = { TLV_TYPE_TL16V },
+ [NM_ATT_IPACC_REVOC_DATE] = { TLV_TYPE_TL16V },
+ },
+};
+
/*! \brief GSM A-bis OML TLV parser definition */
const struct tlv_definition abis_nm_att_tlvdef = {
.def = {
diff --git a/src/gsm/libosmogsm.map b/src/gsm/libosmogsm.map
index a3d224f1..199d05af 100644
--- a/src/gsm/libosmogsm.map
+++ b/src/gsm/libosmogsm.map
@@ -10,11 +10,13 @@ abis_nm_event_type_name;
abis_nm_nack_cause_name;
abis_nm_nack_name;
abis_nm_att_tlvdef;
+abis_nm_att_tlvdef_ipa;
abis_nm_osmo_att_tlvdef;
abis_nm_msg_disc_names;
abis_nm_obj_class_names;
abis_nm_opstate_name;
abis_nm_nacks;
+abis_nm_t200_ms;
abis_nm_no_ack_nack;
abis_nm_pchan4chcomb;
abis_nm_reports;