diff options
Diffstat (limited to 'src/common/nm_bts_sm_fsm.c')
-rw-r--r-- | src/common/nm_bts_sm_fsm.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/src/common/nm_bts_sm_fsm.c b/src/common/nm_bts_sm_fsm.c index 267341e7..2d433153 100644 --- a/src/common/nm_bts_sm_fsm.c +++ b/src/common/nm_bts_sm_fsm.c @@ -55,6 +55,7 @@ static void ev_dispatch_children(struct gsm_bts_sm *site_mgr, uint32_t event) static void st_op_disabled_notinstalled_on_enter(struct osmo_fsm_inst *fi, uint32_t prev_state) { struct gsm_bts_sm *site_mgr = (struct gsm_bts_sm *)fi->priv; + site_mgr->mo.setattr_success = false; site_mgr->mo.opstart_success = false; oml_mo_state_chg(&site_mgr->mo, NM_OPSTATE_DISABLED, NM_AVSTATE_NOT_INSTALLED, NM_STATE_LOCKED); } @@ -76,6 +77,7 @@ static void st_op_disabled_notinstalled(struct osmo_fsm_inst *fi, uint32_t event static void st_op_disabled_offline_on_enter(struct osmo_fsm_inst *fi, uint32_t prev_state) { struct gsm_bts_sm *site_mgr = (struct gsm_bts_sm *)fi->priv; + site_mgr->mo.setattr_success = false; site_mgr->mo.opstart_success = false; oml_mo_state_chg(&site_mgr->mo, NM_OPSTATE_DISABLED, NM_AVSTATE_OFF_LINE, -1); } @@ -83,8 +85,15 @@ static void st_op_disabled_offline_on_enter(struct osmo_fsm_inst *fi, uint32_t p static void st_op_disabled_offline(struct osmo_fsm_inst *fi, uint32_t event, void *data) { struct gsm_bts_sm *site_mgr = (struct gsm_bts_sm *)fi->priv; + struct nm_fsm_ev_setattr_data *setattr_data; switch (event) { + case NM_EV_SETATTR_ACK: + case NM_EV_SETATTR_NACK: + setattr_data = (struct nm_fsm_ev_setattr_data *)data; + site_mgr->mo.setattr_success = setattr_data->cause == 0; + oml_fom_ack_nack(setattr_data->msg, setattr_data->cause); + break; case NM_EV_OPSTART_ACK: site_mgr->mo.opstart_success = true; oml_mo_opstart_ack(&site_mgr->mo); @@ -144,6 +153,8 @@ static struct osmo_fsm_state nm_bts_sm_fsm_states[] = { }, [NM_BTS_SM_ST_OP_DISABLED_OFFLINE] = { .in_event_mask = + X(NM_EV_SETATTR_ACK) | + X(NM_EV_SETATTR_NACK) | X(NM_EV_OPSTART_ACK) | X(NM_EV_OPSTART_NACK), .out_state_mask = |