nfc_scene_read_card_success.c 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. #include "nfc_scene_read_card_success.h"
  2. #include "../nfc_i.h"
  3. #include <furi.h>
  4. #include <gui/modules/dialog_ex.h>
  5. #include <gui/view_dispatcher.h>
  6. #define NFC_SCENE_READ_SUCCESS_SHIFT " "
  7. void nfc_scene_read_card_success_dialog_callback(DialogExResult result, void* context) {
  8. Nfc* nfc = (Nfc*)context;
  9. view_dispatcher_send_custom_event(nfc->nfc_common.view_dispatcher, result);
  10. }
  11. const void nfc_scene_read_card_success_on_enter(void* context) {
  12. Nfc* nfc = (Nfc*)context;
  13. // Send notification
  14. notification_message(nfc->notifications, &sequence_success);
  15. // Setup view
  16. NfcDeviceData* data = (NfcDeviceData*)&nfc->nfc_common.worker_result;
  17. DialogEx* dialog_ex = nfc->dialog_ex;
  18. dialog_ex_set_left_button_text(dialog_ex, "Retry");
  19. dialog_ex_set_right_button_text(dialog_ex, "More");
  20. dialog_ex_set_header(dialog_ex, nfc_get_dev_type(data->device), 36, 8, AlignLeft, AlignCenter);
  21. dialog_ex_set_icon(dialog_ex, 8, 13, I_Medium_chip_22x21);
  22. // Display UID
  23. if(data->uid_len == 4) {
  24. nfc_set_text_store(
  25. nfc,
  26. NFC_SCENE_READ_SUCCESS_SHIFT "%s\n" NFC_SCENE_READ_SUCCESS_SHIFT
  27. "ATQA: %02X%02X SAK: %02X\nUID: %02X %02X %02X %02X",
  28. nfc_get_protocol(data->protocol),
  29. data->atqa[0],
  30. data->atqa[1],
  31. data->sak,
  32. data->uid[0],
  33. data->uid[1],
  34. data->uid[2],
  35. data->uid[3]);
  36. } else if(data->uid_len == 7) {
  37. nfc_set_text_store(
  38. nfc,
  39. NFC_SCENE_READ_SUCCESS_SHIFT
  40. "%s\n" NFC_SCENE_READ_SUCCESS_SHIFT
  41. "ATQA: %02X%02X SAK: %02X\nUID: %02X %02X %02X %02X %02X %02X %02X",
  42. nfc_get_protocol(data->protocol),
  43. data->atqa[0],
  44. data->atqa[1],
  45. data->sak,
  46. data->uid[0],
  47. data->uid[1],
  48. data->uid[2],
  49. data->uid[3],
  50. data->uid[4],
  51. data->uid[5],
  52. data->uid[6]);
  53. }
  54. dialog_ex_set_text(dialog_ex, nfc->text_store, 8, 16, AlignLeft, AlignTop);
  55. dialog_ex_set_context(dialog_ex, nfc);
  56. dialog_ex_set_result_callback(dialog_ex, nfc_scene_read_card_success_dialog_callback);
  57. view_dispatcher_switch_to_view(nfc->nfc_common.view_dispatcher, NfcViewDialogEx);
  58. }
  59. const bool nfc_scene_read_card_success_on_event(void* context, uint32_t event) {
  60. Nfc* nfc = (Nfc*)context;
  61. if(event == DialogExResultLeft) {
  62. view_dispatcher_send_navigation_event(
  63. nfc->nfc_common.view_dispatcher, ViewNavigatorEventBack);
  64. return true;
  65. } else if(event == DialogExResultRight) {
  66. view_dispatcher_add_scene(nfc->nfc_common.view_dispatcher, nfc->scene_card_menu);
  67. view_dispatcher_send_navigation_event(
  68. nfc->nfc_common.view_dispatcher, ViewNavigatorEventNext);
  69. return true;
  70. }
  71. return false;
  72. }
  73. const void nfc_scene_read_card_success_on_exit(void* context) {
  74. Nfc* nfc = (Nfc*)context;
  75. DialogEx* dialog_ex = nfc->dialog_ex;
  76. dialog_ex_set_header(dialog_ex, NULL, 0, 0, AlignCenter, AlignCenter);
  77. dialog_ex_set_text(dialog_ex, NULL, 0, 0, AlignCenter, AlignTop);
  78. dialog_ex_set_icon(dialog_ex, 0, 0, I_Empty_1x1);
  79. dialog_ex_set_left_button_text(dialog_ex, NULL);
  80. dialog_ex_set_right_button_text(dialog_ex, NULL);
  81. dialog_ex_set_result_callback(dialog_ex, NULL);
  82. dialog_ex_set_context(dialog_ex, NULL);
  83. }
  84. AppScene* nfc_scene_read_card_success_alloc() {
  85. AppScene* scene = furi_alloc(sizeof(AppScene));
  86. scene->id = NfcSceneReadCardSuccess;
  87. scene->on_enter = nfc_scene_read_card_success_on_enter;
  88. scene->on_event = nfc_scene_read_card_success_on_event;
  89. scene->on_exit = nfc_scene_read_card_success_on_exit;
  90. return scene;
  91. }
  92. void nfc_scene_read_card_success_free(AppScene* scene) {
  93. free(scene);
  94. }