/** @file
 *  @brief Internal header for Bluetooth BASS.
 */

/*
 * Copyright (c) 2019 Bose Corporation
 * Copyright (c) 2021 Nordic Semiconductor ASA
 *
 * SPDX-License-Identifier: Apache-2.0
 */

#include <zephyr/types.h>
#include <bluetooth/conn.h>
#include <bluetooth/audio/bass.h>

#define BT_BASS_SCAN_STATE_NOT_SCANNING   0x00
#define BT_BASS_SCAN_STATE_SCANNING       0x01

#define BT_BASS_OP_SCAN_STOP              0x00
#define BT_BASS_OP_SCAN_START             0x01
#define BT_BASS_OP_ADD_SRC                0x02
#define BT_BASS_OP_MOD_SRC                0x03
#define BT_BASS_OP_BROADCAST_CODE         0x04
#define BT_BASS_OP_REM_SRC                0x05

#define BT_BASS_SCAN_STATE_IDLE           0x00
#define BT_BASS_SCAN_STATE_SCANNING       0x01
#define BT_BASS_SCAN_STATE_FAILED         0x02
#define BT_BASS_SCAN_STATE_SYNCED         0x03

#define BT_BASS_PA_REQ_NO_SYNC            0x00
#define BT_BASS_PA_REQ_SYNC_PAST          0x01
#define BT_BASS_PA_REQ_SYNC               0x02

#define BT_BASS_BROADCAST_ID_SIZE          3

#define BT_BASS_VALID_OPCODE(opcode) \
	((opcode) >= BT_BASS_OP_SCAN_STOP && (opcode) <= BT_BASS_OP_REM_SRC)

struct bt_bass_cp_scan_stop {
	uint8_t opcode;
} __packed;

struct bt_bass_cp_scan_start {
	uint8_t opcode;
} __packed;

struct bt_bass_cp_subgroup {
	uint32_t bis_sync;
	uint8_t metadata_len;
	uint8_t metadata[0];
} __packed;

struct bt_bass_cp_add_src {
	uint8_t opcode;
	bt_addr_le_t addr;
	uint8_t adv_sid;
	uint8_t broadcast_id[BT_BASS_BROADCAST_ID_SIZE];
	uint8_t pa_sync;
	uint16_t pa_interval;
	uint8_t num_subgroups;
	struct bt_bass_cp_subgroup subgroups[0];
} __packed;

struct bt_bass_cp_mod_src {
	uint8_t opcode;
	uint8_t src_id;
	uint8_t pa_sync;
	uint16_t pa_interval;
	uint8_t num_subgroups;
	struct bt_bass_cp_subgroup subgroups[0];
} __packed;

struct bt_bass_cp_broadcase_code {
	uint8_t opcode;
	uint8_t src_id;
	uint8_t broadcast_code[16];
} __packed;

struct bt_bass_cp_rem_src {
	uint8_t opcode;
	uint8_t src_id;
} __packed;

union bt_bass_cp {
	uint8_t opcode;
	struct bt_bass_cp_scan_stop scan_stop;
	struct bt_bass_cp_scan_start scan_start;
	struct bt_bass_cp_add_src add_src;
	struct bt_bass_cp_mod_src mod_src;
	struct bt_bass_cp_broadcase_code broadcast_code;
	struct bt_bass_cp_rem_src rem_src;
};
