aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNeels Hofmeyr <neels@hofmeyr.de>2019-01-10 23:33:32 +0100
committerNeels Hofmeyr <nhofmeyr@sysmocom.de>2019-01-14 17:42:03 +0000
commitf8963f9d4e06a37c96cc0fed91f2b3f731382594 (patch)
treebbf3777a4b42bbe29d0e086a1e5ea473223bbbf4
parent894be2d9da60a8e0f7ffc0224e3f294ce49b70be (diff)
change GSM48_CMSERV_* to enum type, add names
Prepare handling multiple CM Service Requests in osmo-msc: an enum is more clear than an int and #defines for passing around and count CM Service types. Change-Id: I9c2a7adc45ab7a1a7519168e965e7d805e1481ff
-rw-r--r--include/osmocom/gsm/protocol/gsm_04_08.h21
-rw-r--r--src/gsm/gsm48.c11
-rw-r--r--src/gsm/libosmogsm.map1
3 files changed, 26 insertions, 7 deletions
diff --git a/include/osmocom/gsm/protocol/gsm_04_08.h b/include/osmocom/gsm/protocol/gsm_04_08.h
index 791fbd4e..86b5f6f8 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 099b85d0..795e98bf 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 331c3f0f..60ce5d13 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: *;
};