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; } if (argcp > 1) { start = strtohandle(argvp[1]); if (start < 0) { printf("Invalid start handle: %s\n", argvp[1]); return; } } if (argcp > 2) { end = strtohandle(argvp[2]); if (end < 0) { printf("Invalid end handle: %s\n", argvp[2]); return; } } gatt_find_info(g_connection->attrib, start, end, char_desc_cb, NULL); }
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"); goto done; } if (argcp > 1) { start = strtohandle(argvp[1]); if (start < 0) { printf("Invalid start handle: %s\n", argvp[1]); goto done; } } if (argcp > 2) { end = strtohandle(argvp[2]); if (end < 0) { printf("Invalid end handle: %s\n", argvp[2]); goto done; } } gatt_find_info(attrib, start, end, char_desc_cb, NULL); return; done: printf("\r%s", get_prompt()); fflush(stdout); }
static gboolean characteristics_desc(gpointer user_data) { GAttrib *attrib = user_data; gatt_find_info(attrib, opt_start, opt_end, char_desc_cb, NULL); return FALSE; }
static void discover_descriptor(GAttrib *attrib, struct gatt_char *chr, struct gatt_char *next, gpointer user_data) { uint16_t start, end; start = chr->value_handle + 1; end = (next ? next->handle - 1 : 0xffff); if (start > end) return; gatt_find_info(attrib, start, end, discover_descriptor_cb, user_data); }
static void update_all_chars(gpointer data, gpointer user_data) { struct query_data *qdesc, *qvalue; struct characteristic *chr = data; struct gatt_service *gatt = user_data; INFO("%s",chr->path); qdesc = g_new0(struct query_data, 1); qdesc->gatt = gatt; qdesc->chr = chr; query_list_append(gatt, qdesc); gatt_find_info(gatt->attrib, chr->handle + 1, chr->end, descriptor_cb, qdesc); }
static void discover_measurement_ccc(struct heartrate *hr, struct gatt_char *c, struct gatt_char *c_next) { uint16_t start, end; start = c->value_handle + 1; if (c_next != NULL) { if (start == c_next->handle) return; end = c_next->handle - 1; } else if (c->value_handle != hr->svc_range->end) { end = hr->svc_range->end; } else { return; } gatt_find_info(hr->attrib, start, end, discover_ccc_cb, hr); }