From 0aaaf5a5f4ee703aa85cfef4b1c0a91f67d2a225 Mon Sep 17 00:00:00 2001 From: Eric Betts Date: Sun, 26 Nov 2023 15:40:00 -0800 Subject: [PATCH] change UI when card detected --- scenes/seader_scene_read_14a.c | 4 ++++ scenes/seader_scene_read_mfc.c | 4 ++++ scenes/seader_scene_read_picopass.c | 4 ++++ seader_i.h | 1 + seader_worker.c | 8 ++++++++ 5 files changed, 21 insertions(+) diff --git a/scenes/seader_scene_read_14a.c b/scenes/seader_scene_read_14a.c index 10786ed..6d48b4a 100644 --- a/scenes/seader_scene_read_14a.c +++ b/scenes/seader_scene_read_14a.c @@ -32,6 +32,10 @@ bool seader_scene_read_14a_on_event(void* context, SceneManagerEvent event) { seader->credential->type = SeaderCredentialType14A; scene_manager_next_scene(seader->scene_manager, SeaderSceneReadCardSuccess); consumed = true; + } else if(event.event == SeaderCustomEventPollerDetect) { + Popup* popup = seader->popup; + popup_set_header(popup, "DON'T\nMOVE", 68, 30, AlignLeft, AlignTop); + consumed = true; } else if(event.event == SeaderCustomEventPollerSuccess) { seader->credential->type = SeaderCredentialType14A; scene_manager_next_scene(seader->scene_manager, SeaderSceneReadCardSuccess); diff --git a/scenes/seader_scene_read_mfc.c b/scenes/seader_scene_read_mfc.c index bc4e855..3f9db83 100644 --- a/scenes/seader_scene_read_mfc.c +++ b/scenes/seader_scene_read_mfc.c @@ -36,6 +36,10 @@ bool seader_scene_read_mfc_on_event(void* context, SceneManagerEvent event) { seader->credential->type = SeaderCredentialTypeMifareClassic; scene_manager_next_scene(seader->scene_manager, SeaderSceneReadCardSuccess); consumed = true; + } else if(event.event == SeaderCustomEventPollerDetect) { + Popup* popup = seader->popup; + popup_set_header(popup, "DON'T\nMOVE", 68, 30, AlignLeft, AlignTop); + consumed = true; } else if(event.event == SeaderCustomEventPollerSuccess) { seader->credential->type = SeaderCredentialTypeMifareClassic; scene_manager_next_scene(seader->scene_manager, SeaderSceneReadCardSuccess); diff --git a/scenes/seader_scene_read_picopass.c b/scenes/seader_scene_read_picopass.c index 7ea653b..34c4a64 100644 --- a/scenes/seader_scene_read_picopass.c +++ b/scenes/seader_scene_read_picopass.c @@ -31,6 +31,10 @@ bool seader_scene_read_picopass_on_event(void* context, SceneManagerEvent event) seader->credential->type = SeaderCredentialTypePicopass; scene_manager_next_scene(seader->scene_manager, SeaderSceneReadCardSuccess); consumed = true; + } else if(event.event == SeaderCustomEventPollerDetect) { + Popup* popup = seader->popup; + popup_set_header(popup, "DON'T\nMOVE", 68, 30, AlignLeft, AlignTop); + consumed = true; } else if(event.event == SeaderCustomEventPollerSuccess) { seader->credential->type = SeaderCredentialTypePicopass; scene_manager_next_scene(seader->scene_manager, SeaderSceneReadCardSuccess); diff --git a/seader_i.h b/seader_i.h index dc3b038..57c49b1 100644 --- a/seader_i.h +++ b/seader_i.h @@ -69,6 +69,7 @@ enum SeaderCustomEvent { SeaderCustomEventByteInputDone, SeaderCustomEventTextInputDone, + SeaderCustomEventPollerDetect, SeaderCustomEventPollerSuccess, }; diff --git a/seader_worker.c b/seader_worker.c index 66a5fdb..28abb72 100644 --- a/seader_worker.c +++ b/seader_worker.c @@ -265,6 +265,9 @@ NfcCommand seader_worker_poller_callback_iso14443_4a(NfcGenericEvent event, void if(iso14443_4a_event->type == Iso14443_4aPollerEventTypeReady) { if(seader_worker->stage == SeaderPollerEventTypeCardDetect) { + view_dispatcher_send_custom_event( + seader->view_dispatcher, SeaderCustomEventPollerDetect); + nfc_device_set_data( seader->nfc_device, NfcProtocolIso14443_4a, nfc_poller_get_data(seader->poller)); @@ -319,6 +322,9 @@ NfcCommand seader_worker_poller_callback_mfc(NfcGenericEvent event, void* contex if(mfc_event->type == MfClassicPollerEventTypeSuccess) { if(seader_worker->stage == SeaderPollerEventTypeCardDetect) { + view_dispatcher_send_custom_event( + seader->view_dispatcher, SeaderCustomEventPollerDetect); + const MfClassicData* mfc_data = nfc_poller_get_data(seader->poller); uint8_t sak = iso14443_3a_get_sak(mfc_data->iso14443_3a_data); size_t uid_len = 0; @@ -354,6 +360,8 @@ NfcCommand seader_worker_poller_callback_picopass(PicopassPollerEvent event, voi seader_worker->stage = SeaderPollerEventTypeCardDetect; } else if(event.type == PicopassPollerEventTypeSuccess) { if(seader_worker->stage == SeaderPollerEventTypeCardDetect) { + view_dispatcher_send_custom_event( + seader->view_dispatcher, SeaderCustomEventPollerDetect); uint8_t* csn = picopass_poller_get_csn(instance); seader_worker_card_detect(seader, 0, NULL, csn, sizeof(PicopassSerialNum), NULL, 0); furi_thread_set_current_priority(FuriThreadPriorityLowest);