esp_flasher_scene_start.c 2.6 KB

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