laforge has submitted this change. ( https://gerrit.osmocom.org/c/osmo-msc/+/33367 )
Change subject: msc: add trans_cc_set_remote_from_bc ......................................................................
msc: add trans_cc_set_remote_from_bc
Prepare to set remote CSD bearer services in a future patch.
Related: OS#4394 Change-Id: I71a8ff6167e2adf3ee609883730e5f67b7539185 --- M include/osmocom/msc/transaction_cc.h M src/libmsc/gsm_04_08_cc.c M src/libmsc/transaction_cc.c 3 files changed, 32 insertions(+), 2 deletions(-)
Approvals: Jenkins Builder: Verified pespin: Looks good to me, but someone else must approve laforge: Looks good to me, approved
diff --git a/include/osmocom/msc/transaction_cc.h b/include/osmocom/msc/transaction_cc.h index 32e61b6..c16d9c1 100644 --- a/include/osmocom/msc/transaction_cc.h +++ b/include/osmocom/msc/transaction_cc.h @@ -35,3 +35,4 @@ void trans_cc_filter_set_bss(struct gsm_trans *trans, struct msc_a *msc_a); void trans_cc_filter_run(struct gsm_trans *trans); void trans_cc_filter_set_ms_from_bc(struct gsm_trans *trans, const struct gsm_mncc_bearer_cap *bcap); +void trans_cc_set_remote_from_bc(struct gsm_trans *trans, const struct gsm_mncc_bearer_cap *bcap); diff --git a/src/libmsc/gsm_04_08_cc.c b/src/libmsc/gsm_04_08_cc.c index 77090ca..4fbf929 100644 --- a/src/libmsc/gsm_04_08_cc.c +++ b/src/libmsc/gsm_04_08_cc.c @@ -812,8 +812,7 @@ * MNCC, if any. */ if (!trans->cc.remote.audio_codecs.count && (setup->fields & MNCC_F_BEARER_CAP)) { trans->cc.remote = (struct sdp_msg){}; - sdp_audio_codecs_from_bearer_cap(&trans->cc.remote.audio_codecs, - &setup->bearer_cap); + trans_cc_set_remote_from_bc(trans, &setup->bearer_cap); LOG_TRANS_CAT(trans, DMNCC, LOGL_DEBUG, "rx %s Bearer Cap: remote=%s\n", get_mncc_name(setup->msg_type), sdp_msg_to_str(&trans->cc.remote)); } diff --git a/src/libmsc/transaction_cc.c b/src/libmsc/transaction_cc.c index d221d7c..cb1424b 100644 --- a/src/libmsc/transaction_cc.c +++ b/src/libmsc/transaction_cc.c @@ -64,3 +64,21 @@ break; } } + +void trans_cc_set_remote_from_bc(struct gsm_trans *trans, const struct gsm_mncc_bearer_cap *bcap) +{ + trans->cc.remote.audio_codecs = (struct sdp_audio_codecs){0}; + + if (!bcap) + return; + + switch (bcap->transfer) { + case GSM48_BCAP_ITCAP_SPEECH: + sdp_audio_codecs_from_bearer_cap(&trans->cc.remote.audio_codecs, bcap); + break; + default: + LOG_TRANS(trans, LOGL_ERROR, "Handling of information transfer capability %d not implemented\n", + bcap->transfer); + break; + } +}