seos_scene_scanner_menu.c 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. #include "../seos_i.h"
  2. enum SubmenuIndex {
  3. SubmenuIndexBLEReaderScanner,
  4. SubmenuIndexBLECredScanner,
  5. };
  6. void seos_scene_scanner_menu_submenu_callback(void* context, uint32_t index) {
  7. Seos* seos = context;
  8. view_dispatcher_send_custom_event(seos->view_dispatcher, index);
  9. }
  10. void seos_scene_scanner_menu_on_enter(void* context) {
  11. Seos* seos = context;
  12. Submenu* submenu = seos->submenu;
  13. submenu_add_item(
  14. submenu,
  15. "Start BLE Reader Scanner",
  16. SubmenuIndexBLEReaderScanner,
  17. seos_scene_scanner_menu_submenu_callback,
  18. seos);
  19. submenu_add_item(
  20. submenu,
  21. "Start BLE Cred Scanner",
  22. SubmenuIndexBLECredScanner,
  23. seos_scene_scanner_menu_submenu_callback,
  24. seos);
  25. submenu_set_selected_item(
  26. seos->submenu, scene_manager_get_scene_state(seos->scene_manager, SeosSceneMainMenu));
  27. view_dispatcher_switch_to_view(seos->view_dispatcher, SeosViewMenu);
  28. }
  29. bool seos_scene_scanner_menu_on_event(void* context, SceneManagerEvent event) {
  30. Seos* seos = context;
  31. bool consumed = false;
  32. if(event.type == SceneManagerEventTypeCustom) {
  33. if(event.event == SubmenuIndexBLEReaderScanner) {
  34. scene_manager_set_scene_state(
  35. seos->scene_manager, SeosSceneMainMenu, SubmenuIndexBLEReaderScanner);
  36. seos->flow_mode = FLOW_READER_SCANNER;
  37. scene_manager_next_scene(seos->scene_manager, SeosSceneBleCentral);
  38. consumed = true;
  39. } else if(event.event == SubmenuIndexBLECredScanner) {
  40. scene_manager_set_scene_state(
  41. seos->scene_manager, SeosSceneMainMenu, SubmenuIndexBLECredScanner);
  42. seos->flow_mode = FLOW_CRED_SCANNER;
  43. scene_manager_next_scene(seos->scene_manager, SeosSceneBleCentral);
  44. consumed = true;
  45. }
  46. }
  47. return consumed;
  48. }
  49. void seos_scene_scanner_menu_on_exit(void* context) {
  50. Seos* seos = context;
  51. submenu_reset(seos->submenu);
  52. }