mirror of
				https://gitea.osmocom.org/cellular-infrastructure/osmo-mgw.git
				synced 2025-11-04 05:53:26 +00:00 
			
		
		
		
	Add extra debug output with channel mode and type
This provides helpful information for debugging internal MNCC handler.
This commit is contained in:
		
				
					committed by
					
						
						Holger Hans Peter Freyther
					
				
			
			
				
	
			
			
			
						parent
						
							aafff96c40
						
					
				
				
					commit
					8db12e4263
				
			@@ -393,11 +393,13 @@ int gsm0808_assign_req(struct gsm_subscriber_connection *conn, int chan_mode, in
 | 
				
			|||||||
		if (handle_new_assignment(conn, chan_mode, full_rate) != 0)
 | 
							if (handle_new_assignment(conn, chan_mode, full_rate) != 0)
 | 
				
			||||||
			goto error;
 | 
								goto error;
 | 
				
			||||||
	} else {
 | 
						} else {
 | 
				
			||||||
		LOGP(DMSC, LOGL_NOTICE,
 | 
					 | 
				
			||||||
			"Sending ChanModify for speech %d %d\n", chan_mode, full_rate);
 | 
					 | 
				
			||||||
		if (chan_mode == GSM48_CMODE_SPEECH_AMR)
 | 
							if (chan_mode == GSM48_CMODE_SPEECH_AMR)
 | 
				
			||||||
			handle_mr_config(conn, conn->lchan, full_rate);
 | 
								handle_mr_config(conn, conn->lchan, full_rate);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							LOGP(DMSC, LOGL_NOTICE,
 | 
				
			||||||
 | 
							     "Sending ChanModify for speech: %s on channel %s\n",
 | 
				
			||||||
 | 
							     get_value_string(gsm48_chan_mode_names, chan_mode),
 | 
				
			||||||
 | 
							     get_value_string(gsm_chan_t_names, conn->lchan->type));
 | 
				
			||||||
		gsm48_lchan_modify(conn->lchan, chan_mode);
 | 
							gsm48_lchan_modify(conn->lchan, chan_mode);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -59,6 +59,7 @@
 | 
				
			|||||||
#include <osmocom/gsm/gsm48.h>
 | 
					#include <osmocom/gsm/gsm48.h>
 | 
				
			||||||
#include <osmocom/gsm/gsm0480.h>
 | 
					#include <osmocom/gsm/gsm0480.h>
 | 
				
			||||||
#include <osmocom/gsm/gsm_utils.h>
 | 
					#include <osmocom/gsm/gsm_utils.h>
 | 
				
			||||||
 | 
					#include <osmocom/gsm/protocol/gsm_04_08.h>
 | 
				
			||||||
#include <osmocom/core/msgb.h>
 | 
					#include <osmocom/core/msgb.h>
 | 
				
			||||||
#include <osmocom/core/talloc.h>
 | 
					#include <osmocom/core/talloc.h>
 | 
				
			||||||
#include <osmocom/gsm/tlv.h>
 | 
					#include <osmocom/gsm/tlv.h>
 | 
				
			||||||
@@ -1598,11 +1599,15 @@ static int tch_map(struct gsm_lchan *lchan, struct gsm_lchan *remote_lchan)
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
	struct gsm_bts *bts = lchan->ts->trx->bts;
 | 
						struct gsm_bts *bts = lchan->ts->trx->bts;
 | 
				
			||||||
	struct gsm_bts *remote_bts = remote_lchan->ts->trx->bts;
 | 
						struct gsm_bts *remote_bts = remote_lchan->ts->trx->bts;
 | 
				
			||||||
 | 
						enum gsm_chan_t lt = lchan->type, rt = remote_lchan->type;
 | 
				
			||||||
	int rc;
 | 
						int rc;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	DEBUGP(DCC, "Setting up TCH map between (bts=%u,trx=%u,ts=%u) and (bts=%u,trx=%u,ts=%u)\n",
 | 
						DEBUGP(DCC, "Setting up TCH map between (bts=%u,trx=%u,ts=%u,%s) and "
 | 
				
			||||||
		bts->nr, lchan->ts->trx->nr, lchan->ts->nr,
 | 
						       "(bts=%u,trx=%u,ts=%u,%s)\n",
 | 
				
			||||||
		remote_bts->nr, remote_lchan->ts->trx->nr, remote_lchan->ts->nr);
 | 
						       bts->nr, lchan->ts->trx->nr, lchan->ts->nr,
 | 
				
			||||||
 | 
						       get_value_string(gsm_chan_t_names, lt),
 | 
				
			||||||
 | 
						       remote_bts->nr, remote_lchan->ts->trx->nr, remote_lchan->ts->nr,
 | 
				
			||||||
 | 
						       get_value_string(gsm_chan_t_names, rt));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (bts->type != remote_bts->type) {
 | 
						if (bts->type != remote_bts->type) {
 | 
				
			||||||
		LOGP(DCC, LOGL_ERROR, "Cannot switch calls between different BTS types yet\n");
 | 
							LOGP(DCC, LOGL_ERROR, "Cannot switch calls between different BTS types yet\n");
 | 
				
			||||||
@@ -2999,6 +3004,7 @@ static int tch_rtp_create(struct gsm_network *net, uint32_t callref)
 | 
				
			|||||||
	struct gsm_bts *bts;
 | 
						struct gsm_bts *bts;
 | 
				
			||||||
	struct gsm_lchan *lchan;
 | 
						struct gsm_lchan *lchan;
 | 
				
			||||||
	struct gsm_trans *trans;
 | 
						struct gsm_trans *trans;
 | 
				
			||||||
 | 
						enum gsm48_chan_mode m;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* Find callref */
 | 
						/* Find callref */
 | 
				
			||||||
	trans = trans_find_by_callref(net, callref);
 | 
						trans = trans_find_by_callref(net, callref);
 | 
				
			||||||
@@ -3038,8 +3044,11 @@ static int tch_rtp_create(struct gsm_network *net, uint32_t callref)
 | 
				
			|||||||
	 */
 | 
						 */
 | 
				
			||||||
	if (lchan->tch_mode == GSM48_CMODE_SIGN) {
 | 
						if (lchan->tch_mode == GSM48_CMODE_SIGN) {
 | 
				
			||||||
		trans->conn->mncc_rtp_create_pending = 1;
 | 
							trans->conn->mncc_rtp_create_pending = 1;
 | 
				
			||||||
		return gsm0808_assign_req(trans->conn,
 | 
							m = mncc_codec_for_mode(lchan->type);
 | 
				
			||||||
				mncc_codec_for_mode(lchan->type),
 | 
							LOGP(DMNCC, LOGL_DEBUG, "RTP create: codec=%s, chan_type=%s\n",
 | 
				
			||||||
 | 
							     get_value_string(gsm48_chan_mode_names, m),
 | 
				
			||||||
 | 
							     get_value_string(gsm_chan_t_names, lchan->type));
 | 
				
			||||||
 | 
							return gsm0808_assign_req(trans->conn, m,
 | 
				
			||||||
				lchan->type != GSM_LCHAN_TCH_H);
 | 
									lchan->type != GSM_LCHAN_TCH_H);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -3068,6 +3077,10 @@ static int tch_rtp_connect(struct gsm_network *net, void *arg)
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	lchan = trans->conn->lchan;
 | 
						lchan = trans->conn->lchan;
 | 
				
			||||||
 | 
						LOGP(DMNCC, LOGL_DEBUG, "RTP connect: codec=%s, chan_type=%s\n",
 | 
				
			||||||
 | 
							     get_value_string(gsm48_chan_mode_names,
 | 
				
			||||||
 | 
									      mncc_codec_for_mode(lchan->type)),
 | 
				
			||||||
 | 
							     get_value_string(gsm_chan_t_names, lchan->type));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* TODO: Check if payload_msg_type is compatible with what we have */
 | 
						/* TODO: Check if payload_msg_type is compatible with what we have */
 | 
				
			||||||
	if (rtp->payload_type != lchan->abis_ip.rtp_payload) {
 | 
						if (rtp->payload_type != lchan->abis_ip.rtp_payload) {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -138,7 +138,8 @@ static int mncc_setup_ind(struct gsm_call *call, int msg_type,
 | 
				
			|||||||
	memset(&mncc, 0, sizeof(struct gsm_mncc));
 | 
						memset(&mncc, 0, sizeof(struct gsm_mncc));
 | 
				
			||||||
	mncc.callref = call->callref;
 | 
						mncc.callref = call->callref;
 | 
				
			||||||
	mncc.lchan_mode = determine_lchan_mode(setup);
 | 
						mncc.lchan_mode = determine_lchan_mode(setup);
 | 
				
			||||||
	DEBUGP(DMNCC, "(call %x) Modify channel mode.\n", call->callref);
 | 
						DEBUGP(DMNCC, "(call %x) Modify channel mode: %s\n", call->callref,
 | 
				
			||||||
 | 
						       get_value_string(gsm48_chan_mode_names, mncc.lchan_mode));
 | 
				
			||||||
	mncc_tx_to_cc(call->net, MNCC_LCHAN_MODIFY, &mncc);
 | 
						mncc_tx_to_cc(call->net, MNCC_LCHAN_MODIFY, &mncc);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* send setup to remote */
 | 
						/* send setup to remote */
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -288,8 +288,10 @@ int main(int argc, char **argv)
 | 
				
			|||||||
		rc = bsc_bootstrap_network(mncc_sock_from_cc, config_file);
 | 
							rc = bsc_bootstrap_network(mncc_sock_from_cc, config_file);
 | 
				
			||||||
		if (rc >= 0)
 | 
							if (rc >= 0)
 | 
				
			||||||
			mncc_sock_init(bsc_gsmnet, mncc_sock_path);
 | 
								mncc_sock_init(bsc_gsmnet, mncc_sock_path);
 | 
				
			||||||
	} else
 | 
						} else {
 | 
				
			||||||
 | 
							DEBUGP(DMNCC, "Using internal MNCC handler.\n");
 | 
				
			||||||
		rc = bsc_bootstrap_network(int_mncc_recv, config_file);
 | 
							rc = bsc_bootstrap_network(int_mncc_recv, config_file);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
	if (rc < 0)
 | 
						if (rc < 0)
 | 
				
			||||||
		exit(1);
 | 
							exit(1);
 | 
				
			||||||
#ifdef BUILD_SMPP
 | 
					#ifdef BUILD_SMPP
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user