From 2c6eab8f4843a9bec5936ecd094ad9d02a895df0 Mon Sep 17 00:00:00 2001 From: Harald Welte Date: Sun, 24 Apr 2011 10:00:37 +0200 Subject: [PATCH] upper mac: fix printing of carrier frequency Hz --- src/tetra_upper_mac.c | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/src/tetra_upper_mac.c b/src/tetra_upper_mac.c index 1c92e4c..8271610 100644 --- a/src/tetra_upper_mac.c +++ b/src/tetra_upper_mac.c @@ -36,6 +36,9 @@ #include "tetra_mle_pdu.h" #include "tetra_gsmtap.h" +/* FIXME: this is ugly */ +static struct tetra_si_decoded g_last_sid; + static void rx_bcast(struct tetra_tmvsap_prim *tmvp) { struct tmv_unitdata_param *tup = &tmvp->u.unitdata; @@ -67,19 +70,27 @@ static void rx_bcast(struct tetra_tmvsap_prim *tmvp) printf("\t%s: %u\n", tetra_get_bs_serv_det_name(1 << i), sid.mle_si.bs_service_details & (1 << i) ? 1 : 0); + memcpy(&g_last_sid, &sid, sizeof(sid)); } const char *tetra_alloc_dump(const struct tetra_chan_alloc_decoded *cad) { static char buf[64]; char *cur = buf; + unsigned int freq_band, freq_offset; + + if (cad->ext_carr_pres) { + freq_band = cad->ext_carr.freq_band; + freq_offset = cad->ext_carr.freq_offset; + } else { + freq_band = g_last_sid.freq_band; + freq_offset = g_last_sid.freq_offset; + } cur += sprintf(cur, "%s (TN%u/%s/%uHz)", tetra_get_alloc_t_name(cad->type), cad->timeslot, tetra_get_ul_dl_name(cad->ul_dl), - /* FIXME: what if ext_carr_pres == 0? */ - tetra_dl_carrier_hz(cad->ext_carr.freq_band, cad->carrier_nr, - cad->ext_carr.freq_offset)); + tetra_dl_carrier_hz(freq_band, cad->carrier_nr, freq_offset)); return buf; }