diff options
author | Philipp Maier <pmaier@sysmocom.de> | 2018-09-21 14:21:50 +0200 |
---|---|---|
committer | Harald Welte <laforge@gnumonks.org> | 2018-10-05 07:58:22 +0000 |
commit | c9a4f697d38b35680938f20928544a734739b185 (patch) | |
tree | 02447f24c7f99783e2f1bf8dd2b6fd690b5a2bb9 /include/osmocom/bsc | |
parent | 2043db02362ff94463fb8a797724f36bef3e0090 (diff) |
codec_pref: handle S0-S15 in ASSIGNMENT REQUEST
Opposed to all other codecs that are common in GSM, AMR requires a codec
configuration that is expressed by a bitmask (S0 to S15) in the speech
codec list in the ASSIGNMENT REQUEST. Also the BSC acknowledges those
configuration in the ASSIGNMENT COMPLETE message.
At the moment osmo-bsc ignores all incoming configuration bits. The bits
in the ASSIGNMENT COMPLETE speech codec (choosen) field are hardcoded.
- Store the configuration bits while parsing the ASSIGNMENT COMPLETE
- Create an intersection with the configuration that is actually
supported by the BSS
- Return the resulting (chosen) configuration bits with the assignment
complete message.
- Use the (highest of the) agreed codec rates in RSL channel activation.
Change-Id: I2d8ded51b3eb4c003fe2da6f2d6f48d001b73737
Related: OS#3529
Diffstat (limited to 'include/osmocom/bsc')
-rw-r--r-- | include/osmocom/bsc/codec_pref.h | 6 | ||||
-rw-r--r-- | include/osmocom/bsc/gsm_data.h | 1 | ||||
-rw-r--r-- | include/osmocom/bsc/lchan_fsm.h | 1 |
3 files changed, 5 insertions, 3 deletions
diff --git a/include/osmocom/bsc/codec_pref.h b/include/osmocom/bsc/codec_pref.h index 09aaa604b..3085ad4f9 100644 --- a/include/osmocom/bsc/codec_pref.h +++ b/include/osmocom/bsc/codec_pref.h @@ -12,11 +12,11 @@ struct gsm_bts; int match_codec_pref(enum gsm48_chan_mode *chan_mode, bool *full_rate, + uint16_t *s15_s0, const struct gsm0808_channel_type *ct, const struct gsm0808_speech_codec_list *scl, - struct gsm_audio_support * const *audio_support, - int audio_length, - const struct bts_codec_conf *bts_codec); + const struct bsc_msc_data *msc, + const struct gsm_bts *bts); void gen_bss_supported_codec_list(struct gsm0808_speech_codec_list *scl, const struct bsc_msc_data *msc, diff --git a/include/osmocom/bsc/gsm_data.h b/include/osmocom/bsc/gsm_data.h index 33a5a8dc6..7c91e5982 100644 --- a/include/osmocom/bsc/gsm_data.h +++ b/include/osmocom/bsc/gsm_data.h @@ -109,6 +109,7 @@ struct assignment_request { enum gsm48_chan_mode chan_mode; bool full_rate; + uint16_t s15_s0; }; struct assignment_fsm_data { diff --git a/include/osmocom/bsc/lchan_fsm.h b/include/osmocom/bsc/lchan_fsm.h index 9fbf9b3dc..d2e872446 100644 --- a/include/osmocom/bsc/lchan_fsm.h +++ b/include/osmocom/bsc/lchan_fsm.h @@ -58,6 +58,7 @@ struct lchan_activate_info { /* This always is for a specific lchan, so its lchan->type indicates full or half rate. * When a dyn TS was selected, the lchan->type has been set to the desired rate. */ enum gsm48_chan_mode chan_mode; + uint16_t s15_s0; bool requires_voice_stream; bool wait_before_switching_rtp; uint16_t msc_assigned_cic; |