-
Notifications
You must be signed in to change notification settings - Fork 2.8k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
* Field_Validation: add driver fild_validation_rfid * Field_Validation: add fild_validation_nfc * Field_Presence: added field validation functions to furi_hal_nfc * Field_Presence: added field validation functions to furi_hal_rfid * Field_Presence: add "NFC/RFID detector" app * Field_Presence: fix GUI "NFC/RFID detector" * NFC/RFID detector: add auto turn on backlight when field is detected * NFC/RFID detector: fix syntax errors * ApiSymbols: fix incorrect name * FuriHal: filed detect naming * FieldDetector: fix grammar Co-authored-by: Aleksandr Kutuzov <alleteam@gmail.com>
- Loading branch information
Showing
25 changed files
with
844 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
App( | ||
appid="nfc_rfid_detector", | ||
name="NFC/RFID detector", | ||
apptype=FlipperAppType.EXTERNAL, | ||
targets=["f7"], | ||
entry_point="nfc_rfid_detector_app", | ||
requires=["gui"], | ||
stack_size=4 * 1024, | ||
order=50, | ||
fap_icon="nfc_rfid_detector_10px.png", | ||
fap_category="Tools", | ||
fap_icon_assets="images", | ||
) |
7 changes: 7 additions & 0 deletions
7
applications/external/nfc_rfid_detector/helpers/nfc_rfid_detector_event.h
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
#pragma once | ||
|
||
typedef enum { | ||
//NfcRfidDetectorCustomEvent | ||
NfcRfidDetectorCustomEventStartId = 100, | ||
|
||
} NfcRfidDetectorCustomEvent; |
15 changes: 15 additions & 0 deletions
15
applications/external/nfc_rfid_detector/helpers/nfc_rfid_detector_types.h
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
#pragma once | ||
|
||
#include <furi.h> | ||
#include <furi_hal.h> | ||
|
||
#define NFC_RFID_DETECTOR_VERSION_APP "0.1" | ||
#define NFC_RFID_DETECTOR_DEVELOPED "SkorP" | ||
#define NFC_RFID_DETECTOR_GITHUB "https://github.com/flipperdevices/flipperzero-firmware" | ||
|
||
typedef enum { | ||
NfcRfidDetectorViewVariableItemList, | ||
NfcRfidDetectorViewSubmenu, | ||
NfcRfidDetectorViewFieldPresence, | ||
NfcRfidDetectorViewWidget, | ||
} NfcRfidDetectorView; |
Binary file added
BIN
+3.58 KB
applications/external/nfc_rfid_detector/images/Modern_reader_18x34.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added
BIN
+3.61 KB
applications/external/nfc_rfid_detector/images/Move_flipper_26x39.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added
BIN
+168 Bytes
applications/external/nfc_rfid_detector/images/NFC_detect_45x30.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added
BIN
+158 Bytes
applications/external/nfc_rfid_detector/images/Rfid_detect_45x30.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
108 changes: 108 additions & 0 deletions
108
applications/external/nfc_rfid_detector/nfc_rfid_detector_app.c
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,108 @@ | ||
#include "nfc_rfid_detector_app_i.h" | ||
|
||
#include <furi.h> | ||
#include <furi_hal.h> | ||
|
||
static bool nfc_rfid_detector_app_custom_event_callback(void* context, uint32_t event) { | ||
furi_assert(context); | ||
NfcRfidDetectorApp* app = context; | ||
return scene_manager_handle_custom_event(app->scene_manager, event); | ||
} | ||
|
||
static bool nfc_rfid_detector_app_back_event_callback(void* context) { | ||
furi_assert(context); | ||
NfcRfidDetectorApp* app = context; | ||
return scene_manager_handle_back_event(app->scene_manager); | ||
} | ||
|
||
static void nfc_rfid_detector_app_tick_event_callback(void* context) { | ||
furi_assert(context); | ||
NfcRfidDetectorApp* app = context; | ||
scene_manager_handle_tick_event(app->scene_manager); | ||
} | ||
|
||
NfcRfidDetectorApp* nfc_rfid_detector_app_alloc() { | ||
NfcRfidDetectorApp* app = malloc(sizeof(NfcRfidDetectorApp)); | ||
|
||
// GUI | ||
app->gui = furi_record_open(RECORD_GUI); | ||
|
||
// View Dispatcher | ||
app->view_dispatcher = view_dispatcher_alloc(); | ||
app->scene_manager = scene_manager_alloc(&nfc_rfid_detector_scene_handlers, app); | ||
view_dispatcher_enable_queue(app->view_dispatcher); | ||
|
||
view_dispatcher_set_event_callback_context(app->view_dispatcher, app); | ||
view_dispatcher_set_custom_event_callback( | ||
app->view_dispatcher, nfc_rfid_detector_app_custom_event_callback); | ||
view_dispatcher_set_navigation_event_callback( | ||
app->view_dispatcher, nfc_rfid_detector_app_back_event_callback); | ||
view_dispatcher_set_tick_event_callback( | ||
app->view_dispatcher, nfc_rfid_detector_app_tick_event_callback, 100); | ||
|
||
view_dispatcher_attach_to_gui(app->view_dispatcher, app->gui, ViewDispatcherTypeFullscreen); | ||
|
||
// Open Notification record | ||
app->notifications = furi_record_open(RECORD_NOTIFICATION); | ||
|
||
// SubMenu | ||
app->submenu = submenu_alloc(); | ||
view_dispatcher_add_view( | ||
app->view_dispatcher, NfcRfidDetectorViewSubmenu, submenu_get_view(app->submenu)); | ||
|
||
// Widget | ||
app->widget = widget_alloc(); | ||
view_dispatcher_add_view( | ||
app->view_dispatcher, NfcRfidDetectorViewWidget, widget_get_view(app->widget)); | ||
|
||
// Field Presence | ||
app->nfc_rfid_detector_field_presence = nfc_rfid_detector_view_field_presence_alloc(); | ||
view_dispatcher_add_view( | ||
app->view_dispatcher, | ||
NfcRfidDetectorViewFieldPresence, | ||
nfc_rfid_detector_view_field_presence_get_view(app->nfc_rfid_detector_field_presence)); | ||
|
||
scene_manager_next_scene(app->scene_manager, NfcRfidDetectorSceneStart); | ||
|
||
return app; | ||
} | ||
|
||
void nfc_rfid_detector_app_free(NfcRfidDetectorApp* app) { | ||
furi_assert(app); | ||
|
||
// Submenu | ||
view_dispatcher_remove_view(app->view_dispatcher, NfcRfidDetectorViewSubmenu); | ||
submenu_free(app->submenu); | ||
|
||
// Widget | ||
view_dispatcher_remove_view(app->view_dispatcher, NfcRfidDetectorViewWidget); | ||
widget_free(app->widget); | ||
|
||
// Field Presence | ||
view_dispatcher_remove_view(app->view_dispatcher, NfcRfidDetectorViewFieldPresence); | ||
nfc_rfid_detector_view_field_presence_free(app->nfc_rfid_detector_field_presence); | ||
|
||
// View dispatcher | ||
view_dispatcher_free(app->view_dispatcher); | ||
scene_manager_free(app->scene_manager); | ||
|
||
// Notifications | ||
furi_record_close(RECORD_NOTIFICATION); | ||
app->notifications = NULL; | ||
|
||
// Close records | ||
furi_record_close(RECORD_GUI); | ||
|
||
free(app); | ||
} | ||
|
||
int32_t nfc_rfid_detector_app(void* p) { | ||
UNUSED(p); | ||
NfcRfidDetectorApp* nfc_rfid_detector_app = nfc_rfid_detector_app_alloc(); | ||
|
||
view_dispatcher_run(nfc_rfid_detector_app->view_dispatcher); | ||
|
||
nfc_rfid_detector_app_free(nfc_rfid_detector_app); | ||
|
||
return 0; | ||
} |
40 changes: 40 additions & 0 deletions
40
applications/external/nfc_rfid_detector/nfc_rfid_detector_app_i.c
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,40 @@ | ||
#include "nfc_rfid_detector_app_i.h" | ||
|
||
#include <furi.h> | ||
|
||
#define TAG "NfcRfidDetector" | ||
|
||
void nfc_rfid_detector_app_field_presence_start(NfcRfidDetectorApp* app) { | ||
furi_assert(app); | ||
|
||
// start the field presence rfid detection | ||
furi_hal_rfid_field_detect_start(); | ||
|
||
// start the field presence nfc detection | ||
furi_hal_nfc_exit_sleep(); | ||
furi_hal_nfc_field_detect_start(); | ||
} | ||
|
||
void nfc_rfid_detector_app_field_presence_stop(NfcRfidDetectorApp* app) { | ||
furi_assert(app); | ||
|
||
// stop the field presence rfid detection | ||
furi_hal_rfid_field_detect_stop(); | ||
|
||
// stop the field presence nfc detection | ||
furi_hal_nfc_start_sleep(); | ||
} | ||
|
||
bool nfc_rfid_detector_app_field_presence_is_nfc(NfcRfidDetectorApp* app) { | ||
furi_assert(app); | ||
|
||
// check if the field presence is nfc | ||
return furi_hal_nfc_field_is_present(); | ||
} | ||
|
||
bool nfc_rfid_detector_app_field_presence_is_rfid(NfcRfidDetectorApp* app, uint32_t* frequency) { | ||
furi_assert(app); | ||
|
||
// check if the field presence is rfid | ||
return furi_hal_rfid_field_is_present(frequency); | ||
} |
30 changes: 30 additions & 0 deletions
30
applications/external/nfc_rfid_detector/nfc_rfid_detector_app_i.h
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,30 @@ | ||
#pragma once | ||
|
||
#include "helpers/nfc_rfid_detector_types.h" | ||
#include "helpers/nfc_rfid_detector_event.h" | ||
|
||
#include "scenes/nfc_rfid_detector_scene.h" | ||
#include <gui/gui.h> | ||
#include <gui/view_dispatcher.h> | ||
#include <gui/scene_manager.h> | ||
#include <gui/modules/submenu.h> | ||
#include <gui/modules/widget.h> | ||
#include <notification/notification_messages.h> | ||
#include "views/nfc_rfid_detector_view_field_presence.h" | ||
|
||
typedef struct NfcRfidDetectorApp NfcRfidDetectorApp; | ||
|
||
struct NfcRfidDetectorApp { | ||
Gui* gui; | ||
ViewDispatcher* view_dispatcher; | ||
SceneManager* scene_manager; | ||
NotificationApp* notifications; | ||
Submenu* submenu; | ||
Widget* widget; | ||
NfcRfidDetectorFieldPresence* nfc_rfid_detector_field_presence; | ||
}; | ||
|
||
void nfc_rfid_detector_app_field_presence_start(NfcRfidDetectorApp* app); | ||
void nfc_rfid_detector_app_field_presence_stop(NfcRfidDetectorApp* app); | ||
bool nfc_rfid_detector_app_field_presence_is_nfc(NfcRfidDetectorApp* app); | ||
bool nfc_rfid_detector_app_field_presence_is_rfid(NfcRfidDetectorApp* app, uint32_t* frequency); |
31 changes: 31 additions & 0 deletions
31
applications/external/nfc_rfid_detector/scenes/nfc_rfid_detector_scene.c
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,31 @@ | ||
#include "../nfc_rfid_detector_app_i.h" | ||
|
||
// Generate scene on_enter handlers array | ||
#define ADD_SCENE(prefix, name, id) prefix##_scene_##name##_on_enter, | ||
void (*const nfc_rfid_detector_scene_on_enter_handlers[])(void*) = { | ||
#include "nfc_rfid_detector_scene_config.h" | ||
}; | ||
#undef ADD_SCENE | ||
|
||
// Generate scene on_event handlers array | ||
#define ADD_SCENE(prefix, name, id) prefix##_scene_##name##_on_event, | ||
bool (*const nfc_rfid_detector_scene_on_event_handlers[])(void* context, SceneManagerEvent event) = | ||
{ | ||
#include "nfc_rfid_detector_scene_config.h" | ||
}; | ||
#undef ADD_SCENE | ||
|
||
// Generate scene on_exit handlers array | ||
#define ADD_SCENE(prefix, name, id) prefix##_scene_##name##_on_exit, | ||
void (*const nfc_rfid_detector_scene_on_exit_handlers[])(void* context) = { | ||
#include "nfc_rfid_detector_scene_config.h" | ||
}; | ||
#undef ADD_SCENE | ||
|
||
// Initialize scene handlers configuration structure | ||
const SceneManagerHandlers nfc_rfid_detector_scene_handlers = { | ||
.on_enter_handlers = nfc_rfid_detector_scene_on_enter_handlers, | ||
.on_event_handlers = nfc_rfid_detector_scene_on_event_handlers, | ||
.on_exit_handlers = nfc_rfid_detector_scene_on_exit_handlers, | ||
.scene_num = NfcRfidDetectorSceneNum, | ||
}; |
29 changes: 29 additions & 0 deletions
29
applications/external/nfc_rfid_detector/scenes/nfc_rfid_detector_scene.h
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,29 @@ | ||
#pragma once | ||
|
||
#include <gui/scene_manager.h> | ||
|
||
// Generate scene id and total number | ||
#define ADD_SCENE(prefix, name, id) NfcRfidDetectorScene##id, | ||
typedef enum { | ||
#include "nfc_rfid_detector_scene_config.h" | ||
NfcRfidDetectorSceneNum, | ||
} NfcRfidDetectorScene; | ||
#undef ADD_SCENE | ||
|
||
extern const SceneManagerHandlers nfc_rfid_detector_scene_handlers; | ||
|
||
// Generate scene on_enter handlers declaration | ||
#define ADD_SCENE(prefix, name, id) void prefix##_scene_##name##_on_enter(void*); | ||
#include "nfc_rfid_detector_scene_config.h" | ||
#undef ADD_SCENE | ||
|
||
// Generate scene on_event handlers declaration | ||
#define ADD_SCENE(prefix, name, id) \ | ||
bool prefix##_scene_##name##_on_event(void* context, SceneManagerEvent event); | ||
#include "nfc_rfid_detector_scene_config.h" | ||
#undef ADD_SCENE | ||
|
||
// Generate scene on_exit handlers declaration | ||
#define ADD_SCENE(prefix, name, id) void prefix##_scene_##name##_on_exit(void* context); | ||
#include "nfc_rfid_detector_scene_config.h" | ||
#undef ADD_SCENE |
69 changes: 69 additions & 0 deletions
69
applications/external/nfc_rfid_detector/scenes/nfc_rfid_detector_scene_about.c
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,69 @@ | ||
#include "../nfc_rfid_detector_app_i.h" | ||
|
||
void nfc_rfid_detector_scene_about_widget_callback( | ||
GuiButtonType result, | ||
InputType type, | ||
void* context) { | ||
NfcRfidDetectorApp* app = context; | ||
if(type == InputTypeShort) { | ||
view_dispatcher_send_custom_event(app->view_dispatcher, result); | ||
} | ||
} | ||
|
||
void nfc_rfid_detector_scene_about_on_enter(void* context) { | ||
NfcRfidDetectorApp* app = context; | ||
|
||
FuriString* temp_str; | ||
temp_str = furi_string_alloc(); | ||
furi_string_printf(temp_str, "\e#%s\n", "Information"); | ||
|
||
furi_string_cat_printf(temp_str, "Version: %s\n", NFC_RFID_DETECTOR_VERSION_APP); | ||
furi_string_cat_printf(temp_str, "Developed by: %s\n", NFC_RFID_DETECTOR_DEVELOPED); | ||
furi_string_cat_printf(temp_str, "Github: %s\n\n", NFC_RFID_DETECTOR_GITHUB); | ||
|
||
furi_string_cat_printf(temp_str, "\e#%s\n", "Description"); | ||
furi_string_cat_printf( | ||
temp_str, | ||
"This application allows\nyou to determine what\ntype of electromagnetic\nfield the reader is using.\nFor LF RFID you can also\nsee the carrier frequency\n\n"); | ||
|
||
widget_add_text_box_element( | ||
app->widget, | ||
0, | ||
0, | ||
128, | ||
14, | ||
AlignCenter, | ||
AlignBottom, | ||
"\e#\e! \e!\n", | ||
false); | ||
widget_add_text_box_element( | ||
app->widget, | ||
0, | ||
2, | ||
128, | ||
14, | ||
AlignCenter, | ||
AlignBottom, | ||
"\e#\e! NFC/RFID detector \e!\n", | ||
false); | ||
widget_add_text_scroll_element(app->widget, 0, 16, 128, 50, furi_string_get_cstr(temp_str)); | ||
furi_string_free(temp_str); | ||
|
||
view_dispatcher_switch_to_view(app->view_dispatcher, NfcRfidDetectorViewWidget); | ||
} | ||
|
||
bool nfc_rfid_detector_scene_about_on_event(void* context, SceneManagerEvent event) { | ||
NfcRfidDetectorApp* app = context; | ||
bool consumed = false; | ||
UNUSED(app); | ||
UNUSED(event); | ||
|
||
return consumed; | ||
} | ||
|
||
void nfc_rfid_detector_scene_about_on_exit(void* context) { | ||
NfcRfidDetectorApp* app = context; | ||
|
||
// Clear views | ||
widget_reset(app->widget); | ||
} |
3 changes: 3 additions & 0 deletions
3
applications/external/nfc_rfid_detector/scenes/nfc_rfid_detector_scene_config.h
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
ADD_SCENE(nfc_rfid_detector, start, Start) | ||
ADD_SCENE(nfc_rfid_detector, about, About) | ||
ADD_SCENE(nfc_rfid_detector, field_presence, FieldPresence) |
Oops, something went wrong.