From 99d871d5e1add884284818c40d6974b2259e077d Mon Sep 17 00:00:00 2001 From: Andreas Eversberg Date: Thu, 1 Dec 2011 11:11:24 +0100 Subject: layer23/mobile: Adding current rxlev/snr/berr to RR layer structure --- src/host/layer23/include/osmocom/bb/mobile/gsm48_rr.h | 1 + src/host/layer23/src/mobile/gsm48_rr.c | 16 ++++++++++------ 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/src/host/layer23/include/osmocom/bb/mobile/gsm48_rr.h b/src/host/layer23/include/osmocom/bb/mobile/gsm48_rr.h index 1638f14d..cfe797df 100644 --- a/src/host/layer23/include/osmocom/bb/mobile/gsm48_rr.h +++ b/src/host/layer23/include/osmocom/bb/mobile/gsm48_rr.h @@ -205,6 +205,7 @@ struct gsm48_rrlayer { struct osmo_timer_list t_meas; struct gsm48_rr_meas meas; uint8_t monitor; + uint8_t rxlev, berr, snr; /* a summary */ /* audio flow */ uint8_t audio_mode; diff --git a/src/host/layer23/src/mobile/gsm48_rr.c b/src/host/layer23/src/mobile/gsm48_rr.c index 3257557d..6f3c2190 100644 --- a/src/host/layer23/src/mobile/gsm48_rr.c +++ b/src/host/layer23/src/mobile/gsm48_rr.c @@ -630,7 +630,6 @@ static void timeout_rr_meas(void *arg) struct gsm322_cellsel *cs = &rr->ms->cellsel; struct rx_meas_stat *meas = &rr->ms->meas; struct gsm_settings *set = &rr->ms->settings; - int rxlev, berr, snr; uint8_t ch_type, ch_subch, ch_ts; char text[256]; @@ -640,14 +639,17 @@ static void timeout_rr_meas(void *arg) goto restart; } else if (!meas->frames) { sprintf(text, "MON: no cell info"); + rr->rxlev = 255; /* no value */ + rr->berr = 0; + rr->snr = 0; } else { - rxlev = (meas->rxlev + meas->frames / 2) / meas->frames; - berr = (meas->berr + meas->frames / 2) / meas->frames; - snr = (meas->snr + meas->frames / 2) / meas->frames; + rr->rxlev = (meas->rxlev + meas->frames / 2) / meas->frames; + rr->berr = (meas->berr + meas->frames / 2) / meas->frames; + rr->snr = (meas->snr + meas->frames / 2) / meas->frames; sprintf(text, "MON: BCCH=%s lev=%s snr=%2d ber=%3d " "LAI=%s %s %04x ID=%04x", gsm_print_arfcn(cs->sel_arfcn), - gsm_print_rxlev(rxlev), berr, snr, + gsm_print_rxlev(rr->rxlev), rr->berr, rr->snr, gsm_print_mcc(cs->sel_mcc), gsm_print_mnc(cs->sel_mnc), cs->sel_lac, cs->sel_id); if (rr->state == GSM48_RR_ST_DEDICATED) { @@ -661,7 +663,7 @@ static void timeout_rr_meas(void *arg) || ch_type == RSL_CHAN_SDCCH4_ACCH) sprintf(text + strlen(text), "/%d", ch_subch); } else - gsm322_meas(rr->ms, rxlev); + gsm322_meas(rr->ms, rr->rxlev); } LOGP(DRR, LOGL_INFO, "%s\n", text); if (rr->monitor) @@ -5877,6 +5879,8 @@ int gsm48_rr_init(struct osmocom_ms *ms) lapdm_channel_set_l3(&ms->lapdm_channel, &rcv_rsl, ms); + rr->rxlev = 255; /* no value */ + start_rr_t_meas(rr, 1, 0); rr->audio_mode = AUDIO_TX_MICROPHONE | AUDIO_RX_SPEAKER; -- cgit v1.2.3