77 lines
2 KiB
C
77 lines
2 KiB
C
#ifndef _BT_L2CAP_H
|
|
#define _BT_L2CAP_H
|
|
|
|
|
|
#define L2CAP_CID_SIGNALING 0x0001
|
|
#define L2CAP_CID_CONNECTIONLESS_CHANNEL 0x0002
|
|
#define L2CAP_CID_ATTRIBUTE_PROTOCOL 0x0004
|
|
#define L2CAP_CID_SIGNALING_LE 0x0005
|
|
#define L2CAP_CID_SECURITY_MANAGER_PROTOCOL 0x0006
|
|
|
|
typedef enum {
|
|
COMMAND_REJECT = 1,
|
|
CONNECTION_REQUEST,
|
|
CONNECTION_RESPONSE,
|
|
CONFIGURE_REQUEST,
|
|
CONFIGURE_RESPONSE,
|
|
DISCONNECTION_REQUEST,
|
|
DISCONNECTION_RESPONSE,
|
|
ECHO_REQUEST,
|
|
ECHO_RESPONSE,
|
|
INFORMATION_REQUEST,
|
|
INFORMATION_RESPONSE
|
|
} L2CAP_SIGNALING_COMMANDS;
|
|
|
|
typedef enum {
|
|
PB_FIRST_NON_FLUSH = 0,
|
|
PB_CONTINUE_FRAGMENT,
|
|
PB_FIRST_FLUSHABLE,
|
|
PB_COMPLETE_PDU
|
|
} L2CAP_PB_FLAG;
|
|
|
|
typedef enum {
|
|
BC_NO_BROADCAST = 0,
|
|
BC_ACTIVE_SLAVE,
|
|
BC_PARKED_SLAVE,
|
|
BC_RESERVED
|
|
} L2CAP_BC_FLAG;
|
|
|
|
// Connection result values
|
|
#define BT_L2CAP_CON_RES_SUCCESS 0x0000
|
|
#define BT_L2CAP_CON_RES_PENDING 0x0001
|
|
#define BT_L2CAP_CON_RES_REFUSED_PSM 0x0002
|
|
#define BT_L2CAP_CON_RES_REFUSED_SECURITY 0x0003
|
|
#define BT_L2CAP_CON_RES_REFUSED_RSRC 0x0004
|
|
|
|
#define BT_L2CAP_CON_STAT_NOINFO 0x0000
|
|
#define BT_L2CAP_CON_STAT_AUTHEN_PENDING 0x0001
|
|
#define BT_L2CAP_CON_STAT_AUTHOR_PENDING 0x0002
|
|
|
|
typedef enum {
|
|
BT_L2CAP_CON_IDLE = 0,
|
|
BT_L2CAP_CON_CONNECTED
|
|
} bt_l2cap_con_state_t;
|
|
|
|
// describes the L2CAP connection
|
|
typedef struct {
|
|
bt_l2cap_con_state_t cstate;
|
|
|
|
uint16_t hci_handle;
|
|
uint16_t PSM; // PSM of this connection
|
|
|
|
uint16_t locCID; // our local CID
|
|
uint16_t remCID; // remote host CID
|
|
|
|
uint16_t locMTU;
|
|
uint16_t remMTU;
|
|
} bt_l2cap_con_t;
|
|
|
|
void init_l2cap(void);
|
|
void bt_l2cap_proc_dyn_channel(const uint16_t channel, const uint16_t handle, const void *mdat, uint16_t mlen);
|
|
uint8_t bt_l2cap_get_connected(const uint16_t channel);
|
|
void bt_l2cap_send_channel(const uint16_t channel, const void *mdat, uint16_t mlen);
|
|
void bt_l2cap_proc_signalling(const uint16_t handle, unsigned char *mdat, uint16_t mlen);
|
|
void bt_l2cap_handle_connection_request(const uint16_t handle, const uint8_t ident, const uint16_t PSM, const uint16_t src_CID);
|
|
|
|
#endif
|
|
|