On Thu, Dec 05, 2013 at 04:02:36PM +0100, Andreas Eversberg wrote:
+struct bts_codec_conf { + uint8_t hr; + uint8_t efr; + uint8_t afs; + uint8_t ahs;
this naming appears odd. Where is it coming from? Do you know of a BTS that supports AMR on TCH/F but not on TCH/H?
+DEFUN(cfg_bts_codec1, cfg_bts_codec1_cmd, +DEFUN(cfg_bts_codec2, cfg_bts_codec2_cmd, +DEFUN(cfg_bts_codec3, cfg_bts_codec3_cmd, +DEFUN(cfg_bts_codec4, cfg_bts_codec4_cmd, +DEFUN(cfg_bts_codec5, cfg_bts_codec5_cmd,
please remove the code duplication and add a VTY testcase for setting and reading this value.
+static int apply_codec_restrictions(struct gsm_bts *bts, + struct gsm_mncc_bearer_cap *bcap) +{ + int i, j; + + /* remove unsupported speech versions from list */ + for (i = 0, j = 0; bcap->speech_ver[i] >= 0; i++) { + if (bcap->speech_ver[i] == 0) + bcap->speech_ver[j++] = 0; + if (bcap->speech_ver[i] == 2 && bts->codec.efr) + bcap->speech_ver[j++] = 2; + if (bcap->speech_ver[i] == 4 && bts->codec.afs) + bcap->speech_ver[j++] = 4; + if (bcap->speech_ver[i] == 1 && bts->codec.hr) + bcap->speech_ver[j++] = 1; + if (bcap->speech_ver[i] == 5 && bts->codec.ahs) + bcap->speech_ver[j++] = 5; + }
please use the values of the gsm48_bcap_speech_ver enum instead of the magic numbers.