/** * \brief Analysis of buffer and put results to information structure * @return Number of packets wos parsed */ int nmea_parse( nmeaPARSER *parser, const char *buff, int buff_sz, nmeaINFO *info ) { int ptype, nread = 0; void *pack = 0; NMEA_ASSERT(parser && parser->buffer); // Analyze buffer and take info into parser nmea_parser_push(parser, buff, buff_sz); while(GPNON != (ptype = nmea_parser_pop(parser, &pack))) { nread++; switch(ptype) // ADD: call function to add info parsed here { case GPGGA: nmea_GPGGA2info((nmeaGPGGA *)pack, info); break; case GPGSA: nmea_GPGSA2info((nmeaGPGSA *)pack, info); break; case GPGSV: nmea_GPGSV2info((nmeaGPGSV *)pack, info); break; case GPRMC: nmea_GPRMC2info((nmeaGPRMC *)pack, info); break; case GPVTG: nmea_GPVTG2info((nmeaGPVTG *)pack, info); break; case HCHDG: nmea_HCHDG2info((nmeaHCHDG *)pack, info); break; case HCHDT: nmea_HCHDT2info((nmeaHCHDT *)pack, info); break; case TIROT: nmea_TIROT2info((nmeaTIROT *)pack, info); break; case YXXDR: nmea_YXXDR2info((nmeaYXXDR *)pack, info); break; }; free(pack); } return nread; }
/** * \brief Analysis of buffer and put results to information structure * @return Number of packets wos parsed */ int nmea_parse( nmeaPARSER *parser, const char *buff, int buff_sz, nmeaINFO *info ) { int ptype, nread = 0; void *pack = 0; //char c; //debugga NMEA_ASSERT(parser && parser->buffer); nmea_parser_push(parser, buff, buff_sz); while(GPNON != (ptype = nmea_parser_pop(parser, &pack))) { nread++; //KAY #ifndef BRIDGE_USB_GSM //USBWriteStr("POP: "); #endif switch(ptype) { case GPGGA: nmea_GPGGA2info((nmeaGPGGA *)pack, info); break; case GPGSA: nmea_GPGSA2info((nmeaGPGSA *)pack, info); break; case GPGSV: nmea_GPGSV2info((nmeaGPGSV *)pack, info); break; case GPRMC: nmea_GPRMC2info((nmeaGPRMC *)pack, info); break; case GPVTG: nmea_GPVTG2info((nmeaGPVTG *)pack, info); break; }; free(pack); } //KAY #ifndef BRIDGE_USB_GSM //USBWriteStr("nread: "); //int2char(&c,nread,1,10); //USBWriteChar(c); //USBWriteStr("\r\n"); #endif return nread; }
/** * \brief Analysis of buffer and put results to information structure * @return Number of packets wos parsed */ int nmea_parse( nmeaPARSER *parser, const char *buff, int buff_sz, nmeaINFO *info ) { int ptype, nread = 0; void *pack = 0; NMEA_ASSERT(parser && parser->buffer); nmea_parser_push(parser, buff, buff_sz); while(GPNON != (ptype = nmea_parser_pop(parser, &pack))) { nread++; switch(ptype) { case GPGGA: nmea_GPGGA2info((nmeaGPGGA *)pack, info); break; case GPGSA: nmea_GPGSA2info((nmeaGPGSA *)pack, info); break; case GPGSV: nmea_GPGSV2info((nmeaGPGSV *)pack, info); break; case GPRMC: nmea_GPRMC2info((nmeaGPRMC *)pack, info); break; case GPVTG: nmea_GPVTG2info((nmeaGPVTG *)pack, info); break; default: break; }; free(pack); } return nread; }