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:
authorgornekich <n.gorbadey@gmail.com>2021-07-16 00:39:21 +0300
committerGitHub <noreply@github.com>2021-07-16 00:39:21 +0300
commita837bc5d008c4333df4aded72880fb5689a8a000 (patch)
tree9395a34feaa6035acad2e8cf7b07b66920757e3c /applications/nfc
parent851a44dc59ea614a767ea4e031752e9537a1f9ca (diff)
[FL-1537] NFC launch from archive (#580)
* archive: pass full file path as App argument * nfc: add starting emulation from Archive * nfc, ibutton: rework setting key name with path lib * archive: revert launching app with full file path Co-authored-by: あく <alleteam@gmail.com>
Diffstat (limited to 'applications/nfc')
-rwxr-xr-xapplications/nfc/nfc.c10
-rwxr-xr-xapplications/nfc/nfc_device.c20
-rw-r--r--applications/nfc/nfc_device.h2
3 files changed, 26 insertions, 6 deletions
diff --git a/applications/nfc/nfc.c b/applications/nfc/nfc.c
index 47760d4f..d970eb33 100755
--- a/applications/nfc/nfc.c
+++ b/applications/nfc/nfc.c
@@ -95,9 +95,6 @@ Nfc* nfc_alloc() {
NfcViewMifareUl,
nfc_mifare_ul_get_view(nfc->nfc_mifare_ul));
- // Run first scene
- scene_manager_next_scene(nfc->scene_manager, NfcSceneStart);
-
return nfc;
}
@@ -169,6 +166,13 @@ void nfc_free(Nfc* nfc) {
int32_t nfc_task(void* p) {
Nfc* nfc = nfc_alloc();
+ // Check argument and run corresponding scene
+ if(p && nfc_device_load(&nfc->device, p)) {
+ scene_manager_next_scene(nfc->scene_manager, NfcSceneEmulateUid);
+ } else {
+ scene_manager_next_scene(nfc->scene_manager, NfcSceneStart);
+ }
+
view_dispatcher_run(nfc->nfc_common.view_dispatcher);
nfc_free(nfc);
diff --git a/applications/nfc/nfc_device.c b/applications/nfc/nfc_device.c
index ad143e80..d92d0c3d 100755
--- a/applications/nfc/nfc_device.c
+++ b/applications/nfc/nfc_device.c
@@ -1,6 +1,7 @@
#include "nfc_device.h"
#include <file-worker.h>
+#include <path.h>
#define NFC_DEVICE_MAX_DATA_LEN 14
@@ -86,10 +87,25 @@ static bool nfc_device_load_data(FileWorker* file_worker, string_t path, NfcDevi
return true;
}
-bool nfc_device_load(NfcDevice* dev, const char* dev_name) {
+bool nfc_device_load(NfcDevice* dev, const char* file_path) {
furi_assert(dev);
+ furi_assert(file_path);
- return true;
+ FileWorker* file_worker = file_worker_alloc(false);
+ // Load device data
+ string_t path;
+ string_init_set_str(path, file_path);
+ bool dev_load = nfc_device_load_data(file_worker, path, dev);
+ if(dev_load) {
+ // Set device name
+ path_extract_filename_no_ext(file_path, path);
+ nfc_device_set_name(dev, string_get_cstr(path));
+ }
+ string_clear(path);
+ file_worker_close(file_worker);
+ file_worker_free(file_worker);
+
+ return dev_load;
}
bool nfc_file_select(NfcDevice* dev) {
diff --git a/applications/nfc/nfc_device.h b/applications/nfc/nfc_device.h
index ac922320..6d6486c6 100644
--- a/applications/nfc/nfc_device.h
+++ b/applications/nfc/nfc_device.h
@@ -55,6 +55,6 @@ void nfc_device_set_name(NfcDevice* dev, const char* name);
bool nfc_device_save(NfcDevice* dev, const char* dev_name);
-bool nfc_device_load(NfcDevice* dev, const char* dev_name);
+bool nfc_device_load(NfcDevice* dev, const char* file_path);
bool nfc_file_select(NfcDevice* dev);