@startuml
title Single cmd processing
participant IRQ order 1
participant BSP order 2
participant CellularWorker order 3
participant Channel order 4
participant Service order 5
CellularWorker -> BSP: Read()
rnote over CellularWorker: Wait for data in MessageBuffer
Service -> Channel: cmd()
activate CellularWorker
Channel -> BSP : Write()
rnote over Channel: Wait for cmd response in MessageBuffer
activate Channel
rnote over IRQ: DMA received data
IRQ -> CellularWorker: MessageBufferSendFromISR()
rnote over CellularWorker: processData()
CellularWorker -> Channel: MessageBufferSend()
rnote over Channel: Parse response
deactivate Channel
Channel -> Service: Result
@enduml