@startuml skinparam BackgroundColor F0F0F0 Title AT Mode state CellularBSP { UartIrq: Reads data with DMA to static buffer UartIrq: and packs them into struct with result code. UartIrq --> SendToWorker SendToWorker: Puts structured data into workers MessageBuffer. SendToWorker --> output state output <> } state CellularWorker{ state DMAMessageBuffer <> DMAMessageBuffer --> ATParser ATParser: Parses URC packages. ATParser --> CmdAwaitingResponse state CmdAwaitingResponse <> CmdAwaitingResponse ----> outputWorker : True CmdAwaitingResponse --> CheckIfFOTA : False CheckIfFOTA --> StoreURC : False CheckIfFOTA --> FotaService : True state outputWorker <> } output --> DMAMessageBuffer state Channel { state ATBuffer <> ATBuffer --> ATStream ATStream: parses AT message ATStream --> channelOutput state channelOutput <> } outputWorker --> ATBuffer channelOutput --> ServiceCellular @enduml