Hi,
I’m working on loading batch data from a BLE server using SDK version 2.8.0 with the nRF9161-DK hardware, and I’ve encountered a couple of issues.
-
Different Results Based on
bt_gatt_read_paramsInitialization: When I initialize thebt_gatt_read_paramsstructure as shown in the first example, myread_datacallback only reads 5 bytes, which I can’t map to the attribute’s data. However, when I initialize the structure as shown in the second example, I can read most of the attribute’s data (but not all of it, which I’ll address in my second question).Why do these two initialization methods produce such different results?
-
Issue with
bt_gatt_readCallback: In my second scenario, theread_data()callback reads less data than the attribute contains. I understand that I need to returnBT_GATT_ITER_CONTINUEto continue reading, but this doesn't seem to work. The next iteration does not continue to read any additional data.What am I doing wrong in handling this continuation of data reading?
Thanks for your time and help!
Allan
Example 1:
const struct bt_gatt_dm_attr *attr = bt_gatt_dm_char_by_uuid(dm, BT_UUID_ATR1);
if (attr) {
read_params.func = read_data;
read_params.handle_count = 1;
read_params.single.handle = attr->handle;
read_params.single.offset = 0;
bt_gatt_read(bt_gatt_dm_conn_get(dm), &read_params);
}
Example 2:
const struct bt_gatt_dm_attr *attr = bt_gatt_dm_char_by_uuid(dm, BT_UUID_ATR1);
if (attr) {
read_params.func = read_data;
read_params.handle_count = 0;
read_params.single.offset = 0;
read_params.by_uuid.start_handle = attr->handle;
read_params.by_uuid.end_handle = attr->handle;
read_params.by_uuid.uuid = BT_UUID_ATR1;
bt_gatt_read(bt_gatt_dm_conn_get(dm), &read_params);
}