spi_mem_app_i.h 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  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_NAME_SIZE 100
  26. #define SPI_MEM_TEXT_BUFFER_SIZE 128
  27. typedef enum {
  28. SPIMemModeRead,
  29. SPIMemModeWrite,
  30. SPIMemModeCompare,
  31. SPIMemModeErase,
  32. SPIMemModeDelete,
  33. SPIMemModeUnknown
  34. } SPIMemMode;
  35. struct SPIMemApp {
  36. Gui* gui;
  37. ViewDispatcher* view_dispatcher;
  38. SceneManager* scene_manager;
  39. Submenu* submenu;
  40. DialogEx* dialog_ex;
  41. Popup* popup;
  42. NotificationApp* notifications;
  43. FuriString* file_path;
  44. DialogsApp* dialogs;
  45. Storage* storage;
  46. File* file;
  47. Widget* widget;
  48. SPIMemWorker* worker;
  49. SPIMemChip* chip_info;
  50. found_chips_t found_chips;
  51. uint32_t chip_vendor_enum;
  52. SPIMemProgressView* view_progress;
  53. SPIMemDetectView* view_detect;
  54. TextInput* text_input;
  55. SPIMemMode mode;
  56. char text_buffer[SPI_MEM_TEXT_BUFFER_SIZE + 1];
  57. };
  58. typedef enum {
  59. SPIMemViewSubmenu,
  60. SPIMemViewDialogEx,
  61. SPIMemViewPopup,
  62. SPIMemViewWidget,
  63. SPIMemViewTextInput,
  64. SPIMemViewProgress,
  65. SPIMemViewDetect
  66. } SPIMemView;
  67. typedef enum {
  68. SPIMemCustomEventViewReadCancel,
  69. SPIMemCustomEventViewVerifySkip,
  70. SPIMemCustomEventTextEditResult,
  71. SPIMemCustomEventPopupBack
  72. } SPIMemCustomEvent;