From: Max <[email protected]>

This provides helpful information for debugging internal MNCC handler.
---
 openbsc/src/libbsc/bsc_api.c      |  6 ++++--
 openbsc/src/libmsc/gsm_04_08.c    | 23 ++++++++++++++++++-----
 openbsc/src/libmsc/mncc_builtin.c |  3 ++-
 openbsc/src/osmo-nitb/bsc_hack.c  |  4 +++-
 4 files changed, 27 insertions(+), 9 deletions(-)

diff --git a/openbsc/src/libbsc/bsc_api.c b/openbsc/src/libbsc/bsc_api.c
index 9ddd647..2607cb6 100644
--- a/openbsc/src/libbsc/bsc_api.c
+++ b/openbsc/src/libbsc/bsc_api.c
@@ -394,11 +394,13 @@ int gsm0808_assign_req(struct gsm_subscriber_connection 
*conn,
                if (handle_new_assignment(conn, chan_mode, full_rate) != 0)
                        goto error;
        } else {
-               LOGP(DMSC, LOGL_NOTICE,
-                       "Sending ChanModify for speech %d %d\n", chan_mode, 
full_rate);
                if (chan_mode == GSM48_CMODE_SPEECH_AMR)
                        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);
        }

diff --git a/openbsc/src/libmsc/gsm_04_08.c b/openbsc/src/libmsc/gsm_04_08.c
index 1524ec4..7b78d48 100644
--- a/openbsc/src/libmsc/gsm_04_08.c
+++ b/openbsc/src/libmsc/gsm_04_08.c
@@ -59,6 +59,7 @@
 #include <osmocom/gsm/gsm48.h>
 #include <osmocom/gsm/gsm0480.h>
 #include <osmocom/gsm/gsm_utils.h>
+#include <osmocom/gsm/protocol/gsm_04_08.h>
 #include <osmocom/core/msgb.h>
 #include <osmocom/core/talloc.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 *remote_bts = remote_lchan->ts->trx->bts;
+       enum gsm_chan_t lt = lchan->type, rt = remote_lchan->type;
        int rc;

-       DEBUGP(DCC, "Setting up TCH map between (bts=%u,trx=%u,ts=%u) and 
(bts=%u,trx=%u,ts=%u)\n",
-               bts->nr, lchan->ts->trx->nr, lchan->ts->nr,
-               remote_bts->nr, remote_lchan->ts->trx->nr, 
remote_lchan->ts->nr);
+       DEBUGP(DCC, "Setting up TCH map between (bts=%u,trx=%u,ts=%u,%s) and "
+              "(bts=%u,trx=%u,ts=%u,%s)\n",
+              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) {
                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_lchan *lchan;
        struct gsm_trans *trans;
+       enum gsm48_chan_mode m;

        /* Find 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) {
                trans->conn->mncc_rtp_create_pending = 1;
-               return gsm0808_assign_req(trans->conn,
-                               mncc_codec_for_mode(lchan->type),
+               m = 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);
        }

@@ -3068,6 +3077,10 @@ static int tch_rtp_connect(struct gsm_network *net, void 
*arg)
        }

        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 */
        if (rtp->payload_type != lchan->abis_ip.rtp_payload) {
diff --git a/openbsc/src/libmsc/mncc_builtin.c 
b/openbsc/src/libmsc/mncc_builtin.c
index 0942304..b879756 100644
--- a/openbsc/src/libmsc/mncc_builtin.c
+++ b/openbsc/src/libmsc/mncc_builtin.c
@@ -141,7 +141,8 @@ static int mncc_setup_ind(struct gsm_call *call, int 
msg_type,
        memset(&mncc, 0, sizeof(struct gsm_mncc));
        mncc.callref = call->callref;
        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);

        /* send setup to remote */
diff --git a/openbsc/src/osmo-nitb/bsc_hack.c b/openbsc/src/osmo-nitb/bsc_hack.c
index dffe642..0b360dc 100644
--- a/openbsc/src/osmo-nitb/bsc_hack.c
+++ b/openbsc/src/osmo-nitb/bsc_hack.c
@@ -288,8 +288,10 @@ int main(int argc, char **argv)
                rc = bsc_bootstrap_network(mncc_sock_from_cc, config_file);
                if (rc >= 0)
                        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);
+       }
        if (rc < 0)
                exit(1);
 #ifdef BUILD_SMPP
-- 
2.7.4

Reply via email to