diff options
author | Alexander Chemeris <Alexander.Chemeris@gmail.com> | 2020-05-13 00:44:04 +0300 |
---|---|---|
committer | Alexander Chemeris <Alexander.Chemeris@gmail.com> | 2020-05-14 20:55:06 +0300 |
commit | afc3c4d40ccfe4e8d2307f61094430f0cdce1993 (patch) | |
tree | ab0245ad6b2f29c35ca101b5f27e723527753a0f /include | |
parent | 5785a4a8fc3c0c685e02b969ad07c1751502f0d5 (diff) |
gsm0808: Implement helper functions for CONFUSION BSSMAP message decoding.
Also add a test for an actual CONFUSION message parsing.
Change-Id: If8afd2d096fb66c6c2f255a08fc1129de3d09cec
Diffstat (limited to 'include')
-rw-r--r-- | include/osmocom/gsm/gsm0808.h | 3 | ||||
-rw-r--r-- | include/osmocom/gsm/protocol/gsm_08_08.h | 13 |
2 files changed, 16 insertions, 0 deletions
diff --git a/include/osmocom/gsm/gsm0808.h b/include/osmocom/gsm/gsm0808.h index 5a33f605..34cec3ca 100644 --- a/include/osmocom/gsm/gsm0808.h +++ b/include/osmocom/gsm/gsm0808.h @@ -319,6 +319,9 @@ const char *gsm0808_cause_class_name(enum gsm0808_cause_class class); * \returns Cause value */ enum gsm0808_cause gsm0808_get_cause(const struct tlv_parsed *tp); +const char *gsm0808_diagnostics_octet_location_str(uint8_t pointer); +const char *gsm0808_diagnostics_bit_location_str(uint8_t bit_pointer); + extern const struct value_string gsm0808_lcls_config_names[]; extern const struct value_string gsm0808_lcls_control_names[]; extern const struct value_string gsm0808_lcls_status_names[]; diff --git a/include/osmocom/gsm/protocol/gsm_08_08.h b/include/osmocom/gsm/protocol/gsm_08_08.h index e791b070..456d7926 100644 --- a/include/osmocom/gsm/protocol/gsm_08_08.h +++ b/include/osmocom/gsm/protocol/gsm_08_08.h @@ -669,3 +669,16 @@ enum gsm0808_lcls_status { GSM0808_LCLS_STS_LOCALLY_SWITCHED = 0x04, GSM0808_LCLS_STS_NA = 0xFF }; + +/* 3GPP TS 48.008 3.2.2.32 Diagnostics */ +struct gsm0808_diagnostics { + uint8_t error_pointer_octet; +#if OSMO_IS_LITTLE_ENDIAN + uint8_t error_pointer_bit_spare:4, + error_pointer_bit:4; +#elif OSMO_IS_BIG_ENDIAN +/* auto-generated from the little endian part above (libosmocore/contrib/struct_endianess.py) */ + uint8_t error_pointer_bit:4, error_pointer_bit_spare:4; +#endif + uint8_t msg[0]; /*! received message which provoked the error */ +} __attribute__((packed)); |