debug.c 906 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. #include <stdlib.h>
  2. #include <stdint.h>
  3. #include "debug.h"
  4. #include "uart.h"
  5. extern FILE uart_stdout;
  6. void dump_packet(uint32_t addr, uint32_t len, uint8_t * packet)
  7. {
  8. uint16_t i,
  9. j;
  10. uint16_t sum = 0;
  11. uint8_t clear = 0;
  12. for (i = 0; i < len; i += 16) {
  13. sum = 0;
  14. for (j = 0; j < 16; j++) {
  15. sum += packet[i + j];
  16. }
  17. if (!sum) {
  18. clear = 1;
  19. continue;
  20. }
  21. if (clear) {
  22. printf("*\n");
  23. clear = 0;
  24. }
  25. printf("%08lx:", addr + i);
  26. for (j = 0; j < 16; j++) {
  27. printf(" %02x", packet[i + j]);
  28. }
  29. printf(" |");
  30. for (j = 0; j < 16; j++) {
  31. if (packet[i + j] >= 33 && packet[i + j] <= 126)
  32. printf("%c", packet[i + j]);
  33. else
  34. printf(".");
  35. }
  36. printf("|\n");
  37. }
  38. }