mifare_nested_scene_start.c 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. #include "../mifare_nested_i.h"
  2. enum SubmenuIndex { SubmenuIndexCollect, SubmenuIndexCheck, SubmenuIndexAbout };
  3. void mifare_nested_scene_start_submenu_callback(void* context, uint32_t index) {
  4. MifareNested* mifare_nested = context;
  5. view_dispatcher_send_custom_event(mifare_nested->view_dispatcher, index);
  6. }
  7. void mifare_nested_scene_start_on_enter(void* context) {
  8. MifareNested* mifare_nested = context;
  9. Submenu* submenu = mifare_nested->submenu;
  10. submenu_add_item(
  11. submenu,
  12. "Nested attack",
  13. SubmenuIndexCollect,
  14. mifare_nested_scene_start_submenu_callback,
  15. mifare_nested);
  16. submenu_add_item(
  17. submenu,
  18. "Check found keys",
  19. SubmenuIndexCheck,
  20. mifare_nested_scene_start_submenu_callback,
  21. mifare_nested);
  22. submenu_add_item(
  23. submenu,
  24. "About",
  25. SubmenuIndexAbout,
  26. mifare_nested_scene_start_submenu_callback,
  27. mifare_nested);
  28. submenu_set_selected_item(
  29. submenu,
  30. scene_manager_get_scene_state(mifare_nested->scene_manager, MifareNestedSceneStart));
  31. view_dispatcher_switch_to_view(mifare_nested->view_dispatcher, MifareNestedViewMenu);
  32. }
  33. bool mifare_nested_scene_start_on_event(void* context, SceneManagerEvent event) {
  34. MifareNested* mifare_nested = context;
  35. bool consumed = false;
  36. if(event.type == SceneManagerEventTypeCustom) {
  37. if(event.event == SubmenuIndexCollect) {
  38. mifare_nested->run = NestedRunAttack;
  39. scene_manager_next_scene(mifare_nested->scene_manager, MifareNestedSceneCheck);
  40. consumed = true;
  41. } else if(event.event == SubmenuIndexCheck) {
  42. mifare_nested->run = NestedRunCheckKeys;
  43. scene_manager_next_scene(mifare_nested->scene_manager, MifareNestedSceneCheck);
  44. consumed = true;
  45. } else if(event.event == SubmenuIndexAbout) {
  46. scene_manager_next_scene(mifare_nested->scene_manager, MifareNestedSceneAbout);
  47. consumed = true;
  48. }
  49. scene_manager_set_scene_state(
  50. mifare_nested->scene_manager, MifareNestedSceneStart, event.event);
  51. }
  52. return consumed;
  53. }
  54. void mifare_nested_scene_start_on_exit(void* context) {
  55. MifareNested* mifare_nested = context;
  56. submenu_reset(mifare_nested->submenu);
  57. }