aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndreas Eversberg <jolly@eversberg.eu>2023-04-23 11:54:16 +0200
committerlaforge <laforge@osmocom.org>2023-07-09 07:41:33 +0000
commit456c6f7e4d0814e7fffad9f97a37b6138248a773 (patch)
tree493be5b8f3276f39440d816d7170181b4c6a5aa4
parent7e4b032b8872f6172cddab5aa642d19c536a0833 (diff)
ASCI: Add two new transaction types for VGCS and VBS
- TRANS_GCC is used for the voice group call. - TRANS_BCC for the voice broadcast call. This also includes the use counters for transaction and CM service request usage: - MSC_A_USE_GCC - MSC_A_USE_BCC - MSC_A_USE_CM_SERVICE_BCC - MSC_A_USE_CM_SERVICE_GCC Change-Id: Iddd11f813582ac2ac2bdee91cc3a525986deb514 Related: OS#4854
-rw-r--r--include/osmocom/msc/msc_a.h4
-rw-r--r--include/osmocom/msc/transaction.h6
-rw-r--r--src/libmsc/msc_a.c18
-rw-r--r--src/libmsc/transaction.c6
4 files changed, 34 insertions, 0 deletions
diff --git a/include/osmocom/msc/msc_a.h b/include/osmocom/msc/msc_a.h
index bb7b8f96d..525674434 100644
--- a/include/osmocom/msc/msc_a.h
+++ b/include/osmocom/msc/msc_a.h
@@ -40,9 +40,13 @@ struct ran_infra;
#define MSC_A_USE_LOCATION_UPDATING "lu"
#define MSC_A_USE_CM_SERVICE_CC "cm_service_cc"
+#define MSC_A_USE_CM_SERVICE_GCC "cm_service_gcc"
+#define MSC_A_USE_CM_SERVICE_BCC "cm_service_bcc"
#define MSC_A_USE_CM_SERVICE_SMS "cm_service_sms"
#define MSC_A_USE_CM_SERVICE_SS "cm_service_ss"
#define MSC_A_USE_PAGING_RESPONSE "paging-response"
+#define MSC_A_USE_GCC "gcc"
+#define MSC_A_USE_BCC "bcc"
#define MSC_A_USE_CC "cc"
#define MSC_A_USE_SMS "sms"
#define MSC_A_USE_SMS_MMTS "sms_mmts"
diff --git a/include/osmocom/msc/transaction.h b/include/osmocom/msc/transaction.h
index bc6c31625..356bd6c8b 100644
--- a/include/osmocom/msc/transaction.h
+++ b/include/osmocom/msc/transaction.h
@@ -43,6 +43,8 @@ enum bridge_state {
};
enum trans_type {
+ TRANS_GCC = GSM48_PDISC_GROUP_CC,
+ TRANS_BCC = GSM48_PDISC_BCAST_CC,
TRANS_CC = GSM48_PDISC_CC,
TRANS_SMS = GSM48_PDISC_SMS,
TRANS_USSD = GSM48_PDISC_NC_SS,
@@ -178,6 +180,10 @@ void trans_conn_closed(const struct msc_a *msc_a);
static inline int trans_log_subsys(enum trans_type type)
{
switch (type) {
+ case TRANS_GCC:
+ return DGCC;
+ case TRANS_BCC:
+ return DBCC;
case TRANS_CC:
case TRANS_SILENT_CALL:
return DCC;
diff --git a/src/libmsc/msc_a.c b/src/libmsc/msc_a.c
index b9aaeaa38..5a5bb8afe 100644
--- a/src/libmsc/msc_a.c
+++ b/src/libmsc/msc_a.c
@@ -488,6 +488,16 @@ static bool msc_a_fsm_has_active_transactions(struct osmo_fsm_inst *fi)
__func__);
return true;
}
+ if (osmo_use_count_by(&msc_a->use_count, MSC_A_USE_CM_SERVICE_GCC)) {
+ LOG_MSC_A(msc_a, LOGL_DEBUG, "%s: still awaiting MO GCC request after a CM Service Request\n",
+ __func__);
+ return true;
+ }
+ if (osmo_use_count_by(&msc_a->use_count, MSC_A_USE_CM_SERVICE_BCC)) {
+ LOG_MSC_A(msc_a, LOGL_DEBUG, "%s: still awaiting MO BCC request after a CM Service Request\n",
+ __func__);
+ return true;
+ }
if (osmo_use_count_by(&msc_a->use_count, MSC_A_USE_CM_SERVICE_SMS)) {
LOG_MSC_A(msc_a, LOGL_DEBUG, "%s: still awaiting MO SMS after a CM Service Request\n",
__func__);
@@ -873,6 +883,8 @@ static void msc_a_fsm_releasing_onenter(struct osmo_fsm_inst *fi, uint32_t prev_
MSC_A_USE_CM_SERVICE_CC,
MSC_A_USE_CM_SERVICE_SMS,
MSC_A_USE_CM_SERVICE_SS,
+ MSC_A_USE_CM_SERVICE_GCC,
+ MSC_A_USE_CM_SERVICE_BCC,
MSC_A_USE_PAGING_RESPONSE,
};
@@ -1955,6 +1967,12 @@ const char *msc_a_cm_service_type_to_use(enum osmo_cm_service_type cm_service_ty
case GSM48_CMSERV_SUP_SERV:
return MSC_A_USE_CM_SERVICE_SS;
+ case GSM48_CMSERV_VGCS:
+ return MSC_A_USE_CM_SERVICE_GCC;
+
+ case GSM48_CMSERV_VBS:
+ return MSC_A_USE_CM_SERVICE_BCC;
+
default:
return NULL;
}
diff --git a/src/libmsc/transaction.c b/src/libmsc/transaction.c
index 21f0b8b08..9fc468227 100644
--- a/src/libmsc/transaction.c
+++ b/src/libmsc/transaction.c
@@ -351,6 +351,8 @@ void trans_conn_closed(const struct msc_a *msc_a)
}
const struct value_string trans_type_names[] = {
+ { TRANS_GCC, "GCC" },
+ { TRANS_BCC, "BCC" },
{ TRANS_CC, "CC" },
{ TRANS_SMS, "SMS" },
{ TRANS_USSD, "NCSS" },
@@ -361,6 +363,10 @@ const struct value_string trans_type_names[] = {
uint8_t trans_type_to_gsm48_proto(enum trans_type type)
{
switch (type) {
+ case TRANS_GCC:
+ return GSM48_PDISC_GROUP_CC;
+ case TRANS_BCC:
+ return GSM48_PDISC_BCAST_CC;
case TRANS_CC:
case TRANS_SILENT_CALL:
return GSM48_PDISC_CC;