X-Git-Url: https://codewiz.org/gitweb?a=blobdiff_plain;f=bertos%2Fnet%2Fkeytag.c;h=1f57fdfe4509bea0415170319a1f62d9f356639e;hb=cdd85b7bd633a4256b1250dd4c0b8ead0cb37b62;hp=861169b488a9360561727e7e139def414d08cb4e;hpb=791e167e053bdd9250d34a9a5ccae6ccde4d6679;p=bertos.git diff --git a/bertos/net/keytag.c b/bertos/net/keytag.c index 861169b4..1f57fdfe 100644 --- a/bertos/net/keytag.c +++ b/bertos/net/keytag.c @@ -58,17 +58,19 @@ static void keytag_clearPkt(struct TagPacket *pkt) pkt->len = 0; } - void keytag_init(struct TagPacket *pkt) - { - keytag_clearPkt(pkt); - } +void keytag_init(struct TagPacket *pkt, struct KFile *comm, struct KFile *tag) +{ + keytag_clearPkt(pkt); + pkt->host = comm; + pkt->tag = tag; +} - void keytag_poll(struct TagPacket *pkt) +void keytag_poll(struct TagPacket *pkt) { int c; /* Get all chars from buffer */ - while ((c = kfile_getc(&pkt->tag_ser->fd)) != EOF) + while ((c = kfile_getc(pkt->tag)) != EOF) { /* Search for STX char in received chars */ if (c == TAG_STX) @@ -86,7 +88,7 @@ static void keytag_clearPkt(struct TagPacket *pkt) { pkt->buf[TAG_MAX_PRINT_CHARS] = '\x0'; /* Write read TAG on communication serial */ - kfile_printf(&pkt->comm_ser->fd, "tag %s", pkt->buf); + kfile_printf(pkt->host, "tag %s", pkt->buf); pkt->sync = false; } else @@ -109,4 +111,10 @@ static void keytag_clearPkt(struct TagPacket *pkt) } } } + if (kfile_error(pkt->tag) != 0) + { + kprintf("Error %08x\n", kfile_error(pkt->tag)); + kfile_clearerr(pkt->tag); + } + }