Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/ClusterM/flipperzero-firmware.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'applications/nfc/scenes/nfc_scene_mf_classic_keys_add.c')
-rw-r--r--applications/nfc/scenes/nfc_scene_mf_classic_keys_add.c57
1 files changed, 57 insertions, 0 deletions
diff --git a/applications/nfc/scenes/nfc_scene_mf_classic_keys_add.c b/applications/nfc/scenes/nfc_scene_mf_classic_keys_add.c
new file mode 100644
index 00000000..9f56b0f4
--- /dev/null
+++ b/applications/nfc/scenes/nfc_scene_mf_classic_keys_add.c
@@ -0,0 +1,57 @@
+#include "../nfc_i.h"
+
+void nfc_scene_mf_classic_keys_add_byte_input_callback(void* context) {
+ Nfc* nfc = context;
+
+ view_dispatcher_send_custom_event(nfc->view_dispatcher, NfcCustomEventByteInputDone);
+}
+
+void nfc_scene_mf_classic_keys_add_on_enter(void* context) {
+ Nfc* nfc = context;
+
+ // Setup view
+ ByteInput* byte_input = nfc->byte_input;
+ byte_input_set_header_text(byte_input, "Enter the key in hex");
+ byte_input_set_result_callback(
+ byte_input,
+ nfc_scene_mf_classic_keys_add_byte_input_callback,
+ NULL,
+ nfc,
+ nfc->byte_input_store,
+ 6);
+ view_dispatcher_switch_to_view(nfc->view_dispatcher, NfcViewByteInput);
+}
+
+bool nfc_scene_mf_classic_keys_add_on_event(void* context, SceneManagerEvent event) {
+ Nfc* nfc = context;
+ bool consumed = false;
+
+ if(event.type == SceneManagerEventTypeCustom) {
+ if(event.event == NfcCustomEventByteInputDone) {
+ // Add key to dict
+ bool key_added = false;
+ MfClassicDict* dict = mf_classic_dict_alloc(MfClassicDictTypeUser);
+ if(dict) {
+ if(mf_classic_dict_add_key(dict, nfc->byte_input_store)) {
+ key_added = true;
+ }
+ }
+ if(key_added) {
+ scene_manager_next_scene(nfc->scene_manager, NfcSceneSaveSuccess);
+ } else {
+ scene_manager_next_scene(nfc->scene_manager, NfcSceneDictNotFound);
+ }
+ mf_classic_dict_free(dict);
+ consumed = true;
+ }
+ }
+ return consumed;
+}
+
+void nfc_scene_mf_classic_keys_add_on_exit(void* context) {
+ Nfc* nfc = context;
+
+ // Clear view
+ byte_input_set_result_callback(nfc->byte_input, NULL, NULL, NULL, NULL, 0);
+ byte_input_set_header_text(nfc->byte_input, "");
+}