数据结构
struct descriptor
struct descriptor {
struct characteristic *chrc;
struct gatt_db_attribute *attr;
uint16_t handle;
bt_uuid_t uuid;
char *path;
struct async_dbus_op *read_op;
struct async_dbus_op *write_op;
};
struct characteristic
struct characteristic {
struct service *service;
struct gatt_db_attribute *attr;
uint16_t handle;
uint16_t value_handle;
uint8_t props;
uint16_t ext_props;
uint16_t ext_props_handle;
bt_uuid_t uuid;
char *path;
unsigned int ready_id;
struct sock_io *write_io;
struct sock_io *notify_io;
struct async_dbus_op *read_op;
struct async_dbus_op *write_op;
struct queue *descs;
bool notifying;
struct queue *notify_clients;
};
函数
read_value
tatic struct async_dbus_op *read_value(struct bt_gatt_client *gatt,
DBusMessage *msg, uint16_t handle,
uint16_t offset,
bt_gatt_client_read_callback_t callback,
void *data)
{
struct async_dbus_op *op;
op = async_dbus_op_new(msg, data);
op->offset = offset;
op->id = bt_gatt_client_read_long_value(gatt, handle, offset, callback,
async_dbus_op_ref(op),
async_dbus_op_unref);
if (op->id)
return op;
async_dbus_op_free(op);
return NULL;
}