@startuml
skinparam BackgroundColor F0F0F0
participant "Service Cellular" as srvclr
participant "Application Manager" as appmgr
participant "ApplicaionDesktop" as appdsktp
participant "PinLockWindow" as pinwin
actor User
== PUK required flow ==
[o->srvclr : need PUK1
activate srvclr
srvclr -> appmgr : ActionMessage{RequestPuk1, {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(RequestPukAction)
note over of srvclr
Cellular side data:
State: PUK required
SIM: SIM1
phone: +48500500500
attempts: 8
end note
/ note left of pinwin
Desktop side data:
State: PUK required
SIM: SIM1
attempts: 8
end note
/ note left of appdsktp
Desktop side state:
Screen Unlocked
end note
appdsktp -> pinwin : switchWindow(SIM1, reqPUK, attempts)
activate pinwin
deactivate appdsktp
pinwin -> pinwin : rebuild
pinwin -> pinwin : setVisiblePukRequired
pinwin <- User : Enters PUK (good)
pinwin <- User : Confirm
loop valid new PIN provided
pinwin -> pinwin : setVisibleNewPinRequired
pinwin <- User : Enters PIN
pinwin -> pinwin : setVisibleConfirmPIN
pinwin <- User : Enters PIN
end
appdsktp <- pinwin : handlePasscode(pukValue, newPin)
activate appdsktp
deactivate pinwin
srvclr <- appdsktp : PukData(pukValue, newPin) via sys::bus message
activate srvclr
deactivate appdsktp
srvclr -> srvclr : verification success
deactivate srvclr
[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
@enduml