validate RSL "channel rate and type" against VGCS/VBS flags

We already have specfied (but not yet implemented BTS_FEAT_{VBS,VGCS}).

Let's add code to validate "channel rate and type" compatibility
in bts_supports_cm() once a BTS model would actually exhibit those
feature flags.

Change-Id: I5e7f65b44cef6e2f7ad4f152f80a1686a4f511e3
Related: OS#4851
This commit is contained in:
Harald Welte 2023-05-11 09:22:08 +02:00 committed by laforge
parent f0510b6207
commit 44c94fdeae
1 changed files with 14 additions and 0 deletions

View File

@ -791,6 +791,16 @@ int bts_supports_cm(const struct gsm_bts *bts,
return 1;
case RSL_CMOD_SPD_SPEECH:
break;
case RSL_CMOD_CRT_TCH_GROUP_Bm:
case RSL_CMOD_CRT_TCH_GROUP_Lm:
if (!osmo_bts_has_feature(bts->features, BTS_FEAT_VGCS))
return 0;
break;
case RSL_CMOD_CRT_TCH_BCAST_Bm:
case RSL_CMOD_CRT_TCH_BCAST_Lm:
if (!osmo_bts_has_feature(bts->features, BTS_FEAT_VBS))
return 0;
break;
case RSL_CMOD_SPD_DATA:
default:
return 0;
@ -804,6 +814,8 @@ int bts_supports_cm(const struct gsm_bts *bts,
return 0;
/* fall-through */
case RSL_CMOD_CRT_TCH_Bm:
case RSL_CMOD_CRT_TCH_GROUP_Bm:
case RSL_CMOD_CRT_TCH_BCAST_Bm:
switch (cm->chan_rate) {
case RSL_CMOD_SP_GSM1:
feature = BTS_FEAT_SPEECH_F_V1;
@ -825,6 +837,8 @@ int bts_supports_cm(const struct gsm_bts *bts,
return 0;
/* fall-through */
case RSL_CMOD_CRT_TCH_Lm:
case RSL_CMOD_CRT_TCH_GROUP_Lm:
case RSL_CMOD_CRT_TCH_BCAST_Lm:
switch (cm->chan_rate) {
case RSL_CMOD_SP_GSM1:
feature = BTS_FEAT_SPEECH_H_V1;