|
@@ -94,6 +94,12 @@ struct l2cap_conninfo {
|
|
#define L2CAP_ECHO_RSP 0x09
|
|
#define L2CAP_ECHO_RSP 0x09
|
|
#define L2CAP_INFO_REQ 0x0a
|
|
#define L2CAP_INFO_REQ 0x0a
|
|
#define L2CAP_INFO_RSP 0x0b
|
|
#define L2CAP_INFO_RSP 0x0b
|
|
|
|
+#define L2CAP_CREATE_CHAN_REQ 0x0c
|
|
|
|
+#define L2CAP_CREATE_CHAN_RSP 0x0d
|
|
|
|
+#define L2CAP_MOVE_CHAN_REQ 0x0e
|
|
|
|
+#define L2CAP_MOVE_CHAN_RSP 0x0f
|
|
|
|
+#define L2CAP_MOVE_CHAN_CFM 0x10
|
|
|
|
+#define L2CAP_MOVE_CHAN_CFM_RSP 0x11
|
|
#define L2CAP_CONN_PARAM_UPDATE_REQ 0x12
|
|
#define L2CAP_CONN_PARAM_UPDATE_REQ 0x12
|
|
#define L2CAP_CONN_PARAM_UPDATE_RSP 0x13
|
|
#define L2CAP_CONN_PARAM_UPDATE_RSP 0x13
|
|
|
|
|
|
@@ -217,14 +223,15 @@ struct l2cap_conn_rsp {
|
|
#define L2CAP_CID_DYN_START 0x0040
|
|
#define L2CAP_CID_DYN_START 0x0040
|
|
#define L2CAP_CID_DYN_END 0xffff
|
|
#define L2CAP_CID_DYN_END 0xffff
|
|
|
|
|
|
-/* connect result */
|
|
|
|
|
|
+/* connect/create channel results */
|
|
#define L2CAP_CR_SUCCESS 0x0000
|
|
#define L2CAP_CR_SUCCESS 0x0000
|
|
#define L2CAP_CR_PEND 0x0001
|
|
#define L2CAP_CR_PEND 0x0001
|
|
#define L2CAP_CR_BAD_PSM 0x0002
|
|
#define L2CAP_CR_BAD_PSM 0x0002
|
|
#define L2CAP_CR_SEC_BLOCK 0x0003
|
|
#define L2CAP_CR_SEC_BLOCK 0x0003
|
|
#define L2CAP_CR_NO_MEM 0x0004
|
|
#define L2CAP_CR_NO_MEM 0x0004
|
|
|
|
+#define L2CAP_CR_BAD_AMP 0x0005
|
|
|
|
|
|
-/* connect status */
|
|
|
|
|
|
+/* connect/create channel status */
|
|
#define L2CAP_CS_NO_INFO 0x0000
|
|
#define L2CAP_CS_NO_INFO 0x0000
|
|
#define L2CAP_CS_AUTHEN_PEND 0x0001
|
|
#define L2CAP_CS_AUTHEN_PEND 0x0001
|
|
#define L2CAP_CS_AUTHOR_PEND 0x0002
|
|
#define L2CAP_CS_AUTHOR_PEND 0x0002
|
|
@@ -319,6 +326,49 @@ struct l2cap_info_rsp {
|
|
__u8 data[0];
|
|
__u8 data[0];
|
|
} __packed;
|
|
} __packed;
|
|
|
|
|
|
|
|
+struct l2cap_create_chan_req {
|
|
|
|
+ __le16 psm;
|
|
|
|
+ __le16 scid;
|
|
|
|
+ __u8 amp_id;
|
|
|
|
+} __packed;
|
|
|
|
+
|
|
|
|
+struct l2cap_create_chan_rsp {
|
|
|
|
+ __le16 dcid;
|
|
|
|
+ __le16 scid;
|
|
|
|
+ __le16 result;
|
|
|
|
+ __le16 status;
|
|
|
|
+} __packed;
|
|
|
|
+
|
|
|
|
+struct l2cap_move_chan_req {
|
|
|
|
+ __le16 icid;
|
|
|
|
+ __u8 dest_amp_id;
|
|
|
|
+} __packed;
|
|
|
|
+
|
|
|
|
+struct l2cap_move_chan_rsp {
|
|
|
|
+ __le16 icid;
|
|
|
|
+ __le16 result;
|
|
|
|
+} __packed;
|
|
|
|
+
|
|
|
|
+#define L2CAP_MR_SUCCESS 0x0000
|
|
|
|
+#define L2CAP_MR_PEND 0x0001
|
|
|
|
+#define L2CAP_MR_BAD_ID 0x0002
|
|
|
|
+#define L2CAP_MR_SAME_ID 0x0003
|
|
|
|
+#define L2CAP_MR_NOT_SUPP 0x0004
|
|
|
|
+#define L2CAP_MR_COLLISION 0x0005
|
|
|
|
+#define L2CAP_MR_NOT_ALLOWED 0x0006
|
|
|
|
+
|
|
|
|
+struct l2cap_move_chan_cfm {
|
|
|
|
+ __le16 icid;
|
|
|
|
+ __le16 result;
|
|
|
|
+} __packed;
|
|
|
|
+
|
|
|
|
+#define L2CAP_MC_CONFIRMED 0x0000
|
|
|
|
+#define L2CAP_MC_UNCONFIRMED 0x0001
|
|
|
|
+
|
|
|
|
+struct l2cap_move_chan_cfm_rsp {
|
|
|
|
+ __le16 icid;
|
|
|
|
+} __packed;
|
|
|
|
+
|
|
/* info type */
|
|
/* info type */
|
|
#define L2CAP_IT_CL_MTU 0x0001
|
|
#define L2CAP_IT_CL_MTU 0x0001
|
|
#define L2CAP_IT_FEAT_MASK 0x0002
|
|
#define L2CAP_IT_FEAT_MASK 0x0002
|