reimplement chan_compat_with_mode() to take care of CSD
This commit is contained in:
parent
9fc70f365a
commit
bb53e3577a
|
@ -313,19 +313,44 @@ int gsm0808_submit_dtap(struct gsm_subscriber_connection *conn,
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* \brief Check if the given channel is compatible with the mode/fullrate
|
* \brief Check if the given channel is compatible with the mode/fullrate
|
||||||
*
|
|
||||||
* NOTE: This code is only written with TCH/F and TCH/H in mind. This means
|
|
||||||
* that it will not work for CSD, handover, etc. This also assumes that the
|
|
||||||
* type of the lchan is either a TCH or a SDCCH.
|
|
||||||
*/
|
*/
|
||||||
static int chan_compat_with_mode(struct gsm_lchan *lchan, int chan_mode, int full_rate)
|
static int chan_compat_with_mode(struct gsm_lchan *lchan, int chan_mode, int full_rate)
|
||||||
{
|
{
|
||||||
if (lchan->type == GSM_LCHAN_SDCCH)
|
switch (chan_mode) {
|
||||||
return 0;
|
case GSM48_CMODE_SIGN:
|
||||||
if (full_rate && lchan->type != GSM_LCHAN_TCH_F)
|
/* signalling is always possible */
|
||||||
return 0;
|
return 1;
|
||||||
|
case GSM48_CMODE_SPEECH_V1:
|
||||||
|
case GSM48_CMODE_SPEECH_AMR:
|
||||||
|
case GSM48_CMODE_DATA_3k6:
|
||||||
|
case GSM48_CMODE_DATA_6k0:
|
||||||
|
/* these services can all run on TCH/H, but we may have
|
||||||
|
* an explicit override by the 'full_rate' argument */
|
||||||
|
switch (lchan->type) {
|
||||||
|
case GSM_LCHAN_TCH_F:
|
||||||
|
return 1;
|
||||||
|
case GSM_LCHAN_TCH_H:
|
||||||
|
if (full_rate)
|
||||||
|
return 0;
|
||||||
|
else
|
||||||
|
return 1;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case GSM48_CMODE_DATA_12k0:
|
||||||
|
case GSM48_CMODE_DATA_14k5:
|
||||||
|
case GSM48_CMODE_SPEECH_EFR:
|
||||||
|
/* these services all explicitly require a TCH/F */
|
||||||
|
if (lchan->type == GSM_LCHAN_TCH_F)
|
||||||
|
return 1;
|
||||||
|
else
|
||||||
|
return 0;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
return 1;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
Loading…
Reference in New Issue