diff options
author | Harald Welte <laforge@gnumonks.org> | 2018-03-21 22:11:32 +0100 |
---|---|---|
committer | Harald Welte <laforge@gnumonks.org> | 2018-03-22 15:15:12 +0000 |
commit | ead291aaf2bbbea3a853ef02008f88fe4c001db0 (patch) | |
tree | 69095987a9cfc7a3daa3a873794f58f8af59c039 /src/osmo-bsc/osmo_bsc_api.c | |
parent | 6900f8123611fc4667ba42c25a03abf96e697aa7 (diff) |
bssmap: State correct speech codec in ASSIGNMENT COMPLETE
Correctly compute the TS 48.008 "speech mode" (codec) for AMR on TCH/F.
There are way too many different ways how to express a given voice
codec. There are two different schemes in TS 48.008 alone, plus one
on TS 48.058 and one in 04.08 / 44.018. Let's avoid unneeded
conversion (that we might get wrong) and avoid storing information in
a sub-struct of the lchan if we can simply derive it from the lchan
at the time we need it.
Also, move BSSAP related encoding/conversion functions closer to the
user (osmo_bsc_bssap), rather than in libbsc.
Without this patch, TCH/F with AMR was erroneously reported as TCH/H
with AMR in the BSSMAP ASSIGNMENT COMPLETE. After this patch, it's
reported correctly.
Change-Id: I6feebfae77fdc93a7ce333a25dd9b9267c5a4a2e
Related: OS#3094
Related: OS#3095
Related: OS#3096
Diffstat (limited to 'src/osmo-bsc/osmo_bsc_api.c')
-rw-r--r-- | src/osmo-bsc/osmo_bsc_api.c | 7 |
1 files changed, 1 insertions, 6 deletions
diff --git a/src/osmo-bsc/osmo_bsc_api.c b/src/osmo-bsc/osmo_bsc_api.c index 7a42f3c17..b80eb584c 100644 --- a/src/osmo-bsc/osmo_bsc_api.c +++ b/src/osmo-bsc/osmo_bsc_api.c @@ -408,17 +408,12 @@ static void bsc_dtap(struct gsm_subscriber_connection *conn, uint8_t link_id, st osmo_fsm_inst_dispatch(conn->fi, GSCON_EV_MO_DTAP, msg); } -static void bsc_assign_compl(struct gsm_subscriber_connection *conn, uint8_t rr_cause, - uint8_t chosen_channel, uint8_t encr_alg_id, - uint8_t speech_model) +static void bsc_assign_compl(struct gsm_subscriber_connection *conn, uint8_t rr_cause) { if (!msc_connected(conn)) return; conn->lchan->abis_ip.ass_compl.rr_cause = rr_cause; - conn->lchan->abis_ip.ass_compl.chosen_channel = chosen_channel; - conn->lchan->abis_ip.ass_compl.encr_alg_id = encr_alg_id; - conn->lchan->abis_ip.ass_compl.speech_mode = speech_model; if (is_ipaccess_bts(conn_get_bts(conn)) && conn->user_plane.rtp_ip) { /* NOTE: In a network that makes use of an IPA base station |