OM2000: Change the order of MO initialization

So far: CF-IS-CON-TF
Now: CF-TF-CON-IS

Change-Id: I8efd9bafdcf9504d2e5fc85c44c708fa53f4dff8
This commit is contained in:
Harald Welte 2017-03-13 09:39:08 +01:00
parent 3d6cb338c6
commit c103c64e7d
1 changed files with 30 additions and 28 deletions

View File

@ -2157,18 +2157,19 @@ static void om2k_bts_s_wait_cf(struct osmo_fsm_inst *fi, uint32_t event, void *d
struct gsm_bts *bts = obfp->bts; struct gsm_bts *bts = obfp->bts;
OSMO_ASSERT(event == OM2K_BTS_EVT_CF_DONE); OSMO_ASSERT(event == OM2K_BTS_EVT_CF_DONE);
osmo_fsm_inst_state_chg(fi, OM2K_BTS_S_WAIT_IS, /* TF can take a long time to initialize, wait for 10min */
BTS_FSM_TIMEOUT, 0); osmo_fsm_inst_state_chg(fi, OM2K_BTS_S_WAIT_TF, 600, 0);
om2k_mo_fsm_start(fi, OM2K_BTS_EVT_IS_DONE, bts->c0, om2k_mo_fsm_start(fi, OM2K_BTS_EVT_TF_DONE, bts->c0,
&bts->rbs2000.is.om2k_mo); &bts->rbs2000.tf.om2k_mo);
} }
static void om2k_bts_s_wait_is(struct osmo_fsm_inst *fi, uint32_t event, void *data) static void om2k_bts_s_wait_tf(struct osmo_fsm_inst *fi, uint32_t event, void *data)
{ {
struct om2k_bts_fsm_priv *obfp = fi->priv; struct om2k_bts_fsm_priv *obfp = fi->priv;
struct gsm_bts *bts = obfp->bts; struct gsm_bts *bts = obfp->bts;
OSMO_ASSERT(event == OM2K_BTS_EVT_IS_DONE); OSMO_ASSERT(event == OM2K_BTS_EVT_TF_DONE);
osmo_fsm_inst_state_chg(fi, OM2K_BTS_S_WAIT_CON, osmo_fsm_inst_state_chg(fi, OM2K_BTS_S_WAIT_CON,
BTS_FSM_TIMEOUT, 0); BTS_FSM_TIMEOUT, 0);
om2k_mo_fsm_start(fi, OM2K_BTS_EVT_CON_DONE, bts->c0, om2k_mo_fsm_start(fi, OM2K_BTS_EVT_CON_DONE, bts->c0,
@ -2181,18 +2182,19 @@ static void om2k_bts_s_wait_con(struct osmo_fsm_inst *fi, uint32_t event, void *
struct gsm_bts *bts = obfp->bts; struct gsm_bts *bts = obfp->bts;
OSMO_ASSERT(event == OM2K_BTS_EVT_CON_DONE); OSMO_ASSERT(event == OM2K_BTS_EVT_CON_DONE);
/* TF can take a long time to initialize, wait for 10min */
osmo_fsm_inst_state_chg(fi, OM2K_BTS_S_WAIT_TF, 600, 0); osmo_fsm_inst_state_chg(fi, OM2K_BTS_S_WAIT_IS,
om2k_mo_fsm_start(fi, OM2K_BTS_EVT_TF_DONE, bts->c0, BTS_FSM_TIMEOUT, 0);
&bts->rbs2000.tf.om2k_mo); om2k_mo_fsm_start(fi, OM2K_BTS_EVT_IS_DONE, bts->c0,
&bts->rbs2000.is.om2k_mo);
} }
static void om2k_bts_s_wait_tf(struct osmo_fsm_inst *fi, uint32_t event, void *data) static void om2k_bts_s_wait_is(struct osmo_fsm_inst *fi, uint32_t event, void *data)
{ {
struct om2k_bts_fsm_priv *obfp = fi->priv; struct om2k_bts_fsm_priv *obfp = fi->priv;
struct gsm_bts_trx *trx; struct gsm_bts_trx *trx;
OSMO_ASSERT(event == OM2K_BTS_EVT_TF_DONE); OSMO_ASSERT(event == OM2K_BTS_EVT_IS_DONE);
osmo_fsm_inst_state_chg(fi, OM2K_BTS_S_WAIT_TRX, osmo_fsm_inst_state_chg(fi, OM2K_BTS_S_WAIT_TRX,
BTS_FSM_TIMEOUT, 0); BTS_FSM_TIMEOUT, 0);
@ -2231,31 +2233,31 @@ static const struct osmo_fsm_state om2k_bts_states[] = {
[OM2K_BTS_S_WAIT_CF] = { [OM2K_BTS_S_WAIT_CF] = {
.in_event_mask = S(OM2K_BTS_EVT_CF_DONE), .in_event_mask = S(OM2K_BTS_EVT_CF_DONE),
.out_state_mask = S(OM2K_BTS_S_ERROR) | .out_state_mask = S(OM2K_BTS_S_ERROR) |
S(OM2K_BTS_S_WAIT_IS), S(OM2K_BTS_S_WAIT_TF),
.name = "WAIT-CF", .name = "WAIT-CF",
.action = om2k_bts_s_wait_cf, .action = om2k_bts_s_wait_cf,
}, },
[OM2K_BTS_S_WAIT_IS] = {
.in_event_mask = S(OM2K_BTS_EVT_IS_DONE),
.out_state_mask = S(OM2K_BTS_S_ERROR) |
S(OM2K_BTS_S_WAIT_CON),
.name = "WAIT-IS",
.action = om2k_bts_s_wait_is,
},
[OM2K_BTS_S_WAIT_CON] = {
.in_event_mask = S(OM2K_BTS_EVT_CON_DONE),
.out_state_mask = S(OM2K_BTS_S_ERROR) |
S(OM2K_BTS_S_WAIT_TF),
.name = "WAIT-CON",
.action = om2k_bts_s_wait_con,
},
[OM2K_BTS_S_WAIT_TF] = { [OM2K_BTS_S_WAIT_TF] = {
.in_event_mask = S(OM2K_BTS_EVT_TF_DONE), .in_event_mask = S(OM2K_BTS_EVT_TF_DONE),
.out_state_mask = S(OM2K_BTS_S_ERROR) | .out_state_mask = S(OM2K_BTS_S_ERROR) |
S(OM2K_BTS_S_WAIT_TRX), S(OM2K_BTS_S_WAIT_CON),
.name = "WAIT-TF", .name = "WAIT-TF",
.action = om2k_bts_s_wait_tf, .action = om2k_bts_s_wait_tf,
}, },
[OM2K_BTS_S_WAIT_CON] = {
.in_event_mask = S(OM2K_BTS_EVT_CON_DONE),
.out_state_mask = S(OM2K_BTS_S_ERROR) |
S(OM2K_BTS_S_WAIT_IS),
.name = "WAIT-CON",
.action = om2k_bts_s_wait_con,
},
[OM2K_BTS_S_WAIT_IS] = {
.in_event_mask = S(OM2K_BTS_EVT_IS_DONE),
.out_state_mask = S(OM2K_BTS_S_ERROR) |
S(OM2K_BTS_S_WAIT_TRX),
.name = "WAIT-IS",
.action = om2k_bts_s_wait_is,
},
[OM2K_BTS_S_WAIT_TRX] = { [OM2K_BTS_S_WAIT_TRX] = {
.in_event_mask = S(OM2K_BTS_EVT_TRX_DONE), .in_event_mask = S(OM2K_BTS_EVT_TRX_DONE),
.out_state_mask = S(OM2K_BTS_S_ERROR) | .out_state_mask = S(OM2K_BTS_S_ERROR) |