No Description
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

debug.c 2.3KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. /*
  2. * debug.c
  3. */
  4. #include <string.h>
  5. #include "pico/stdlib.h"
  6. #include "ff.h"
  7. #include "config.h"
  8. #include "log.h"
  9. #include "pmw3360.h"
  10. #include "debug.h"
  11. static FATFS fs;
  12. static bool mounted = false;
  13. int debug_msc_mount(void) {
  14. if (mounted) {
  15. debug("already mounted");
  16. return 0;
  17. }
  18. FRESULT res = f_mount(&fs, "", 0);
  19. if (res != FR_OK) {
  20. debug("error: f_mount returned %d", res);
  21. mounted = false;
  22. return -1;
  23. }
  24. mounted = true;
  25. return 0;
  26. }
  27. int debug_msc_unmount(void) {
  28. if (!mounted) {
  29. debug("already unmounted");
  30. return 0;
  31. }
  32. FRESULT res = f_mount(0, "", 0);
  33. if (res != FR_OK) {
  34. debug("error: f_mount returned %d", res);
  35. return -1;
  36. }
  37. mounted = false;
  38. return 0;
  39. }
  40. static void debug_msc_pmw_stats(void) {
  41. FIL file;
  42. FRESULT res = f_open(&file, "pmw_stats.txt", FA_CREATE_ALWAYS | FA_WRITE);
  43. if (res != FR_OK) {
  44. debug("error: f_open returned %d", res);
  45. return;
  46. }
  47. char status_buff[1024];
  48. pmw_print_status(status_buff, sizeof(status_buff));
  49. size_t len = strlen(status_buff);
  50. UINT bw;
  51. res = f_write(&file, status_buff, len, &bw);
  52. if ((res != FR_OK) || (bw != len)) {
  53. debug("error: f_write returned %d", res);
  54. }
  55. res = f_close(&file);
  56. if (res != FR_OK) {
  57. debug("error: f_close returned %d", res);
  58. }
  59. }
  60. void debug_msc_stats(void) {
  61. debug_msc_pmw_stats();
  62. log_dump_to_disk();
  63. }
  64. static void debug_msc_pmw3360_frame(void) {
  65. FIL file;
  66. FRESULT res = f_open(&file, "pmw_frame.bin", FA_CREATE_ALWAYS | FA_WRITE);
  67. if (res != FR_OK) {
  68. debug("error: f_open returned %d", res);
  69. return;
  70. }
  71. uint8_t frame[PMW_FRAME_CAPTURE_LEN];
  72. ssize_t r = pmw_frame_capture(frame, PMW_FRAME_CAPTURE_LEN);
  73. if (r != PMW_FRAME_CAPTURE_LEN) {
  74. debug("error: pmw_frame_capture %d != %d", r, PMW_FRAME_CAPTURE_LEN);
  75. } else {
  76. UINT bw;
  77. res = f_write(&file, frame, r, &bw);
  78. if ((res != FR_OK) || (bw != r)) {
  79. debug("error: f_write returned %d", res);
  80. }
  81. }
  82. res = f_close(&file);
  83. if (res != FR_OK) {
  84. debug("error: f_close returned %d", res);
  85. }
  86. }
  87. void debug_msc_pmw3360(void) {
  88. pmw_dump_data(false);
  89. debug_msc_pmw3360_frame();
  90. }