flip_downloader.h 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. #ifndef FLIP_STORE_E_H
  2. #define FLIP_STORE_E_H
  3. #include <text_input/uart_text_input.h>
  4. #include <flipper_http/flipper_http.h>
  5. #include <easy_flipper/easy_flipper.h>
  6. #include <furi.h>
  7. #include <furi_hal.h>
  8. #include <gui/gui.h>
  9. #include <gui/view.h>
  10. #include <gui/modules/submenu.h>
  11. #include <gui/view_dispatcher.h>
  12. #include <notification/notification.h>
  13. #include <dialogs/dialogs.h>
  14. #include <jsmn/jsmn.h>
  15. #include <jsmn/jsmn_furi.h>
  16. #include <flip_downloader_icons.h>
  17. #define TAG "FlipDownloader"
  18. #define VERSION_TAG "FlipDownloader v1.0"
  19. // 1 for Black Magic, 1 for FlipperHTTP, 1 for Marauder
  20. #define FIRMWARE_COUNT 3
  21. #define FIRMWARE_LINKS 3
  22. // 1 for FlipperHTTP, 6 for VGM-Library screensavers, 13 for VGM-Library games
  23. #define VGM_FIRMWARE_COUNT 20
  24. #define VGM_FIRMWARE_LINKS 20
  25. #define MAX_GITHUB_FILES 30
  26. // Define the submenu items for our FlipStore application
  27. typedef enum
  28. {
  29. FlipStoreSubmenuIndexMain, // Click to start downloading the selected app
  30. FlipStoreSubmenuIndexAbout,
  31. FlipStoreSubmenuIndexSettings,
  32. //
  33. FlipStoreSubmenuIndexOptions, // Click to view the options
  34. //
  35. FlipStoreSubmenuIndexAppList, // Click to view the app list
  36. FlipStoreSubmenuIndexFirmwares, // Click to view the ESP32 firmwares
  37. FlipStoreSubmenuIndexVGMFirmwares, // Click to view the VGM firmwares
  38. FlipStoreSubmenuIndexGitHub, // Click to view the GitHub repository view
  39. //
  40. FlipStoreSubmenuIndexAppListBluetooth,
  41. FlipStoreSubmenuIndexAppListGames,
  42. FlipStoreSubmenuIndexAppListGPIO,
  43. FlipStoreSubmenuIndexAppListInfrared,
  44. FlipStoreSubmenuIndexAppListiButton,
  45. FlipStoreSubmenuIndexAppListMedia,
  46. FlipStoreSubmenuIndexAppListNFC,
  47. FlipStoreSubmenuIndexAppListRFID,
  48. FlipStoreSubmenuIndexAppListSubGHz,
  49. FlipStoreSubmenuIndexAppListTools,
  50. FlipStoreSubmenuIndexAppListUSB,
  51. //
  52. FlipStoreSubmenuIndexStartFirmwares = 50,
  53. FlipStoreSubmenuIndexStartVGMFirmwares = 60,
  54. //
  55. FlipStoreSubmenuIndexStartAppList = 100,
  56. } FlipStoreSubmenuIndex;
  57. // Define a single view for our FlipStore application
  58. typedef enum
  59. {
  60. //
  61. FlipStoreViewSubmenu, // The submenu
  62. FlipStoreViewSubmenuOptions, // The submenu options
  63. //
  64. FlipStoreViewAbout, // The about screen
  65. FlipStoreViewSettings, // The settings screen
  66. FlipStoreViewTextInput, // The text input screen
  67. //
  68. FlipStoreViewAppList, // The app list screen
  69. FlipStoreViewFirmwares, // The firmwares screen (submenu)
  70. FlipStoreViewVGMFirmwares, // The VGM firmwares screen (submenu)
  71. FlipStoreViewAGithub, // The GitHub repository screen
  72. //
  73. FlipStoreViewFirmwareDialog, // The firmware view (DialogEx) of the selected firmware
  74. //
  75. FlipStoreViewAppInfo, // The app info screen (widget) of the selected app
  76. FlipStoreViewAppDownload, // The app download screen (widget) of the selected app
  77. FlipStoreViewAppDelete, // The app delete screen (DialogEx) of the selected app
  78. //
  79. FlipStoreViewAppListCategory, // the app list screen for each category
  80. //
  81. //
  82. FlipStoreViewWidgetResult, // The text box that displays the random fact
  83. FlipStoreViewLoader, // The loader screen retrieves data from the internet
  84. } FlipStoreView;
  85. // Each screen will have its own view
  86. typedef struct
  87. {
  88. View *view_loader;
  89. Widget *widget_result;
  90. //
  91. ViewDispatcher *view_dispatcher; // Switches between our views
  92. View *view_app_info; // The app info screen (view) of the selected app
  93. //
  94. DialogEx *dialog_firmware; // The dialog for installing a firmware
  95. //
  96. Submenu *submenu_main; // The submenu (main)
  97. //
  98. Submenu *submenu_options; // The submenu (options)
  99. Submenu *submenu_app_list; // The submenu (app list) for the selected category
  100. Submenu *submenu_firmwares; // The submenu (firmwares)
  101. Submenu *submenu_vgm_firmwares; // The submenu (VGM firmwares)
  102. Submenu *submenu_app_list_category; // The submenu (app list) for each category
  103. Widget *widget_about; // The widget
  104. VariableItemList *variable_item_list; // The variable item list (settngs)
  105. VariableItem *variable_item_ssid; // The variable item
  106. VariableItem *variable_item_pass; // The variable item
  107. //
  108. UART_TextInput *uart_text_input; // The text input
  109. char *uart_text_input_buffer; // Buffer for the text input
  110. char *uart_text_input_temp_buffer; // Temporary buffer for the text input
  111. uint32_t uart_text_input_buffer_size; // Size of the text input buffer
  112. } FlipStoreApp;
  113. void flip_store_app_free(FlipStoreApp *app);
  114. #endif // FLIP_STORE_E_H