| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117 |
- #include "../mifare_nested_i.h"
- void mifare_nested_scene_check_keys_widget_callback(
- GuiButtonType result,
- InputType type,
- void* context) {
- MifareNested* mifare_nested = context;
- if(type == InputTypeShort) {
- view_dispatcher_send_custom_event(mifare_nested->view_dispatcher, result);
- }
- }
- bool mifare_nested_check_keys_worker_callback(MifareNestedWorkerEvent event, void* context) {
- MifareNested* mifare_nested = context;
- CheckKeysState* plugin_state = mifare_nested->keys_state;
- if(event == MifareNestedWorkerEventKeyChecked) {
- mifare_nested_blink_nonce_collection_start(mifare_nested);
- KeyInfo_t* key_info = mifare_nested->keys;
- with_view_model(
- plugin_state->view,
- CheckKeysViewModel * model,
- {
- model->lost_tag = false;
- model->keys_checked = key_info->checked_keys;
- model->keys_found = key_info->found_keys;
- model->keys_total = key_info->sector_keys;
- model->keys_count = key_info->total_keys;
- },
- true);
- } else if(event == MifareNestedWorkerEventNoTagDetected) {
- mifare_nested_blink_start(mifare_nested);
- with_view_model(
- plugin_state->view, CheckKeysViewModel * model, { model->lost_tag = true; }, true);
- } else if(event == MifareNestedWorkerEventProcessingKeys) {
- with_view_model(
- plugin_state->view,
- CheckKeysViewModel * model,
- { model->processing_keys = true; },
- true);
- }
- view_dispatcher_send_custom_event(mifare_nested->view_dispatcher, event);
- return true;
- }
- void mifare_nested_scene_check_keys_on_enter(void* context) {
- MifareNested* mifare_nested = context;
- CheckKeysState* plugin_state = mifare_nested->keys_state;
- mifare_nested_worker_start(
- mifare_nested->worker,
- MifareNestedWorkerStateValidating,
- &mifare_nested->nfc_dev->dev_data,
- mifare_nested_check_keys_worker_callback,
- mifare_nested);
- mifare_nested_blink_start(mifare_nested);
- with_view_model(
- plugin_state->view,
- CheckKeysViewModel * model,
- {
- model->lost_tag = false;
- model->processing_keys = false;
- model->keys_count = 0;
- model->keys_checked = 0;
- model->keys_found = 0;
- },
- false);
- view_dispatcher_switch_to_view(mifare_nested->view_dispatcher, MifareNestedViewCheckKeys);
- }
- bool mifare_nested_scene_check_keys_on_event(void* context, SceneManagerEvent event) {
- MifareNested* mifare_nested = context;
- bool consumed = false;
- if(event.type == SceneManagerEventTypeCustom) {
- if(event.event == GuiButtonTypeCenter) {
- scene_manager_search_and_switch_to_previous_scene(mifare_nested->scene_manager, 0);
- consumed = true;
- } else if(event.event == MifareNestedWorkerEventKeysFound) {
- scene_manager_next_scene(mifare_nested->scene_manager, MifareNestedSceneAddedKeys);
- consumed = true;
- } else if(event.event == MifareNestedWorkerEventNeedKeyRecovery) {
- scene_manager_next_scene(
- mifare_nested->scene_manager, MifareNestedSceneNeedKeyRecovery);
- consumed = true;
- } else if(event.event == MifareNestedWorkerEventNeedCollection) {
- scene_manager_next_scene(
- mifare_nested->scene_manager, MifareNestedSceneNeedCollection);
- consumed = true;
- } else if(
- event.event == MifareNestedWorkerEventKeyChecked ||
- event.event == MifareNestedWorkerEventNoTagDetected ||
- event.event == MifareNestedWorkerEventProcessingKeys) {
- consumed = true;
- }
- }
- return consumed;
- }
- void mifare_nested_scene_check_keys_on_exit(void* context) {
- MifareNested* mifare_nested = context;
- mifare_nested_worker_stop(mifare_nested->worker);
- // Clear view
- mifare_nested_blink_stop(mifare_nested);
- popup_reset(mifare_nested->popup);
- widget_reset(mifare_nested->widget);
- }
|