Message.c 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. /*
  2. * ________________________________________________________________________________________________________
  3. * Copyright (c) 2017 InvenSense Inc. All rights reserved.
  4. *
  5. * This software, related documentation and any modifications thereto (collectively “Software”) is subject
  6. * to InvenSense and its licensors' intellectual property rights under U.S. and international copyright
  7. * and other intellectual property rights laws.
  8. *
  9. * InvenSense and its licensors retain all intellectual property and proprietary rights in and to the Software
  10. * and any use, reproduction, disclosure or distribution of the Software without an express license agreement
  11. * from InvenSense is strictly prohibited.
  12. *
  13. * EXCEPT AS OTHERWISE PROVIDED IN A LICENSE AGREEMENT BETWEEN THE PARTIES, THE SOFTWARE IS
  14. * PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
  15. * TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
  16. * EXCEPT AS OTHERWISE PROVIDED IN A LICENSE AGREEMENT BETWEEN THE PARTIES, IN NO EVENT SHALL
  17. * INVENSENSE BE LIABLE FOR ANY DIRECT, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, OR ANY
  18. * DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
  19. * NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
  20. * OF THE SOFTWARE.
  21. * ________________________________________________________________________________________________________
  22. */
  23. #include "Message.h"
  24. #include <stdio.h>
  25. #include <stdlib.h>
  26. static int msg_level;
  27. static inv_msg_printer_t msg_printer;
  28. void inv_msg_printer_default(int level, const char * str, va_list ap)
  29. {
  30. (void)level, (void)str, (void)ap;
  31. }
  32. void inv_msg_setup(int level, inv_msg_printer_t printer)
  33. {
  34. msg_level = level;
  35. if (level < INV_MSG_LEVEL_OFF)
  36. msg_level = INV_MSG_LEVEL_OFF;
  37. else if (level > INV_MSG_LEVEL_MAX)
  38. msg_level = INV_MSG_LEVEL_MAX;
  39. msg_printer = printer;
  40. }
  41. void inv_msg(int level, const char * str, ...)
  42. {
  43. if(level && level <= msg_level && msg_printer) {
  44. va_list ap;
  45. va_start(ap, str);
  46. msg_printer(level, str, ap);
  47. va_end(ap);
  48. }
  49. }
  50. int inv_msg_get_level(void)
  51. {
  52. return msg_level;
  53. }