From da89dcfbcdf08c7a9bf4f2b90c759bd157c98aca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Asbj=C3=B8rn=20S=C3=A6b=C3=B8?= Date: Mon, 7 Feb 2022 11:28:08 +0100 Subject: [PATCH] Bluetooth: OTC - Move metadata bitfields to common files MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Move the metadata request bitfields to the common header files. This is part of merging the ots_client and ots header files. Signed-off-by: Asbjørn Sæbø --- include/bluetooth/services/ots.h | 22 ++++++++- include/bluetooth/services/ots_client.h | 44 +----------------- subsys/bluetooth/audio/mcc.c | 2 +- subsys/bluetooth/services/ots/ots_client.c | 46 ++++++++----------- subsys/bluetooth/services/ots/ots_internal.h | 30 ++++++++++++ subsys/bluetooth/shell/mcc.c | 2 +- .../bsim_bt/bsim_test_audio/src/mcc_test.c | 2 +- 7 files changed, 75 insertions(+), 73 deletions(-) diff --git a/include/bluetooth/services/ots.h b/include/bluetooth/services/ots.h index 632985d2a27..5d6943a6298 100644 --- a/include/bluetooth/services/ots.h +++ b/include/bluetooth/services/ots.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020 Nordic Semiconductor ASA + * Copyright (c) 2020-2022 Nordic Semiconductor ASA * * SPDX-License-Identifier: Apache-2.0 */ @@ -468,6 +468,26 @@ struct bt_ots_feat { uint32_t olcp; } __packed; +/** @brief Object metadata request bit field values */ +enum { + /** @brief Request object name */ + BT_OTS_METADATA_REQ_NAME = BIT(0), + /** @brief Request object type */ + BT_OTS_METADATA_REQ_TYPE = BIT(1), + /** @brief Request object size */ + BT_OTS_METADATA_REQ_SIZE = BIT(2), + /** @brief Request object first created time */ + BT_OTS_METADATA_REQ_CREATED = BIT(3), + /** @brief Request object last modified time */ + BT_OTS_METADATA_REQ_MODIFIED = BIT(4), + /** @brief Request object ID */ + BT_OTS_METADATA_REQ_ID = BIT(5), + /** @brief Request object properties */ + BT_OTS_METADATA_REQ_PROPS = BIT(6), + /** @brief Request all object metadata */ + BT_OTS_METADATA_REQ_ALL = 0x7F, +}; + /** @brief Opaque OTS instance. */ struct bt_ots; diff --git a/include/bluetooth/services/ots_client.h b/include/bluetooth/services/ots_client.h index e99c827a4dc..cf3aa66b301 100644 --- a/include/bluetooth/services/ots_client.h +++ b/include/bluetooth/services/ots_client.h @@ -29,9 +29,6 @@ extern "C" { #endif -#define SET_OR_CLEAR_BIT(var, bit_val, set) \ - ((var) = (set) ? ((var) | bit_val) : ((var) & ~bit_val)) - /** @brief Date and Time structure. * TODO: Move somewhere else - bluetooth.h? */ @@ -45,48 +42,9 @@ struct bt_date_time { uint8_t seconds; }; -#define BT_OTC_METADATA_REQ_NAME BIT(0) -#define BT_OTC_METADATA_REQ_TYPE BIT(1) -#define BT_OTC_METADATA_REQ_SIZE BIT(2) -#define BT_OTC_METADATA_REQ_CREATED BIT(3) -#define BT_OTC_METADATA_REQ_MODIFIED BIT(4) -#define BT_OTC_METADATA_REQ_ID BIT(5) -#define BT_OTC_METADATA_REQ_PROPS BIT(6) -#define BT_OTC_METADATA_REQ_ALL 0x7F - #define BT_OTC_STOP 0 #define BT_OTC_CONTINUE 1 -#define BT_OTC_SET_METADATA_REQ_NAME(metadata, set) \ - SET_OR_CLEAR_BIT(metadata, BT_OTC_METADATA_REQ_NAME, set) -#define BT_OTC_SET_METADATA_REQ_TYPE(metadata, set) \ - SET_OR_CLEAR_BIT(metadata, BT_OTC_METADATA_REQ_TYPE, set) -#define BT_OTC_SET_METADATA_REQ_SIZE(metadata, set) \ - SET_OR_CLEAR_BIT(metadata, BT_OTC_METADATA_REQ_SIZE, set) -#define BT_OTC_SET_METADATA_REQ_CREATED(metadata, set) \ - SET_OR_CLEAR_BIT(metadata, BT_OTC_METADATA_REQ_CREATED, set) -#define BT_OTC_SET_METADATA_REQ_MODIFIED(metadata, set) \ - SET_OR_CLEAR_BIT(metadata, BT_OTC_METADATA_REQ_MODIFIED, set) -#define BT_OTC_SET_METADATA_REQ_ID(metadata, set) \ - SET_OR_CLEAR_BIT(metadata, BT_OTC_METADATA_REQ_ID, set) -#define BT_OTC_SET_METADATA_REQ_PROPS(metadata, set) \ - SET_OR_CLEAR_BIT(metadata, BT_OTC_METADATA_REQ_PROPS, set) - -#define BT_OTC_GET_METADATA_REQ_NAME(metadata) \ - ((metadata) & BT_OTC_METADATA_REQ_NAME) -#define BT_OTC_GET_METADATA_REQ_TYPE(metadata) \ - ((metadata) & BT_OTC_METADATA_REQ_TYPE) -#define BT_OTC_GET_METADATA_REQ_SIZE(metadata) \ - ((metadata) & BT_OTC_METADATA_REQ_SIZE) -#define BT_OTC_GET_METADATA_REQ_CREATED(metadata) \ - ((metadata) & BT_OTC_METADATA_REQ_CREATED) -#define BT_OTC_GET_METADATA_REQ_MODIFIED(metadata) \ - ((metadata) & BT_OTC_METADATA_REQ_MODIFIED) -#define BT_OTC_GET_METADATA_REQ_ID(metadata) \ - ((metadata) & BT_OTC_METADATA_REQ_ID) -#define BT_OTC_GET_METADATA_REQ_PROPS(metadata) \ - ((metadata) & BT_OTC_METADATA_REQ_PROPS) - /**@brief Metadata of an OTS Object */ struct bt_otc_obj_metadata { char name[CONFIG_BT_OTS_OBJ_MAX_NAME_LEN + 1]; @@ -282,7 +240,7 @@ int bt_otc_select_prev(struct bt_conn *conn, * * @param conn Pointer to the connection object. * @param otc_inst Pointer to the OTC instance. - * @param metadata Bitfield (`BT_OTC_METADATA_REQ_*`) of the metadata + * @param metadata Bitfield (`BT_OTS_METADATA_REQ_*`) of the metadata * to read. * * @return int 0 if success, ERRNO on failure. diff --git a/subsys/bluetooth/audio/mcc.c b/subsys/bluetooth/audio/mcc.c index c5791733801..af0dce7cdac 100644 --- a/subsys/bluetooth/audio/mcc.c +++ b/subsys/bluetooth/audio/mcc.c @@ -2653,7 +2653,7 @@ int bt_mcc_otc_read_object_metadata(struct bt_conn *conn) int err; err = bt_otc_read_object_metadata(conn, &cur_mcs_inst->otc, - BT_OTC_METADATA_REQ_ALL); + BT_OTS_METADATA_REQ_ALL); if (err) { BT_DBG("Error reading the object: %d", err); } diff --git a/subsys/bluetooth/services/ots/ots_client.c b/subsys/bluetooth/services/ots/ots_client.c index 4e770b79a8e..a757d454cef 100644 --- a/subsys/bluetooth/services/ots/ots_client.c +++ b/subsys/bluetooth/services/ots/ots_client.c @@ -22,6 +22,7 @@ #include #include +#include "ots_internal.h" #include "ots_client_internal.h" #include "ots_l2cap_internal.h" #include "ots_dir_list_internal.h" @@ -758,7 +759,7 @@ static uint8_t read_object_size_cb(struct bt_conn *conn, uint8_t err, cur_object->current_size); } - BT_OTC_SET_METADATA_REQ_SIZE(inst->metadata_read, true); + BT_OTS_SET_METADATA_REQ_SIZE(inst->metadata_read); } } @@ -815,8 +816,7 @@ static uint8_t read_obj_id_cb(struct bt_conn *conn, uint8_t err, BT_INFO("Read Obj Id confirmed correct Obj Id"); cur_object->id = obj_id; - BT_OTC_SET_METADATA_REQ_ID(inst->metadata_read, - true); + BT_OTS_SET_METADATA_REQ_ID(inst->metadata_read); } } else { BT_DBG("Invalid length %u (expected %u)", @@ -899,7 +899,7 @@ static uint8_t read_obj_type_cb(struct bt_conn *conn, uint8_t err, bt_uuid_to_str(uuid, uuid_str, sizeof(uuid_str)); BT_DBG("UUID type read: %s", log_strdup(uuid_str)); - BT_OTC_SET_METADATA_REQ_TYPE(inst->metadata_read, true); + BT_OTS_SET_METADATA_REQ_TYPE(inst->metadata_read); } else { BT_WARN("Invalid length %u (expected max %u)", length, OTS_TYPE_MAX_LEN); @@ -1055,7 +1055,7 @@ static uint8_t read_obj_properties_cb(struct bt_conn *conn, uint8_t err, BT_WARN("Obj properties: Obj read not supported"); } - BT_OTC_SET_METADATA_REQ_PROPS(inst->metadata_read, true); + BT_OTS_SET_METADATA_REQ_PROPS(inst->metadata_read); } else { BT_WARN("Invalid length %u (expected %u)", length, OTS_PROPERTIES_LEN); @@ -1187,38 +1187,32 @@ static void read_next_metadata(struct bt_conn *conn, BT_DBG("Attempting to read metadata 0x%02X", metadata_remaining); - if (BT_OTC_GET_METADATA_REQ_NAME(metadata_remaining)) { - BT_OTC_SET_METADATA_REQ_NAME(inst->metadata_read_attempted, - true); + if (BT_OTS_GET_METADATA_REQ_NAME(metadata_remaining)) { + BT_OTS_SET_METADATA_REQ_NAME(inst->metadata_read_attempted); err = read_attr(conn, inst, inst->otc_inst->obj_name_handle, read_obj_name_cb); - } else if (BT_OTC_GET_METADATA_REQ_TYPE(metadata_remaining)) { - BT_OTC_SET_METADATA_REQ_TYPE(inst->metadata_read_attempted, - true); + } else if (BT_OTS_GET_METADATA_REQ_TYPE(metadata_remaining)) { + BT_OTS_SET_METADATA_REQ_TYPE(inst->metadata_read_attempted); err = read_attr(conn, inst, inst->otc_inst->obj_type_handle, read_obj_type_cb); - } else if (BT_OTC_GET_METADATA_REQ_SIZE(metadata_remaining)) { - BT_OTC_SET_METADATA_REQ_SIZE(inst->metadata_read_attempted, - true); + } else if (BT_OTS_GET_METADATA_REQ_SIZE(metadata_remaining)) { + BT_OTS_SET_METADATA_REQ_SIZE(inst->metadata_read_attempted); err = read_attr(conn, inst, inst->otc_inst->obj_size_handle, read_object_size_cb); - } else if (BT_OTC_GET_METADATA_REQ_CREATED(metadata_remaining)) { - BT_OTC_SET_METADATA_REQ_CREATED(inst->metadata_read_attempted, - true); + } else if (BT_OTS_GET_METADATA_REQ_CREATED(metadata_remaining)) { + BT_OTS_SET_METADATA_REQ_CREATED(inst->metadata_read_attempted); err = read_attr(conn, inst, inst->otc_inst->obj_created_handle, read_obj_created_cb); - } else if (BT_OTC_GET_METADATA_REQ_MODIFIED(metadata_remaining)) { - BT_OTC_SET_METADATA_REQ_MODIFIED(inst->metadata_read_attempted, - true); + } else if (BT_OTS_GET_METADATA_REQ_MODIFIED(metadata_remaining)) { + BT_OTS_SET_METADATA_REQ_MODIFIED(inst->metadata_read_attempted); err = read_attr(conn, inst, inst->otc_inst->obj_modified_handle, read_obj_modified_cb); - } else if (BT_OTC_GET_METADATA_REQ_ID(metadata_remaining)) { - BT_OTC_SET_METADATA_REQ_ID(inst->metadata_read_attempted, true); + } else if (BT_OTS_GET_METADATA_REQ_ID(metadata_remaining)) { + BT_OTS_SET_METADATA_REQ_ID(inst->metadata_read_attempted); err = read_attr(conn, inst, inst->otc_inst->obj_id_handle, read_obj_id_cb); - } else if (BT_OTC_GET_METADATA_REQ_PROPS(metadata_remaining)) { - BT_OTC_SET_METADATA_REQ_PROPS(inst->metadata_read_attempted, - true); + } else if (BT_OTS_GET_METADATA_REQ_PROPS(metadata_remaining)) { + BT_OTS_SET_METADATA_REQ_PROPS(inst->metadata_read_attempted); err = read_attr(conn, inst, inst->otc_inst->obj_properties_handle, read_obj_properties_cb); @@ -1265,7 +1259,7 @@ int bt_otc_read_object_metadata(struct bt_conn *conn, } inst->metadata_read = 0; - inst->metadata_to_read = metadata & BT_OTC_METADATA_REQ_ALL; + inst->metadata_to_read = metadata & BT_OTS_METADATA_REQ_ALL; inst->metadata_read_attempted = 0; inst->busy = true; diff --git a/subsys/bluetooth/services/ots/ots_internal.h b/subsys/bluetooth/services/ots/ots_internal.h index 70933d2e6fc..12485278df8 100644 --- a/subsys/bluetooth/services/ots/ots_internal.h +++ b/subsys/bluetooth/services/ots/ots_internal.h @@ -16,6 +16,36 @@ extern "C" { #include "ots_oacp_internal.h" #include "ots_olcp_internal.h" +#define BT_OTS_SET_METADATA_REQ_NAME(metadata) \ + ((metadata) = (metadata) | BT_OTS_METADATA_REQ_NAME) +#define BT_OTS_SET_METADATA_REQ_TYPE(metadata) \ + ((metadata) = (metadata) | BT_OTS_METADATA_REQ_TYPE) +#define BT_OTS_SET_METADATA_REQ_SIZE(metadata) \ + ((metadata) = (metadata) | BT_OTS_METADATA_REQ_SIZE) +#define BT_OTS_SET_METADATA_REQ_CREATED(metadata) \ + ((metadata) = (metadata) | BT_OTS_METADATA_REQ_CREATED) +#define BT_OTS_SET_METADATA_REQ_MODIFIED(metadata) \ + ((metadata) = (metadata) | BT_OTS_METADATA_REQ_MODIFIED) +#define BT_OTS_SET_METADATA_REQ_ID(metadata) \ + ((metadata) = (metadata) | BT_OTS_METADATA_REQ_ID) +#define BT_OTS_SET_METADATA_REQ_PROPS(metadata) \ + ((metadata) = (metadata) | BT_OTS_METADATA_REQ_PROPS) + +#define BT_OTS_GET_METADATA_REQ_NAME(metadata) \ + ((metadata) & BT_OTS_METADATA_REQ_NAME) +#define BT_OTS_GET_METADATA_REQ_TYPE(metadata) \ + ((metadata) & BT_OTS_METADATA_REQ_TYPE) +#define BT_OTS_GET_METADATA_REQ_SIZE(metadata) \ + ((metadata) & BT_OTS_METADATA_REQ_SIZE) +#define BT_OTS_GET_METADATA_REQ_CREATED(metadata) \ + ((metadata) & BT_OTS_METADATA_REQ_CREATED) +#define BT_OTS_GET_METADATA_REQ_MODIFIED(metadata) \ + ((metadata) & BT_OTS_METADATA_REQ_MODIFIED) +#define BT_OTS_GET_METADATA_REQ_ID(metadata) \ + ((metadata) & BT_OTS_METADATA_REQ_ID) +#define BT_OTS_GET_METADATA_REQ_PROPS(metadata) \ + ((metadata) & BT_OTS_METADATA_REQ_PROPS) + /**@brief OTS Attribute Protocol Application Error codes. */ enum bt_gatt_ots_att_err_codes { /** An attempt was made to write a value that is invalid or diff --git a/subsys/bluetooth/shell/mcc.c b/subsys/bluetooth/shell/mcc.c index b966691f263..04f8aa4d0d6 100644 --- a/subsys/bluetooth/shell/mcc.c +++ b/subsys/bluetooth/shell/mcc.c @@ -1188,7 +1188,7 @@ int cmd_mcc_otc_read_metadata(const struct shell *sh, size_t argc, int result; result = bt_otc_read_object_metadata(default_conn, bt_mcc_otc_inst(), - BT_OTC_METADATA_REQ_ALL); + BT_OTS_METADATA_REQ_ALL); if (result) { shell_error(sh, "Fail: %d", result); } diff --git a/tests/bluetooth/bsim_bt/bsim_test_audio/src/mcc_test.c b/tests/bluetooth/bsim_bt/bsim_test_audio/src/mcc_test.c index 464c0fccac1..f649b27f73f 100644 --- a/tests/bluetooth/bsim_bt/bsim_test_audio/src/mcc_test.c +++ b/tests/bluetooth/bsim_bt/bsim_test_audio/src/mcc_test.c @@ -604,7 +604,7 @@ static void select_read_meta(int64_t id) /* TODO: Fix the instance pointer - it is neither valid nor used */ UNSET_FLAG(metadata_read); err = bt_otc_read_object_metadata(default_conn, bt_mcc_otc_inst(), - BT_OTC_METADATA_REQ_ALL); + BT_OTS_METADATA_REQ_ALL); if (err) { FAIL("Failed to read object metadata\n"); return;