From e82d45eefb578b5d94d876e9176f87624793581f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Hru=C5=A1ka?= Date: Sat, 23 Dec 2017 22:36:56 +0100 Subject: [PATCH] fixed bulk read and updated unit listing to support unit types --- gex/gex_bulk.c | 13 ++++++------- gex/gex_client.c | 10 ++++++---- 2 files changed, 12 insertions(+), 11 deletions(-) diff --git a/gex/gex_bulk.c b/gex/gex_bulk.c index 78084d5..d072697 100644 --- a/gex/gex_bulk.c +++ b/gex/gex_bulk.c @@ -66,16 +66,15 @@ uint32_t GEX_BulkRead(GexUnit *unit, GexBulk *bulk) return 0; } - if (resp.type == MSG_BULK_END) { - // No more data -// fprintf(stderr, "Bulk read OK, closed.\n"); - return at; - } - - if (resp.type == MSG_BULK_DATA) { + if (resp.type == MSG_BULK_DATA || resp.type == MSG_BULK_END) { // hexDump("Rx chunk", resp.payload, resp.len); memcpy(bulk->buffer+at, resp.payload, resp.len); at += resp.len; + + // quit if we're done + if (resp.type == MSG_BULK_END) { + return at; + } } else { fprintf(stderr, "Bulk read failed! Bad response type.\n"); return 0; diff --git a/gex/gex_client.c b/gex/gex_client.c index 416d816..81ead59 100644 --- a/gex/gex_client.c +++ b/gex/gex_client.c @@ -76,17 +76,19 @@ static TF_Result list_units_lst(TinyFrame *tf, TF_Msg *msg) PayloadParser pp = pp_start((uint8_t*)msg->data, msg->len, NULL); uint8_t count = pp_u8(&pp); - char buf[100]; + char buf[20]; + char buf2[20]; struct gex_unit *tail = NULL; for(int i = 0; i < count; i++) { uint8_t callsign = pp_u8(&pp); - pp_string(&pp, buf, 100); - fprintf(stderr, "- Found unit \"%s\" @ callsign %d\n", buf, callsign); + pp_string(&pp, buf, 20); + pp_string(&pp, buf2, 20); + fprintf(stderr, "- Found unit \"%s\" (type %s) @ callsign %d\n", buf, buf2, callsign); // append struct gex_unit *lu = malloc(sizeof(struct gex_unit)); lu->next = NULL; - lu->type = strdup("UNKNOWN"); // TODO + lu->type = strdup(buf2); lu->name = strdup(buf); lu->callsign = callsign; lu->gex = gex;