143625864Smatthias.ringwald /* 243625864Smatthias.ringwald * l2cap.h 343625864Smatthias.ringwald * 443625864Smatthias.ringwald * Logical Link Control and Adaption Protocl (L2CAP) 543625864Smatthias.ringwald * 643625864Smatthias.ringwald * Created by Matthias Ringwald on 5/16/09. 743625864Smatthias.ringwald */ 843625864Smatthias.ringwald 9fd7ed8d4Smatthias.ringwald #pragma once 10fd7ed8d4Smatthias.ringwald 1143625864Smatthias.ringwald #include "hci.h" 1295cbd947Smatthias.ringwald #include "l2cap_signaling.h" 13da269baaSmatthias.ringwald #include "utils.h" 14da269baaSmatthias.ringwald 15da269baaSmatthias.ringwald #define L2CAP_SIG_ID_INVALID 0 16da269baaSmatthias.ringwald 17da269baaSmatthias.ringwald typedef enum { 18da269baaSmatthias.ringwald L2CAP_STATE_CLOSED, // no baseband 19*87ea0ea4Smatthias.ringwald L2CAP_STATE_WAIT_CONNECT, // from application 20*87ea0ea4Smatthias.ringwald L2CAP_STATE_WAIT_CONNECT_RSP, // from peer 21*87ea0ea4Smatthias.ringwald L2CAP_STATE_WAIT_CONFIG_REQ_RSP, 22*87ea0ea4Smatthias.ringwald L2CAP_STATE_WAIT_CONFIG_REQ, 23da269baaSmatthias.ringwald L2CAP_STATE_OPEN, 24*87ea0ea4Smatthias.ringwald L2CAP_STATE_WAIT_DISCONNECT, // from application 25da269baaSmatthias.ringwald } L2CAP_STATE; 2643625864Smatthias.ringwald 2716833f0aSmatthias.ringwald typedef struct { 28*87ea0ea4Smatthias.ringwald // linked list - assert: first field 29*87ea0ea4Smatthias.ringwald linked_item_t item; 30*87ea0ea4Smatthias.ringwald 31da269baaSmatthias.ringwald L2CAP_STATE state; 32da269baaSmatthias.ringwald uint8_t sig_id; 33da269baaSmatthias.ringwald uint16_t local_cid; 34*87ea0ea4Smatthias.ringwald uint16_t dest_cid; 35da269baaSmatthias.ringwald bd_addr_t address; 36da269baaSmatthias.ringwald uint16_t psm; 37da269baaSmatthias.ringwald hci_con_handle_t handle; 38da269baaSmatthias.ringwald void (*event_callback)(uint8_t *packet, uint16_t size); 39da269baaSmatthias.ringwald void (*data_callback)(uint8_t *packet, uint16_t size); 40da269baaSmatthias.ringwald // uint16_t mtu_incoming; 41da269baaSmatthias.ringwald // uint16_t mtu_outgoing; 42da269baaSmatthias.ringwald // uint16_t flush_timeout_incoming; 43da269baaSmatthias.ringwald // uint16_t flush_timeout_outgoing; 4416833f0aSmatthias.ringwald } l2cap_channel_t; 4516833f0aSmatthias.ringwald 4616833f0aSmatthias.ringwald typedef struct { 4716833f0aSmatthias.ringwald 4816833f0aSmatthias.ringwald } l2cap_service_t; 4916833f0aSmatthias.ringwald 5043625864Smatthias.ringwald void l2cap_init(); 5143625864Smatthias.ringwald int l2cap_send_signaling_packet(hci_con_handle_t handle, L2CAP_SIGNALING_COMMANDS cmd, uint8_t identifier, ...); 52