@startuml participant backend as be participant usb_receive as usb_r participant command_exucutor as ce participant Request as req participant Response as resp be -> usb_r : send command() usb_r -> ce : enqueue command() ce -> req : execute() activate req req -> req : interpret_request() req -> req : execute_request() activate req create resp req -> resp : new activate resp req -> resp : execute() resp -> resp : set_payload() activate resp resp -> resp : set_response_payload() activate resp resp --> resp : response_payload_size deactivate resp resp --> resp : payload_size deactivate resp resp --> req : was_successful deactivate resp req --> req : was_successful deactivate req req --> ce : was_successful deactivate req @enduml