generator.h 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  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: generator.h 4 2007-08-27 13:11:03Z xtimor $
  8. *
  9. */
  10. #ifndef __NMEA_GENERATOR_H__
  11. #define __NMEA_GENERATOR_H__
  12. #include "info.h"
  13. #ifdef __cplusplus
  14. extern "C" {
  15. #endif
  16. /*
  17. * high level
  18. */
  19. struct _nmeaGENERATOR;
  20. enum nmeaGENTYPE
  21. {
  22. NMEA_GEN_NOISE = 0,
  23. NMEA_GEN_STATIC,
  24. NMEA_GEN_ROTATE,
  25. NMEA_GEN_SAT_STATIC,
  26. NMEA_GEN_SAT_ROTATE,
  27. NMEA_GEN_POS_RANDMOVE,
  28. NMEA_GEN_LAST
  29. };
  30. struct _nmeaGENERATOR * nmea_create_generator(int type, nmeaINFO *info);
  31. void nmea_destroy_generator(struct _nmeaGENERATOR *gen);
  32. int nmea_generate_from(
  33. char *buff, int buff_sz, /* buffer */
  34. nmeaINFO *info, /* source info */
  35. struct _nmeaGENERATOR *gen, /* generator */
  36. int generate_mask /* mask of sentence`s (e.g. GPGGA | GPGSA) */
  37. );
  38. /*
  39. * low level
  40. */
  41. typedef int (*nmeaNMEA_GEN_INIT)(struct _nmeaGENERATOR *gen, nmeaINFO *info);
  42. typedef int (*nmeaNMEA_GEN_LOOP)(struct _nmeaGENERATOR *gen, nmeaINFO *info);
  43. typedef int (*nmeaNMEA_GEN_RESET)(struct _nmeaGENERATOR *gen, nmeaINFO *info);
  44. typedef int (*nmeaNMEA_GEN_DESTROY)(struct _nmeaGENERATOR *gen);
  45. typedef struct _nmeaGENERATOR
  46. {
  47. void *gen_data;
  48. nmeaNMEA_GEN_INIT init_call;
  49. nmeaNMEA_GEN_LOOP loop_call;
  50. nmeaNMEA_GEN_RESET reset_call;
  51. nmeaNMEA_GEN_DESTROY destroy_call;
  52. struct _nmeaGENERATOR *next;
  53. } nmeaGENERATOR;
  54. int nmea_gen_init(nmeaGENERATOR *gen, nmeaINFO *info);
  55. int nmea_gen_loop(nmeaGENERATOR *gen, nmeaINFO *info);
  56. int nmea_gen_reset(nmeaGENERATOR *gen, nmeaINFO *info);
  57. void nmea_gen_destroy(nmeaGENERATOR *gen);
  58. void nmea_gen_add(nmeaGENERATOR *to, nmeaGENERATOR *gen);
  59. #ifdef __cplusplus
  60. }
  61. #endif
  62. #endif /* __NMEA_GENERATOR_H__ */