aboutsummaryrefslogtreecommitdiffstats
path: root/include/osmo-bts
diff options
context:
space:
mode:
Diffstat (limited to 'include/osmo-bts')
-rw-r--r--include/osmo-bts/bts.h21
-rw-r--r--include/osmo-bts/gsm_data.h3
2 files changed, 24 insertions, 0 deletions
diff --git a/include/osmo-bts/bts.h b/include/osmo-bts/bts.h
index 9df7f087..db8f741d 100644
--- a/include/osmo-bts/bts.h
+++ b/include/osmo-bts/bts.h
@@ -95,6 +95,12 @@ struct bts_smscb_state {
struct smscb_msg *default_msg; /* default broadcast message; NULL if none */
};
+/* Tx power filtering algorithm */
+enum ms_ul_pf_algo {
+ MS_UL_PF_ALGO_NONE = 0,
+ MS_UL_PF_ALGO_EWMA,
+};
+
/* One BTS */
struct gsm_bts {
/* list header in net->bts_list */
@@ -290,8 +296,23 @@ struct gsm_bts {
bool vty_override; /* OML value overridden by VTY */
} radio_link_timeout;
+ /* TODO: move it to bts->ul_power_ctrl struct */
int ul_power_target; /* Uplink Rx power target */
+ /* Uplink power control */
+ struct {
+ /* UL RSSI filtering algorithm */
+ enum ms_ul_pf_algo pf_algo;
+ /* (Optional) filtering parameters */
+ union {
+ /* Exponentially Weighted Moving Average */
+ struct {
+ /* Smoothing factor: higher the value - less smoothing */
+ uint8_t alpha; /* 1 .. 99 (in %) */
+ } ewma;
+ } pf;
+ } ul_power_ctrl;
+
/* used by the sysmoBTS to adjust band */
uint8_t auto_band;
diff --git a/include/osmo-bts/gsm_data.h b/include/osmo-bts/gsm_data.h
index c6fe6090..1c1c5d44 100644
--- a/include/osmo-bts/gsm_data.h
+++ b/include/osmo-bts/gsm_data.h
@@ -286,6 +286,9 @@ struct gsm_lchan {
uint8_t current;
uint8_t max;
bool fixed;
+
+ /* Scaled up (100 times) average UL RSSI */
+ int avg100_ul_rssi;
} ms_power_ctrl;
/* BTS power reduction (in dB) */