digraph l2cap { // rankdir=LR; size="8,5" // orientation=landscape; // rotate = 90; OPEN [shape=doublecircle]; CLOSE [shape=doublecircle]; // DISCONNECT_REQUEST handling for non-open state // WAIT_CONNECT_RSP->WILL_SEND_DISCONNECT_RESPONSE [label = "RECEIVED DISCONNECT_REQUEST"]; // WAIT_CONFIG_REQ_OR_SEND_CONFIG_REQ->WILL_SEND_DISCONNECT_RESPONSE [label = "DISCONNECTION_REQUEST"]; // WAIT_CONFIG_REQ_RSP_OR_CONFIG_REQ->WILL_SEND_DISCONNECT_RESPONSE [ label = "RECVEIVED DISCONNECTION_REQUEST"]; // WAIT_CONFIG_REQ->WILL_SEND_DISCONNECT_RESPONSE [label = "RECEIVED DISCONNECTION_REQUEST"]; // WAIT_CONFIG_REQ_RSP->WILL_SEND_DISCONNECT_RESPONSE [label = "RECEIVED DISCONNECTION_REQUEST"]; // WAIT_DISCONNECT->WILL_SEND_DISCONNECT_RESPONSE [label = "RECEIVED DISCONNECT_REQUEST"]; // l2cap_run WILL_SEND_CREATE_CONNECTION -> WAIT_CONNECTION_COMPLETE [label = "SEND CREATE CONNECTION"]; WILL_SEND_CONNECTION_RESPONSE_DECLINE -> CLOSE [label = "SEND CONNECTION_RESPONSE ERR"]; WILL_SEND_CONNECTION_RESPONSE_ACCEPT -> CONFIG [label = "SEND CONNECTION_RESPONSE OK"]; WILL_SEND_CONNECTION_REQUEST -> WAIT_CONNECT_RSP [label = "SEND CONNECTION_REQUEST"]; WILL_SEND_DISCONNECT_RESPONSE -> CLOSE [ label = "SEND DISCONNECTION_RESPONSE"]; WILL_SEND_DISCONNECT_REQUEST -> WAIT_DISCONNECT [label = "SEND DISCONNECTION_REQUEST"]; // l2cap_create_channel_internal CLOSE -> WILL_SEND_CREATE_CONNECTION [label = "l2cap create channel internal"]; // l2cap_disconnect_internal OPEN -> WILL_SEND_DISCONNECT_REQUEST [label = "l2cap disconnect internal"]; // l2cap_handle_connection_success_for_addr WAIT_CONNECTION_COMPLETE->WILL_SEND_CONNECTION_REQUEST [ label = "outgoing,baseband open"]; // l2cap_handle_disconnect_request OPEN -> WILL_SEND_DISCONNECT_RESPONSE [label = "RECEIVED DISCONNECT_REQUEST"]; // l2cap_handle_connection_request CLOSE -> WAIT_CLIENT_ACCEPT_OR_REJECT [label = "RECEIVED CONNECTION REQUEST"]; // l2cap_accept_connection_internal WAIT_CLIENT_ACCEPT_OR_REJECT -> WILL_SEND_CONNECTION_RESPONSE_ACCEPT [ label = "l2cap accept internal"]; // l2cap_decline_connection_internal WAIT_CLIENT_ACCEPT_OR_REJECT -> WILL_SEND_CONNECTION_RESPONSE_DECLINE [ label = "l2cap decline internal"]; // l2cap_signaling_handler_channel WAIT_CONNECT_RSP->CONFIG [ label = "CONNECTION_RESPONSE OK"]; WAIT_CONNECT_RSP->CLOSE [label = "CONNECTION_RESPONSE ERR"]; WAIT_DISCONNECT->CLOSE [label = "RECEIVED DISCONNECT_RESPONSE"]; CONFIG->OPEN [label="RCVD CONF RSP && SENT CONF RSP"]; CONFIG->CONFIG[label="send and respond CONF REQ"]; // l2cap_close_connection OPEN->WILL_SEND_DISCONNECT_REQUEST [label = "client closed"]; }