aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorPhilipp Maier <pmaier@sysmocom.de>2018-09-21 14:21:50 +0200
committerHarald Welte <laforge@gnumonks.org>2018-10-05 07:58:22 +0000
commitc9a4f697d38b35680938f20928544a734739b185 (patch)
tree02447f24c7f99783e2f1bf8dd2b6fd690b5a2bb9 /include
parent2043db02362ff94463fb8a797724f36bef3e0090 (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')
-rw-r--r--include/osmocom/bsc/codec_pref.h6
-rw-r--r--include/osmocom/bsc/gsm_data.h1
-rw-r--r--include/osmocom/bsc/lchan_fsm.h1
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;