title RanStateChangeManager R5 participant Caller as C participant RanStateChange\nManager as SCM participant Rnib\nDataService as RNIB participant Rnib\nWriter as WR participant SDL participant RanList\nHandler as LH participant RanAlarm\nHandler as AH C->SCM: ChangeState(nodeb, nextState) note over SCM: According to source and target states,\ndetermine one of these raw events:\n CONNECTED\n DISCONNECTED\n NONE note over SCM: If evenet != NONE,\nprefix raw event with RanId:\ni.e. _CONNECTED SCM->SCM: Set Nodeb's state,\n in memory alt event=CONNECTED/DISCONNECTED SCM->+RNIB: [NEW] UpdateNodebConnectivityState(nodeb, event) RNIB->+WR: [NEW] UpdateNodebConnectivityState(nodeb, event) note over WR: Pre-configured CHANNEL WR->+SDL: SetAndPublish({CHANNEL,event}, {key:nodeb}) else event=NONE SCM->RNIB: UpdateNodebInfo(nodeb) RNIB->WR: UpdateNodebInfo(nodeb) WR->SDL: Set({key:nodeb}) end SDL-->-WR: ok/err WR-->-RNIB: ok/err RNIB-->-SCM: ok/err alt rNib error note over SCM: log and stop... SCM->C: error else success note over SCM: proceed... end SCM->+LH: UpdateRanState(nodeb) note over LH: TBD... LH-->-SCM: ok/err note over SCM: log error and proceed... alt event=CONNECTED/DISCONNECTED SCM->+AH: SetAlarm(nodeb) note over AH: TBD... AH-->-SCM: ok/err note over SCM: In case of error,\nlog and proceed... else event=NONE note over SCM: No alarm... end SCM->C: ok