parser.h 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. /*
  2. *
  3. * NMEA library
  4. * URL: http://nmea.sourceforge.net
  5. * Author: Tim (xtimor@gmail.com)
  6. * Licence: http://www.gnu.org/licenses/lgpl.html
  7. * $Id: parser.h 4 2007-08-27 13:11:03Z xtimor $
  8. *
  9. */
  10. #ifndef __NMEA_PARSER_H__
  11. #define __NMEA_PARSER_H__
  12. #include "info.h"
  13. #ifdef __cplusplus
  14. extern "C" {
  15. #endif
  16. /*
  17. * high level
  18. */
  19. typedef struct _nmeaPARSER
  20. {
  21. void *top_node;
  22. void *end_node;
  23. unsigned char *buffer;
  24. int buff_size;
  25. int buff_use;
  26. } nmeaPARSER;
  27. int nmea_parser_init(nmeaPARSER *parser);
  28. void nmea_parser_destroy(nmeaPARSER *parser);
  29. int nmea_parse(
  30. nmeaPARSER *parser,
  31. const char *buff, int buff_sz,
  32. nmeaINFO *info
  33. );
  34. /*
  35. * low level
  36. */
  37. int nmea_parser_push(nmeaPARSER *parser, const char *buff, int buff_sz);
  38. int nmea_parser_top(nmeaPARSER *parser);
  39. int nmea_parser_pop(nmeaPARSER *parser, void **pack_ptr);
  40. int nmea_parser_peek(nmeaPARSER *parser, void **pack_ptr);
  41. int nmea_parser_drop(nmeaPARSER *parser);
  42. int nmea_parser_buff_clear(nmeaPARSER *parser);
  43. int nmea_parser_queue_clear(nmeaPARSER *parser);
  44. #ifdef __cplusplus
  45. }
  46. #endif
  47. #endif /* __NMEA_PARSER_H__ */