gobex-debug.h 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. /* SPDX-License-Identifier: GPL-2.0-or-later */
  2. /*
  3. * OBEX library with GLib integration
  4. *
  5. * Copyright (C) 2011 Intel Corporation. All rights reserved.
  6. *
  7. */
  8. #ifndef __GOBEX_DEBUG_H
  9. #define __GOBEX_DEBUG_H
  10. #include <glib.h>
  11. #include <stdio.h>
  12. #include <ctype.h>
  13. #define G_OBEX_DEBUG_NONE 1
  14. #define G_OBEX_DEBUG_ERROR (1 << 1)
  15. #define G_OBEX_DEBUG_COMMAND (1 << 2)
  16. #define G_OBEX_DEBUG_TRANSFER (1 << 3)
  17. #define G_OBEX_DEBUG_HEADER (1 << 4)
  18. #define G_OBEX_DEBUG_PACKET (1 << 5)
  19. #define G_OBEX_DEBUG_DATA (1 << 6)
  20. #define G_OBEX_DEBUG_APPARAM (1 << 7)
  21. extern guint gobex_debug;
  22. #define g_obex_debug(level, format, ...) \
  23. if (gobex_debug & level) \
  24. g_log("gobex", G_LOG_LEVEL_DEBUG, "%s:%s() " format, __FILE__, \
  25. __func__, ## __VA_ARGS__)
  26. static inline void g_obex_dump(guint level, const char *prefix,
  27. const void *buf, gsize len)
  28. {
  29. const guint8 *data = buf;
  30. int n = 0;
  31. if (!(gobex_debug & level))
  32. return;
  33. while (len > 0) {
  34. int i, size;
  35. printf("%s %04x:", prefix, n);
  36. size = len > 16 ? 16 : len;
  37. for (i = 0; i < size; i++)
  38. printf("%02x%s", data[i], (i + 1) % 8 ? " " : " ");
  39. for (; i < 16; i++)
  40. printf(" %s", (i + 1) % 8 ? " " : " ");
  41. for (i = 0; i < size; i++)
  42. printf("%1c", isprint(data[i]) ? data[i] : '.');
  43. printf("\n");
  44. data += size;
  45. len -= size;
  46. n += size;
  47. }
  48. }
  49. #endif /* __GOBEX_DEBUG_H */