audio: Move the setting of MultiRateConfig to one place
Move it to one place so it is more easy to make changes to that.
This commit is contained in:
parent
ed999b29bc
commit
594b322a4e
|
@ -1,7 +1,7 @@
|
||||||
/* GSM 08.08 like API for OpenBSC. The bridge from MSC to BSC */
|
/* GSM 08.08 like API for OpenBSC. The bridge from MSC to BSC */
|
||||||
|
|
||||||
/* (C) 2010 by Holger Hans Peter Freyther
|
/* (C) 2010-2011 by Holger Hans Peter Freyther
|
||||||
* (C) 2010 by On-Waves
|
* (C) 2010-2011 by On-Waves
|
||||||
* (C) 2009 by Harald Welte <laforge@gnumonks.org>
|
* (C) 2009 by Harald Welte <laforge@gnumonks.org>
|
||||||
*
|
*
|
||||||
* All Rights Reserved
|
* All Rights Reserved
|
||||||
|
@ -149,6 +149,17 @@ static void assignment_t10_timeout(void *_conn)
|
||||||
api->assign_fail(conn, GSM0808_CAUSE_NO_RADIO_RESOURCE_AVAILABLE, NULL);
|
api->assign_fail(conn, GSM0808_CAUSE_NO_RADIO_RESOURCE_AVAILABLE, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Handle the multirate config
|
||||||
|
*/
|
||||||
|
static void handle_mr_config(struct gsm_subscriber_connection *conn,
|
||||||
|
struct gsm_lchan *lchan)
|
||||||
|
{
|
||||||
|
lchan->mr_conf.ver = 1;
|
||||||
|
lchan->mr_conf.icmi = 1;
|
||||||
|
lchan->mr_conf.m5_90 = 1;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Start a new assignment and make sure that it is completed within T10 either
|
* Start a new assignment and make sure that it is completed within T10 either
|
||||||
* positively, negatively or by the timeout.
|
* positively, negatively or by the timeout.
|
||||||
|
@ -188,11 +199,8 @@ static int handle_new_assignment(struct gsm_subscriber_connection *conn, int cha
|
||||||
new_lchan->rsl_cmode = RSL_CMOD_SPD_SPEECH;
|
new_lchan->rsl_cmode = RSL_CMOD_SPD_SPEECH;
|
||||||
|
|
||||||
/* handle AMR correctly */
|
/* handle AMR correctly */
|
||||||
if (chan_mode == GSM48_CMODE_SPEECH_AMR) {
|
if (chan_mode == GSM48_CMODE_SPEECH_AMR)
|
||||||
new_lchan->mr_conf.ver = 1;
|
handle_mr_config(conn, new_lchan);
|
||||||
new_lchan->mr_conf.icmi = 1;
|
|
||||||
new_lchan->mr_conf.m5_90 = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (rsl_chan_activate_lchan(new_lchan, 0x1, 0, 0) < 0) {
|
if (rsl_chan_activate_lchan(new_lchan, 0x1, 0, 0) < 0) {
|
||||||
LOGP(DHO, LOGL_ERROR, "could not activate channel\n");
|
LOGP(DHO, LOGL_ERROR, "could not activate channel\n");
|
||||||
|
@ -303,8 +311,8 @@ int gsm0808_submit_dtap(struct gsm_subscriber_connection *conn,
|
||||||
* Send a GSM08.08 Assignment Request. Right now this does not contain the
|
* Send a GSM08.08 Assignment Request. Right now this does not contain the
|
||||||
* audio codec type or the allowed rates for the config. It is assumed that
|
* audio codec type or the allowed rates for the config. It is assumed that
|
||||||
* this is for audio handling and that when we have a TCH it is capable of
|
* this is for audio handling and that when we have a TCH it is capable of
|
||||||
* handling the audio codec. On top of that it is assumed that we are using
|
* handling the audio codec. In case AMR is used we will leave the multi
|
||||||
* AMR 5.9 when assigning a TCH/H.
|
* rate configuration to someone else.
|
||||||
*/
|
*/
|
||||||
int gsm0808_assign_req(struct gsm_subscriber_connection *conn, int chan_mode, int full_rate)
|
int gsm0808_assign_req(struct gsm_subscriber_connection *conn, int chan_mode, int full_rate)
|
||||||
{
|
{
|
||||||
|
@ -317,11 +325,8 @@ int gsm0808_assign_req(struct gsm_subscriber_connection *conn, int chan_mode, in
|
||||||
} else {
|
} else {
|
||||||
LOGP(DMSC, LOGL_NOTICE,
|
LOGP(DMSC, LOGL_NOTICE,
|
||||||
"Sending ChanModify for speech %d %d\n", chan_mode, full_rate);
|
"Sending ChanModify for speech %d %d\n", chan_mode, full_rate);
|
||||||
if (chan_mode == GSM48_CMODE_SPEECH_AMR) {
|
if (chan_mode == GSM48_CMODE_SPEECH_AMR)
|
||||||
conn->lchan->mr_conf.ver = 1;
|
handle_mr_config(conn, conn->lchan);
|
||||||
conn->lchan->mr_conf.icmi = 1;
|
|
||||||
conn->lchan->mr_conf.m5_90 = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
gsm48_lchan_modify(conn->lchan, chan_mode);
|
gsm48_lchan_modify(conn->lchan, chan_mode);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue