aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorHarald Welte <laforge@osmocom.org>2023-05-08 12:17:28 +0200
committerlaforge <laforge@osmocom.org>2023-07-10 18:06:19 +0000
commitf0510b6207dba19446d29e3240eb82d0bd2522b1 (patch)
treea7cae2de1185915517c4cb2c5d375b45310be66a /include
parent3480a2ab4cc385b803977ef6cf56f3a66c0cb4d4 (diff)
ASCI: NCH / NOTIFICATION support
This adds very minimalistic support for notification of VBS/VGCS calls. Minimalistic in that we * only notify via PCH (not via NCH or FACCH) * only include notification in otherwise empty PAGING TYPE 1 This means that notification will cease to work once the PCH becomes too loaded and we never would send otherwise empty PAGING TYPE 1 anymore. Change-Id: I6f6f72d9a0123cb519b341d72a124aaa2117370e Requires: libosmocore.git I9586b5cb8514010d9358fcfc97c3d34741294522 Related: OS#5781
Diffstat (limited to 'include')
-rw-r--r--include/osmo-bts/Makefile.am1
-rw-r--r--include/osmo-bts/bts.h5
-rw-r--r--include/osmo-bts/notification.h57
3 files changed, 63 insertions, 0 deletions
diff --git a/include/osmo-bts/Makefile.am b/include/osmo-bts/Makefile.am
index 0e45d708..1a072871 100644
--- a/include/osmo-bts/Makefile.am
+++ b/include/osmo-bts/Makefile.am
@@ -32,5 +32,6 @@ noinst_HEADERS = \
dtx_dl_amr_fsm.h \
ta_control.h \
nm_common_fsm.h \
+ notification.h \
osmux.h \
$(NULL)
diff --git a/include/osmo-bts/bts.h b/include/osmo-bts/bts.h
index 296aa0d6..92900890 100644
--- a/include/osmo-bts/bts.h
+++ b/include/osmo-bts/bts.h
@@ -290,6 +290,11 @@ struct gsm_bts {
bool pni; /* Primary Notification Identifier */
} etws;
+ /* Advanced Speech Call Items (VBS/VGCS) + NCH related bits */
+ struct {
+ struct llist_head notifications;
+ } asci;
+
struct paging_state *paging_state;
struct llist_head bsc_oml_hosts;
unsigned int rtp_jitter_buf_ms;
diff --git a/include/osmo-bts/notification.h b/include/osmo-bts/notification.h
new file mode 100644
index 00000000..3d05acc6
--- /dev/null
+++ b/include/osmo-bts/notification.h
@@ -0,0 +1,57 @@
+/* Maintain and generate ASCI notifications */
+
+/*
+ * (C) 2023 by sysmocom - s.f.m.c. GmbH <info@sysmocom.de>
+ * All Rights Reserved
+ *
+ * SPDX-License-Identifier: AGPL-3.0+
+ *
+ * Author: Harald Welte
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+/* one [concurrent] ASCI (VBS/VGCS) notification */
+struct asci_notification {
+ struct llist_head list; /* linked to bts->asci.notifications */
+
+ /* Group call reference (TS 24.008 10.5.1.9 "Descriptive group or broadcast call reference") */
+ uint8_t group_call_ref[5];
+
+ /* Group Channel Description (TS 44.018 10.5.2.14b) */
+ struct {
+ bool present;
+ uint8_t value[255];
+ uint8_t len;
+ } chan_desc;
+
+ /* NCH DRX Information (TS 48.058 9.3.47) */
+ struct {
+ bool present;
+ struct rsl_ie_nch_drx_info value;
+ } nch_drx_info;
+};
+
+int bts_asci_notification_add(struct gsm_bts *bts, const uint8_t *group_call_ref, const uint8_t *chan_desc,
+ uint8_t chan_desc_len, const struct rsl_ie_nch_drx_info *nch_drx_info);
+
+int bts_asci_notification_del(struct gsm_bts *bts, const uint8_t *group_call_ref);
+
+int bts_asci_notification_reset(struct gsm_bts *bts);
+
+const struct asci_notification *bts_asci_notification_get_next(struct gsm_bts *bts);
+
+void append_group_call_information(struct bitvec *bv, const uint8_t *gcr, const uint8_t *ch_desc, uint8_t ch_desc_len);