@startuml title PTT button states [*] --> NEUTRAL NEUTRAL : BLUE, static NEUTRAL : isInCall==false NEUTRAL --> ASK_PTT : press PTT button ASK_PTT : GREEN ASK_PTT : isInCall==false\nmousedown ASK_PTT : **ptt-command ON NEUTRAL --> CALLED : receive\nsetCall true CALLED : GRAY, dynamic CALLED : isInCall==true CALLED --> CALL_DONE : receive\nsetCall false CALL_DONE : YELLOW CALL_DONE : isInCall==false\nmouseup|dragend CALL_DONE : **ptt-command OFF CALL_DONE --> NEUTRAL : after\n2 seconds ASK_PTT --> IN_CALL : receive\nsetCall true IN_CALL : GREEN, dynamic IN_CALL : isInCall==true ASK_PTT --> CALL_FAILED : after X seconds or\nsetCall false ASK_PTT --> CALL_DONE : mouseup\non PTT CALL_FAILED : RED CALL_FAILED : isInCall==false CALL_FAILED --> NEUTRAL : after 2 seconds IN_CALL --> CALL_DONE : mouseup\non PTT IN_CALL --> CALL_FAILED : setCall false CALL_DONE --> CALLED : setCall true CALL_FAILED --> CALLED : setCall true legend closing InfoWindow will set NEUTRAL state end legend @enduml