diff options
author | Vadim Yanitskiy <vyanitskiy@sysmocom.de> | 2020-11-27 15:02:32 +0100 |
---|---|---|
committer | Vadim Yanitskiy <vyanitskiy@sysmocom.de> | 2020-12-04 09:27:48 +0100 |
commit | 9381576e1865e5b39d6a68aaf5f23f1d318ccf6c (patch) | |
tree | 4909cc35c02f1bde49887290edbbb80530194009 | |
parent | fb03b43e24b5e3aa0153eed2eac124b5c9ad4636 (diff) |
power_control: generalize power control state structure
Change-Id: I8c6ad8d14349e8a05084c2912644c5202f951f52
Related: SYS#4918
-rw-r--r-- | include/osmo-bts/gsm_data.h | 19 | ||||
-rw-r--r-- | src/common/power_control.c | 2 | ||||
-rw-r--r-- | tests/power/ms_power_loop_test.c | 2 |
3 files changed, 13 insertions, 10 deletions
diff --git a/include/osmo-bts/gsm_data.h b/include/osmo-bts/gsm_data.h index 64102f5a..04c66298 100644 --- a/include/osmo-bts/gsm_data.h +++ b/include/osmo-bts/gsm_data.h @@ -161,6 +161,15 @@ struct gsm_rep_facch { uint32_t fn; }; +struct lchan_power_ctrl_state { + uint8_t current; + uint8_t max; + bool fixed; + + /* Scaled up (100 times) average UL/DL RxLev (in dBm) */ + int avg100_rxlev_dbm; +}; + struct gsm_lchan { /* The TS that we're part of */ struct gsm_bts_trx_ts *ts; @@ -306,15 +315,9 @@ struct gsm_lchan { enum lchan_rel_act_kind rel_act_kind; /* RTP header Marker bit to indicate beginning of speech after pause */ bool rtp_tx_marker; - /* power handling */ - struct { - uint8_t current; - uint8_t max; - bool fixed; - /* Scaled up (100 times) average UL RSSI */ - int avg100_ul_rssi; - } ms_power_ctrl; + /* MS power control */ + struct lchan_power_ctrl_state ms_power_ctrl; /* BTS power reduction (in dB) */ uint8_t bs_power_red; diff --git a/src/common/power_control.c b/src/common/power_control.c index e022e591..3328167a 100644 --- a/src/common/power_control.c +++ b/src/common/power_control.c @@ -79,7 +79,7 @@ static int8_t lchan_ul_pf_ewma(const struct gsm_bts *bts, const int8_t Pwr) { const uint8_t A = bts->ul_power_ctrl.pf.ewma.alpha; - int *Avg100 = &lchan->ms_power_ctrl.avg100_ul_rssi; + int *Avg100 = &lchan->ms_power_ctrl.avg100_rxlev_dbm; /* We don't have 'Avg[n - 1]' if this is the first run */ if (lchan->meas.res_nr == 0) { diff --git a/tests/power/ms_power_loop_test.c b/tests/power/ms_power_loop_test.c index f1b910b8..1abe532e 100644 --- a/tests/power/ms_power_loop_test.c +++ b/tests/power/ms_power_loop_test.c @@ -152,7 +152,7 @@ static void test_pf_algo_ewma(void) init_test(__func__); lchan = &g_trx->ts[0].lchan[0]; - avg100 = &lchan->ms_power_ctrl.avg100_ul_rssi; + avg100 = &lchan->ms_power_ctrl.avg100_rxlev_dbm; g_bts->ul_power_ctrl.pf_algo = BTS_PF_ALGO_EWMA; g_bts->ul_power_ctrl.pf.ewma.alpha = 20; /* 80% smoothing */ |