diff options
author | Holger Hans Peter Freyther <zecke@selfish.org> | 2011-08-06 07:00:52 +0200 |
---|---|---|
committer | Holger Hans Peter Freyther <zecke@selfish.org> | 2013-01-07 16:10:31 +0100 |
commit | 25aa749f10f477ea82847df12c5993721dd1aa1f (patch) | |
tree | f7b24c89d1d7df87758934ad1e7ac4a5c68daf5b /openbsc/src/osmo-bsc/osmo_bsc_api.c | |
parent | ff799f091230d5214b4ba9e08e146fd0d989a458 (diff) |
audio: Make the BSC handle the new mr_config request of the BSC API
Handle the mr_config request and set the AMR multirate config for
the given MSC. Initialize the mr_config with the AMR5.9 default we
have been using until now.
Diffstat (limited to 'openbsc/src/osmo-bsc/osmo_bsc_api.c')
-rw-r--r-- | openbsc/src/osmo-bsc/osmo_bsc_api.c | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/openbsc/src/osmo-bsc/osmo_bsc_api.c b/openbsc/src/osmo-bsc/osmo_bsc_api.c index 87d3f6e61..df8c0444f 100644 --- a/openbsc/src/osmo-bsc/osmo_bsc_api.c +++ b/openbsc/src/osmo-bsc/osmo_bsc_api.c @@ -316,6 +316,34 @@ static void bsc_cm_update(struct gsm_subscriber_connection *conn, queue_msg_or_return(resp); } +static void bsc_mr_config(struct gsm_subscriber_connection *conn, + struct gsm48_multi_rate_conf *conf) +{ + struct osmo_msc_data *msc; + + if (!conn->sccp_con) { + LOGP(DMSC, LOGL_ERROR, + "No msc data available on conn %p. Audio will be broken.\n", + conn); + return; + } + + msc = conn->sccp_con->msc; + + conf->ver = 1; + conf->icmi = 1; + + /* maybe gcc see's it is copy of _one_ byte */ + conf->m4_75 = msc->amr_conf.m4_75; + conf->m5_15 = msc->amr_conf.m5_15; + conf->m5_90 = msc->amr_conf.m5_90; + conf->m6_70 = msc->amr_conf.m6_70; + conf->m7_40 = msc->amr_conf.m7_40; + conf->m7_95 = msc->amr_conf.m7_95; + conf->m10_2 = msc->amr_conf.m10_2; + conf->m12_2 = msc->amr_conf.m12_2; +} + static struct bsc_api bsc_handler = { .sapi_n_reject = bsc_sapi_n_reject, .cipher_mode_compl = bsc_cipher_mode_compl, @@ -325,6 +353,7 @@ static struct bsc_api bsc_handler = { .assign_fail = bsc_assign_fail, .clear_request = bsc_clear_request, .classmark_chg = bsc_cm_update, + .mr_config = bsc_mr_config, }; struct bsc_api *osmo_bsc_api() |