context.c 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  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: context.c 17 2008-03-11 11:56:11Z xtimor $
  8. *
  9. */
  10. #include "nmea/context.h"
  11. #include <string.h>
  12. #include <stdarg.h>
  13. #include <stdio.h>
  14. nmeaPROPERTY * nmea_property()
  15. {
  16. static nmeaPROPERTY prop = {
  17. 0, 0, NMEA_DEF_PARSEBUFF
  18. };
  19. return &prop;
  20. }
  21. void nmea_trace(const char *str, ...)
  22. {
  23. int size;
  24. va_list arg_list;
  25. char buff[NMEA_DEF_PARSEBUFF];
  26. nmeaTraceFunc func = nmea_property()->trace_func;
  27. if(func)
  28. {
  29. va_start(arg_list, str);
  30. size = NMEA_POSIX(vsnprintf)(&buff[0], NMEA_DEF_PARSEBUFF - 1, str, arg_list);
  31. va_end(arg_list);
  32. if(size > 0)
  33. (*func)(&buff[0], size);
  34. }
  35. }
  36. void nmea_trace_buff(const char *buff, int buff_size)
  37. {
  38. nmeaTraceFunc func = nmea_property()->trace_func;
  39. if(func && buff_size)
  40. (*func)(buff, buff_size);
  41. }
  42. void nmea_error(const char *str, ...)
  43. {
  44. int size;
  45. va_list arg_list;
  46. char buff[NMEA_DEF_PARSEBUFF];
  47. nmeaErrorFunc func = nmea_property()->error_func;
  48. if(func)
  49. {
  50. va_start(arg_list, str);
  51. size = NMEA_POSIX(vsnprintf)(&buff[0], NMEA_DEF_PARSEBUFF - 1, str, arg_list);
  52. va_end(arg_list);
  53. if(size > 0)
  54. (*func)(&buff[0], size);
  55. }
  56. }