add support for more RSL channel modes
diff --git a/openbsc/src/abis_rsl.c b/openbsc/src/abis_rsl.c
index 56c3f71..ca09665 100644
--- a/openbsc/src/abis_rsl.c
+++ b/openbsc/src/abis_rsl.c
@@ -637,7 +637,7 @@
return abis_rsl_sendmsg(msg);
}
-/* Chapter 8.4.9 */
+/* Chapter 8.4.9: Modify channel mode on BTS side */
int rsl_chan_mode_modify_req(struct gsm_lchan *lchan)
{
struct abis_rsl_dchan_hdr *dh;
@@ -662,6 +662,25 @@
case GSM48_CMODE_SPEECH_EFR:
cm.chan_rate = RSL_CMOD_SP_GSM2;
break;
+ case GSM48_CMODE_SPEECH_AMR:
+ cm.chan_rate = RSL_CMOD_SP_GSM3;
+ break;
+ default:
+ DEBUGP(DRSL, "Unimplemented channel modification\n");
+ return -1;
+ }
+ break;
+ case GSM_LCHAN_TCH_H:
+ cm.spd_ind = RSL_CMOD_SPD_SPEECH;
+ cm.chan_rt = RSL_CMOD_CRT_TCH_Lm;
+ switch (lchan->tch_mode) {
+ case GSM48_CMODE_SPEECH_V1:
+ cm.chan_rate = RSL_CMOD_SP_GSM1;
+ break;
+ /* Half-rate has no V2 */
+ case GSM48_CMODE_SPEECH_AMR:
+ cm.chan_rate = RSL_CMOD_SP_GSM3;
+ break;
default:
DEBUGP(DRSL, "Unimplemented channel modification\n");
return -1;