fixeria has submitted this change. (
https://gerrit.osmocom.org/c/osmo-bts/+/42033?usp=email )
Change subject: osmo-bts-trx: apply 'max-initial' value before POWERON
......................................................................
osmo-bts-trx: apply 'max-initial' value before POWERON
Not applying this value before powering the transceiver on results
in transmission at full Tx power for a certain amount of time before
the power ramping begins.
Change-Id: Iff03d4dcb74f67629a59c8d6f8bb60929d9f6ddd
Related: OS#6939
---
M src/osmo-bts-trx/l1_if.h
M src/osmo-bts-trx/trx_provision_fsm.c
M src/osmo-bts-trx/trx_provision_fsm.h
3 files changed, 37 insertions(+), 2 deletions(-)
Approvals:
Jenkins Builder: Verified
laforge: Looks good to me, but someone else must approve
fixeria: Looks good to me, approved
pespin: Looks good to me, but someone else must approve
diff --git a/src/osmo-bts-trx/l1_if.h b/src/osmo-bts-trx/l1_if.h
index 0180499..09bf7ac 100644
--- a/src/osmo-bts-trx/l1_if.h
+++ b/src/osmo-bts-trx/l1_if.h
@@ -97,6 +97,9 @@
bool nomtxpower_sent;
bool nomtxpower_acked;
+ bool setpower_sent;
+ bool setpower_acked;
+
bool maxdly_valid;
int maxdly;
bool maxdly_sent;
diff --git a/src/osmo-bts-trx/trx_provision_fsm.c
b/src/osmo-bts-trx/trx_provision_fsm.c
index 2b8a2d2..617dab3 100644
--- a/src/osmo-bts-trx/trx_provision_fsm.c
+++ b/src/osmo-bts-trx/trx_provision_fsm.c
@@ -35,6 +35,7 @@
#include <osmo-bts/rsl.h>
#include <osmo-bts/nm_common_fsm.h>
#include <osmo-bts/signal.h>
+#include <osmo-bts/tx_power.h>
#include "l1_if.h"
#include "trx_provision_fsm.h"
@@ -101,6 +102,13 @@
osmo_fsm_inst_dispatch(l1h->provision_fi, TRX_PROV_EV_SETFORMAT_CNF,
(void*)(intptr_t)rc);
}
+static void l1if_setpower_att_cb(struct trx_l1h *l1h, int power_att_db, int rc)
+{
+ if (rc != 0)
+ return;
+ osmo_fsm_inst_dispatch(l1h->provision_fi, TRX_PROV_EV_SETPOWER_CNF,
NULL);
+}
+
/*
* transceiver provisioning
*/
@@ -138,6 +146,9 @@
l1h->config.nomtxpower_sent = false;
l1h->config.nomtxpower_acked = false;
+ l1h->config.setpower_sent = false;
+ l1h->config.setpower_acked = false;
+
l1h->config.maxdly_sent = false;
l1h->config.maxdlynb_sent = false;
@@ -206,6 +217,18 @@
l1h->config.bsic_sent = true;
l1h->config.bsic_acked = false;
}
+ /* Once the nominal Tx power is known, apply the initial Tx power
attenuation
+ * before the transceiver is powered on. Otherwise it will be
transmitting
+ * at full power for a certain period of time before the power ramping
begins. */
+ if (!l1h->config.setpower_sent &&
+ (l1h->config.nomtxpower_acked ||
l1h->config.nominal_power_set_by_vty)) {
+ int initial_mdBm = power_ramp_initial_power_mdBm(pinst->trx);
+ int power_att_dB = (get_p_max_out_mdBm(pinst->trx) -
initial_mdBm) / 1000;
+
+ trx_if_cmd_setpower_att(l1h, power_att_dB,
l1if_setpower_att_cb);
+ l1h->config.setpower_sent = true;
+ l1h->config.setpower_acked = false;
+ }
/* Ask transceiver to use the newest TRXD PDU version if not using it
yet */
if (!l1h->config.setformat_sent) {
@@ -269,9 +292,10 @@
(l1h->config.bsic_acked ||
!pinst->phy_link->u.osmotrx.use_legacy_setbsic) &&
(l1h->config.tsc_acked ||
pinst->phy_link->u.osmotrx.use_legacy_setbsic) &&
(l1h->config.nomtxpower_acked ||
l1h->config.nominal_power_set_by_vty) &&
+ (l1h->config.setpower_acked) &&
(l1h->config.setformat_acked)) {
return true;
- }
+ }
return false;
}
@@ -463,6 +487,10 @@
l1h->config.nomtxpower_acked = true;
l1if_trx_set_nominal_power(trx, nominal_power);
break;
+ case TRX_PROV_EV_SETPOWER_CNF:
+ if (l1h->config.setpower_sent)
+ l1h->config.setpower_acked = true;
+ break;
case TRX_PROV_EV_SETBSIC_CNF:
if (l1h->config.bsic_sent)
l1h->config.bsic_acked = true;
@@ -516,7 +544,7 @@
else
trx_prov_fsm_state_chg(fi,
TRX_PROV_ST_OPEN_WAIT_POWERON_CNF);
} else {
- LOGPFSML(fi, LOGL_INFO, "Delay poweron, wait
for:%s%s%s%s%s%s%s%s\n",
+ LOGPFSML(fi, LOGL_INFO, "Delay poweron, wait
for:%s%s%s%s%s%s%s%s%s\n",
l1h->config.enabled ? "" :" enable",
pinst->phy_link->u.osmotrx.use_legacy_setbsic ?
(l1h->config.bsic_valid ?
(l1h->config.bsic_acked ? "" : " bsic-ack") : " bsic") :
@@ -525,6 +553,7 @@
l1h->config.rxtune_acked ? "" : " rxtune-ack",
l1h->config.txtune_acked ? "" : " txtune-ack",
l1h->config.nominal_power_set_by_vty ? "" :
(l1h->config.nomtxpower_acked ? "" : " nomtxpower-ack"),
+ l1h->config.setpower_acked ? "" : " setpower-ack",
l1h->config.setformat_acked ? "" : " setformat-ack",
waiting_other_trx ? "" : " other-trx"
);
@@ -669,6 +698,7 @@
X(TRX_PROV_EV_RXTUNE_CNF) |
X(TRX_PROV_EV_TXTUNE_CNF) |
X(TRX_PROV_EV_NOMTXPOWER_CNF) |
+ X(TRX_PROV_EV_SETPOWER_CNF) |
X(TRX_PROV_EV_SETBSIC_CNF) |
X(TRX_PROV_EV_SETTSC_CNF) |
X(TRX_PROV_EV_SETFORMAT_CNF),
@@ -724,6 +754,7 @@
OSMO_VALUE_STRING(TRX_PROV_EV_RXTUNE_CNF),
OSMO_VALUE_STRING(TRX_PROV_EV_TXTUNE_CNF),
OSMO_VALUE_STRING(TRX_PROV_EV_NOMTXPOWER_CNF),
+ OSMO_VALUE_STRING(TRX_PROV_EV_SETPOWER_CNF),
OSMO_VALUE_STRING(TRX_PROV_EV_SETBSIC_CNF),
OSMO_VALUE_STRING(TRX_PROV_EV_SETTSC_CNF),
OSMO_VALUE_STRING(TRX_PROV_EV_SETFORMAT_CNF),
diff --git a/src/osmo-bts-trx/trx_provision_fsm.h
b/src/osmo-bts-trx/trx_provision_fsm.h
index e89cd32..be8241d 100644
--- a/src/osmo-bts-trx/trx_provision_fsm.h
+++ b/src/osmo-bts-trx/trx_provision_fsm.h
@@ -57,6 +57,7 @@
TRX_PROV_EV_RXTUNE_CNF,
TRX_PROV_EV_TXTUNE_CNF,
TRX_PROV_EV_NOMTXPOWER_CNF,
+ TRX_PROV_EV_SETPOWER_CNF,
TRX_PROV_EV_SETBSIC_CNF,
TRX_PROV_EV_SETTSC_CNF,
TRX_PROV_EV_SETFORMAT_CNF,
--
To view, visit https://gerrit.osmocom.org/c/osmo-bts/+/42033?usp=email
To unsubscribe, or for help writing mail filters, visit
https://gerrit.osmocom.org/settings?usp=email
Gerrit-MessageType: merged
Gerrit-Project: osmo-bts
Gerrit-Branch: master
Gerrit-Change-Id: Iff03d4dcb74f67629a59c8d6f8bb60929d9f6ddd
Gerrit-Change-Number: 42033
Gerrit-PatchSet: 3
Gerrit-Owner: fixeria <[email protected]>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: fixeria <[email protected]>
Gerrit-Reviewer: laforge <[email protected]>
Gerrit-Reviewer: pespin <[email protected]>