123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108 |
- /*
- * debug.c
- */
-
- #include <string.h>
- #include "pico/stdlib.h"
- #include "ff.h"
-
- #include "config.h"
- #include "log.h"
- #include "pmw3360.h"
- #include "debug.h"
-
- static FATFS fs;
- static bool mounted = false;
-
- int debug_msc_mount(void) {
- if (mounted) {
- debug("already mounted");
- return 0;
- }
-
- FRESULT res = f_mount(&fs, "", 0);
- if (res != FR_OK) {
- debug("error: f_mount returned %d", res);
- mounted = false;
- return -1;
- }
-
- mounted = true;
- return 0;
- }
-
- int debug_msc_unmount(void) {
- if (!mounted) {
- debug("already unmounted");
- return 0;
- }
-
- FRESULT res = f_mount(0, "", 0);
- if (res != FR_OK) {
- debug("error: f_mount returned %d", res);
- return -1;
- }
-
- mounted = false;
- return 0;
- }
-
- static void debug_msc_pmw_stats(void) {
- FIL file;
- FRESULT res = f_open(&file, "pmw_stats.txt", FA_CREATE_ALWAYS | FA_WRITE);
- if (res != FR_OK) {
- debug("error: f_open returned %d", res);
- return;
- }
-
- char status_buff[1024];
- pmw_print_status(status_buff, sizeof(status_buff));
- size_t len = strlen(status_buff);
-
- UINT bw;
- res = f_write(&file, status_buff, len, &bw);
- if ((res != FR_OK) || (bw != len)) {
- debug("error: f_write returned %d", res);
- }
-
- res = f_close(&file);
- if (res != FR_OK) {
- debug("error: f_close returned %d", res);
- }
- }
-
- void debug_msc_stats(void) {
- debug_msc_pmw_stats();
- log_dump_to_disk();
- }
-
- static void debug_msc_pmw3360_frame(void) {
- FIL file;
- FRESULT res = f_open(&file, "pmw_frame.bin", FA_CREATE_ALWAYS | FA_WRITE);
- if (res != FR_OK) {
- debug("error: f_open returned %d", res);
- return;
- }
-
- uint8_t frame[PMW_FRAME_CAPTURE_LEN];
- ssize_t r = pmw_frame_capture(frame, PMW_FRAME_CAPTURE_LEN);
- if (r != PMW_FRAME_CAPTURE_LEN) {
- debug("error: pmw_frame_capture %d != %d", r, PMW_FRAME_CAPTURE_LEN);
- } else {
- UINT bw;
- res = f_write(&file, frame, r, &bw);
- if ((res != FR_OK) || ((ssize_t)bw != r)) {
- debug("error: f_write returned %d", res);
- }
- }
-
- res = f_close(&file);
- if (res != FR_OK) {
- debug("error: f_close returned %d", res);
- }
- }
-
- void debug_msc_pmw3360(void) {
- pmw_dump_data(false);
- debug_msc_pmw3360_frame();
- }
|