aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVadim Yanitskiy <vyanitskiy@sysmocom.de>2020-11-27 15:02:32 +0100
committerVadim Yanitskiy <vyanitskiy@sysmocom.de>2020-12-04 09:27:48 +0100
commit9381576e1865e5b39d6a68aaf5f23f1d318ccf6c (patch)
tree4909cc35c02f1bde49887290edbbb80530194009
parentfb03b43e24b5e3aa0153eed2eac124b5c9ad4636 (diff)
power_control: generalize power control state structure
-rw-r--r--include/osmo-bts/gsm_data.h19
-rw-r--r--src/common/power_control.c2
-rw-r--r--tests/power/ms_power_loop_test.c2
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 */