@startuml skinparam BackgroundColor F0F0F0 participant ServiceCellular as cellular participant TS0710 as ts participant WorkerThread as worker participant UrcFactory as factory participant Urc as urc participant CellularUrcHandler as handler cellular -> ts + : <> cellular -> ts : setCallback ts -> worker * : <> note right worker processing of the incoming data takes place is separate thread utilizing the callback function set by ServiceCellular end note loop true ?-> worker : new data worker -> cellular : callback cellular -> factory + : Create factory -> urc ** : <> return <> cellular -> urc +: Handle(CellularUrcHandler) urc -> handler + : Handle(Urc) handler->? : <> handler<-? - : <> cellular -> handler + : getResponse handler --> cellular - : <> ?<-- cellular -- : ""multicast\nresponse"" cellular -> urc !! : delete end @enduml