]> git.karo-electronics.de Git - oswald.git/blobdiff - metawatch/bt_l2cap.h
Here we are! MetaWatch support in Oswald!
[oswald.git] / metawatch / bt_l2cap.h
diff --git a/metawatch/bt_l2cap.h b/metawatch/bt_l2cap.h
new file mode 100644 (file)
index 0000000..075ee6b
--- /dev/null
@@ -0,0 +1,77 @@
+#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
+