nfc_scene_scripts_menu.c 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. #include "../nfc_i.h"
  2. enum SubmenuIndex {
  3. SubmenuIndexBankCard,
  4. SubmenuIndexMifareUltralight,
  5. SubmenuIndexMifareDesfire,
  6. };
  7. void nfc_scene_scripts_menu_submenu_callback(void* context, uint32_t index) {
  8. Nfc* nfc = (Nfc*)context;
  9. view_dispatcher_send_custom_event(nfc->view_dispatcher, index);
  10. }
  11. void nfc_scene_scripts_menu_on_enter(void* context) {
  12. Nfc* nfc = (Nfc*)context;
  13. Submenu* submenu = nfc->submenu;
  14. submenu_add_item(
  15. submenu,
  16. "Read bank card",
  17. SubmenuIndexBankCard,
  18. nfc_scene_scripts_menu_submenu_callback,
  19. nfc);
  20. submenu_add_item(
  21. submenu,
  22. "Read Mifare Ultral/Ntag",
  23. SubmenuIndexMifareUltralight,
  24. nfc_scene_scripts_menu_submenu_callback,
  25. nfc);
  26. submenu_add_item(
  27. submenu,
  28. "Read Mifare DESFire",
  29. SubmenuIndexMifareDesfire,
  30. nfc_scene_scripts_menu_submenu_callback,
  31. nfc);
  32. submenu_set_selected_item(
  33. nfc->submenu, scene_manager_get_scene_state(nfc->scene_manager, NfcSceneScriptsMenu));
  34. view_dispatcher_switch_to_view(nfc->view_dispatcher, NfcViewMenu);
  35. }
  36. bool nfc_scene_scripts_menu_on_event(void* context, SceneManagerEvent event) {
  37. Nfc* nfc = (Nfc*)context;
  38. if(event.type == SceneManagerEventTypeCustom) {
  39. if(event.event == SubmenuIndexBankCard) {
  40. scene_manager_set_scene_state(
  41. nfc->scene_manager, NfcSceneScriptsMenu, SubmenuIndexBankCard);
  42. scene_manager_next_scene(nfc->scene_manager, NfcSceneReadEmvApp);
  43. return true;
  44. } else if(event.event == SubmenuIndexMifareUltralight) {
  45. scene_manager_set_scene_state(
  46. nfc->scene_manager, NfcSceneScriptsMenu, SubmenuIndexMifareUltralight);
  47. scene_manager_next_scene(nfc->scene_manager, NfcSceneReadMifareUl);
  48. return true;
  49. } else if(event.event == SubmenuIndexMifareDesfire) {
  50. scene_manager_set_scene_state(
  51. nfc->scene_manager, NfcSceneScriptsMenu, SubmenuIndexMifareDesfire);
  52. scene_manager_next_scene(nfc->scene_manager, NfcSceneReadMifareDesfire);
  53. return true;
  54. }
  55. }
  56. return false;
  57. }
  58. void nfc_scene_scripts_menu_on_exit(void* context) {
  59. Nfc* nfc = (Nfc*)context;
  60. submenu_reset(nfc->submenu);
  61. }