| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- #include "../mifare_nested_i.h"
- enum {
- MifareNestedSceneCheckStateTagSearch,
- MifareNestedSceneCheckStateTagFound,
- };
- bool mifare_nested_check_worker_callback(MifareNestedWorkerEvent event, void* context) {
- furi_assert(context);
- MifareNested* mifare_nested = context;
- view_dispatcher_send_custom_event(mifare_nested->view_dispatcher, event);
- return true;
- }
- static void mifare_nested_scene_check_setup_view(MifareNested* mifare_nested) {
- Popup* popup = mifare_nested->popup;
- popup_reset(popup);
- uint32_t state =
- scene_manager_get_scene_state(mifare_nested->scene_manager, MifareNestedSceneCheck);
- if(state == MifareNestedSceneCheckStateTagSearch) {
- popup_set_icon(mifare_nested->popup, 0, 8, &I_ApplyTag);
- popup_set_text(
- mifare_nested->popup, "Apply tag to\nthe back", 128, 32, AlignRight, AlignCenter);
- } else {
- popup_set_icon(popup, 12, 23, &I_Loading);
- popup_set_header(popup, "Checking\nDon't move...", 52, 32, AlignLeft, AlignCenter);
- }
- view_dispatcher_switch_to_view(mifare_nested->view_dispatcher, MifareNestedViewPopup);
- }
- void mifare_nested_scene_check_on_enter(void* context) {
- MifareNested* mifare_nested = context;
- scene_manager_set_scene_state(
- mifare_nested->scene_manager,
- MifareNestedSceneCheck,
- MifareNestedSceneCheckStateTagSearch);
- mifare_nested_scene_check_setup_view(mifare_nested);
- // Setup and start worker
- mifare_nested_worker_start(
- mifare_nested->worker,
- MifareNestedWorkerStateCheck,
- &mifare_nested->nfc_dev->dev_data,
- mifare_nested_check_worker_callback,
- mifare_nested);
- mifare_nested_blink_start(mifare_nested);
- }
- bool mifare_nested_scene_check_on_event(void* context, SceneManagerEvent event) {
- MifareNested* mifare_nested = context;
- bool consumed = false;
- if(event.type == SceneManagerEventTypeCustom) {
- if(event.event == MifareNestedWorkerEventCollecting) {
- if(mifare_nested->run == NestedRunAttack) {
- if(mifare_nested->settings->only_hardnested) {
- FURI_LOG_I("MifareNested", "Using Hard Nested because user settings");
- mifare_nested->collecting_type = MifareNestedWorkerStateCollectingHard;
- }
- scene_manager_next_scene(
- mifare_nested->scene_manager, MifareNestedSceneCollecting);
- } else {
- scene_manager_next_scene(mifare_nested->scene_manager, MifareNestedSceneCheckKeys);
- }
- consumed = true;
- } else if(event.event == MifareNestedWorkerEventNoTagDetected) {
- scene_manager_set_scene_state(
- mifare_nested->scene_manager,
- MifareNestedSceneCheck,
- MifareNestedSceneCheckStateTagSearch);
- mifare_nested_scene_check_setup_view(mifare_nested);
- consumed = true;
- }
- }
- return consumed;
- }
- void mifare_nested_scene_check_on_exit(void* context) {
- MifareNested* mifare_nested = context;
- mifare_nested_worker_stop(mifare_nested->worker);
- scene_manager_set_scene_state(
- mifare_nested->scene_manager,
- MifareNestedSceneCheck,
- MifareNestedSceneCheckStateTagSearch);
- // Clear view
- popup_reset(mifare_nested->popup);
- mifare_nested_blink_stop(mifare_nested);
- }
|