subghz_scene_start.c 3.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. #include "../subghz_i.h"
  2. enum SubmenuIndex {
  3. SubmenuIndexRead,
  4. SubmenuIndexSaved,
  5. SubmenuIndexTest,
  6. SubmenuIndexAddManualy,
  7. SubmenuIndexFrequencyAnalyzer,
  8. };
  9. void subghz_scene_start_submenu_callback(void* context, uint32_t index) {
  10. SubGhz* subghz = context;
  11. view_dispatcher_send_custom_event(subghz->view_dispatcher, index);
  12. }
  13. void subghz_scene_start_on_enter(void* context) {
  14. SubGhz* subghz = context;
  15. if(subghz->state_notifications == NOTIFICATION_STARTING_STATE) {
  16. subghz->state_notifications = NOTIFICATION_IDLE_STATE;
  17. }
  18. submenu_add_item(
  19. subghz->submenu, "Read", SubmenuIndexRead, subghz_scene_start_submenu_callback, subghz);
  20. submenu_add_item(
  21. subghz->submenu, "Saved", SubmenuIndexSaved, subghz_scene_start_submenu_callback, subghz);
  22. submenu_add_item(
  23. subghz->submenu,
  24. "Add manually",
  25. SubmenuIndexAddManualy,
  26. subghz_scene_start_submenu_callback,
  27. subghz);
  28. submenu_add_item(
  29. subghz->submenu,
  30. "Frequency Analyzer",
  31. SubmenuIndexFrequencyAnalyzer,
  32. subghz_scene_start_submenu_callback,
  33. subghz);
  34. submenu_add_item(
  35. subghz->submenu, "Test", SubmenuIndexTest, subghz_scene_start_submenu_callback, subghz);
  36. submenu_set_selected_item(
  37. subghz->submenu, scene_manager_get_scene_state(subghz->scene_manager, SubGhzSceneStart));
  38. view_dispatcher_switch_to_view(subghz->view_dispatcher, SubGhzViewMenu);
  39. }
  40. bool subghz_scene_start_on_event(void* context, SceneManagerEvent event) {
  41. SubGhz* subghz = context;
  42. if(event.type == SceneManagerEventTypeCustom) {
  43. if(event.event == SubmenuIndexRead) {
  44. scene_manager_set_scene_state(
  45. subghz->scene_manager, SubGhzSceneStart, SubmenuIndexRead);
  46. scene_manager_next_scene(subghz->scene_manager, SubGhzSceneReceiver);
  47. return true;
  48. } else if(event.event == SubmenuIndexSaved) {
  49. scene_manager_set_scene_state(
  50. subghz->scene_manager, SubGhzSceneStart, SubmenuIndexSaved);
  51. scene_manager_next_scene(subghz->scene_manager, SubGhzSceneSaved);
  52. return true;
  53. } else if(event.event == SubmenuIndexAddManualy) {
  54. scene_manager_set_scene_state(
  55. subghz->scene_manager, SubGhzSceneStart, SubmenuIndexAddManualy);
  56. scene_manager_next_scene(subghz->scene_manager, SubGhzSceneSetType);
  57. return true;
  58. } else if(event.event == SubmenuIndexFrequencyAnalyzer) {
  59. scene_manager_set_scene_state(
  60. subghz->scene_manager, SubGhzSceneStart, SubmenuIndexFrequencyAnalyzer);
  61. scene_manager_next_scene(subghz->scene_manager, SubGhzSceneFrequencyAnalyzer);
  62. return true;
  63. } else if(event.event == SubmenuIndexTest) {
  64. scene_manager_set_scene_state(
  65. subghz->scene_manager, SubGhzSceneStart, SubmenuIndexTest);
  66. scene_manager_next_scene(subghz->scene_manager, SubGhzSceneTest);
  67. return true;
  68. }
  69. }
  70. return false;
  71. }
  72. void subghz_scene_start_on_exit(void* context) {
  73. SubGhz* subghz = context;
  74. submenu_clean(subghz->submenu);
  75. }