diff options
author | Bruna Moreira <bruna.moreira@gmail.com> | 2013-12-17 17:24:42 -0400 |
---|---|---|
committer | Jefferson Delfes <jefferson.delfes@gmail.com> | 2013-12-23 11:08:03 -0400 |
commit | fa5cf480647343b4b1e332ab73ad0ddfb3d6386a (patch) | |
tree | 80867b3c3222816250ae033cb270ee54aa1d25fc | |
parent | 0404d937c4e45989ebc1944e612874dfcfac3eb0 (diff) |
Update char-desc command for multiple connections
The connection ID was added in char-desc command to add support for
multiple connections.
-rw-r--r-- | btctl.c | 34 |
1 files changed, 19 insertions, 15 deletions
@@ -1506,7 +1506,7 @@ void get_descriptor_cb(int conn_id, int status, btgatt_srvc_id_t *srvc_id, rl_printf("Received invalid descriptor (service inexistent)\n"); return; } - svc_info = &u.svcs[svc_id]; + svc_info = &conn->svcs[svc_id]; ch_id = find_char(svc_info, char_id); if (ch_id < 0) { @@ -1532,7 +1532,7 @@ void get_descriptor_cb(int conn_id, int status, btgatt_srvc_id_t *srvc_id, sizeof(*descr_id)); /* get next descriptor */ - ret = u.gattiface->client->get_descriptor(u.conn_id, srvc_id, char_id, + ret = u.gattiface->client->get_descriptor(conn->conn_id, srvc_id, char_id, descr_id); if (ret != BT_STATUS_SUCCESS) { rl_printf("Failed to list descriptors\n"); @@ -1544,35 +1544,38 @@ static void cmd_char_desc(char *args) { bt_status_t status; service_info_t *svc_info; char_info_t *char_info; - int svc_id, char_id; + connection_t *conn; + int svc_id, char_id, conn_id; - if (u.conn_id <= 0) { - rl_printf("Not connected\n"); + if (u.gattiface == NULL) { + rl_printf("Unable to BLE char-desc: GATT interface not avaiable\n"); return; } - if (u.gattiface == NULL) { - rl_printf("Unable to BLE char-desc: GATT interface not avaiable\n"); + if (sscanf(args, " %i %i %i ", &conn_id, &svc_id, &char_id) != 3) { + rl_printf("Usage: char-desc <connection ID> <serviceID> " + "<characteristicID>\n"); return; } - if (u.svcs_size <= 0) { - rl_printf("Run search-svc first to get all services list\n"); + conn = get_connection(conn_id); + if (conn == NULL) { + rl_printf("Invalid connection ID\n"); return; } - if (sscanf(args, " %i %i ", &svc_id, &char_id) != 2) { - rl_printf("Usage: char-desc serviceID characteristicID\n"); + if (conn->svcs_size <= 0) { + rl_printf("Run search-svc first to get all services list\n"); return; } - if (svc_id < 0 || svc_id >= u.svcs_size) { + if (svc_id < 0 || svc_id >= conn->svcs_size) { rl_printf("Invalid serviceID: %i need to be between 0 and %i\n", svc_id, - u.svcs_size - 1); + conn->svcs_size - 1); return; } - svc_info = &u.svcs[svc_id]; + svc_info = &conn->svcs[svc_id]; if (char_id < 0 || char_id >= svc_info->char_count) { rl_printf("Invalid characteristicID, try to run characteristics " "command.\n"); @@ -1582,7 +1585,8 @@ static void cmd_char_desc(char *args) { char_info = &svc_info->chars_buf[char_id]; char_info->descr_count = 0; /* get first descriptor */ - status = u.gattiface->client->get_descriptor(u.conn_id, &svc_info->svc_id, + status = u.gattiface->client->get_descriptor(conn->conn_id, + &svc_info->svc_id, &char_info->char_id, NULL); if (status != BT_STATUS_SUCCESS) { rl_printf("Failed to list characteristic descriptors\n"); |