diff --git a/android/gatt.c b/android/gatt.c
index a1570fd..c173b89 100644
--- a/android/gatt.c
+++ b/android/gatt.c
return false;
}
-static void send_dev_pending_response(struct gatt_device *device,
+static bool match_pending_dev_request(const void *data, const void *user_data)
+{
+ const struct pending_request *pending_request = data;
+
+ return pending_request->state == REQUEST_PENDING;
+}
+
+static void send_dev_complete_response(struct gatt_device *device,
uint8_t opcode)
{
size_t mtu;
uint16_t len = 0;
uint8_t error = 0;
+ if (queue_find(device->pending_requests, match_pending_dev_request,
+ NULL)) {
+ DBG("Still pending requests");
+ return;
+ }
+
switch (opcode) {
case ATT_OP_READ_BY_TYPE_REQ: {
struct att_data_list *adl;
struct gatt_device *device;
};
-static bool match_pending_dev_request(const void *data, const void *user_data)
-{
- const struct pending_request *pending_request = data;
-
- return pending_request->state == REQUEST_PENDING;
-}
-
static bool match_dev_request_by_handle(const void *data, const void *user_data)
{
const struct pending_request *handle_data = data;
queue_foreach(device->pending_requests, read_requested_attributes,
&process_data);
- if (!queue_find(device->pending_requests,
- match_pending_dev_request, NULL))
- send_dev_pending_response(device, att_opcode);
+ send_dev_complete_response(device, att_opcode);
}
static void send_gatt_response(uint8_t opcode, uint16_t handle,
memcpy(entry->value, data, len);
done:
- if (!queue_find(dev->pending_requests, match_pending_dev_request, NULL))
- send_dev_pending_response(dev, opcode);
+ send_dev_complete_response(dev, opcode);
}
static struct pending_trans_data *conn_add_transact(struct app_connection *conn,
return ATT_ECODE_UNLIKELY;
}
- if (!queue_find(dev->pending_requests, match_pending_dev_request, NULL))
- send_dev_pending_response(dev, cmd[0]);
+ send_dev_complete_response(dev, cmd[0]);
return 0;
}