aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorPhilipp Maier <pmaier@sysmocom.de>2018-09-19 13:40:21 +0200
committerNeels Hofmeyr <nhofmeyr@sysmocom.de>2018-09-19 14:01:10 +0000
commit5f2eb150742bd793f2f61fb5cfe2b2df707c0093 (patch)
tree08122f798a25f03a2ca29ba001cc25b1534f9bf5 /include
parent28fc078f9cc02b6c731b0d2e5813857d2ec03ea1 (diff)
gsm0808: add function to convert amr gsm0408 setings to gsm0808
Add a function to convert struct gsm48_multi_rate_conf, which holds the codec settings for AMR, to S0-S15 bit representation as defined in 3GPP TS 48.008 3.2.2.49 This resurrects change-id I4e656731b16621736c7a2f4e64d9ce63b1064e98 which was reverted in I9e0d405e303ed86d23703ca6362e958dddb2f861 due to gsm0808_test failing. The test failure is fixed by properly clearing the struct gsm48_multirate_cfg prior to running tests (add memset(0)). Change-Id: Ia782e21c206c15e840226d79b4209d13658ee916 Related: OS#3548
Diffstat (limited to 'include')
-rw-r--r--include/osmocom/gsm/gsm0808_utils.h1
-rw-r--r--include/osmocom/gsm/protocol/gsm_08_08.h14
2 files changed, 15 insertions, 0 deletions
diff --git a/include/osmocom/gsm/gsm0808_utils.h b/include/osmocom/gsm/gsm0808_utils.h
index 242bce94..0a7429e9 100644
--- a/include/osmocom/gsm/gsm0808_utils.h
+++ b/include/osmocom/gsm/gsm0808_utils.h
@@ -104,6 +104,7 @@ int gsm0808_dec_cell_id(struct gsm0808_cell_id *ci, const uint8_t *elem, uint8_t
int gsm0808_chan_type_to_speech_codec(uint8_t perm_spch);
int gsm0808_speech_codec_from_chan_type(struct gsm0808_speech_codec *sc,
uint8_t perm_spch);
+uint16_t gsm0808_sc_cfg_from_gsm48_mr_cfg(struct gsm48_multi_rate_conf *cfg, bool fr);
/*! Return 3GPP TS 48.008 3.2.2.49 Current Channel Type 1 from enum gsm_chan_t. */
static inline uint8_t gsm0808_current_channel_type_1(enum gsm_chan_t type)
diff --git a/include/osmocom/gsm/protocol/gsm_08_08.h b/include/osmocom/gsm/protocol/gsm_08_08.h
index 94338178..8431ace5 100644
--- a/include/osmocom/gsm/protocol/gsm_08_08.h
+++ b/include/osmocom/gsm/protocol/gsm_08_08.h
@@ -503,6 +503,20 @@ enum gsm0808_speech_codec_defaults {
GSM0808_SC_CFG_DEFAULT_OHR_AMR_WB = 0x01,
};
+/*! Default speech codec configurations broken down by reate.
+ * See also: 3GPP TS 28.062, Table 7.11.3.1.3-2: Preferred Configurations for
+ * the Adaptive Multi-Rate Codec Types. */
+enum gsm0808_speech_codec_rate_defaults {
+ GSM0808_SC_CFG_DEFAULT_AMR_4_75 = 0xff03,
+ GSM0808_SC_CFG_DEFAULT_AMR_5_15 = 0x0000,
+ GSM0808_SC_CFG_DEFAULT_AMR_5_90 = 0xff06,
+ GSM0808_SC_CFG_DEFAULT_AMR_6_70 = 0x3e08,
+ GSM0808_SC_CFG_DEFAULT_AMR_7_40 = 0x0c12,
+ GSM0808_SC_CFG_DEFAULT_AMR_7_95 = 0xc020,
+ GSM0808_SC_CFG_DEFAULT_AMR_10_2 = 0x3040,
+ GSM0808_SC_CFG_DEFAULT_AMR_12_2 = 0xc082
+};
+
/* 3GPP TS 48.008 3.2.2.103 Speech Codec List */
#define SPEECH_CODEC_MAXLEN 255
struct gsm0808_speech_codec_list {