]> rtime.felk.cvut.cz Git - mirosot.git/blobdiff - bth_tests/bluetooth/l2cap.h
Added bth_test application. Not finished.
[mirosot.git] / bth_tests / bluetooth / l2cap.h
diff --git a/bth_tests/bluetooth/l2cap.h b/bth_tests/bluetooth/l2cap.h
new file mode 100644 (file)
index 0000000..b1a91bb
--- /dev/null
@@ -0,0 +1,272 @@
+/*******************************************************************
+  bluetooth library
+
+  l2cap.h - list of fce for operation L2CAP protocol and
+            list of L2CAP structures
+
+  Copyright (C) 2006 by Petr Kovacik petr_kovacik@gmail.com
+
+ *******************************************************************/
+
+#ifndef __L2CAP_H
+#define __L2CAP_H
+
+
+/* L2CAP defaults */
+#define L2CAP_DEFAULT_MTU      672
+#define L2CAP_DEFAULT_FLUSH_TO 0xFFFF
+
+#define L2CAP_CONN_TIMEOUT     (HZ * 40)
+
+/* L2CAP socket address */
+//struct sockaddr_l2 {
+//     sa_family_t     l2_family;
+//     unsigned short  l2_psm;
+//     bdaddr_t        l2_bdaddr;
+//};
+
+/* L2CAP socket options */
+//#define L2CAP_OPTIONS        0x01
+//struct l2cap_options {
+//     uint16_t        omtu;
+//     uint16_t        imtu;
+//     uint16_t        flush_to;
+//     uint8_t         mode;
+//};
+
+
+//#define L2CAP_CONNINFO       0x02
+//struct l2cap_conninfo {
+//     uint16_t        hci_handle;
+//     uint8_t         dev_class[3];
+//};
+
+#define L2CAP_LM       0x03
+#define L2CAP_LM_MASTER                0x0001
+#define L2CAP_LM_AUTH            0x0002
+#define L2CAP_LM_ENCRYPT       0x0004
+#define L2CAP_LM_TRUSTED       0x0008
+#define L2CAP_LM_RELIABLE      0x0010
+#define L2CAP_LM_SECURE                0x0020
+
+/* L2CAP command codes */
+#define L2CAP_COMMAND_REJ      0x01
+#define L2CAP_CONN_REQ         0x02
+#define L2CAP_CONN_RSP         0x03
+#define L2CAP_CONF_REQ         0x04
+#define L2CAP_CONF_RSP         0x05
+#define L2CAP_DISCONN_REQ      0x06
+#define L2CAP_DISCONN_RSP      0x07
+#define L2CAP_ECHO_REQ         0x08
+#define L2CAP_ECHO_RSP         0x09
+#define L2CAP_INFO_REQ         0x0a
+#define L2CAP_INFO_RSP         0x0b
+
+/* L2CAP structures */
+typedef struct {
+       uint16_t        len;
+       uint16_t        cid;
+} l2cap_hdr;
+#define L2CAP_HDR____len      0
+#define L2CAP_HDR____cid      2
+/*--------------------------------*/
+#define L2CAP_HDR_SIZE 4
+/****************************************************************/
+/****************************************************************/
+
+typedef struct {
+       uint8_t         code;
+       uint8_t         ident;
+       uint16_t        len;
+} l2cap_cmd_hdr;
+#define L2CAP_CMD_HDR____code     0
+#define L2CAP_CMD_HDR____ident    1
+#define L2CAP_CMD_HDR____len      2
+/*--------------------------------*/
+#define L2CAP_CMD_HDR_SIZE 4
+/****************************************************************/
+/****************************************************************/
+
+typedef struct {
+       uint16_t        reason;
+}l2cap_cmd_rej;
+#define L2CAP_CMD_REJ____reason     0
+/*--------------------------------*/
+#define L2CAP_CMD_REJ_SIZE 2
+/****************************************************************/
+/****************************************************************/
+
+typedef struct {            //0x02
+       uint16_t        psm;
+       uint16_t        scid;
+} l2cap_conn_req;
+
+#define L2CAP_CONN_REQ____psm     0
+#define L2CAP_CONN_REQ____scid    2
+/*--------------------------------*/
+#define L2CAP_CONN_REQ_SIZE 4
+/****************************************************************/
+/****************************************************************/
+
+typedef struct {             //0x03
+       uint16_t        dcid;
+       uint16_t        scid;
+       uint16_t        result;
+       uint16_t        status;
+} l2cap_conn_rsp;
+#define L2CAP_CONN_RSP____dcid      0
+#define L2CAP_CONN_RSP____scid      2
+#define L2CAP_CONN_RSP____result    4
+#define L2CAP_CONN_RSP____status    6
+/*--------------------------------*/
+#define L2CAP_CONN_RSP_SIZE 8
+/****************************************************************/
+/****************************************************************/
+
+/* connect result */
+#define L2CAP_CR_SUCCESS       0x0000
+#define L2CAP_CR_PEND          0x0001
+#define L2CAP_CR_BAD_PSM       0x0002
+#define L2CAP_CR_SEC_BLOCK     0x0003
+#define L2CAP_CR_NO_MEM                0x0004
+
+/* connect status */
+#define L2CAP_CS_NO_INFO       0x0000
+#define L2CAP_CS_AUTHEN_PEND   0x0001
+#define L2CAP_CS_AUTHOR_PEND   0x0002
+
+typedef struct {            //0x04
+       uint16_t        dcid;
+       uint16_t        flags;
+       uint8_t         data[0];
+}  l2cap_conf_req;
+#define L2CAP_CONF_REQ____dcid    0
+#define L2CAP_CONF_REQ____flags   2
+#define L2CAP_CONF_REQ____data    4
+/*--------------------------------*/
+#define L2CAP_CONF_REQ_SIZE 4
+/****************************************************************/
+/****************************************************************/
+
+typedef struct {     //0x05
+       uint16_t        scid;
+       uint16_t        flags;
+       uint16_t        result;
+       uint8_t         data[0];
+} l2cap_conf_rsp;
+#define L2CAP_CONF_RSP____scid    0
+#define L2CAP_CONF_RSP____flags   2
+#define L2CAP_CONF_RSP____result  4
+#define L2CAP_CONF_RSP____data    6
+/*--------------------------------*/
+#define L2CAP_CONF_RSP_SIZE 6
+/****************************************************************/
+/****************************************************************/
+
+
+
+#define L2CAP_CONF_SUCCESS     0x0000
+#define L2CAP_CONF_UNACCEPT    0x0001
+#define L2CAP_CONF_REJECT      0x0002
+#define L2CAP_CONF_UNKNOWN     0x0003
+
+typedef struct {
+       uint8_t         type;
+       uint8_t         len;
+       uint8_t         val[0];
+} l2cap_conf_opt;
+#define L2CAP_CONF_OPT____type    0
+#define L2CAP_CONF_OPT____len     1
+#define L2CAP_CONF_OPT____val     2
+/*--------------------------------*/
+#define L2CAP_CONF_OPT_SIZE 2
+/****************************************************************/
+/****************************************************************/
+
+
+#define L2CAP_CONF_MTU         0x01
+#define L2CAP_CONF_FLUSH_TO    0x02
+#define L2CAP_CONF_QOS         0x03
+#define L2CAP_CONF_RFC         0x04
+#define L2CAP_CONF_RFC_MODE    0x04
+
+#define L2CAP_CONF_MAX_SIZE    22
+
+typedef struct {
+       uint16_t        dcid;
+       uint16_t        scid;
+} l2cap_disconn_req;
+#define L2CAP_DISCONN_REQ____dcid    0
+#define L2CAP_DISCONN_REQ____scid    2
+/*--------------------------------*/
+#define L2CAP_DISCONN_REQ_SIZE 4
+/****************************************************************/
+/****************************************************************/
+
+typedef struct {
+       uint16_t        dcid;
+       uint16_t        scid;
+} l2cap_disconn_rsp;
+#define L2CAP_DISCONN_RSP____dcid    0
+#define L2CAP_DISCONN_RSP____scid    2
+/*--------------------------------*/
+#define L2CAP_DISCONN_RSP_SIZE 4
+/****************************************************************/
+/****************************************************************/
+
+typedef struct {
+       uint16_t        type;
+       uint8_t         data[0];
+} l2cap_info_req;
+#define L2CAP_INFO_REQ____type    0
+#define L2CAP_INFO_REQ____data    2
+/*--------------------------------*/
+#define L2CAP_INFO_REQ_SIZE 2
+/****************************************************************/
+/****************************************************************/
+
+typedef struct {
+       uint16_t        type;
+       uint16_t        result;
+       uint8_t         data[0];
+} l2cap_info_rsp;
+#define L2CAP_INFO_RSP____type    0
+#define L2CAP_INFO_RSP____result  2
+#define L2CAP_INFO_RSP____data    4
+/*--------------------------------*/
+#define L2CAP_INFO_RSP_SIZE 4
+/****************************************************************/
+/****************************************************************/
+
+/* info type */
+#define L2CAP_IT_CL_MTU                0x0001
+#define L2CAP_IT_FEAT_MASK     0x0002
+
+/* info result */
+#define L2CAP_IR_SUCCESS       0x0000
+#define L2CAP_IR_NOTSUPP       0x0001
+
+
+
+
+
+
+
+/*----------------------- funkce zavisle na code -----------------------------------*/
+int l2cap_signaling(uint8_t *bth_p, uint16_t size, int dev_num);
+
+int l2cap_none(uint8_t *bth_p, uint16_t size, int dev_num, int pos_chan);
+int l2cap_cod_command_rej(uint8_t *bth_p, uint16_t size, int dev_num, int pos_chan);   //0x01
+int l2cap_cod_conn_req(uint8_t *bth_p, uint16_t size, int dev_num, int pos_chan);     //0x02
+int l2cap_cod_conn_rsp(uint8_t *bth_p, uint16_t size, int dev_num, int pos_chan);     //0x03
+int l2cap_cod_conf_req(uint8_t *bth_p, uint16_t size, int dev_num, int pos_chan);     //0x04
+int l2cap_cod_conf_rsp(uint8_t *bth_p, uint16_t size, int dev_num, int pos_chan);     //0x05
+int l2cap_cod_disconn_req(uint8_t *bth_p, uint16_t size, int dev_num, int pos_chan);  //0x06
+int l2cap_cod_disconn_rsp(uint8_t *bth_p, uint16_t size, int dev_num, int pos_chan);  //0x07
+int l2cap_cod_echo_req(uint8_t *bth_p, uint16_t size, int dev_num, int pos_chan);     //0x08
+int l2cap_cod_echo_rsp(uint8_t *bth_p, uint16_t size, int dev_num, int pos_chan);     //0x09
+int l2cap_cod_info_req(uint8_t *bth_p, uint16_t size, int dev_num, int pos_chan);     //0x0a
+int l2cap_cod_info_rsp(uint8_t *bth_p, uint16_t size, int dev_num, int pos_chan);     //0x0b
+//int l2cap_send_data(int inx_handle, int inx_chanal);
+
+#endif /* __L2CAP_H */