diff --git a/attrib/interactive.c b/attrib/interactive.c
index c96df3e..38ac30f 100644
--- a/attrib/interactive.c
+++ b/attrib/interactive.c
static gchar *opt_sec_level = NULL;
static int opt_psm = 0;
static int opt_mtu = 0;
+static int start;
+static int end;
struct characteristic_data {
uint16_t orig_start;
{
struct att_data_list *list;
guint8 format;
+ uint16_t handle = 0xffff;
int i;
if (status != 0) {
- printf("Discover all characteristic descriptors failed: "
- "%s\n", att_ecode2str(status));
+ printf("Discover descriptors finished: %s\n",
+ att_ecode2str(status));
return;
}
printf("\n");
for (i = 0; i < list->num; i++) {
char uuidstr[MAX_LEN_UUID_STR];
- uint16_t handle;
uint8_t *value;
bt_uuid_t uuid;
att_data_list_free(list);
- rl_forced_update_display();
+ if (handle != 0xffff && handle < end)
+ gatt_find_info(attrib, handle + 1, end, char_desc_cb, NULL);
+ else
+ rl_forced_update_display();
}
static void char_read_cb(guint8 status, const guint8 *pdu, guint16 plen,
static void cmd_char_desc(int argcp, char **argvp)
{
- int start = 0x0001;
- int end = 0xffff;
-
if (conn_state != STATE_CONNECTED) {
printf("Command failed: disconnected\n");
return;
printf("Invalid start handle: %s\n", argvp[1]);
return;
}
- }
+ } else
+ start = 0x0001;
if (argcp > 2) {
end = strtohandle(argvp[2]);
printf("Invalid end handle: %s\n", argvp[2]);
return;
}
- }
+ } else
+ end = 0xffff;
gatt_find_info(attrib, start, end, char_desc_cb, NULL);
}