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" 13*da269baaSmatthias.ringwald #include "utils.h" 14*da269baaSmatthias.ringwald 15*da269baaSmatthias.ringwald #define L2CAP_SIG_ID_INVALID 0 16*da269baaSmatthias.ringwald 17*da269baaSmatthias.ringwald typedef enum { 18*da269baaSmatthias.ringwald L2CAP_STATE_CLOSED, // no baseband 19*da269baaSmatthias.ringwald L2CAP_STATE_CONNECTED, // baseband connection 20*da269baaSmatthias.ringwald L2CAP_STATE_W4_L2CA_CONNECTION_RSP, // from application 21*da269baaSmatthias.ringwald L2CAP_STATE_W4_L2CAP_CONNECTION_RSP, // from peer 22*da269baaSmatthias.ringwald L2CAP_STATE_CONFIG, 23*da269baaSmatthias.ringwald L2CAP_STATE_OPEN, 24*da269baaSmatthias.ringwald L2CAP_STATE_W4_L2CA_DISCON_RSP, // from application 25*da269baaSmatthias.ringwald L2CAP_STATE_W4_L2CAP_DISCON_RSP, // from peer 26*da269baaSmatthias.ringwald } L2CAP_STATE; 2743625864Smatthias.ringwald 2816833f0aSmatthias.ringwald typedef struct { 29*da269baaSmatthias.ringwald L2CAP_STATE state; 30*da269baaSmatthias.ringwald uint8_t sig_id; 31*da269baaSmatthias.ringwald uint16_t local_cid; 32*da269baaSmatthias.ringwald bd_addr_t address; 33*da269baaSmatthias.ringwald uint16_t psm; 34*da269baaSmatthias.ringwald hci_con_handle_t handle; 35*da269baaSmatthias.ringwald void (*event_callback)(uint8_t *packet, uint16_t size); 36*da269baaSmatthias.ringwald void (*data_callback)(uint8_t *packet, uint16_t size); 37*da269baaSmatthias.ringwald // uint16_t mtu_incoming; 38*da269baaSmatthias.ringwald // uint16_t mtu_outgoing; 39*da269baaSmatthias.ringwald // uint16_t flush_timeout_incoming; 40*da269baaSmatthias.ringwald // uint16_t flush_timeout_outgoing; 4116833f0aSmatthias.ringwald } l2cap_channel_t; 4216833f0aSmatthias.ringwald 4316833f0aSmatthias.ringwald typedef struct { 4416833f0aSmatthias.ringwald 4516833f0aSmatthias.ringwald } l2cap_service_t; 4616833f0aSmatthias.ringwald 4743625864Smatthias.ringwald void l2cap_init(); 4843625864Smatthias.ringwald int l2cap_send_signaling_packet(hci_con_handle_t handle, L2CAP_SIGNALING_COMMANDS cmd, uint8_t identifier, ...); 49