@startuml skinparam BackgroundColor F0F0F0 participant "Service Cellular" as srvclr participant "Application Manager" as appmgr participant "ApplicaionDesktop" as appdsktp participant "PinLockWindow" as pinwin actor User == PIN required flow == note left of srvclr Cellular side data: State: PIN required SIM: SIM1 phone: +48500500500 attempts: 4 end note / note left of appdsktp Desktop side state: Screen Locked end note / note left of pinwin Desktop side data: None end note [o->srvclr : need PIN1 activate srvclr srvclr -> appmgr : ActionMessage{RequestPin1, {SIM1, attempts}} via sys::bus message activate appmgr deactivate srvclr appmgr -> appmgr : translate request to action appmgr -> appdsktp : forward action activate appdsktp deactivate appmgr appdsktp -> appdsktp : handle(RequestPinAction) -> queued deactivate appdsktp ... ... appdsktp <- User : Unlock screen activate appdsktp note left of pinwin Desktop side data: State: PIN required SIM: SIM1 attempts: 4 end note / note left of appdsktp Desktop side state: Screen Unlocked end note appdsktp -> pinwin ** : switchWindow(SIM1, requiredPIN, attempts) activate pinwin deactivate appdsktp pinwin -> pinwin : setVisiblePinRequired pinwin <- User : Enters PIN (good) pinwin <- User : Confirm appdsktp <- pinwin : handlePasscode(pinValue) activate appdsktp deactivate pinwin srvclr <- appdsktp : PinData(pinValue) via sys::bus message activate srvclr deactivate appdsktp srvclr -> srvclr : verification passed deactivate srvclr note left of srvclr Cellular side data: State: PIN unlocked SIM: SIM1 phone: +48500500500 attempts: 4 end note / note over pinwin #FFAAAA waiting for confirmation which actions should be available for user? what to do if no confirmation returns? end note [o->srvclr : SIM unlocked activate srvclr srvclr -> appmgr : ActionMessage{SimUnlocked, {SIM1}} via sys::bus message activate appmgr deactivate srvclr appmgr -> appmgr : translate request to action appmgr -> appdsktp : forward action activate appdsktp deactivate appmgr appdsktp -> appdsktp : handle(SimUnlockedAction) appdsktp -> pinwin !! : delete deactivate appdsktp note left of pinwin Desktop side data: None end note @enduml