nfc_scene_read_card_success.c 3.2 KB

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