/* l2cap.h - Bluetooth tester headers */

/*
 * Copyright (c) 2015-2016 Intel Corporation
 * Copyright (c) 2022 Codecoup
 *
 * SPDX-License-Identifier: Apache-2.0
 */

#include <zephyr/sys/util.h>
#include <zephyr/bluetooth/addr.h>

/* L2CAP Service */
/* commands */
#define BTP_L2CAP_READ_SUPPORTED_COMMANDS		0x01
struct btp_l2cap_read_supported_commands_rp {
	uint8_t data[0];
} __packed;

#define BTP_L2CAP_CONNECT_OPT_ECFC			0x01
#define BTP_L2CAP_CONNECT_OPT_HOLD_CREDIT		0x02

#define BTP_L2CAP_CONNECT				0x02
struct btp_l2cap_connect_cmd {
	bt_addr_le_t address;
	uint16_t psm;
	uint16_t mtu;
	uint8_t num;
	uint8_t options;
} __packed;
struct btp_l2cap_connect_rp {
	uint8_t num;
	uint8_t chan_id[];
} __packed;

#define BTP_L2CAP_DISCONNECT				0x03
struct btp_l2cap_disconnect_cmd {
	uint8_t chan_id;
} __packed;

#define BTP_L2CAP_SEND_DATA				0x04
struct btp_l2cap_send_data_cmd {
	uint8_t chan_id;
	uint16_t data_len;
	uint8_t data[];
} __packed;

#define BTP_L2CAP_TRANSPORT_BREDR			0x00
#define BTP_L2CAP_TRANSPORT_LE				0x01

#define BTP_L2CAP_CONNECTION_RESPONSE_SUCCESS		0x00
#define BTP_L2CAP_CONNECTION_RESPONSE_INSUFF_AUTHEN	0x01
#define BTP_L2CAP_CONNECTION_RESPONSE_INSUFF_AUTHOR	0x02
#define BTP_L2CAP_CONNECTION_RESPONSE_INSUFF_ENC_KEY	0x03
#define BTP_L2CAP_CONNECTION_RESPONSE_INSUFF_ENCRYPTION 0x04

#define BTP_L2CAP_LISTEN				0x05
struct btp_l2cap_listen_cmd {
	uint16_t psm;
	uint8_t transport;
	uint16_t mtu;
	uint16_t response;
} __packed;

#define BTP_L2CAP_ACCEPT_CONNECTION			0x06
struct btp_l2cap_accept_connection_cmd {
	uint8_t chan_id;
	uint16_t result;
} __packed;

#define BTP_L2CAP_RECONFIGURE				0x07
struct btp_l2cap_reconfigure_cmd {
	bt_addr_le_t address;
	uint16_t mtu;
	uint8_t num;
	uint8_t chan_id[];
} __packed;

#define BTP_L2CAP_CREDITS				0x08
struct btp_l2cap_credits_cmd {
	uint8_t chan_id;
} __packed;

#define BTP_L2CAP_DISCONNECT_EATT_CHANS			0x09
struct btp_l2cap_disconnect_eatt_chans_cmd {
	bt_addr_le_t address;
	uint8_t count;
} __packed;

/* events */
#define BTP_L2CAP_EV_CONNECTION_REQ			0x80
struct btp_l2cap_connection_req_ev {
	uint8_t chan_id;
	uint16_t psm;
	bt_addr_le_t address;
} __packed;

#define BTP_L2CAP_EV_CONNECTED				0x81
struct btp_l2cap_connected_ev {
	uint8_t chan_id;
	uint16_t psm;
	uint16_t mtu_remote;
	uint16_t mps_remote;
	uint16_t mtu_local;
	uint16_t mps_local;
	bt_addr_le_t address;
} __packed;

#define BTP_L2CAP_EV_DISCONNECTED			0x82
struct btp_l2cap_disconnected_ev {
	uint16_t result;
	uint8_t chan_id;
	uint16_t psm;
	bt_addr_le_t address;
} __packed;

#define BTP_L2CAP_EV_DATA_RECEIVED			0x83
struct btp_l2cap_data_received_ev {
	uint8_t chan_id;
	uint16_t data_length;
	uint8_t data[];
} __packed;

#define BTP_L2CAP_EV_RECONFIGURED			0x84
struct btp_l2cap_reconfigured_ev {
	uint8_t chan_id;
	uint16_t mtu_remote;
	uint16_t mps_remote;
	uint16_t mtu_local;
	uint16_t mps_local;
} __packed;
