Why does Gatt discovery manager only allow one Gatt service?

As stated in the title, why can only one Gatt service in the central device be used?
For example, we may want to use BAS and NUS, but only one of them can be used. In the sample source code, only the main service (NUS in this case) is used.

Calling bt_gatt_dm_start for the second time results in an error in the following part.

int bt_gatt_dm_start(struct bt_conn *conn, const struct bt_uuid *svc_uuid, const struct bt_gatt_dm_cb *cb, void *context)
{
    ...
	if (atomic_test_and_set_bit(dm->state_flags, STATE_ATTRS_LOCKED)) {
		return -EALREADY;
	}
	...
}

No wonder, this is because the flag is locked at the first call.

Are there any plans to fix this problem?

Related