blob: 0d48d1e3d72dd82f163eca7e5fc2dcaf43cd62e7 [file] [log] [blame]
/** @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 <zephyr/bluetooth/conn.h>
#include <zephyr/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;
};