From 11b14fd6624a012cb6bdc49f2dea970f02fda653 Mon Sep 17 00:00:00 2001 From: Harald Welte Date: Mon, 25 Aug 2014 19:01:24 +0200 Subject: tx_power: Check actual TRX output power against intended value We use the completion call-back from L1 to compare the instructed TRX board output power with the actual value as reported back from L1. Right now we only print an error message in case the values disagree. In the future we might want to either use that value as part of our calculation or send an OML alarm report to the BSC. --- include/osmo-bts/tx_power.h | 2 ++ src/common/tx_power.c | 18 ++++++++++++++++++ src/osmo-bts-sysmo/oml.c | 3 +++ 3 files changed, 23 insertions(+) diff --git a/include/osmo-bts/tx_power.h b/include/osmo-bts/tx_power.h index c5d6f2ba..1d76864b 100644 --- a/include/osmo-bts/tx_power.h +++ b/include/osmo-bts/tx_power.h @@ -72,3 +72,5 @@ int get_p_trxout_actual_mdBm(struct gsm_bts_trx *trx, uint8_t bs_power_ie); int get_p_trxout_actual_mdBm_lchan(struct gsm_lchan *lchan); int power_ramp_start(struct gsm_bts_trx *trx, int p_total_tgt_mdBm, int bypass); + +void power_trx_change_compl(struct gsm_bts_trx *trx, int p_trxout_cur_mdBm); diff --git a/src/common/tx_power.c b/src/common/tx_power.c index 27b24250..d8c90b2b 100644 --- a/src/common/tx_power.c +++ b/src/common/tx_power.c @@ -182,6 +182,24 @@ static void power_ramp_timer_cb(void *_trx) /* Instruct L1 to apply new effective TRX output power required */ bts_model_change_power(trx, p_trxout_eff_mdBm); +} + +/* BTS model call-back once one a call to bts_model_change_power() + * completes, indicating actual L1 transmit power */ +void power_trx_change_compl(struct gsm_bts_trx *trx, int p_trxout_cur_mdBm) +{ + struct trx_power_params *tpp = &trx->power_params; + int p_trxout_should_mdBm; + + p_trxout_should_mdBm = get_p_trxout_eff_mdBm(trx, tpp->p_total_tgt_mdBm); + + /* for now we simply write an error message, but in the future + * we might use the value (again) as part of our math? */ + if (p_trxout_cur_mdBm != p_trxout_should_mdBm) { + LOGP(DL1C, LOGL_ERROR, "bts_model notifies us of %u mdBm TRX " + "output power. However, it should be %u mdBm!\n", + p_trxout_cur_mdBm, p_trxout_should_mdBm); + } /* and do another step... */ power_ramp_do_step(trx, 0); diff --git a/src/osmo-bts-sysmo/oml.c b/src/osmo-bts-sysmo/oml.c index 2aed31f4..b590eff3 100644 --- a/src/osmo-bts-sysmo/oml.c +++ b/src/osmo-bts-sysmo/oml.c @@ -1078,6 +1078,9 @@ static int chmod_txpower_compl_cb(struct gsm_bts_trx *trx, struct msgb *l1_msg, LOGPC(DL1C, LOGL_INFO, "setTxPower %f dBm\n", cc->cfgParams.setTxPowerLevel.fTxPowerLevel); + power_trx_change_compl(trx, + (int) (cc->cfgParams.setTxPowerLevel.fTxPowerLevel * 1000)); + msgb_free(l1_msg); return 0; -- cgit v1.2.3