Skip to content

Commit 9dc271e

Browse files
committed
update nfc maker
1 parent a937495 commit 9dc271e

18 files changed

+1147
-429
lines changed

base_pack/nfc_maker/LICENSE

+674
Large diffs are not rendered by default.

base_pack/nfc_maker/application.fam

+4-5
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,12 @@ App(
33
name="NFC Maker",
44
apptype=FlipperAppType.EXTERNAL,
55
entry_point="nfc_maker",
6-
cdefines=["APP_NFC_MAKER"],
7-
requires=[
8-
"storage",
9-
"gui",
10-
],
116
stack_size=1 * 1024,
127
fap_icon="nfc_maker_10px.png",
138
fap_category="NFC",
149
fap_icon_assets="assets",
10+
fap_author="@Willy-JL",
11+
fap_weburl="https://github.com/Flipper-XFW/Xtreme-Apps/tree/dev/nfc_maker",
12+
fap_version="1.1",
13+
fap_description="Create NFC files for BT MACs, Contacts, Links, Emails, Phones, Text and WiFis",
1514
)

base_pack/nfc_maker/nfc_maker.c

+33
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,30 @@
11
#include "nfc_maker.h"
22

3+
const NfcDataGeneratorType ntag_generators[NtagMAX] = {
4+
[Ntag203] = NfcDataGeneratorTypeNTAG203,
5+
[Ntag213] = NfcDataGeneratorTypeNTAG213,
6+
[Ntag215] = NfcDataGeneratorTypeNTAG215,
7+
[Ntag216] = NfcDataGeneratorTypeNTAG216,
8+
[NtagI2C1K] = NfcDataGeneratorTypeNTAGI2C1k,
9+
[NtagI2C2K] = NfcDataGeneratorTypeNTAGI2C2k,
10+
};
11+
const char* ntag_names[NtagMAX] = {
12+
[Ntag203] = "NTAG203",
13+
[Ntag213] = "NTAG213",
14+
[Ntag215] = "NTAG215",
15+
[Ntag216] = "NTAG216",
16+
[NtagI2C1K] = "NTAG I2C 1K",
17+
[NtagI2C2K] = "NTAG I2C 2K",
18+
};
19+
const size_t ntag_sizes[NtagMAX] = {
20+
[Ntag203] = 0x12 * NTAG_DATA_AREA_UNIT_SIZE,
21+
[Ntag213] = 0x12 * NTAG_DATA_AREA_UNIT_SIZE,
22+
[Ntag215] = 0x3E * NTAG_DATA_AREA_UNIT_SIZE,
23+
[Ntag216] = 0x6D * NTAG_DATA_AREA_UNIT_SIZE,
24+
[NtagI2C1K] = 0x6D * NTAG_DATA_AREA_UNIT_SIZE,
25+
[NtagI2C2K] = 0xEA * NTAG_DATA_AREA_UNIT_SIZE,
26+
};
27+
328
static bool nfc_maker_custom_event_callback(void* context, uint32_t event) {
429
furi_assert(context);
530
NfcMaker* app = context;
@@ -48,12 +73,20 @@ NfcMaker* nfc_maker_alloc() {
4873
app->popup = popup_alloc();
4974
view_dispatcher_add_view(app->view_dispatcher, NfcMakerViewPopup, popup_get_view(app->popup));
5075

76+
// Nfc Device
77+
app->nfc_device = nfc_device_alloc();
78+
app->ndef_buffer = malloc(MAX_NDEF_LEN);
79+
5180
return app;
5281
}
5382

5483
void nfc_maker_free(NfcMaker* app) {
5584
furi_assert(app);
5685

86+
// Nfc Device
87+
nfc_device_free(app->nfc_device);
88+
free(app->ndef_buffer);
89+
5790
// Gui modules
5891
view_dispatcher_remove_view(app->view_dispatcher, NfcMakerViewSubmenu);
5992
submenu_free(app->submenu);

base_pack/nfc_maker/nfc_maker.h

+26
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
#pragma once
2+
3+
#include <furi.h>
14
#include <gui/gui.h>
25
#include <gui/view.h>
36
#include <gui/modules/validators.h>
@@ -14,6 +17,11 @@
1417
#include <furi_hal_bt.h>
1518
#include "newstrnlen.h"
1619

20+
#include <nfc/nfc_device.h>
21+
#include <nfc/helpers/nfc_data_generator.h>
22+
#include <nfc/protocols/mf_ultralight/mf_ultralight.h>
23+
#include <nfc/nfc.h>
24+
1725
#define NFC_MK_APP_FOLDER EXT_PATH("nfc")
1826
#define NFC_MK_APP_EXTENSION ".nfc"
1927

@@ -24,6 +32,21 @@
2432
#define BIG_INPUT_LEN 248
2533
#define SMALL_INPUT_LEN 90
2634

35+
#define NTAG_DATA_AREA_UNIT_SIZE 2 * MF_ULTRALIGHT_PAGE_SIZE
36+
typedef enum {
37+
Ntag203,
38+
Ntag213,
39+
Ntag215,
40+
Ntag216,
41+
NtagI2C1K,
42+
NtagI2C2K,
43+
NtagMAX,
44+
} Ntag;
45+
extern const NfcDataGeneratorType ntag_generators[NtagMAX];
46+
extern const char* ntag_names[NtagMAX];
47+
extern const size_t ntag_sizes[NtagMAX];
48+
#define MAX_NDEF_LEN ntag_sizes[NtagI2C2K]
49+
2750
typedef enum {
2851
WifiAuthenticationOpen = 0x01,
2952
WifiAuthenticationWpa2Personal = 0x20,
@@ -49,6 +72,9 @@ typedef struct {
4972
ByteInput* byte_input;
5073
Popup* popup;
5174

75+
NfcDevice* nfc_device;
76+
uint8_t* ndef_buffer;
77+
5278
uint8_t mac_buf[MAC_INPUT_LEN];
5379
char mail_buf[MAIL_INPUT_LEN];
5480
char phone_buf[PHONE_INPUT_LEN];

base_pack/nfc_maker/scenes/nfc_maker_scene_bluetooth.c

+1-1
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ bool nfc_maker_scene_bluetooth_on_event(void* context, SceneManagerEvent event)
4040
switch(event.event) {
4141
case ByteInputResultOk:
4242
furi_hal_bt_reverse_mac_addr(app->mac_buf);
43-
scene_manager_next_scene(app->scene_manager, NfcMakerSceneSave);
43+
scene_manager_next_scene(app->scene_manager, NfcMakerSceneSaveGenerate);
4444
break;
4545
default:
4646
break;

base_pack/nfc_maker/scenes/nfc_maker_scene_config.h

+3-2
Original file line numberDiff line numberDiff line change
@@ -14,5 +14,6 @@ ADD_SCENE(nfc_maker, wifi, Wifi)
1414
ADD_SCENE(nfc_maker, wifi_auth, WifiAuth)
1515
ADD_SCENE(nfc_maker, wifi_encr, WifiEncr)
1616
ADD_SCENE(nfc_maker, wifi_pass, WifiPass)
17-
ADD_SCENE(nfc_maker, save, Save)
18-
ADD_SCENE(nfc_maker, result, Result)
17+
ADD_SCENE(nfc_maker, save_generate, SaveGenerate)
18+
ADD_SCENE(nfc_maker, save_name, SaveName)
19+
ADD_SCENE(nfc_maker, save_result, SaveResult)

base_pack/nfc_maker/scenes/nfc_maker_scene_contact_url.c

+1-1
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ bool nfc_maker_scene_contact_url_on_event(void* context, SceneManagerEvent event
3939
consumed = true;
4040
switch(event.event) {
4141
case TextInputResultOk:
42-
scene_manager_next_scene(app->scene_manager, NfcMakerSceneSave);
42+
scene_manager_next_scene(app->scene_manager, NfcMakerSceneSaveGenerate);
4343
break;
4444
default:
4545
break;

base_pack/nfc_maker/scenes/nfc_maker_scene_https.c

+1-1
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ bool nfc_maker_scene_https_on_event(void* context, SceneManagerEvent event) {
3737
consumed = true;
3838
switch(event.event) {
3939
case TextInputResultOk:
40-
scene_manager_next_scene(app->scene_manager, NfcMakerSceneSave);
40+
scene_manager_next_scene(app->scene_manager, NfcMakerSceneSaveGenerate);
4141
break;
4242
default:
4343
break;

base_pack/nfc_maker/scenes/nfc_maker_scene_mail.c

+1-1
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ bool nfc_maker_scene_mail_on_event(void* context, SceneManagerEvent event) {
3737
consumed = true;
3838
switch(event.event) {
3939
case TextInputResultOk:
40-
scene_manager_next_scene(app->scene_manager, NfcMakerSceneSave);
40+
scene_manager_next_scene(app->scene_manager, NfcMakerSceneSaveGenerate);
4141
break;
4242
default:
4343
break;

base_pack/nfc_maker/scenes/nfc_maker_scene_phone.c

+1-1
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ bool nfc_maker_scene_phone_on_event(void* context, SceneManagerEvent event) {
3737
consumed = true;
3838
switch(event.event) {
3939
case TextInputResultOk:
40-
scene_manager_next_scene(app->scene_manager, NfcMakerSceneSave);
40+
scene_manager_next_scene(app->scene_manager, NfcMakerSceneSaveGenerate);
4141
break;
4242
default:
4343
break;

0 commit comments

Comments
 (0)