diff --git a/android/gatt.c b/android/gatt.c
index 004063c..5373397 100644
--- a/android/gatt.c
+++ b/android/gatt.c
free(cb_data);
}
+static struct desc_data *create_desc_data(int32_t conn_id,
+ const struct element_id *s_id,
+ const struct element_id *ch_id,
+ const struct element_id *d_id,
+ uint8_t primary)
+{
+ struct desc_data *d;
+
+ d = new0(struct desc_data, 1);
+ if (!d)
+ return NULL;
+
+ d->conn_id = conn_id;
+ d->srvc_id = s_id;
+ d->char_id = ch_id;
+ d->descr_id = d_id;
+ d->primary = primary;
+
+ return d;
+}
+
static void handle_client_read_descriptor(const void *buf, uint16_t len)
{
const struct hal_cmd_gatt_client_read_descriptor *cmd = buf;
goto failed;
}
- cb_data = new0(struct desc_data, 1);
+ cb_data = create_desc_data(conn_id, &srvc->id, &ch->id, &descr->id,
+ primary);
if (!cb_data) {
error("gatt: Read descr. could not allocate callback data");
goto failed;
}
- cb_data->conn_id = conn_id;
- cb_data->srvc_id = &srvc->id;
- cb_data->char_id = &ch->id;
- cb_data->descr_id = &descr->id;
- cb_data->primary = primary;
-
if (!gatt_read_char(dev->attrib, descr->handle, read_desc_cb,
cb_data)) {
free(cb_data);
goto failed;
}
- cb_data = new0(struct desc_data, 1);
+ cb_data = create_desc_data(conn_id, &srvc->id, &ch->id, &descr->id,
+ primary);
if (!cb_data) {
error("gatt: Write descr. could not allocate callback data");
goto failed;
}
- cb_data->conn_id = conn_id;
- cb_data->srvc_id = &srvc->id;
- cb_data->char_id = &ch->id;
- cb_data->descr_id = &descr->id;
- cb_data->primary = primary;
-
if (!gatt_write_char(dev->attrib, descr->handle, cmd->value, cmd->len,
write_descr_cb, cb_data)) {
free(cb_data);