I am trying to do service discovery using the discovery manager library on any BLE device I connect to my central. I start the service with bt_gatt_dm_start(conn, NULL, &discovery_cb, NULL) and every works fine on the first service discovered. I run into an issue when I try to continue the discovery on the remaining services. The asserts on line 2927 and 2929 in the bt_gatt_discover function of Zephyr's gatt.c library are asserted upon running bt_gatt_dm_continue. If I remove these asserts everything runs fine and I am able to continue discovery of all the services for my device as intended. Is this a bug in the DM or am I using it incorrectly?
Here is my discover complete callback with the dm continue function
static void discovery_completed(struct bt_gatt_dm *disc, void *ctx)
{
printk("Attribute count: %d\n", bt_gatt_dm_attr_cnt(disc));
bt_gatt_dm_data_release(disc);
bt_gatt_dm_continue(disc, NULL);
}
The asserts causing the issues:
int bt_gatt_discover(struct bt_conn *conn, struct bt_gatt_discover_params *params)
{
__ASSERT((params->start_handle && params->end_handle),
"invalid parameters\n");
__ASSERT((params->start_handle <= params->end_handle),
"invalid parameters\n");