Bluetooth: audio: Remove capablilities leftovers
Remove dead code that remained after https://github.com/zephyrproject-rtos/zephyr/pull/51425 was merged. Signed-off-by: Mariusz Skamra <mariusz.skamra@codecoup.pl>
This commit is contained in:
parent
69ef22b717
commit
3ea297960d
4 changed files with 2 additions and 368 deletions
|
@ -201,13 +201,6 @@ config BT_AUDIO_DEBUG_STREAM_DATA
|
||||||
the Bluetooth Audio functionality. This will enable debug logs for all
|
the Bluetooth Audio functionality. This will enable debug logs for all
|
||||||
audio data received and sent.
|
audio data received and sent.
|
||||||
|
|
||||||
config BT_AUDIO_DEBUG_CAPABILITIES
|
|
||||||
bool "Bluetooth Audio Capabilities debug"
|
|
||||||
depends on BT_AUDIO_CAPABILITY
|
|
||||||
help
|
|
||||||
Use this option to enable Bluetooth Audio Capabilities debug logs for
|
|
||||||
the Bluetooth Audio functionality.
|
|
||||||
|
|
||||||
config BT_DEBUG_ASCS
|
config BT_DEBUG_ASCS
|
||||||
bool "Audio Stream Control Service debug"
|
bool "Audio Stream Control Service debug"
|
||||||
depends on BT_ASCS
|
depends on BT_ASCS
|
||||||
|
@ -250,10 +243,5 @@ config BT_AUDIO_STREAM
|
||||||
default y if BT_ASCS || BT_AUDIO_UNICAST_CLIENT || \
|
default y if BT_ASCS || BT_AUDIO_UNICAST_CLIENT || \
|
||||||
BT_AUDIO_BROADCAST_SOURCE || BT_AUDIO_BROADCAST_SINK
|
BT_AUDIO_BROADCAST_SOURCE || BT_AUDIO_BROADCAST_SINK
|
||||||
|
|
||||||
config BT_AUDIO_CAPABILITY
|
|
||||||
# Virtual/hidden option
|
|
||||||
bool
|
|
||||||
default y if BT_PACS
|
|
||||||
|
|
||||||
rsource "Kconfig.pacs"
|
rsource "Kconfig.pacs"
|
||||||
rsource "Kconfig.ascs"
|
rsource "Kconfig.ascs"
|
||||||
|
|
|
@ -1,353 +0,0 @@
|
||||||
/* Bluetooth Audio Capabilities */
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Copyright (c) 2021 Intel Corporation
|
|
||||||
* Copyright (c) 2022 Nordic Semiconductor ASA
|
|
||||||
*
|
|
||||||
* SPDX-License-Identifier: Apache-2.0
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <zephyr/kernel.h>
|
|
||||||
#include <zephyr/sys/byteorder.h>
|
|
||||||
#include <zephyr/sys/check.h>
|
|
||||||
|
|
||||||
#include <zephyr/device.h>
|
|
||||||
#include <zephyr/init.h>
|
|
||||||
|
|
||||||
#include <zephyr/bluetooth/bluetooth.h>
|
|
||||||
#include <zephyr/bluetooth/conn.h>
|
|
||||||
#include <zephyr/bluetooth/gatt.h>
|
|
||||||
#include <zephyr/bluetooth/audio/audio.h>
|
|
||||||
#include <zephyr/bluetooth/audio/capabilities.h>
|
|
||||||
|
|
||||||
#include "pacs_internal.h"
|
|
||||||
|
|
||||||
#define BT_DBG_ENABLED IS_ENABLED(CONFIG_BT_AUDIO_DEBUG_CAPABILITIES)
|
|
||||||
#define LOG_MODULE_NAME bt_audio_capability
|
|
||||||
#include "common/log.h"
|
|
||||||
#include "common/assert.h"
|
|
||||||
|
|
||||||
static sys_slist_t snks;
|
|
||||||
static sys_slist_t srcs;
|
|
||||||
|
|
||||||
IF_ENABLED(CONFIG_BT_PAC_SNK, (static enum bt_audio_context sink_available_contexts;))
|
|
||||||
IF_ENABLED(CONFIG_BT_PAC_SRC, (static enum bt_audio_context source_available_contexts;));
|
|
||||||
|
|
||||||
static int publish_capability_cb(struct bt_conn *conn, uint8_t dir,
|
|
||||||
uint8_t index, struct bt_codec *codec)
|
|
||||||
{
|
|
||||||
struct bt_audio_capability *cap;
|
|
||||||
sys_slist_t *lst;
|
|
||||||
uint8_t i;
|
|
||||||
|
|
||||||
if (dir == BT_AUDIO_DIR_SINK) {
|
|
||||||
lst = &snks;
|
|
||||||
} else if (dir == BT_AUDIO_DIR_SOURCE) {
|
|
||||||
lst = &srcs;
|
|
||||||
} else {
|
|
||||||
BT_ERR("Invalid endpoint dir: %u", dir);
|
|
||||||
return -EINVAL;
|
|
||||||
}
|
|
||||||
|
|
||||||
i = 0;
|
|
||||||
SYS_SLIST_FOR_EACH_CONTAINER(lst, cap, _node) {
|
|
||||||
if (i != index) {
|
|
||||||
i++;
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
(void)memcpy(codec, cap->codec, sizeof(*codec));
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
return -ENOENT;
|
|
||||||
}
|
|
||||||
|
|
||||||
#if defined(CONFIG_BT_PAC_SNK_LOC) || defined(CONFIG_BT_PAC_SRC_LOC)
|
|
||||||
|
|
||||||
#if defined(CONFIG_BT_PAC_SNK_LOC)
|
|
||||||
static enum bt_audio_location sink_location;
|
|
||||||
#endif /* CONFIG_BT_PAC_SNK_LOC */
|
|
||||||
#if defined(CONFIG_BT_PAC_SRC_LOC)
|
|
||||||
static enum bt_audio_location source_location;
|
|
||||||
#endif /* CONFIG_BT_PAC_SRC_LOC */
|
|
||||||
|
|
||||||
static int publish_location_cb(struct bt_conn *conn,
|
|
||||||
enum bt_audio_dir dir,
|
|
||||||
enum bt_audio_location *location)
|
|
||||||
{
|
|
||||||
if (0) {
|
|
||||||
#if defined(CONFIG_BT_PAC_SNK_LOC)
|
|
||||||
} else if (dir == BT_AUDIO_DIR_SINK) {
|
|
||||||
*location = sink_location;
|
|
||||||
#endif /* CONFIG_BT_PAC_SNK_LOC */
|
|
||||||
#if defined(CONFIG_BT_PAC_SRC_LOC)
|
|
||||||
} else if (dir == BT_AUDIO_DIR_SOURCE) {
|
|
||||||
*location = source_location;
|
|
||||||
#endif /* CONFIG_BT_PAC_SRC_LOC */
|
|
||||||
} else {
|
|
||||||
BT_ERR("Invalid endpoint dir: %u", dir);
|
|
||||||
|
|
||||||
return -EINVAL;
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
#if defined(CONFIG_BT_PAC_SNK_LOC_WRITEABLE) || defined(CONFIG_BT_PAC_SRC_LOC_WRITEABLE)
|
|
||||||
static int write_location_cb(struct bt_conn *conn, enum bt_audio_dir dir,
|
|
||||||
enum bt_audio_location location)
|
|
||||||
{
|
|
||||||
return bt_audio_capability_set_location(dir, location);
|
|
||||||
}
|
|
||||||
#endif /* CONFIG_BT_PAC_SNK_LOC_WRITEABLE || CONFIG_BT_PAC_SRC_LOC_WRITEABLE */
|
|
||||||
#endif /* CONFIG_BT_PAC_SNK_LOC || CONFIG_BT_PAC_SRC_LOC */
|
|
||||||
static int get_available_contexts(enum bt_audio_dir dir,
|
|
||||||
enum bt_audio_context *contexts);
|
|
||||||
|
|
||||||
static int get_available_contexts_cb(struct bt_conn *conn, enum bt_audio_dir dir,
|
|
||||||
enum bt_audio_context *contexts)
|
|
||||||
{
|
|
||||||
return get_available_contexts(dir, contexts);
|
|
||||||
}
|
|
||||||
|
|
||||||
static struct bt_audio_pacs_cb pacs_cb = {
|
|
||||||
.publish_capability = publish_capability_cb,
|
|
||||||
.get_available_contexts = get_available_contexts_cb,
|
|
||||||
#if defined(CONFIG_BT_PAC_SNK_LOC) || defined(CONFIG_BT_PAC_SRC_LOC)
|
|
||||||
.publish_location = publish_location_cb,
|
|
||||||
#if defined(CONFIG_BT_PAC_SNK_LOC_WRITEABLE) || defined(CONFIG_BT_PAC_SRC_LOC_WRITEABLE)
|
|
||||||
.write_location = write_location_cb
|
|
||||||
#endif /* CONFIG_BT_PAC_SNK_LOC_WRITEABLE || CONFIG_BT_PAC_SRC_LOC_WRITEABLE */
|
|
||||||
#endif /* CONFIG_BT_PAC_SNK_LOC || CONFIG_BT_PAC_SRC_LOC */
|
|
||||||
};
|
|
||||||
|
|
||||||
static sys_slist_t *bt_audio_capability_get(enum bt_audio_dir dir)
|
|
||||||
{
|
|
||||||
switch (dir) {
|
|
||||||
case BT_AUDIO_DIR_SINK:
|
|
||||||
return &snks;
|
|
||||||
case BT_AUDIO_DIR_SOURCE:
|
|
||||||
return &srcs;
|
|
||||||
}
|
|
||||||
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
void bt_audio_foreach_capability(enum bt_audio_dir dir, bt_audio_foreach_capability_func_t func,
|
|
||||||
void *user_data)
|
|
||||||
{
|
|
||||||
struct bt_audio_capability *cap;
|
|
||||||
sys_slist_t *lst;
|
|
||||||
|
|
||||||
CHECKIF(func == NULL) {
|
|
||||||
BT_ERR("func is NULL");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
lst = bt_audio_capability_get(dir);
|
|
||||||
if (!lst) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
SYS_SLIST_FOR_EACH_CONTAINER(lst, cap, _node) {
|
|
||||||
if (!func(cap, user_data)) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Register Audio Capability */
|
|
||||||
int bt_audio_capability_register(enum bt_audio_dir dir, struct bt_audio_capability *cap)
|
|
||||||
{
|
|
||||||
static bool pacs_cb_registered;
|
|
||||||
sys_slist_t *lst;
|
|
||||||
|
|
||||||
if (!cap || !cap->codec) {
|
|
||||||
return -EINVAL;
|
|
||||||
}
|
|
||||||
|
|
||||||
lst = bt_audio_capability_get(dir);
|
|
||||||
if (!lst) {
|
|
||||||
return -EINVAL;
|
|
||||||
}
|
|
||||||
|
|
||||||
BT_DBG("cap %p dir 0x%02x codec 0x%02x codec cid 0x%04x "
|
|
||||||
"codec vid 0x%04x", cap, dir, cap->codec->id,
|
|
||||||
cap->codec->cid, cap->codec->vid);
|
|
||||||
|
|
||||||
if (!pacs_cb_registered) {
|
|
||||||
int err;
|
|
||||||
|
|
||||||
err = bt_audio_pacs_register_cb(&pacs_cb);
|
|
||||||
if (err != 0) {
|
|
||||||
BT_DBG("Failed to register PACS callbacks: %d",
|
|
||||||
err);
|
|
||||||
return err;
|
|
||||||
}
|
|
||||||
|
|
||||||
pacs_cb_registered = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
sys_slist_append(lst, &cap->_node);
|
|
||||||
|
|
||||||
#if defined(CONFIG_BT_PACS)
|
|
||||||
bt_pacs_capabilities_changed(dir);
|
|
||||||
#endif /* CONFIG_BT_PACS */
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Unregister Audio Capability */
|
|
||||||
int bt_audio_capability_unregister(enum bt_audio_dir dir, struct bt_audio_capability *cap)
|
|
||||||
{
|
|
||||||
sys_slist_t *lst;
|
|
||||||
|
|
||||||
if (!cap) {
|
|
||||||
return -EINVAL;
|
|
||||||
}
|
|
||||||
|
|
||||||
lst = bt_audio_capability_get(dir);
|
|
||||||
if (!lst) {
|
|
||||||
return -EINVAL;
|
|
||||||
}
|
|
||||||
|
|
||||||
BT_DBG("cap %p dir 0x%02x", cap, dir);
|
|
||||||
|
|
||||||
if (!sys_slist_find_and_remove(lst, &cap->_node)) {
|
|
||||||
return -ENOENT;
|
|
||||||
}
|
|
||||||
|
|
||||||
#if defined(CONFIG_BT_PACS)
|
|
||||||
bt_pacs_capabilities_changed(dir);
|
|
||||||
#endif /* CONFIG_BT_PACS */
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
#if defined(CONFIG_BT_PAC_SNK_LOC) || defined(CONFIG_BT_PAC_SRC_LOC)
|
|
||||||
int bt_audio_capability_set_location(enum bt_audio_dir dir,
|
|
||||||
enum bt_audio_location location)
|
|
||||||
{
|
|
||||||
if (0) {
|
|
||||||
#if defined(CONFIG_BT_PAC_SNK_LOC)
|
|
||||||
} else if (dir == BT_AUDIO_DIR_SINK) {
|
|
||||||
sink_location = location;
|
|
||||||
#endif /* CONFIG_BT_PAC_SNK_LOC */
|
|
||||||
#if defined(CONFIG_BT_PAC_SRC_LOC)
|
|
||||||
} else if (dir == BT_AUDIO_DIR_SOURCE) {
|
|
||||||
source_location = location;
|
|
||||||
#endif /* CONFIG_BT_PAC_SRC_LOC */
|
|
||||||
} else {
|
|
||||||
BT_ERR("Invalid endpoint dir: %u", dir);
|
|
||||||
|
|
||||||
return -EINVAL;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (IS_ENABLED(CONFIG_BT_PAC_SNK_LOC) ||
|
|
||||||
IS_ENABLED(CONFIG_BT_PAC_SRC_LOC)) {
|
|
||||||
int err;
|
|
||||||
|
|
||||||
err = bt_audio_pacs_location_changed(dir);
|
|
||||||
if (err) {
|
|
||||||
BT_DBG("Location for dir %d wasn't notified: %d",
|
|
||||||
dir, err);
|
|
||||||
|
|
||||||
return err;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
#endif /* CONFIG_BT_PAC_SNK_LOC || CONFIG_BT_PAC_SRC_LOC */
|
|
||||||
|
|
||||||
static int set_available_contexts(enum bt_audio_dir dir,
|
|
||||||
enum bt_audio_context contexts)
|
|
||||||
{
|
|
||||||
IF_ENABLED(CONFIG_BT_PAC_SNK, (
|
|
||||||
if (dir == BT_AUDIO_DIR_SINK) {
|
|
||||||
const enum bt_audio_context supported = CONFIG_BT_PACS_SNK_CONTEXT;
|
|
||||||
|
|
||||||
if (contexts & ~supported) {
|
|
||||||
return -ENOTSUP;
|
|
||||||
}
|
|
||||||
|
|
||||||
sink_available_contexts = contexts;
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
));
|
|
||||||
|
|
||||||
IF_ENABLED(CONFIG_BT_PAC_SRC, (
|
|
||||||
if (dir == BT_AUDIO_DIR_SOURCE) {
|
|
||||||
const enum bt_audio_context supported = CONFIG_BT_PACS_SRC_CONTEXT;
|
|
||||||
|
|
||||||
if (contexts & ~supported) {
|
|
||||||
return -ENOTSUP;
|
|
||||||
}
|
|
||||||
|
|
||||||
source_available_contexts = contexts;
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
));
|
|
||||||
|
|
||||||
BT_ERR("Invalid endpoint dir: %u", dir);
|
|
||||||
|
|
||||||
return -EINVAL;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int get_available_contexts(enum bt_audio_dir dir,
|
|
||||||
enum bt_audio_context *contexts)
|
|
||||||
{
|
|
||||||
IF_ENABLED(CONFIG_BT_PAC_SNK, (
|
|
||||||
if (dir == BT_AUDIO_DIR_SINK) {
|
|
||||||
*contexts = sink_available_contexts;
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
));
|
|
||||||
|
|
||||||
IF_ENABLED(CONFIG_BT_PAC_SRC, (
|
|
||||||
if (dir == BT_AUDIO_DIR_SOURCE) {
|
|
||||||
*contexts = source_available_contexts;
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
));
|
|
||||||
|
|
||||||
BT_ASSERT_PRINT_MSG("Invalid endpoint dir: %u", dir);
|
|
||||||
|
|
||||||
return -EINVAL;
|
|
||||||
}
|
|
||||||
|
|
||||||
int bt_audio_capability_set_available_contexts(enum bt_audio_dir dir,
|
|
||||||
enum bt_audio_context contexts)
|
|
||||||
{
|
|
||||||
int err;
|
|
||||||
|
|
||||||
err = set_available_contexts(dir, contexts);
|
|
||||||
if (err) {
|
|
||||||
return err;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (IS_ENABLED(CONFIG_BT_PACS)) {
|
|
||||||
err = bt_pacs_available_contexts_changed();
|
|
||||||
if (err) {
|
|
||||||
BT_DBG("Available contexts weren't notified: %d", err);
|
|
||||||
return err;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
enum bt_audio_context bt_audio_capability_get_available_contexts(enum bt_audio_dir dir)
|
|
||||||
{
|
|
||||||
enum bt_audio_context contexts;
|
|
||||||
int err;
|
|
||||||
|
|
||||||
err = get_available_contexts(dir, &contexts);
|
|
||||||
if (err < 0) {
|
|
||||||
return BT_AUDIO_CONTEXT_TYPE_PROHIBITED;
|
|
||||||
}
|
|
||||||
|
|
||||||
return contexts;
|
|
||||||
}
|
|
|
@ -1923,10 +1923,10 @@ SHELL_STATIC_SUBCMD_SET_CREATE(audio_cmds,
|
||||||
SHELL_CMD_ARG(stop_sine, NULL, "Stop sending a LC3 encoded sine wave",
|
SHELL_CMD_ARG(stop_sine, NULL, "Stop sending a LC3 encoded sine wave",
|
||||||
cmd_stop_sine, 1, 0),
|
cmd_stop_sine, 1, 0),
|
||||||
#endif /* CONFIG_LIBLC3 */
|
#endif /* CONFIG_LIBLC3 */
|
||||||
SHELL_COND_CMD_ARG(CONFIG_BT_AUDIO_CAPABILITY, set_location, NULL,
|
SHELL_COND_CMD_ARG(CONFIG_BT_PACS, set_location, NULL,
|
||||||
"<direction: sink, source> <location bitmask>",
|
"<direction: sink, source> <location bitmask>",
|
||||||
cmd_set_loc, 3, 0),
|
cmd_set_loc, 3, 0),
|
||||||
SHELL_COND_CMD_ARG(CONFIG_BT_AUDIO_CAPABILITY, add_context, NULL,
|
SHELL_COND_CMD_ARG(CONFIG_BT_PACS, add_context, NULL,
|
||||||
"<direction: sink, source> <context bitmask>",
|
"<direction: sink, source> <context bitmask>",
|
||||||
cmd_context, 3, 0),
|
cmd_context, 3, 0),
|
||||||
SHELL_SUBCMD_SET_END
|
SHELL_SUBCMD_SET_END
|
||||||
|
|
|
@ -140,7 +140,6 @@ CONFIG_BT_AUDIO_DEBUG_BROADCAST_SOURCE=y
|
||||||
CONFIG_BT_DEBUG_ASCS=y
|
CONFIG_BT_DEBUG_ASCS=y
|
||||||
CONFIG_BT_DEBUG_PACS=y
|
CONFIG_BT_DEBUG_PACS=y
|
||||||
CONFIG_BT_AUDIO_DEBUG_STREAM=y
|
CONFIG_BT_AUDIO_DEBUG_STREAM=y
|
||||||
CONFIG_BT_AUDIO_DEBUG_CAPABILITIES=y
|
|
||||||
CONFIG_BT_DEBUG_BASS=y
|
CONFIG_BT_DEBUG_BASS=y
|
||||||
CONFIG_BT_DEBUG_BASS_CLIENT=y
|
CONFIG_BT_DEBUG_BASS_CLIENT=y
|
||||||
CONFIG_BT_DEBUG_HAS=y
|
CONFIG_BT_DEBUG_HAS=y
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue