Review at  https://gerrit.osmocom.org/7770

trigger acc ramping on state-changed-event reports

Trigger ACC ramping not only when an Administrative State Change
ACK is received from a BTS, but also when an administrative state
change is reported for TRX 0 in a State Changed Event Report.

This should allow ACC ramping to work with any BTS which reports
an administrative state change to 'unlock' using either of these
OML messages.

Tested with a nanobts.
The nanobts is known to send both of these OML messages in quick
succession, so do not re-trigger ramping if it's already in progress.

Change-Id: I097a113a3a63de02bcb8277020beb59cf485b176
Related: OS#2591
---
M src/libbsc/acc_ramp.c
1 file changed, 10 insertions(+), 2 deletions(-)


  git pull ssh://gerrit.osmocom.org:29418/osmo-bsc refs/changes/70/7770/1

diff --git a/src/libbsc/acc_ramp.c b/src/libbsc/acc_ramp.c
index 54626ad..9e66f31 100644
--- a/src/libbsc/acc_ramp.c
+++ b/src/libbsc/acc_ramp.c
@@ -144,7 +144,8 @@
        struct acc_ramp *acc_ramp = handler_data;
        struct gsm_bts_trx *trx = NULL;
 
-       if (signal != S_NM_STATECHG_ADM)
+       /* Handled signals map to an Administrative State Change ACK, or a 
State Changed Event Report. */
+       if (signal != S_NM_STATECHG_ADM && signal != S_NM_STATECHG_OPER)
                return 0;
 
        if (nsd->obj_class != NM_OC_RADIO_CARRIER)
@@ -163,7 +164,14 @@
        /* Trigger or abort ACC ramping based on the new 'RF lock' state of 
this TRX. */
        switch (nsd->new_state->administrative) {
        case NM_STATE_UNLOCKED:
-               acc_ramp_trigger(acc_ramp);
+               /*
+                * Do not re-trigger ACC ramping if ramping is already in 
progress.
+                * A BTS might send several "unlock" change events: One in the 
Administrative
+                * State Change ACK, and/or another in a State Changed Event 
Report.
+                * For instance, the nanobts is known to send both.
+                */
+               if (!osmo_timer_pending(&acc_ramp->step_timer))
+                       acc_ramp_trigger(acc_ramp);
                break;
        case NM_STATE_LOCKED:
        case NM_STATE_SHUTDOWN:

-- 
To view, visit https://gerrit.osmocom.org/7770
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I097a113a3a63de02bcb8277020beb59cf485b176
Gerrit-PatchSet: 1
Gerrit-Project: osmo-bsc
Gerrit-Branch: master
Gerrit-Owner: Stefan Sperling <ssperl...@sysmocom.de>

Reply via email to