nfc_scene_read_card_success.c 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. #include "../nfc_i.h"
  2. #define NFC_SCENE_READ_SUCCESS_SHIFT " "
  3. void nfc_scene_read_card_success_dialog_callback(DialogExResult result, void* context) {
  4. Nfc* nfc = (Nfc*)context;
  5. view_dispatcher_send_custom_event(nfc->view_dispatcher, result);
  6. }
  7. void nfc_scene_read_card_success_on_enter(void* context) {
  8. Nfc* nfc = (Nfc*)context;
  9. // Send notification
  10. notification_message(nfc->notifications, &sequence_success);
  11. // Setup view
  12. NfcDeviceCommonData* data = &nfc->dev->dev_data.nfc_data;
  13. DialogEx* dialog_ex = nfc->dialog_ex;
  14. dialog_ex_set_left_button_text(dialog_ex, "Retry");
  15. dialog_ex_set_right_button_text(dialog_ex, "More");
  16. dialog_ex_set_header(dialog_ex, nfc_get_dev_type(data->device), 36, 8, AlignLeft, AlignCenter);
  17. dialog_ex_set_icon(dialog_ex, 8, 13, &I_Medium_chip_22x21);
  18. // Display UID
  19. if(data->uid_len == 4) {
  20. nfc_text_store_set(
  21. nfc,
  22. NFC_SCENE_READ_SUCCESS_SHIFT "%s\n" NFC_SCENE_READ_SUCCESS_SHIFT
  23. "ATQA: %02X%02X SAK: %02X\nUID: %02X %02X %02X %02X",
  24. nfc_guess_protocol(data->protocol),
  25. data->atqa[0],
  26. data->atqa[1],
  27. data->sak,
  28. data->uid[0],
  29. data->uid[1],
  30. data->uid[2],
  31. data->uid[3]);
  32. } else if(data->uid_len == 7) {
  33. nfc_text_store_set(
  34. nfc,
  35. NFC_SCENE_READ_SUCCESS_SHIFT
  36. "%s\n" NFC_SCENE_READ_SUCCESS_SHIFT
  37. "ATQA: %02X%02X SAK: %02X\nUID: %02X %02X %02X %02X %02X %02X %02X",
  38. nfc_guess_protocol(data->protocol),
  39. data->atqa[0],
  40. data->atqa[1],
  41. data->sak,
  42. data->uid[0],
  43. data->uid[1],
  44. data->uid[2],
  45. data->uid[3],
  46. data->uid[4],
  47. data->uid[5],
  48. data->uid[6]);
  49. }
  50. dialog_ex_set_text(dialog_ex, nfc->text_store, 8, 16, AlignLeft, AlignTop);
  51. dialog_ex_set_context(dialog_ex, nfc);
  52. dialog_ex_set_result_callback(dialog_ex, nfc_scene_read_card_success_dialog_callback);
  53. view_dispatcher_switch_to_view(nfc->view_dispatcher, NfcViewDialogEx);
  54. }
  55. bool nfc_scene_read_card_success_on_event(void* context, SceneManagerEvent event) {
  56. Nfc* nfc = (Nfc*)context;
  57. if(event.type == SceneManagerEventTypeCustom) {
  58. if(event.event == DialogExResultLeft) {
  59. return scene_manager_previous_scene(nfc->scene_manager);
  60. } else if(event.event == DialogExResultRight) {
  61. // Clear device name
  62. nfc_device_set_name(nfc->dev, "");
  63. scene_manager_next_scene(nfc->scene_manager, NfcSceneCardMenu);
  64. return true;
  65. }
  66. }
  67. return false;
  68. }
  69. void nfc_scene_read_card_success_on_exit(void* context) {
  70. Nfc* nfc = (Nfc*)context;
  71. DialogEx* dialog_ex = nfc->dialog_ex;
  72. dialog_ex_set_header(dialog_ex, NULL, 0, 0, AlignCenter, AlignCenter);
  73. dialog_ex_set_text(dialog_ex, NULL, 0, 0, AlignCenter, AlignTop);
  74. dialog_ex_set_icon(dialog_ex, 0, 0, NULL);
  75. dialog_ex_set_left_button_text(dialog_ex, NULL);
  76. dialog_ex_set_right_button_text(dialog_ex, NULL);
  77. dialog_ex_set_result_callback(dialog_ex, NULL);
  78. dialog_ex_set_context(dialog_ex, NULL);
  79. }