esp_flasher_scene_start.c 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. #include "../esp_flasher_app_i.h"
  2. enum SubmenuIndex {
  3. SubmenuIndexEspFlasherFlash,
  4. SubmenuIndexEspFlasherSwitchA,
  5. SubmenuIndexEspFlasherSwitchB,
  6. SubmenuIndexEspFlasherAbout,
  7. SubmenuIndexEspFlasherReset,
  8. SubmenuIndexEspFlasherBootloader,
  9. };
  10. void esp_flasher_scene_start_submenu_callback(void* context, uint32_t index) {
  11. furi_assert(context);
  12. EspFlasherApp* app = context;
  13. view_dispatcher_send_custom_event(app->view_dispatcher, index);
  14. }
  15. void esp_flasher_scene_start_on_enter(void* context) {
  16. furi_assert(context);
  17. EspFlasherApp* app = context;
  18. Submenu* submenu = app->submenu;
  19. submenu_add_item(
  20. submenu,
  21. "Flash ESP",
  22. SubmenuIndexEspFlasherFlash,
  23. esp_flasher_scene_start_submenu_callback,
  24. app);
  25. submenu_add_item(
  26. submenu,
  27. "Switch to Firmware A",
  28. SubmenuIndexEspFlasherSwitchA,
  29. esp_flasher_scene_start_submenu_callback,
  30. app);
  31. submenu_add_item(
  32. submenu,
  33. "Switch to Firmware B",
  34. SubmenuIndexEspFlasherSwitchB,
  35. esp_flasher_scene_start_submenu_callback,
  36. app);
  37. submenu_add_item(
  38. submenu,
  39. "Reset Board",
  40. SubmenuIndexEspFlasherReset,
  41. esp_flasher_scene_start_submenu_callback,
  42. app);
  43. submenu_add_item(
  44. submenu,
  45. "Enter Bootloader",
  46. SubmenuIndexEspFlasherBootloader,
  47. esp_flasher_scene_start_submenu_callback,
  48. app);
  49. submenu_add_item(
  50. submenu,
  51. "About",
  52. SubmenuIndexEspFlasherAbout,
  53. esp_flasher_scene_start_submenu_callback,
  54. app);
  55. submenu_set_selected_item(
  56. submenu, scene_manager_get_scene_state(app->scene_manager, EspFlasherSceneStart));
  57. view_dispatcher_switch_to_view(app->view_dispatcher, EspFlasherAppViewSubmenu);
  58. }
  59. bool esp_flasher_scene_start_on_event(void* context, SceneManagerEvent event) {
  60. furi_assert(context);
  61. EspFlasherApp* app = context;
  62. bool consumed = false;
  63. if(event.type == SceneManagerEventTypeCustom) {
  64. if(event.event == SubmenuIndexEspFlasherAbout) {
  65. scene_manager_next_scene(app->scene_manager, EspFlasherSceneAbout);
  66. consumed = true;
  67. } else if(event.event == SubmenuIndexEspFlasherFlash) {
  68. scene_manager_next_scene(app->scene_manager, EspFlasherSceneBrowse);
  69. consumed = true;
  70. } else if(event.event == SubmenuIndexEspFlasherSwitchA) {
  71. app->switch_fw = SwitchToFirmwareA;
  72. scene_manager_next_scene(app->scene_manager, EspFlasherSceneConsoleOutput);
  73. consumed = true;
  74. } else if(event.event == SubmenuIndexEspFlasherSwitchB) {
  75. app->switch_fw = SwitchToFirmwareB;
  76. scene_manager_next_scene(app->scene_manager, EspFlasherSceneConsoleOutput);
  77. consumed = true;
  78. } else if(event.event == SubmenuIndexEspFlasherReset) {
  79. app->reset = true;
  80. scene_manager_next_scene(app->scene_manager, EspFlasherSceneConsoleOutput);
  81. consumed = true;
  82. } else if(event.event == SubmenuIndexEspFlasherBootloader) {
  83. app->boot = true;
  84. scene_manager_next_scene(app->scene_manager, EspFlasherSceneConsoleOutput);
  85. consumed = true;
  86. }
  87. scene_manager_set_scene_state(app->scene_manager, EspFlasherSceneStart, event.event);
  88. }
  89. return consumed;
  90. }
  91. void esp_flasher_scene_start_on_exit(void* context) {
  92. furi_assert(context);
  93. EspFlasherApp* app = context;
  94. submenu_reset(app->submenu);
  95. }