X-Git-Url: https://codewiz.org/gitweb?a=blobdiff_plain;f=bertos%2Fnet%2Fnmea.c;h=f74879523e9bcf2f543c1520efc4e374e39e19af;hb=b777dab072b4f741c4ccff71445989ccea086614;hp=d4600e07d21e1f8c7ebfc6b2d4afe241aeb57210;hpb=ea0866deab4dc1f387ec1bad371efc3bbc21b4af;p=bertos.git diff --git a/bertos/net/nmea.c b/bertos/net/nmea.c index d4600e07..f7487952 100644 --- a/bertos/net/nmea.c +++ b/bertos/net/nmea.c @@ -84,7 +84,7 @@ static uint32_t tokenToInt(const char *s, int precision) for(i = 0; i < NMEAP_MAX_SENTENCE_LENGTH; i++) { - char c = *s++; + unsigned char c = *s++; if (c == '.') { @@ -165,9 +165,9 @@ static udegree_t nmea_longitude(const char *plot, const char *phem) * Return altitude in meter from a string. * */ -static uint16_t nmea_altitude(const char *palt, const char *punits) +static int32_t nmea_altitude(const char *palt, const char *punits) { - uint32_t alt; + int32_t alt; if (*palt == 0) return 0; @@ -413,7 +413,7 @@ int nmea_gpvtg(nmeap_context_t *context, nmeap_sentence_t *sentence) */ if (sentence->callout != 0) (*sentence->callout)(context, vtg, context->user_data); - + return NMEA_GPVTG; } @@ -456,13 +456,19 @@ int nmea_gpgsv(nmeap_context_t *context, nmeap_sentence_t *sentence) } -/* +/** * Parse NMEA sentence from a channel. */ void nmea_poll(nmeap_context_t *context, KFile *channel) { - int c; + int c, e; while ((c = kfile_getc(channel)) != EOF) nmeap_parse(context, c); + + if ((e = kfile_error(channel))) + { + LOG_ERR("ch error [%0X]\n", e); + kfile_clearerr(channel); + } }