codecs_node
Change-Id: Ib5655214ce48c66d095e8f1b7b7106ac3ee43ec0
This commit is contained in:
parent
10d47901fd
commit
e72a58d4bf
|
@ -30,6 +30,7 @@ enum bsc_vty_node {
|
||||||
GCR_NODE,
|
GCR_NODE,
|
||||||
VGC_NODE,
|
VGC_NODE,
|
||||||
VBC_NODE,
|
VBC_NODE,
|
||||||
|
CODECS_NODE,
|
||||||
};
|
};
|
||||||
|
|
||||||
int bsc_vty_init_extra(void);
|
int bsc_vty_init_extra(void);
|
||||||
|
|
|
@ -69,6 +69,7 @@
|
||||||
#include <osmocom/msc/ran_peer.h>
|
#include <osmocom/msc/ran_peer.h>
|
||||||
#include <osmocom/msc/ran_infra.h>
|
#include <osmocom/msc/ran_infra.h>
|
||||||
#include <osmocom/msc/asci_vty.h>
|
#include <osmocom/msc/asci_vty.h>
|
||||||
|
#include <osmocom/msc/codec_mapping.h>
|
||||||
|
|
||||||
static struct gsm_network *gsmnet = NULL;
|
static struct gsm_network *gsmnet = NULL;
|
||||||
|
|
||||||
|
@ -78,6 +79,12 @@ static struct cmd_node net_node = {
|
||||||
1,
|
1,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static struct cmd_node codecs_node = {
|
||||||
|
CODECS_NODE,
|
||||||
|
"%s(config-codecs)# ",
|
||||||
|
1,
|
||||||
|
};
|
||||||
|
|
||||||
#define VSUB_USE_VTY "VTY"
|
#define VSUB_USE_VTY "VTY"
|
||||||
|
|
||||||
#define NETWORK_STR "Configure the GSM network\n"
|
#define NETWORK_STR "Configure the GSM network\n"
|
||||||
|
@ -758,6 +765,145 @@ DEFUN(show_nri, show_nri_cmd,
|
||||||
return CMD_SUCCESS;
|
return CMD_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
DEFUN(cfg_codecs, cfg_codecs_cmd,
|
||||||
|
"codecs (a|iu)",
|
||||||
|
"Configure allowed codecs and order of preference\n"
|
||||||
|
"Configure codecs on GERAN (2G). For AMR codecs, the 'mode-set' instructs the 2G RAN to support specific AMR"
|
||||||
|
" rates."
|
||||||
|
" The octet-align has no effect on the 2G RAN side: on AoIP, osmo-msc always uses a fixed octet-align mode,"
|
||||||
|
" see <future cfg option>."
|
||||||
|
" Make sure that an entry matching the AoIP octet-align mode is present; optionally offer AMR alignment"
|
||||||
|
" conversion to the other call leg by adding another entry in mismatching octet-align mode."
|
||||||
|
" For TrFO between TCH/H channels with AMR-FR used on TCH/F and 3G, consider that AMR-HR does not support"
|
||||||
|
" mode-set 6 nor 7.\n"
|
||||||
|
"Configure (inner) AMR codecs on UTRAN. Towards 3G RAN, osmo-msc *always* uses VND.3GPP.IUFP. The codecs"
|
||||||
|
" configured here need to be AMR or AMR-WB, corresponding to the AMR payload within the IUFP header."
|
||||||
|
" The 'mode-set' instructs the 3G RAN to support specific AMR rates."
|
||||||
|
" 'octet-align' has no effect on the 3G RAN, but simply offers AMR alignment conversion to the other call leg.\n")
|
||||||
|
{
|
||||||
|
enum osmo_rat_type rat;
|
||||||
|
vty->node = CODECS_NODE;
|
||||||
|
if (!strcmp(argv[0], "a"))
|
||||||
|
rat = OSMO_RAT_GERAN_A;
|
||||||
|
else
|
||||||
|
rat = OSMO_RAT_UTRAN_IU;
|
||||||
|
vty->index = &msc_ran_infra[rat];
|
||||||
|
return CMD_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
DEFUN_ATTR(cfg_codecs_clear, cfg_codecs_clear_cmd,
|
||||||
|
"clear",
|
||||||
|
"Clear all codecs from the list -- this breaks voice calls, you should add new entries after this.\n",
|
||||||
|
CMD_ATTR_IMMEDIATE)
|
||||||
|
{
|
||||||
|
struct ran_infra *dst = vty->index;
|
||||||
|
dst->codecs = (struct sdp_audio_codecs){};
|
||||||
|
return CMD_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
DEFUN_ATTR(cfg_codecs_entry, cfg_codecs_entry_cmd,
|
||||||
|
"(add|no) CODEC_STR",
|
||||||
|
"Add a codec entry\n"
|
||||||
|
"Delete a codec entry\n"
|
||||||
|
"A string like <subtype_name>[:<fmtp-string>][#<payload-type-nr>],"
|
||||||
|
" for example: AMR:octet-align=1;mode-set=0,2,4,7#112."
|
||||||
|
" For AMR fmtp option details, see RFC 4867 8.1."
|
||||||
|
" The '#112' payload type number is the default payload type number used for the codec,"
|
||||||
|
" which may end up being chosen differently in specific calls when osmo-msc needs to avoid duplicates,"
|
||||||
|
" or when the other call leg asks for a different payload type number for the same codec.\n",
|
||||||
|
CMD_ATTR_IMMEDIATE)
|
||||||
|
{
|
||||||
|
struct ran_infra *dst = vty->index;
|
||||||
|
const char *add_del = argv[0];
|
||||||
|
const char *codec_str = argv[1];
|
||||||
|
struct sdp_audio_codec c;
|
||||||
|
struct sdp_audio_codec *exists;
|
||||||
|
const struct codec_mapping *m;
|
||||||
|
bool ok;
|
||||||
|
|
||||||
|
if (sdp_audio_codec_from_str(&c, codec_str))
|
||||||
|
return CMD_WARNING;
|
||||||
|
|
||||||
|
/* make sure this is a known codec */
|
||||||
|
ok = false;
|
||||||
|
codec_mapping_foreach (m) {
|
||||||
|
if (sdp_audio_codec_cmp(&m->sdp, &c, true, false))
|
||||||
|
continue;
|
||||||
|
ok = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!ok) {
|
||||||
|
vty_out(vty, "%% Error: unsupported codec '%s'. See 'do show codecs supported' command.%s", codec_str, VTY_NEWLINE);
|
||||||
|
return CMD_WARNING;
|
||||||
|
}
|
||||||
|
|
||||||
|
exists = sdp_audio_codecs_by_descr(&dst->codecs, &c);
|
||||||
|
|
||||||
|
if (!strcmp("add", add_del)) {
|
||||||
|
if (exists) {
|
||||||
|
vty_out(vty, "%% Codec already present in the list: %s%s", sdp_audio_codec_to_str(exists),
|
||||||
|
VTY_NEWLINE);
|
||||||
|
return CMD_WARNING;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!sdp_audio_codecs_add_copy(&dst->codecs, &c, false, false)) {
|
||||||
|
vty_out(vty, "%% Error: failed to add codec '%s' -- too many entries?%s", codec_str, VTY_NEWLINE);
|
||||||
|
return CMD_WARNING;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
/* "del" */
|
||||||
|
if (!exists) {
|
||||||
|
vty_out(vty, "%% Codec not present in the list: %s%s", codec_str, VTY_NEWLINE);
|
||||||
|
return CMD_WARNING;
|
||||||
|
}
|
||||||
|
sdp_audio_codecs_remove(&dst->codecs, exists);
|
||||||
|
}
|
||||||
|
return CMD_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void config_write_codecs_for_rat(struct vty *vty, enum osmo_rat_type rat)
|
||||||
|
{
|
||||||
|
const struct sdp_audio_codec *c;
|
||||||
|
char buf[128];
|
||||||
|
vty_out(vty, "codecs %s%s", rat == OSMO_RAT_GERAN_A ? "a" : "iu", VTY_NEWLINE);
|
||||||
|
vty_out(vty, " clear%s", VTY_NEWLINE);
|
||||||
|
sdp_audio_codecs_foreach (c, &msc_ran_infra[rat].codecs) {
|
||||||
|
sdp_audio_codec_to_str_buf(buf, sizeof(buf), c);
|
||||||
|
vty_out(vty, " %s%s", buf, VTY_NEWLINE);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static int config_write_codecs(struct vty *vty)
|
||||||
|
{
|
||||||
|
config_write_codecs_for_rat(vty, OSMO_RAT_GERAN_A);
|
||||||
|
config_write_codecs_for_rat(vty, OSMO_RAT_UTRAN_IU);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
DEFUN(show_codecs, show_codecs_cmd,
|
||||||
|
"show codecs [(a|iu|supported)]\n",
|
||||||
|
SHOW_STR "Show codecs listings\n"
|
||||||
|
"Show codecs currently allowed on 2G AoIP calls.\n"
|
||||||
|
"Show codecs currently allowed on 3G CS calls.\n"
|
||||||
|
"List all codecs that osmo-msc supports, in general.\n"
|
||||||
|
)
|
||||||
|
{
|
||||||
|
if (!argc)
|
||||||
|
config_write_codecs(vty);
|
||||||
|
else if (!strcmp("a", argv[0]))
|
||||||
|
config_write_codecs_for_rat(vty, OSMO_RAT_GERAN_A);
|
||||||
|
else if (!strcmp("iu", argv[0]))
|
||||||
|
config_write_codecs_for_rat(vty, OSMO_RAT_UTRAN_IU);
|
||||||
|
else {
|
||||||
|
const struct codec_mapping *m;
|
||||||
|
vty_out(vty, "Supported codecs are:%s", VTY_NEWLINE);
|
||||||
|
codec_mapping_foreach (m)
|
||||||
|
vty_out(vty, " %s%s", sdp_audio_codec_to_str(&m->sdp), VTY_NEWLINE);
|
||||||
|
}
|
||||||
|
return CMD_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
static int config_write_msc(struct vty *vty)
|
static int config_write_msc(struct vty *vty)
|
||||||
{
|
{
|
||||||
vty_out(vty, "msc%s", VTY_NEWLINE);
|
vty_out(vty, "msc%s", VTY_NEWLINE);
|
||||||
|
@ -2072,6 +2218,11 @@ void msc_vty_init(struct gsm_network *msc_network)
|
||||||
install_element(MSC_NODE, &cfg_msc_nri_add_cmd);
|
install_element(MSC_NODE, &cfg_msc_nri_add_cmd);
|
||||||
install_element(MSC_NODE, &cfg_msc_nri_del_cmd);
|
install_element(MSC_NODE, &cfg_msc_nri_del_cmd);
|
||||||
|
|
||||||
|
install_element(CONFIG_NODE, &cfg_codecs_cmd);
|
||||||
|
install_node(&codecs_node, config_write_codecs);
|
||||||
|
install_element(CODECS_NODE, &cfg_codecs_clear_cmd);
|
||||||
|
install_element(CODECS_NODE, &cfg_codecs_entry_cmd);
|
||||||
|
|
||||||
neighbor_ident_vty_init(msc_network);
|
neighbor_ident_vty_init(msc_network);
|
||||||
|
|
||||||
/* Timer configuration commands (generic osmo_tdef API) */
|
/* Timer configuration commands (generic osmo_tdef API) */
|
||||||
|
@ -2097,6 +2248,7 @@ void msc_vty_init(struct gsm_network *msc_network)
|
||||||
install_element_ve(&show_msc_conn_cmd);
|
install_element_ve(&show_msc_conn_cmd);
|
||||||
install_element_ve(&show_msc_transaction_cmd);
|
install_element_ve(&show_msc_transaction_cmd);
|
||||||
install_element_ve(&show_nri_cmd);
|
install_element_ve(&show_nri_cmd);
|
||||||
|
install_element_ve(&show_codecs_cmd);
|
||||||
|
|
||||||
install_element_ve(&sms_send_pend_cmd);
|
install_element_ve(&sms_send_pend_cmd);
|
||||||
install_element_ve(&sms_delete_expired_cmd);
|
install_element_ve(&sms_delete_expired_cmd);
|
||||||
|
|
|
@ -0,0 +1,296 @@
|
||||||
|
OsmoMSC> show codecs?
|
||||||
|
codecs Show codecs listings
|
||||||
|
|
||||||
|
OsmoMSC> show codecs ?
|
||||||
|
[a] Show codecs currently allowed on 2G AoIP calls.
|
||||||
|
[iu] Show codecs currently allowed on 3G CS calls.
|
||||||
|
[supported] List all codecs that osmo-msc supports, in general.
|
||||||
|
|
||||||
|
OsmoMSC> show codecs a
|
||||||
|
codecs a
|
||||||
|
clear
|
||||||
|
AMR:octet-align=1;mode-set=0,2,4,7#112
|
||||||
|
AMR:octet-align=1;mode-set=7#114
|
||||||
|
AMR:octet-align=1;mode-set=0,2,4#115
|
||||||
|
AMR:mode-set=0,2,4,7#116
|
||||||
|
AMR:mode-set=7#117
|
||||||
|
AMR:mode-set=0,2,4#118
|
||||||
|
GSM-EFR#110
|
||||||
|
GSM#3
|
||||||
|
GSM-HR-08#111
|
||||||
|
|
||||||
|
OsmoMSC> show codecs iu
|
||||||
|
codecs iu
|
||||||
|
clear
|
||||||
|
AMR:octet-align=1;mode-set=0,2,4,7#112
|
||||||
|
AMR:octet-align=1;mode-set=7#114
|
||||||
|
AMR:octet-align=1;mode-set=0,2,4#115
|
||||||
|
AMR:mode-set=0,2,4,7#116
|
||||||
|
AMR:mode-set=7#117
|
||||||
|
AMR:mode-set=0,2,4#118
|
||||||
|
AMR-WB/16000:octet-align=1#113
|
||||||
|
|
||||||
|
OsmoMSC> show codecs supported
|
||||||
|
Supported codecs are:
|
||||||
|
PCMU#0
|
||||||
|
GSM#3
|
||||||
|
PCMA#8
|
||||||
|
G729#18
|
||||||
|
GSM-EFR#110
|
||||||
|
GSM-HR-08#111
|
||||||
|
AMR:octet-align=1;mode-set=0,2,4,7#112
|
||||||
|
AMR:octet-align=1;mode-set=7#112
|
||||||
|
AMR:octet-align=1;mode-set=0,2,4#112
|
||||||
|
AMR:octet-align=1;mode-set=0,2,4#112
|
||||||
|
AMR:mode-set=0,2,4,7#112
|
||||||
|
AMR:mode-set=7#112
|
||||||
|
AMR:mode-set=0,2,4#112
|
||||||
|
AMR:mode-set=0,2,4#112
|
||||||
|
AMR-WB/16000:octet-align=1#113
|
||||||
|
VND.3GPP.IUFP/16000#96
|
||||||
|
CLEARMODE#120
|
||||||
|
|
||||||
|
OsmoMSC> show codecs
|
||||||
|
codecs a
|
||||||
|
clear
|
||||||
|
AMR:octet-align=1;mode-set=0,2,4,7#112
|
||||||
|
AMR:octet-align=1;mode-set=7#114
|
||||||
|
AMR:octet-align=1;mode-set=0,2,4#115
|
||||||
|
AMR:mode-set=0,2,4,7#116
|
||||||
|
AMR:mode-set=7#117
|
||||||
|
AMR:mode-set=0,2,4#118
|
||||||
|
GSM-EFR#110
|
||||||
|
GSM#3
|
||||||
|
GSM-HR-08#111
|
||||||
|
codecs iu
|
||||||
|
clear
|
||||||
|
AMR:octet-align=1;mode-set=0,2,4,7#112
|
||||||
|
AMR:octet-align=1;mode-set=7#114
|
||||||
|
AMR:octet-align=1;mode-set=0,2,4#115
|
||||||
|
AMR:mode-set=0,2,4,7#116
|
||||||
|
AMR:mode-set=7#117
|
||||||
|
AMR:mode-set=0,2,4#118
|
||||||
|
AMR-WB/16000:octet-align=1#113
|
||||||
|
|
||||||
|
OsmoMSC> enable
|
||||||
|
OsmoMSC# show codecs
|
||||||
|
codecs a
|
||||||
|
clear
|
||||||
|
AMR:octet-align=1;mode-set=0,2,4,7#112
|
||||||
|
AMR:octet-align=1;mode-set=7#114
|
||||||
|
AMR:octet-align=1;mode-set=0,2,4#115
|
||||||
|
AMR:mode-set=0,2,4,7#116
|
||||||
|
AMR:mode-set=7#117
|
||||||
|
AMR:mode-set=0,2,4#118
|
||||||
|
GSM-EFR#110
|
||||||
|
GSM#3
|
||||||
|
GSM-HR-08#111
|
||||||
|
codecs iu
|
||||||
|
clear
|
||||||
|
AMR:octet-align=1;mode-set=0,2,4,7#112
|
||||||
|
AMR:octet-align=1;mode-set=7#114
|
||||||
|
AMR:octet-align=1;mode-set=0,2,4#115
|
||||||
|
AMR:mode-set=0,2,4,7#116
|
||||||
|
AMR:mode-set=7#117
|
||||||
|
AMR:mode-set=0,2,4#118
|
||||||
|
AMR-WB/16000:octet-align=1#113
|
||||||
|
|
||||||
|
OsmoMSC# configure terminal
|
||||||
|
|
||||||
|
OsmoMSC(config)# do show codecs?
|
||||||
|
codecs Show codecs listings
|
||||||
|
OsmoMSC(config)# do show codecs ?
|
||||||
|
[a] Show codecs currently allowed on 2G AoIP calls.
|
||||||
|
[iu] Show codecs currently allowed on 3G CS calls.
|
||||||
|
[supported] List all codecs that osmo-msc supports, in general.
|
||||||
|
|
||||||
|
OsmoMSC(config)# do show codecs
|
||||||
|
codecs a
|
||||||
|
clear
|
||||||
|
AMR:octet-align=1;mode-set=0,2,4,7#112
|
||||||
|
AMR:octet-align=1;mode-set=7#114
|
||||||
|
AMR:octet-align=1;mode-set=0,2,4#115
|
||||||
|
AMR:mode-set=0,2,4,7#116
|
||||||
|
AMR:mode-set=7#117
|
||||||
|
AMR:mode-set=0,2,4#118
|
||||||
|
GSM-EFR#110
|
||||||
|
GSM#3
|
||||||
|
GSM-HR-08#111
|
||||||
|
codecs iu
|
||||||
|
clear
|
||||||
|
AMR:octet-align=1;mode-set=0,2,4,7#112
|
||||||
|
AMR:octet-align=1;mode-set=7#114
|
||||||
|
AMR:octet-align=1;mode-set=0,2,4#115
|
||||||
|
AMR:mode-set=0,2,4,7#116
|
||||||
|
AMR:mode-set=7#117
|
||||||
|
AMR:mode-set=0,2,4#118
|
||||||
|
AMR-WB/16000:octet-align=1#113
|
||||||
|
|
||||||
|
OsmoMSC(config)# codecs?
|
||||||
|
codecs Configure allowed codecs and order of preference
|
||||||
|
OsmoMSC(config)# codecs ?
|
||||||
|
a Configure codecs on GERAN (2G). For AMR codecs, the 'mode-set' instructs the 2G RAN to support specific AMR rates. The octet-align has no effect on the 2G RAN side: on AoIP, osmo-msc always uses a fixed octet-align mode, see <future cfg option>. Make sure that an entry matching the AoIP octet-align mode is present; optionally offer AMR alignment conversion to the other call leg by adding another entry in mismatching octet-align mode. For TrFO between TCH/H channels with AMR-FR used on TCH/F and 3G, consider that AMR-HR does not support mode-set 6 nor 7.
|
||||||
|
iu Configure (inner) AMR codecs on UTRAN. Towards 3G RAN, osmo-msc *always* uses VND.3GPP.IUFP. The codecs configured here need to be AMR or AMR-WB, corresponding to the AMR payload within the IUFP header. The 'mode-set' instructs the 3G RAN to support specific AMR rates. 'octet-align' has no effect on the 3G RAN, but simply offers AMR alignment conversion to the other call leg.
|
||||||
|
|
||||||
|
OsmoMSC(config)# do show codecs
|
||||||
|
codecs a
|
||||||
|
clear
|
||||||
|
AMR:octet-align=1;mode-set=0,2,4,7#112
|
||||||
|
AMR:octet-align=1;mode-set=7#114
|
||||||
|
AMR:octet-align=1;mode-set=0,2,4#115
|
||||||
|
AMR:mode-set=0,2,4,7#116
|
||||||
|
AMR:mode-set=7#117
|
||||||
|
AMR:mode-set=0,2,4#118
|
||||||
|
GSM-EFR#110
|
||||||
|
GSM#3
|
||||||
|
GSM-HR-08#111
|
||||||
|
codecs iu
|
||||||
|
clear
|
||||||
|
AMR:octet-align=1;mode-set=0,2,4,7#112
|
||||||
|
AMR:octet-align=1;mode-set=7#114
|
||||||
|
AMR:octet-align=1;mode-set=0,2,4#115
|
||||||
|
AMR:mode-set=0,2,4,7#116
|
||||||
|
AMR:mode-set=7#117
|
||||||
|
AMR:mode-set=0,2,4#118
|
||||||
|
AMR-WB/16000:octet-align=1#113
|
||||||
|
|
||||||
|
OsmoMSC(config)# codecs a
|
||||||
|
OsmoMSC(config-codecs)# list
|
||||||
|
...
|
||||||
|
clear
|
||||||
|
(add|no) CODEC_STR
|
||||||
|
OsmoMSC(config-codecs)# ?
|
||||||
|
...
|
||||||
|
clear Clear all codecs from the list -- this breaks voice calls, you should add new entries after this.
|
||||||
|
add Add a codec entry
|
||||||
|
no Delete a codec entry
|
||||||
|
|
||||||
|
OsmoMSC(config-codecs)# ### Remove an entry. (1) affects only 'codecs a'. (2) does not affect the 'octet-align=1' entry
|
||||||
|
OsmoMSC(config-codecs)# no AMR:mode-set=7
|
||||||
|
OsmoMSC(config-codecs)# do show codecs
|
||||||
|
codecs a
|
||||||
|
clear
|
||||||
|
AMR:octet-align=1;mode-set=0,2,4,7#112
|
||||||
|
AMR:octet-align=1;mode-set=7#114
|
||||||
|
AMR:octet-align=1;mode-set=0,2,4#115
|
||||||
|
AMR:mode-set=0,2,4,7#116
|
||||||
|
AMR:mode-set=0,2,4#118
|
||||||
|
GSM-EFR#110
|
||||||
|
GSM#3
|
||||||
|
GSM-HR-08#111
|
||||||
|
codecs iu
|
||||||
|
clear
|
||||||
|
AMR:octet-align=1;mode-set=0,2,4,7#112
|
||||||
|
AMR:octet-align=1;mode-set=7#114
|
||||||
|
AMR:octet-align=1;mode-set=0,2,4#115
|
||||||
|
AMR:mode-set=0,2,4,7#116
|
||||||
|
AMR:mode-set=7#117
|
||||||
|
AMR:mode-set=0,2,4#118
|
||||||
|
AMR-WB/16000:octet-align=1#113
|
||||||
|
OsmoMSC(config-codecs)# ### Also remove the octet-align=1 variant
|
||||||
|
OsmoMSC(config-codecs)# no AMR:octet-align=1;mode-set=7
|
||||||
|
OsmoMSC(config-codecs)# do show codecs
|
||||||
|
codecs a
|
||||||
|
clear
|
||||||
|
AMR:octet-align=1;mode-set=0,2,4,7#112
|
||||||
|
AMR:octet-align=1;mode-set=0,2,4#115
|
||||||
|
AMR:mode-set=0,2,4,7#116
|
||||||
|
AMR:mode-set=0,2,4#118
|
||||||
|
GSM-EFR#110
|
||||||
|
GSM#3
|
||||||
|
GSM-HR-08#111
|
||||||
|
codecs iu
|
||||||
|
clear
|
||||||
|
AMR:octet-align=1;mode-set=0,2,4,7#112
|
||||||
|
AMR:octet-align=1;mode-set=7#114
|
||||||
|
AMR:octet-align=1;mode-set=0,2,4#115
|
||||||
|
AMR:mode-set=0,2,4,7#116
|
||||||
|
AMR:mode-set=7#117
|
||||||
|
AMR:mode-set=0,2,4#118
|
||||||
|
AMR-WB/16000:octet-align=1#113
|
||||||
|
|
||||||
|
OsmoMSC(config-codecs)# ### Remove nonexisting entry
|
||||||
|
OsmoMSC(config-codecs)# no AMR:mode-set=7
|
||||||
|
% Codec not present in the list: AMR:mode-set=7
|
||||||
|
|
||||||
|
OsmoMSC(config-codecs)# clear
|
||||||
|
OsmoMSC(config-codecs)# do show codecs
|
||||||
|
codecs a
|
||||||
|
clear
|
||||||
|
codecs iu
|
||||||
|
clear
|
||||||
|
AMR:octet-align=1;mode-set=0,2,4,7#112
|
||||||
|
AMR:octet-align=1;mode-set=7#114
|
||||||
|
AMR:octet-align=1;mode-set=0,2,4#115
|
||||||
|
AMR:mode-set=0,2,4,7#116
|
||||||
|
AMR:mode-set=7#117
|
||||||
|
AMR:mode-set=0,2,4#118
|
||||||
|
AMR-WB/16000:octet-align=1#113
|
||||||
|
|
||||||
|
OsmoMSC(config-codecs)# add AMR:mode-set=1
|
||||||
|
% Error: unsupported codec 'AMR:mode-set=1'. See 'do show codecs supported' command.
|
||||||
|
|
||||||
|
OsmoMSC(config-codecs)# do show codecs
|
||||||
|
codecs a
|
||||||
|
clear
|
||||||
|
codecs iu
|
||||||
|
clear
|
||||||
|
AMR:octet-align=1;mode-set=0,2,4,7#112
|
||||||
|
AMR:octet-align=1;mode-set=7#114
|
||||||
|
AMR:octet-align=1;mode-set=0,2,4#115
|
||||||
|
AMR:mode-set=0,2,4,7#116
|
||||||
|
AMR:mode-set=7#117
|
||||||
|
AMR:mode-set=0,2,4#118
|
||||||
|
AMR-WB/16000:octet-align=1#113
|
||||||
|
|
||||||
|
OsmoMSC(config-codecs)# add AMR:octet-align=1;mode-set=0,2,4,7#98
|
||||||
|
OsmoMSC(config-codecs)# do show codecs
|
||||||
|
codecs a
|
||||||
|
clear
|
||||||
|
AMR:octet-align=1;mode-set=0,2,4,7#98
|
||||||
|
codecs iu
|
||||||
|
clear
|
||||||
|
AMR:octet-align=1;mode-set=0,2,4,7#112
|
||||||
|
AMR:octet-align=1;mode-set=7#114
|
||||||
|
AMR:octet-align=1;mode-set=0,2,4#115
|
||||||
|
AMR:mode-set=0,2,4,7#116
|
||||||
|
AMR:mode-set=7#117
|
||||||
|
AMR:mode-set=0,2,4#118
|
||||||
|
AMR-WB/16000:octet-align=1#113
|
||||||
|
|
||||||
|
OsmoMSC(config-codecs)# add AMR:octet-align=1;mode-set=0,2,4,7#112
|
||||||
|
% Codec already present in the list: AMR:octet-align=1;mode-set=0,2,4,7#98
|
||||||
|
|
||||||
|
OsmoMSC(config-codecs)# do show codecs
|
||||||
|
codecs a
|
||||||
|
clear
|
||||||
|
AMR:octet-align=1;mode-set=0,2,4,7#98
|
||||||
|
codecs iu
|
||||||
|
clear
|
||||||
|
AMR:octet-align=1;mode-set=0,2,4,7#112
|
||||||
|
AMR:octet-align=1;mode-set=7#114
|
||||||
|
AMR:octet-align=1;mode-set=0,2,4#115
|
||||||
|
AMR:mode-set=0,2,4,7#116
|
||||||
|
AMR:mode-set=7#117
|
||||||
|
AMR:mode-set=0,2,4#118
|
||||||
|
AMR-WB/16000:octet-align=1#113
|
||||||
|
|
||||||
|
OsmoMSC(config-codecs)# add AMR:mode-set=0,2,4,7#98
|
||||||
|
OsmoMSC(config-codecs)# do show codecs
|
||||||
|
codecs a
|
||||||
|
clear
|
||||||
|
AMR:octet-align=1;mode-set=0,2,4,7#98
|
||||||
|
AMR:mode-set=0,2,4,7#98
|
||||||
|
codecs iu
|
||||||
|
clear
|
||||||
|
AMR:octet-align=1;mode-set=0,2,4,7#112
|
||||||
|
AMR:octet-align=1;mode-set=7#114
|
||||||
|
AMR:octet-align=1;mode-set=0,2,4#115
|
||||||
|
AMR:mode-set=0,2,4,7#116
|
||||||
|
AMR:mode-set=7#117
|
||||||
|
AMR:mode-set=0,2,4#118
|
||||||
|
AMR-WB/16000:octet-align=1#113
|
||||||
|
|
||||||
|
OsmoMSC(config-codecs)# ### The AMR octet-align and mode-set fmtp are handled logically, in any order:
|
||||||
|
OsmoMSC(config-codecs)# add AMR:mode-set=0,2,4,7;octet-align=1#112
|
||||||
|
% Codec already present in the list: AMR:octet-align=1;mode-set=0,2,4,7#98
|
|
@ -4,6 +4,7 @@ OsmoMSC(config)# list
|
||||||
...
|
...
|
||||||
network
|
network
|
||||||
msc
|
msc
|
||||||
|
codecs (a|iu)
|
||||||
sgs
|
sgs
|
||||||
smsc
|
smsc
|
||||||
asci
|
asci
|
||||||
|
@ -112,6 +113,15 @@ msc
|
||||||
... ! mncc external
|
... ! mncc external
|
||||||
|
|
||||||
OsmoMSC(config-msc)# exit
|
OsmoMSC(config-msc)# exit
|
||||||
|
|
||||||
|
OsmoMSC(config)# codecs?
|
||||||
|
codecs Configure allowed codecs and order of preference
|
||||||
|
OsmoMSC(config)# codecs ?
|
||||||
|
a Configure codecs on GERAN (2G). For AMR codecs, the 'mode-set' instructs the 2G RAN to support specific AMR rates. The octet-align has no effect on the 2G RAN side: on AoIP, osmo-msc always uses a fixed octet-align mode, see <future cfg option>. Make sure that an entry matching the AoIP octet-align mode is present; optionally offer AMR alignment conversion to the other call leg by adding another entry in mismatching octet-align mode. For TrFO between TCH/H channels with AMR-FR used on TCH/F and 3G, consider that AMR-HR does not support mode-set 6 nor 7.
|
||||||
|
iu Configure (inner) AMR codecs on UTRAN. Towards 3G RAN, osmo-msc *always* uses VND.3GPP.IUFP. The codecs configured here need to be AMR or AMR-WB, corresponding to the AMR payload within the IUFP header. The 'mode-set' instructs the 3G RAN to support specific AMR rates. 'octet-align' has no effect on the 3G RAN, but simply offers AMR alignment conversion to the other call leg.
|
||||||
|
OsmoMSC(config)# codecs a
|
||||||
|
OsmoMSC(config-codecs)# exit
|
||||||
|
|
||||||
OsmoMSC(config)# mncc-int
|
OsmoMSC(config)# mncc-int
|
||||||
OsmoMSC(config-mncc-int)# list
|
OsmoMSC(config-mncc-int)# list
|
||||||
...
|
...
|
||||||
|
@ -191,6 +201,26 @@ smsc
|
||||||
asci
|
asci
|
||||||
disable
|
disable
|
||||||
gcr
|
gcr
|
||||||
|
codecs a
|
||||||
|
clear
|
||||||
|
AMR:octet-align=1;mode-set=0,2,4,7#112
|
||||||
|
AMR:octet-align=1;mode-set=7#114
|
||||||
|
AMR:octet-align=1;mode-set=0,2,4#115
|
||||||
|
AMR:mode-set=0,2,4,7#116
|
||||||
|
AMR:mode-set=7#117
|
||||||
|
AMR:mode-set=0,2,4#118
|
||||||
|
GSM-EFR#110
|
||||||
|
GSM#3
|
||||||
|
GSM-HR-08#111
|
||||||
|
codecs iu
|
||||||
|
clear
|
||||||
|
AMR:octet-align=1;mode-set=0,2,4,7#112
|
||||||
|
AMR:octet-align=1;mode-set=7#114
|
||||||
|
AMR:octet-align=1;mode-set=0,2,4#115
|
||||||
|
AMR:mode-set=0,2,4,7#116
|
||||||
|
AMR:mode-set=7#117
|
||||||
|
AMR:mode-set=0,2,4#118
|
||||||
|
AMR-WB/16000:octet-align=1#113
|
||||||
end
|
end
|
||||||
|
|
||||||
OsmoMSC# configure terminal
|
OsmoMSC# configure terminal
|
||||||
|
|
Loading…
Reference in New Issue