diff options
author | Oliver Smith <osmith@sysmocom.de> | 2023-05-24 11:15:52 +0200 |
---|---|---|
committer | Oliver Smith <osmith@sysmocom.de> | 2023-06-15 15:06:46 +0200 |
commit | ceca8e6d2d057c49b98a3cb4d8565c1220ca0f95 (patch) | |
tree | 066400acd2256e8a9153a7403fa81b3d7dba4358 /src | |
parent | 1c7f1787bdef689e4046dd29fa2fb0989bfa73ab (diff) |
codec_filter_run: prepare for CSD
Related: OS#4394
Change-Id: I18b396193ad25a3905cc8c1853c9680dab0a2d44
Diffstat (limited to 'src')
-rw-r--r-- | src/libmsc/gsm_04_08_cc.c | 28 | ||||
-rw-r--r-- | src/libmsc/msc_a.c | 11 | ||||
-rw-r--r-- | src/libmsc/transaction_cc.c | 6 |
3 files changed, 21 insertions, 24 deletions
diff --git a/src/libmsc/gsm_04_08_cc.c b/src/libmsc/gsm_04_08_cc.c index 810b404dd..5f54a58c8 100644 --- a/src/libmsc/gsm_04_08_cc.c +++ b/src/libmsc/gsm_04_08_cc.c @@ -676,11 +676,10 @@ static int gsm48_cc_rx_setup(struct gsm_trans *trans, struct msgb *msg) trans_cc_filter_set_bss(trans, trans->msc_a); if (setup.fields & MNCC_F_BEARER_CAP) trans_cc_filter_set_ms_from_bc(trans, &trans->bearer_cap); - codec_filter_run(&trans->cc.codecs); + trans_cc_filter_run(trans); LOG_TRANS(trans, setup.emergency ? LOGL_NOTICE : LOGL_INFO, "%sSETUP to %s\n", setup.emergency ? "EMERGENCY_" : "", setup.called.number); - LOG_TRANS(trans, LOGL_DEBUG, "codecs: %s\n", codec_filter_to_str(&trans->cc.codecs)); rate_ctr_inc(rate_ctr_group_get_ctr(trans->net->msc_ctrs, MSC_CTR_CALL_MO_SETUP)); @@ -822,8 +821,7 @@ static int gsm48_cc_tx_setup(struct gsm_trans *trans, void *arg) LOG_TRANS(trans, LOGL_INFO, "Got no information of remote audio codecs: neither SDP nor Bearer Capability. Trying anyway.\n"); - codec_filter_run(&trans->cc.codecs); - LOG_TRANS(trans, LOGL_DEBUG, "codecs: %s\n", codec_filter_to_str(&trans->cc.codecs)); + trans_cc_filter_run(trans); /* Compose Bearer Capability information that reflects only the codecs (Speech Versions) remaining after * intersecting MS, BSS and remote call leg restrictions. To store in trans for later use, and to include in @@ -982,8 +980,7 @@ static int gsm48_cc_mt_rtp_port_and_codec_known(struct gsm_trans *trans) } codec_filter_set_local_rtp(&trans->cc.codecs, rtp_cn_local); - codec_filter_run(&trans->cc.codecs); - LOG_TRANS(trans, LOGL_DEBUG, "codecs: %s\n", codec_filter_to_str(&trans->cc.codecs)); + trans_cc_filter_run(trans); /* If we haven't completed Assignment yet, don't sent MNCC_RTP_CREATE */ if (!sdp_audio_codec_is_set(&trans->cc.codecs.assignment)) { @@ -1062,8 +1059,7 @@ static int gsm48_cc_rx_alerting(struct gsm_trans *trans, struct msgb *msg) new_cc_state(trans, GSM_CSTATE_CALL_RECEIVED); - codec_filter_run(&trans->cc.codecs); - LOG_TRANS(trans, LOGL_DEBUG, "codecs: %s\n", codec_filter_to_str(&trans->cc.codecs)); + trans_cc_filter_run(trans); rc = sdp_msg_to_sdp_str_buf(alerting.sdp, sizeof(alerting.sdp), &trans->cc.codecs.result); if (rc >= sizeof(alerting.sdp)) { LOG_TRANS(trans, LOGL_ERROR, "MNCC_ALERT_IND: SDP too long (%d > %zu bytes)\n", @@ -1100,9 +1096,8 @@ static int gsm48_cc_tx_alerting(struct gsm_trans *trans, void *arg) struct call_leg *cl = trans->msc_a->cc.call_leg; struct rtp_stream *rtp_cn = cl ? cl->rtp[RTP_TO_CN] : NULL; codec_filter_set_remote(&trans->cc.codecs, alerting->sdp); - codec_filter_run(&trans->cc.codecs); - LOG_TRANS(trans, LOGL_DEBUG, "%s codecs: %s\n", - get_mncc_name(alerting->msg_type), codec_filter_to_str(&trans->cc.codecs)); + trans_cc_filter_run(trans); + LOG_TRANS(trans, LOGL_DEBUG, "msg_type=%s\n", get_mncc_name(alerting->msg_type)); if (rtp_cn) { rtp_stream_set_remote_addr_and_codecs(rtp_cn, &trans->cc.codecs.remote); rtp_stream_commit(rtp_cn); @@ -1160,10 +1155,8 @@ static int gsm48_cc_tx_connect(struct gsm_trans *trans, void *arg) struct call_leg *cl = trans->msc_a->cc.call_leg; struct rtp_stream *rtp_cn = cl ? cl->rtp[RTP_TO_CN] : NULL; rx_mncc_sdp(trans, connect->msg_type, connect->sdp); - codec_filter_run(&trans->cc.codecs); - LOG_TRANS(trans, LOGL_DEBUG, "%s codecs: %s\n", - get_mncc_name(connect->msg_type), - codec_filter_to_str(&trans->cc.codecs)); + trans_cc_filter_run(trans); + LOG_TRANS(trans, LOGL_DEBUG, "msg_type=%s\n", get_mncc_name(connect->msg_type)); if (rtp_cn) { rtp_stream_set_remote_addr_and_codecs(rtp_cn, &trans->cc.codecs.remote); rtp_stream_commit(rtp_cn); @@ -1212,7 +1205,7 @@ static int gsm48_cc_rx_connect(struct gsm_trans *trans, struct msgb *msg) new_cc_state(trans, GSM_CSTATE_CONNECT_REQUEST); rate_ctr_inc(rate_ctr_group_get_ctr(trans->net->msc_ctrs, MSC_CTR_CALL_MT_CONNECT)); - codec_filter_run(&trans->cc.codecs); + trans_cc_filter_run(trans); sdp_msg_to_sdp_str_buf(connect.sdp, sizeof(connect.sdp), &trans->cc.codecs.result); return mncc_recvmsg(trans->net, trans, MNCC_SETUP_CNF, &connect); } @@ -2050,8 +2043,7 @@ int gsm48_tch_rtp_create(struct gsm_trans *trans) return -EINVAL; } - codec_filter_run(&trans->cc.codecs); - LOG_TRANS(trans, LOGL_DEBUG, "codecs: %s\n", codec_filter_to_str(&trans->cc.codecs)); + trans_cc_filter_run(trans); codecs = &trans->cc.codecs.result.audio_codecs; if (!codecs->count) { LOG_TRANS_CAT(trans, DMNCC, LOGL_ERROR, diff --git a/src/libmsc/msc_a.c b/src/libmsc/msc_a.c index 917422e41..d53404f37 100644 --- a/src/libmsc/msc_a.c +++ b/src/libmsc/msc_a.c @@ -36,6 +36,7 @@ #include <osmocom/msc/signal.h> #include <osmocom/msc/vlr.h> #include <osmocom/msc/transaction.h> +#include <osmocom/msc/transaction_cc.h> #include <osmocom/msc/ran_peer.h> #include <osmocom/msc/ran_msg_a.h> #include <osmocom/msc/ran_msg_iu.h> @@ -47,7 +48,6 @@ #include <osmocom/msc/rtp_stream.h> #include <osmocom/msc/msc_ho.h> #include <osmocom/msc/codec_mapping.h> -#include <osmocom/msc/codec_filter.h> #define MSC_A_USE_WAIT_CLEAR_COMPLETE "wait-Clear-Complete" @@ -637,9 +637,8 @@ static void msc_a_call_leg_ran_local_addr_available(struct msc_a *msc_a) return; } - codec_filter_run(&cc_trans->cc.codecs); - LOG_TRANS(cc_trans, LOGL_DEBUG, "Sending Assignment Command with codecs: %s\n", - codec_filter_to_str(&cc_trans->cc.codecs)); + trans_cc_filter_run(cc_trans); + LOG_TRANS(cc_trans, LOGL_DEBUG, "Sending Assignment Command\n"); if (!cc_trans->cc.codecs.result.audio_codecs.count) { LOG_TRANS(cc_trans, LOGL_ERROR, "Assignment not possible, no matching codec: %s\n", @@ -1453,7 +1452,7 @@ static void msc_a_up_call_assignment_complete(struct msc_a *msc_a, const struct if (ac->assignment_complete.codec_list_bss_supported) codec_filter_set_bss(&cc_trans->cc.codecs, ac->assignment_complete.codec_list_bss_supported); - codec_filter_run(&cc_trans->cc.codecs); + trans_cc_filter_run(cc_trans); LOG_TRANS(cc_trans, LOGL_INFO, "Assignment Complete: RAN: %s, CN: %s\n", sdp_audio_codecs_to_str(&rtps_to_ran->codecs), sdp_audio_codecs_to_str(&cc_trans->cc.codecs.result.audio_codecs)); @@ -1865,7 +1864,7 @@ static int msc_a_start_assignment(struct msc_a *msc_a, struct gsm_trans *cc_tran return -EINVAL; /* See if we can set a preliminary codec. If not, pass none for the time being. */ - codec_filter_run(&cc_trans->cc.codecs); + trans_cc_filter_run(cc_trans); cn_rtp_available = call_leg_local_ip(cl, RTP_TO_CN); ran_rtp_available = call_leg_local_ip(cl, RTP_TO_RAN); diff --git a/src/libmsc/transaction_cc.c b/src/libmsc/transaction_cc.c index 58617cd26..96087b89f 100644 --- a/src/libmsc/transaction_cc.c +++ b/src/libmsc/transaction_cc.c @@ -40,6 +40,12 @@ void trans_cc_filter_set_bss(struct gsm_trans *trans, struct msc_a *msc_a) codec_filter_set_bss(&trans->cc.codecs, &msc_a->cc.compl_l3_codec_list_bss_supported); } +void trans_cc_filter_run(struct gsm_trans *trans) +{ + codec_filter_run(&trans->cc.codecs); + LOG_TRANS(trans, LOGL_DEBUG, "codecs: %s\n", codec_filter_to_str(&trans->cc.codecs)); +} + void trans_cc_filter_set_ms_from_bc(struct gsm_trans *trans, const struct gsm_mncc_bearer_cap *bcap) { trans->cc.codecs.ms = (struct sdp_audio_codecs){0}; |