avr_isp_scene_start.c 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. #include "../avr_isp_app_i.h"
  2. void avr_isp_scene_start_submenu_callback(void* context, uint32_t index) {
  3. furi_assert(context);
  4. AvrIspApp* app = context;
  5. view_dispatcher_send_custom_event(app->view_dispatcher, index);
  6. }
  7. void avr_isp_scene_start_on_enter(void* context) {
  8. furi_assert(context);
  9. AvrIspApp* app = context;
  10. Submenu* submenu = app->submenu;
  11. submenu_add_item(
  12. submenu, "Dump AVR", SubmenuIndexAvrIspReader, avr_isp_scene_start_submenu_callback, app);
  13. submenu_add_item(
  14. submenu, "Flash AVR", SubmenuIndexAvrIspWriter, avr_isp_scene_start_submenu_callback, app);
  15. submenu_add_item(
  16. submenu,
  17. "ISP Programmer",
  18. SubmenuIndexAvrIspProgrammer,
  19. avr_isp_scene_start_submenu_callback,
  20. app);
  21. submenu_add_item(
  22. submenu, "Wiring", SubmenuIndexAvrIsWiring, avr_isp_scene_start_submenu_callback, app);
  23. submenu_add_item(
  24. submenu, "About", SubmenuIndexAvrIspAbout, avr_isp_scene_start_submenu_callback, app);
  25. submenu_set_selected_item(
  26. submenu, scene_manager_get_scene_state(app->scene_manager, AvrIspSceneStart));
  27. view_dispatcher_switch_to_view(app->view_dispatcher, AvrIspViewSubmenu);
  28. }
  29. bool avr_isp_scene_start_on_event(void* context, SceneManagerEvent event) {
  30. furi_assert(context);
  31. AvrIspApp* app = context;
  32. bool consumed = false;
  33. if(event.type == SceneManagerEventTypeCustom) {
  34. if(event.event == SubmenuIndexAvrIspAbout) {
  35. scene_manager_next_scene(app->scene_manager, AvrIspSceneAbout);
  36. consumed = true;
  37. } else if(event.event == SubmenuIndexAvrIspProgrammer) {
  38. scene_manager_set_scene_state(
  39. app->scene_manager, AvrIspSceneChipDetect, AvrIspViewProgrammer);
  40. scene_manager_next_scene(app->scene_manager, AvrIspSceneChipDetect);
  41. consumed = true;
  42. } else if(event.event == SubmenuIndexAvrIspReader) {
  43. scene_manager_set_scene_state(
  44. app->scene_manager, AvrIspSceneChipDetect, AvrIspViewReader);
  45. scene_manager_next_scene(app->scene_manager, AvrIspSceneChipDetect);
  46. consumed = true;
  47. } else if(event.event == SubmenuIndexAvrIspWriter) {
  48. scene_manager_set_scene_state(
  49. app->scene_manager, AvrIspSceneChipDetect, AvrIspViewWriter);
  50. scene_manager_next_scene(app->scene_manager, AvrIspSceneChipDetect);
  51. consumed = true;
  52. } else if(event.event == SubmenuIndexAvrIsWiring) {
  53. scene_manager_next_scene(app->scene_manager, AvrIspSceneWiring);
  54. consumed = true;
  55. }
  56. scene_manager_set_scene_state(app->scene_manager, AvrIspSceneStart, event.event);
  57. }
  58. return consumed;
  59. }
  60. void avr_isp_scene_start_on_exit(void* context) {
  61. furi_assert(context);
  62. AvrIspApp* app = context;
  63. submenu_reset(app->submenu);
  64. }