spi_mem_app_i.h 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. #pragma once
  2. #include <furi.h>
  3. #include <furi_hal_spi.h>
  4. #include <furi_hal_spi_config.h>
  5. #include "spi_mem_app.h"
  6. #include <gui/gui.h>
  7. #include <gui/view_dispatcher.h>
  8. #include <gui/modules/submenu.h>
  9. #include <gui/modules/dialog_ex.h>
  10. #include <gui/modules/popup.h>
  11. #include <notification/notification_messages.h>
  12. #include <dialogs/dialogs.h>
  13. #include <gui/modules/widget.h>
  14. #include <gui/modules/text_input.h>
  15. #include <storage/storage.h>
  16. #include <toolbox/path.h>
  17. #include <toolbox/name_generator.h>
  18. #include "scenes/spi_mem_scene.h"
  19. #include "lib/spi/spi_mem_worker.h"
  20. #include "spi_mem_manager_icons.h"
  21. #include "views/spi_mem_view_progress.h"
  22. #include "views/spi_mem_view_detect.h"
  23. #define TAG "SPIMem"
  24. #define SPI_MEM_FILE_EXTENSION ".bin"
  25. #define SPI_MEM_FILE_PREFIX "SPIMem"
  26. #define SPI_MEM_FILE_NAME_SIZE 100
  27. #define SPI_MEM_TEXT_BUFFER_SIZE 128
  28. typedef enum {
  29. SPIMemModeRead,
  30. SPIMemModeWrite,
  31. SPIMemModeCompare,
  32. SPIMemModeErase,
  33. SPIMemModeDelete,
  34. SPIMemModeUnknown
  35. } SPIMemMode;
  36. struct SPIMemApp {
  37. Gui* gui;
  38. ViewDispatcher* view_dispatcher;
  39. SceneManager* scene_manager;
  40. Submenu* submenu;
  41. DialogEx* dialog_ex;
  42. Popup* popup;
  43. NotificationApp* notifications;
  44. FuriString* file_path;
  45. DialogsApp* dialogs;
  46. Storage* storage;
  47. File* file;
  48. Widget* widget;
  49. SPIMemWorker* worker;
  50. SPIMemChip* chip_info;
  51. found_chips_t found_chips;
  52. uint32_t chip_vendor_enum;
  53. SPIMemProgressView* view_progress;
  54. SPIMemDetectView* view_detect;
  55. TextInput* text_input;
  56. SPIMemMode mode;
  57. char text_buffer[SPI_MEM_TEXT_BUFFER_SIZE + 1];
  58. };
  59. typedef enum {
  60. SPIMemViewSubmenu,
  61. SPIMemViewDialogEx,
  62. SPIMemViewPopup,
  63. SPIMemViewWidget,
  64. SPIMemViewTextInput,
  65. SPIMemViewProgress,
  66. SPIMemViewDetect
  67. } SPIMemView;
  68. typedef enum {
  69. SPIMemCustomEventViewReadCancel,
  70. SPIMemCustomEventViewVerifySkip,
  71. SPIMemCustomEventTextEditResult,
  72. SPIMemCustomEventPopupBack
  73. } SPIMemCustomEvent;