summaryrefslogtreecommitdiffstats
path: root/include/osmocom/gsm/gsm0808.h
diff options
context:
space:
mode:
authorNeels Hofmeyr <neels@hofmeyr.de>2018-03-13 03:40:53 +0100
committerNeels Hofmeyr <neels@hofmeyr.de>2018-05-27 22:04:17 +0200
commit70aba3ffe2e6dbff4b8bf17c0f1273d8b4387109 (patch)
tree01e7d819f0c1039f3d43383a178cf2a23a9f6597 /include/osmocom/gsm/gsm0808.h
parent38e58416b1ab32a7f156d01b166493411f4cffdb (diff)
add support for gsm0808 HANDOVER REQUIRED message
Related: OS#2283 (inter-BSC Handover, BSC side, MO) Change-Id: Idb6dc3eab0282158a17091d97ed77c1e2e3eb3c2
Diffstat (limited to 'include/osmocom/gsm/gsm0808.h')
-rw-r--r--include/osmocom/gsm/gsm0808.h37
1 files changed, 37 insertions, 0 deletions
diff --git a/include/osmocom/gsm/gsm0808.h b/include/osmocom/gsm/gsm0808.h
index 369d713c..4f239e66 100644
--- a/include/osmocom/gsm/gsm0808.h
+++ b/include/osmocom/gsm/gsm0808.h
@@ -25,6 +25,7 @@
#include "tlv.h"
#include <osmocom/gsm/protocol/gsm_08_08.h>
+#include <osmocom/gsm/gsm0808_utils.h>
#include <osmocom/gsm/gsm23003.h>
struct sockaddr_storage;
@@ -80,6 +81,42 @@ struct msgb *gsm0808_create_paging(const char *imsi, const uint32_t *tmsi,
const uint8_t *chan_needed)
OSMO_DEPRECATED("use gsm0808_create_paging2 instead");
+/*! 3GPP TS 48.008 §3.2.2.5.8 Old BSS to New BSS information */
+struct gsm0808_old_bss_to_new_bss_info {
+ bool extra_information_present;
+ struct {
+ bool prec;
+ bool lcs;
+ bool ue_prob;
+ } extra_information;
+
+ bool current_channel_type_2_present;
+ struct {
+ uint8_t mode;
+ uint8_t field;
+ } current_channel_type_2;
+
+ /* more items are defined in the spec and may be added later */
+};
+
+/*! 3GPP TS 48.008 §3.2.1.9 HANDOVER REQUIRED */
+struct gsm0808_handover_required {
+ uint16_t cause;
+ struct gsm0808_cell_id_list2 cil;
+
+ bool current_channel_type_1_present;
+ uint8_t current_channel_type_1;
+
+ bool speech_version_used_present;
+ uint8_t speech_version_used;
+
+ bool old_bss_to_new_bss_info_present;
+ struct gsm0808_old_bss_to_new_bss_info old_bss_to_new_bss_info;
+
+ /* more items are defined in the spec and may be added later */
+};
+struct msgb *gsm0808_create_handover_required(const struct gsm0808_handover_required *params);
+
struct msgb *gsm0808_create_dtap(struct msgb *msg, uint8_t link_id);
void gsm0808_prepend_dtap_header(struct msgb *msg, uint8_t link_id);