From c8fb714aa8f53efe57464601833c613625d2c3dd Mon Sep 17 00:00:00 2001 From: Harald Welte Date: Sat, 20 Jun 2009 18:44:35 +0200 Subject: Add parsing of 'L1 information' IE of MEASUREMENT RESULT --- openbsc/src/abis_rsl.c | 45 +++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 43 insertions(+), 2 deletions(-) (limited to 'openbsc/src') diff --git a/openbsc/src/abis_rsl.c b/openbsc/src/abis_rsl.c index 5c1967d38..b8990c7ee 100644 --- a/openbsc/src/abis_rsl.c +++ b/openbsc/src/abis_rsl.c @@ -418,6 +418,41 @@ static int ms_pwr_ctl_lvl(struct gsm_bts *bts, unsigned int dbm) return -EINVAL; } +static int ms_pwr_dbm(enum gsm_band band, u_int8_t lvl) +{ + lvl &= 0x1f; + + switch (band) { + case GSM_BAND_400: + case GSM_BAND_900: + case GSM_BAND_850: + if (lvl < 2) + return 39; + else if (lvl < 20) + return 39 - ((lvl - 2) * 2) ; + else + return 5; + break; + case GSM_BAND_1800: + if (lvl < 16) + return 30 - (lvl * 2); + else if (lvl < 29) + return 0; + else + return 36 - ((lvl - 29) * 2); + break; + case GSM_BAND_1900: + if (lvl < 16) + return 30 - (lvl * 2); + else if (lvl < 30) + return -EINVAL; + else + return 33 - (lvl - 30); + break; + } + return -EINVAL; +} + int rsl_chan_ms_power_ctrl(struct gsm_lchan *lchan, unsigned int fpc, int dbm) { struct abis_rsl_dchan_hdr *dh; @@ -809,8 +844,14 @@ static int rsl_rx_meas_res(struct msgb *msg) if (TLVP_PRESENT(&tp, RSL_IE_MS_TIMING_OFFSET)) DEBUGPC(DRSL, "MS_TO=%d ", *TLVP_VAL(&tp, RSL_IE_MS_TIMING_OFFSET)); - if (TLVP_PRESENT(&tp, RSL_IE_L1_INFO)) - DEBUGPC(DRSL, "L1 "); + if (TLVP_PRESENT(&tp, RSL_IE_L1_INFO)) { + u_int8_t *val = TLVP_VAL(&tp, RSL_IE_L1_INFO); + u_int8_t pwr_lvl = val[0] >> 3; + DEBUGPC(DRSL, "L1_MS_PWR=%ddBm ", + ms_pwr_dbm(msg->trx->bts->band, pwr_lvl)); + DEBUGPC(DRSL, "L1_FPC=%u ", val[0] & 0x04 ? 1 : 0); + DEBUGPC(DRSL, "L1_TA=%u ", val[1]); + } if (TLVP_PRESENT(&tp, RSL_IE_L3_INFO)) { DEBUGPC(DRSL, "L3\n"); msg->l3h = TLVP_VAL(&tp, RSL_IE_L3_INFO); -- cgit v1.2.3 From 560982b5d658fa5a8455eb5e2f21911496f878f0 Mon Sep 17 00:00:00 2001 From: Harald Welte Date: Fri, 26 Jun 2009 13:21:57 +0200 Subject: fix typos --- openbsc/src/abis_nm.c | 2 +- openbsc/src/chan_alloc.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) (limited to 'openbsc/src') diff --git a/openbsc/src/abis_nm.c b/openbsc/src/abis_nm.c index 905289b6d..1c06ae5b7 100644 --- a/openbsc/src/abis_nm.c +++ b/openbsc/src/abis_nm.c @@ -178,7 +178,7 @@ static const char *nack_cause_names[] = { [NM_NACK_MSGINCONSIST_PHYSCFG] = "Message inconsistent with physical configuration", [NM_NACK_FILE_INCOMPLETE] = "Complete file notreceived", [NM_NACK_FILE_NOTAVAIL] = "File not available at destination", - [MN_NACK_FILE_NOTACTIVATE] = "File cannot be activate", + [NM_NACK_FILE_NOTACTIVATE] = "File cannot be activate", [NM_NACK_REQ_NOT_GRANT] = "Request not granted", [NM_NACK_WAIT] = "Wait", [NM_NACK_NOTH_REPORT_EXIST] = "Nothing reportable existing", diff --git a/openbsc/src/chan_alloc.c b/openbsc/src/chan_alloc.c index 96632bcb9..0e5c67952 100644 --- a/openbsc/src/chan_alloc.c +++ b/openbsc/src/chan_alloc.c @@ -55,7 +55,7 @@ struct gsm_bts_trx_ts *ts_c0_alloc(struct gsm_bts *bts, static const enum abis_nm_chan_comb chcomb4pchan[] = { [GSM_PCHAN_CCCH] = NM_CHANC_mainBCCH, - [GSM_PCHAN_CCCH_SDCCH4] = NM_CHANC_BCCCHComb, + [GSM_PCHAN_CCCH_SDCCH4] = NM_CHANC_BCCHComb, [GSM_PCHAN_TCH_F] = NM_CHANC_TCHFull, [GSM_PCHAN_TCH_H] = NM_CHANC_TCHHalf, [GSM_PCHAN_SDCCH8_SACCH8C] = NM_CHANC_SDCCH, -- cgit v1.2.3