oswald/metawatch/bt_l2cap.h

78 lines
2 KiB
C
Raw Normal View History

2021-02-14 18:03:13 +01:00
#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