manawyrm has uploaded this change for review. ( https://gerrit.osmocom.org/c/osmo-msc/+/34747?usp=email )
Change subject: libmsc: add 3k1_AUDIO and FAX_G3 bearer cap ......................................................................
libmsc: add 3k1_AUDIO and FAX_G3 bearer cap
Bearer capability 3k1_AUDIO and FAX_G3 are only important for the interworking function, the MSC should handle these calls the same as CSD calls with unrestricted digital bearer capability.
Change-Id: I198aa867a8f236b8ddd05d3b2356f64b876fd4c1 --- M src/libmsc/gsm_04_08_cc.c M src/libmsc/mncc_builtin.c M src/libmsc/msc_a.c M src/libmsc/msc_ho.c M src/libmsc/transaction_cc.c 5 files changed, 30 insertions(+), 0 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/osmo-msc refs/changes/47/34747/1
diff --git a/src/libmsc/gsm_04_08_cc.c b/src/libmsc/gsm_04_08_cc.c index 1e2c5af..31fcb23 100644 --- a/src/libmsc/gsm_04_08_cc.c +++ b/src/libmsc/gsm_04_08_cc.c @@ -825,6 +825,8 @@ LOG_TRANS(trans, LOGL_INFO, "Got no information of remote audio codecs: neither SDP nor Bearer Capability. Trying anyway.\n"); break; + case GSM48_BCAP_ITCAP_3k1_AUDIO: + case GSM48_BCAP_ITCAP_FAX_G3: case GSM48_BCAP_ITCAP_UNR_DIG_INF: if (setup->fields & MNCC_F_BEARER_CAP) { trans->cc.remote = (struct sdp_msg){}; @@ -878,6 +880,8 @@ return rc; } break; + case GSM48_BCAP_ITCAP_3k1_AUDIO: + case GSM48_BCAP_ITCAP_FAX_G3: case GSM48_BCAP_ITCAP_UNR_DIG_INF: if (csd_bs_list_to_bearer_cap(&bearer_cap, &trans->cc.local.bearer_services) == 0) { LOG_TRANS(trans, LOGL_ERROR, "Error composing Bearer Capability for CC Setup\n"); diff --git a/src/libmsc/mncc_builtin.c b/src/libmsc/mncc_builtin.c index c1debc5..6474201 100644 --- a/src/libmsc/mncc_builtin.c +++ b/src/libmsc/mncc_builtin.c @@ -88,6 +88,8 @@ /* we currently only do speech and CSD */ switch (setup->bearer_cap.transfer) { case GSM_MNCC_BCAP_SPEECH: + case GSM_MNCC_BCAP_AUDIO: + case GSM_MNCC_BCAP_FAX_G3: case GSM_MNCC_BCAP_UNR_DIG: break; default: diff --git a/src/libmsc/msc_a.c b/src/libmsc/msc_a.c index b4776a0..e64b54d 100644 --- a/src/libmsc/msc_a.c +++ b/src/libmsc/msc_a.c @@ -669,6 +669,8 @@ return; } break; + case GSM48_BCAP_ITCAP_3k1_AUDIO: + case GSM48_BCAP_ITCAP_FAX_G3: case GSM48_BCAP_ITCAP_UNR_DIG_INF: if (!cc_trans->cc.local.bearer_services.count) { LOG_TRANS(cc_trans, LOGL_ERROR, "Assignment not possible, no matching bearer service: %s\n", diff --git a/src/libmsc/msc_ho.c b/src/libmsc/msc_ho.c index 9748ed9..f826975 100644 --- a/src/libmsc/msc_ho.c +++ b/src/libmsc/msc_ho.c @@ -422,6 +422,8 @@ return; } break; + case GSM48_BCAP_ITCAP_3k1_AUDIO: + case GSM48_BCAP_ITCAP_FAX_G3: case GSM48_BCAP_ITCAP_UNR_DIG_INF: if (csd_bs_list_to_gsm0808_channel_type(&channel_type, &cc_trans->cc.local.bearer_services)) { msc_ho_failed(msc_a, GSM0808_CAUSE_EQUIPMENT_FAILURE, diff --git a/src/libmsc/transaction_cc.c b/src/libmsc/transaction_cc.c index 35ec5dc..1ea6633 100644 --- a/src/libmsc/transaction_cc.c +++ b/src/libmsc/transaction_cc.c @@ -54,6 +54,8 @@ LOG_TRANS(trans, LOGL_DEBUG, "codecs: %s\n", codec_filter_to_str(&trans->cc.codecs, &trans->cc.local, &trans->cc.remote)); break; + case GSM48_BCAP_ITCAP_3k1_AUDIO: + case GSM48_BCAP_ITCAP_FAX_G3: case GSM48_BCAP_ITCAP_UNR_DIG_INF: csd_filter_run(&trans->cc.csd, &trans->cc.local, &trans->cc.remote); LOG_TRANS(trans, LOGL_DEBUG, "codec/BS: %s\n", @@ -78,6 +80,8 @@ case GSM48_BCAP_ITCAP_SPEECH: sdp_audio_codecs_from_bearer_cap(&trans->cc.codecs.ms, bcap); break; + case GSM48_BCAP_ITCAP_3k1_AUDIO: + case GSM48_BCAP_ITCAP_FAX_G3: case GSM48_BCAP_ITCAP_UNR_DIG_INF: sdp_audio_codecs_set_csd(&trans->cc.codecs.ms); csd_bs_list_from_bearer_cap(&trans->cc.csd.ms, bcap); @@ -101,6 +105,8 @@ case GSM48_BCAP_ITCAP_SPEECH: sdp_audio_codecs_from_bearer_cap(&trans->cc.remote.audio_codecs, bcap); break; + case GSM48_BCAP_ITCAP_3k1_AUDIO: + case GSM48_BCAP_ITCAP_FAX_G3: case GSM48_BCAP_ITCAP_UNR_DIG_INF: sdp_audio_codecs_set_csd(&trans->cc.remote.audio_codecs); csd_bs_list_from_bearer_cap(&trans->cc.remote.bearer_services, bcap);