Bluetooth: OTC - Move metadata bitfields to common files
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ø <asbjorn.sabo@nordicsemi.no>
This commit is contained in:
parent
68745d87d5
commit
da89dcfbcd
@ -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;
|
||||
|
||||
|
||||
@ -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.
|
||||
|
||||
@ -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);
|
||||
}
|
||||
|
||||
@ -22,6 +22,7 @@
|
||||
|
||||
#include <bluetooth/services/ots.h>
|
||||
#include <bluetooth/services/ots_client.h>
|
||||
#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;
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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);
|
||||
}
|
||||
|
||||
@ -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;
|
||||
|
||||
Loading…
Reference in New Issue
Block a user