flip_store_e.h 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144
  1. #ifndef FLIP_STORE_E_H
  2. #define FLIP_STORE_E_H
  3. #include <uart_text_input.h>
  4. #include <flipper_http.h>
  5. #include <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.h>
  15. #define TAG "FlipStore"
  16. // define the list of categories
  17. char *categories[] = {
  18. "Bluetooth",
  19. "Games",
  20. "GPIO",
  21. "Infrared",
  22. "iButton",
  23. "Media",
  24. "NFC",
  25. "RFID",
  26. "Sub-GHz",
  27. "Tools",
  28. "USB",
  29. };
  30. // Define the submenu items for our FlipStore application
  31. typedef enum
  32. {
  33. FlipStoreSubmenuIndexMain, // Click to start downloading the selected app
  34. FlipStoreSubmenuIndexAbout,
  35. FlipStoreSubmenuIndexSettings,
  36. FlipStoreSubmenuIndexAppList,
  37. //
  38. FlipStoreSubmenuIndexAppListBluetooth,
  39. FlipStoreSubmenuIndexAppListGames,
  40. FlipStoreSubmenuIndexAppListGPIO,
  41. FlipStoreSubmenuIndexAppListInfrared,
  42. FlipStoreSubmenuIndexAppListiButton,
  43. FlipStoreSubmenuIndexAppListMedia,
  44. FlipStoreSubmenuIndexAppListNFC,
  45. FlipStoreSubmenuIndexAppListRFID,
  46. FlipStoreSubmenuIndexAppListSubGHz,
  47. FlipStoreSubmenuIndexAppListTools,
  48. FlipStoreSubmenuIndexAppListUSB,
  49. //
  50. FlipStoreSubmenuIndexStartAppList
  51. } FlipStoreSubmenuIndex;
  52. // Define a single view for our FlipStore application
  53. typedef enum
  54. {
  55. FlipStoreViewMain, // The main screen
  56. FlipStoreViewSubmenu, // The submenu
  57. FlipStoreViewAbout, // The about screen
  58. FlipStoreViewSettings, // The settings screen
  59. FlipStoreViewTextInputSSID, // The text input screen for SSID
  60. FlipStoreViewTextInputPass, // The text input screen for password
  61. //
  62. FlipStoreViewPopup, // The popup screen
  63. //
  64. FlipStoreViewAppList, // The app list screen
  65. FlipStoreViewAppInfo, // The app info screen (widget) of the selected app
  66. FlipStoreViewAppDownload, // The app download screen (widget) of the selected app
  67. FlipStoreViewAppDelete, // The app delete screen (DialogEx) of the selected app
  68. //
  69. FlipStoreViewAppListBluetooth, // the app list screen for Bluetooth
  70. FlipStoreViewAppListGames, // the app list screen for Games
  71. FlipStoreViewAppListGPIO, // the app list screen for GPIO
  72. FlipStoreViewAppListInfrared, // the app list screen for Infrared
  73. FlipStoreViewAppListiButton, // the app list screen for iButton
  74. FlipStoreViewAppListMedia, // the app list screen for Media
  75. FlipStoreViewAppListNFC, // the app list screen for NFC
  76. FlipStoreViewAppListRFID, // the app list screen for RFID
  77. FlipStoreViewAppListSubGHz, // the app list screen for Sub-GHz
  78. FlipStoreViewAppListTools, // the app list screen for Tools
  79. FlipStoreViewAppListUSB, // the app list screen for USB
  80. } FlipStoreView;
  81. // Each screen will have its own view
  82. typedef struct
  83. {
  84. ViewDispatcher *view_dispatcher; // Switches between our views
  85. View *view_main; // The main screen for downloading apps
  86. View *view_app_info; // The app info screen (view) of the selected app
  87. Submenu *submenu; // The submenu (main)
  88. //
  89. Submenu *submenu_app_list; // The submenu (app list) for the selected category
  90. //
  91. Submenu *submenu_app_list_bluetooth; // The submenu (app list) for Bluetooth
  92. Submenu *submenu_app_list_games; // The submenu (app list) for Games
  93. Submenu *submenu_app_list_gpio; // The submenu (app list) for GPIO
  94. Submenu *submenu_app_list_infrared; // The submenu (app list) for Infrared
  95. Submenu *submenu_app_list_ibutton; // The submenu (app list) for iButton
  96. Submenu *submenu_app_list_media; // The submenu (app list) for Media
  97. Submenu *submenu_app_list_nfc; // The submenu (app list) for NFC
  98. Submenu *submenu_app_list_rfid; // The submenu (app list) for RFID
  99. Submenu *submenu_app_list_subghz; // The submenu (app list) for Sub-GHz
  100. Submenu *submenu_app_list_tools; // The submenu (app list) for Tools
  101. Submenu *submenu_app_list_usb; // The submenu (app list) for USB
  102. //
  103. Widget *widget; // The widget
  104. Popup *popup; // The popup
  105. DialogEx *dialog_delete; // The dialog for deleting an app
  106. VariableItemList *variable_item_list; // The variable item list (settngs)
  107. VariableItem *variable_item_ssid; // The variable item
  108. VariableItem *variable_item_pass; // The variable item
  109. UART_TextInput *uart_text_input_ssid; // The text input
  110. UART_TextInput *uart_text_input_pass; // The text input
  111. char *uart_text_input_buffer_ssid; // Buffer for the text input
  112. char *uart_text_input_temp_buffer_ssid; // Temporary buffer for the text input
  113. uint32_t uart_text_input_buffer_size_ssid; // Size of the text input buffer
  114. char *uart_text_input_buffer_pass; // Buffer for the text input
  115. char *uart_text_input_temp_buffer_pass; // Temporary buffer for the text input
  116. uint32_t uart_text_input_buffer_size_pass; // Size of the text input buffer
  117. } FlipStoreApp;
  118. // include strndup (otherwise NULL pointer dereference)
  119. char *strndup(const char *s, size_t n)
  120. {
  121. char *result;
  122. size_t len = strlen(s);
  123. if (n < len)
  124. len = n;
  125. result = (char *)malloc(len + 1);
  126. if (!result)
  127. return NULL;
  128. result[len] = '\0';
  129. return (char *)memcpy(result, s, len);
  130. }
  131. static void callback_submenu_choices(void *context, uint32_t index);
  132. #endif // FLIP_STORE_E_H