diff --git a/include/osmocom/gsm/protocol/gsm_04_08.h b/include/osmocom/gsm/protocol/gsm_04_08.h index 791fbd4e7..86b5f6f88 100644 --- a/include/osmocom/gsm/protocol/gsm_04_08.h +++ b/include/osmocom/gsm/protocol/gsm_04_08.h @@ -1631,13 +1631,20 @@ const char *gsm48_pdisc_msgtype_name(uint8_t pdisc, uint8_t msg_type); /* FIXME: Table 10.4 / 10.4a (GPRS) */ /* Section 10.5.3.3 CM service type */ -#define GSM48_CMSERV_MO_CALL_PACKET 1 -#define GSM48_CMSERV_EMERGENCY 2 -#define GSM48_CMSERV_SMS 4 -#define GSM48_CMSERV_SUP_SERV 8 -#define GSM48_CMSERV_VGCS 9 -#define GSM48_CMSERV_VBS 10 -#define GSM48_CMSERV_LOC_SERV 11 +enum osmo_cm_service_type { + GSM48_CMSERV_MO_CALL_PACKET = 1, + GSM48_CMSERV_EMERGENCY = 2, + GSM48_CMSERV_SMS = 4, + GSM48_CMSERV_SUP_SERV = 8, + GSM48_CMSERV_VGCS = 9, + GSM48_CMSERV_VBS = 10, + GSM48_CMSERV_LOC_SERV = 11, + GSM48_CMSERV_MAX_VAL = GSM48_CMSERV_LOC_SERV +}; + +extern const struct value_string osmo_cm_service_type_names[]; +static inline const char *osmo_cm_service_type_name(enum osmo_cm_service_type val) +{ return get_value_string(osmo_cm_service_type_names, val); } /* Section 10.5.2.26, Table 10.5.64 */ #define GSM48_PM_MASK 0x03 diff --git a/src/gsm/gsm48.c b/src/gsm/gsm48.c index 099b85d09..795e98bff 100644 --- a/src/gsm/gsm48.c +++ b/src/gsm/gsm48.c @@ -1145,4 +1145,15 @@ const struct value_string osmo_lu_type_names[] = { {} }; +const struct value_string osmo_cm_service_type_names[] = { + { GSM48_CMSERV_MO_CALL_PACKET, "MO-Call" }, + { GSM48_CMSERV_EMERGENCY, "Emergency-Call" }, + { GSM48_CMSERV_SMS, "Short-Messaging-Service" }, + { GSM48_CMSERV_SUP_SERV, "Supplementary-Service" }, + { GSM48_CMSERV_VGCS, "Voice-Group-Call" }, + { GSM48_CMSERV_VBS, "Voice-Broadcast-Call" }, + { GSM48_CMSERV_LOC_SERV, "Location-Service" }, + {} +}; + /*! @} */ diff --git a/src/gsm/libosmogsm.map b/src/gsm/libosmogsm.map index 331c3f0f8..60ce5d130 100644 --- a/src/gsm/libosmogsm.map +++ b/src/gsm/libosmogsm.map @@ -574,6 +574,7 @@ sgsap_ie_tlvdef; osmo_rat_type_names; osmo_lu_type_names; +osmo_cm_service_type_names; local: *; };