diff options
author | Andreas Eversberg <jolly@eversberg.eu> | 2023-06-21 13:35:38 +0200 |
---|---|---|
committer | laforge <laforge@osmocom.org> | 2023-07-17 12:29:42 +0000 |
commit | 9bbdc34a658d8a8f17f1fe677d8fbd28be363894 (patch) | |
tree | 7daccd8b831140874312c0bb9279f277783b2a78 /src | |
parent | 2d27e2ccb10d9773d2d8bf5bfe6e8f08d34c7a7c (diff) |
ASCI: Add callref to assignment command
The (optional) call reference is required to assign a calling subscriber
to a voice group/bcast channel. The BSC can then determine to which
existing VGCS/VBS channel the MS is assigned to.
This IE is part of the GSM standard TS 48.008 (see ยง3.2.1.1)
Change-Id: I7955c6e0eebc930f85f360dda46be17cbd39e181
Related: OS#4854
Diffstat (limited to 'src')
-rw-r--r-- | src/libmsc/ran_msg_a.c | 14 |
1 files changed, 6 insertions, 8 deletions
diff --git a/src/libmsc/ran_msg_a.c b/src/libmsc/ran_msg_a.c index 570a8d1ed..25330458e 100644 --- a/src/libmsc/ran_msg_a.c +++ b/src/libmsc/ran_msg_a.c @@ -1375,13 +1375,6 @@ static int ran_a_channel_type_to_speech_codec_list(struct gsm0808_speech_codec_l return 0; } -static void _gsm0808_assignment_extend_osmux(struct msgb *msg, uint8_t cid) -{ - OSMO_ASSERT(msg->l3h[1] == msgb_l3len(msg) - 2); /*TL not in len */ - msgb_tv_put(msg, GSM0808_IE_OSMO_OSMUX_CID, cid); - msg->l3h[1] = msgb_l3len(msg) - 2; -} - /* Compose a BSSAP Assignment Command. * Passing an RTP address is optional. * The msub is passed merely for error logging. */ @@ -1468,8 +1461,13 @@ static struct msgb *ran_a_make_assignment_command(struct osmo_fsm_inst *log_fi, return NULL; } + /* Append optional IEs: Group Call Reference and Osmux CID */ + OSMO_ASSERT(msg->l3h[1] == msgb_l3len(msg) - 2); /* TL not in len */ + if (ac->callref_present) + gsm0808_enc_group_callref(msg, &ac->callref); if (ac->osmux_present) - _gsm0808_assignment_extend_osmux(msg, ac->osmux_cid); + msgb_tv_put(msg, GSM0808_IE_OSMO_OSMUX_CID, ac->osmux_cid); + msg->l3h[1] = msgb_l3len(msg) - 2; return msg; } |