Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
36 commits
Select commit Hold shift + click to select a range
0686682
Implement basic boilerplate for NFC-V listener
gsurkov Aug 3, 2023
346efdb
Merge branch 'gornek/nfc_refactoring' into gsurkov/nfcv_v_emulation
gsurkov Aug 4, 2023
02f0458
Improve listener boilerplate
gsurkov Aug 4, 2023
ee89d4a
Better separation between various NFC technologies
gsurkov Aug 7, 2023
7369b00
Correct formatting
gsurkov Aug 8, 2023
2aa5ca6
Some minor code improvements
gsurkov Aug 8, 2023
b83a23f
Merge branch 'gsurkov/nfc_refactoring' into gsurkov/nfcv_v_emulation
gsurkov Aug 8, 2023
72f7c49
Re-add f_hal_event_start()
gsurkov Aug 8, 2023
10304d6
Implement basic framework for transparent mode
gsurkov Aug 8, 2023
57c3148
Implement transparent mode rx for NFC-V
gsurkov Aug 8, 2023
fe642ba
Receiving bytes from reader
gsurkov Aug 9, 2023
a61799b
Refine chip NFC-V configuration
gsurkov Aug 9, 2023
ed11d0f
Implement sending via NFC-V listener
gsurkov Aug 11, 2023
394d356
Improve Iso15693Signal code
gsurkov Aug 14, 2023
ca48657
Add support for low and high data rates
gsurkov Aug 14, 2023
8eb712e
Port Iso15693Signal to DigitalSequence
gsurkov Aug 14, 2023
d0587a4
Rearrange some code
gsurkov Aug 14, 2023
f85f2f0
Minimal INVENTORY emulation
gsurkov Aug 14, 2023
592b632
Minimal GET_SYSTEM_INFO emulation
gsurkov Aug 14, 2023
ad80f05
Minor NFC-V improvements
gsurkov Aug 15, 2023
5c6c586
Improve error and flag handling
gsurkov Aug 15, 2023
f1cd03f
Improve command handlers (draft)
gsurkov Aug 15, 2023
ed3238b
Improve command handlers (final)
gsurkov Aug 16, 2023
1619ea9
Add STAY_QUIET command
gsurkov Aug 16, 2023
db568c5
Add WRITE_BLOCK command
gsurkov Aug 16, 2023
279480f
Add several NFC-V commands
gsurkov Aug 16, 2023
0b7e33d
Add multi read and write
gsurkov Aug 17, 2023
be8f83a
Add LOCK_BLOCK command
gsurkov Aug 17, 2023
6ba4b1c
Add GET_SECURITY command
gsurkov Aug 17, 2023
90fe648
Select command handlers from array
gsurkov Aug 17, 2023
5564364
Implement all of the commands (draft)
gsurkov Aug 17, 2023
daf8c49
Simplify NFC-V request handling
gsurkov Aug 18, 2023
1c9a303
Change GUI emulation logic for NFC-V
gsurkov Aug 18, 2023
d0deffb
Implement single EOF handling
gsurkov Aug 18, 2023
ab0163d
Rework nfcv signal reception (#2998)
gornekich Aug 21, 2023
7ed007c
Merge remote-tracking branch 'origin/gornek/nfc_refactoring' into gsu…
gornekich Aug 21, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
#include "iso15693_3_render.h"

#include <nfc/protocols/iso15693_3/iso15693_3_poller.h>
#include <nfc/protocols/iso15693_3/iso15693_3_listener.h>

#include "nfc/nfc_app_i.h"

Expand Down Expand Up @@ -58,6 +59,38 @@ static void nfc_scene_read_success_on_enter_iso15693_3(NfcApp* instance) {
furi_string_free(temp_str);
}

static NfcCommand
nfc_scene_emulate_listener_callback_iso15693_3(NfcGenericEvent event, void* context) {
furi_assert(context);
furi_assert(event.protocol == NfcProtocolIso15693_3);
furi_assert(event.data);

NfcApp* nfc = context;
Iso15693_3ListenerEvent* iso15693_3_event = event.data;

if(iso15693_3_event->type == Iso15693_3ListenerEventTypeCustomCommand) {
furi_string_cat_printf(nfc->text_box_store, "R:");
for(size_t i = 0; i < bit_buffer_get_size_bytes(iso15693_3_event->data->buffer); i++) {
furi_string_cat_printf(
nfc->text_box_store,
" %02X",
bit_buffer_get_byte(iso15693_3_event->data->buffer, i));
}
furi_string_push_back(nfc->text_box_store, '\n');
view_dispatcher_send_custom_event(nfc->view_dispatcher, NfcCustomEventListenerUpdate);
}

return NfcCommandContinue;
}

static void nfc_scene_emulate_on_enter_iso15693_3(NfcApp* instance) {
const Iso15693_3Data* data = nfc_device_get_data(instance->nfc_device, NfcProtocolIso15693_3);

instance->listener = nfc_listener_alloc(instance->nfc, NfcProtocolIso15693_3, data);
nfc_listener_start(
instance->listener, nfc_scene_emulate_listener_callback_iso15693_3, instance);
}

static bool nfc_scene_info_on_event_iso15693_3(NfcApp* instance, uint32_t event) {
if(event == GuiButtonTypeRight) {
scene_manager_next_scene(instance->scene_manager, NfcSceneNotImplemented);
Expand All @@ -77,7 +110,8 @@ static bool nfc_scene_saved_menu_on_event_iso15693_3(NfcApp* instance, uint32_t
}

const NfcProtocolSupportBase nfc_protocol_support_iso15693_3 = {
.features = NfcProtocolFeatureNone, // TODO: Implement better UID editing,
.features =
NfcProtocolFeatureEmulateFull, // | NfcProtocolFeatureEditUid, // TODO: Implement better UID editing

.scene_info =
{
Expand Down Expand Up @@ -106,7 +140,7 @@ const NfcProtocolSupportBase nfc_protocol_support_iso15693_3 = {
},
.scene_emulate =
{
.on_enter = NULL,
.on_enter = nfc_scene_emulate_on_enter_iso15693_3,
.on_event = NULL,
},
};
23 changes: 16 additions & 7 deletions firmware/targets/f7/api_symbols.csv
Original file line number Diff line number Diff line change
Expand Up @@ -182,6 +182,7 @@ Header,+,lib/one_wire/one_wire_host.h,,
Header,+,lib/one_wire/one_wire_slave.h,,
Header,+,lib/print/wrappers.h,,
Header,+,lib/pulse_reader/pulse_reader.h,,
Header,+,lib/signal_reader/signal_reader.h,,
Header,+,lib/stm32wb_hal/Inc/stm32wbxx_ll_adc.h,,
Header,+,lib/stm32wb_hal/Inc/stm32wbxx_ll_bus.h,,
Header,+,lib/stm32wb_hal/Inc/stm32wbxx_ll_comp.h,,
Expand Down Expand Up @@ -870,34 +871,35 @@ Function,-,expm1f,float,float
Function,-,expm1l,long double,long double
Function,-,f_hal_nfc_abort,FHalNfcError,
Function,-,f_hal_nfc_acquire,FHalNfcError,
Function,-,f_hal_nfc_event_start,FHalNfcError,
Function,+,f_hal_nfc_event_start,FHalNfcError,
Function,-,f_hal_nfc_init,FHalNfcError,
Function,-,f_hal_nfc_is_hal_ready,FHalNfcError,
Function,-,f_hal_nfc_listen_reset,FHalNfcError,
Function,-,f_hal_nfc_listen_start,FHalNfcError,
Function,-,f_hal_nfc_listener_disable_auto_col_res,FHalNfcError,
Function,+,f_hal_nfc_listener_reset,FHalNfcError,
Function,+,f_hal_nfc_listener_rx,FHalNfcError,"uint8_t*, size_t, size_t*"
Function,+,f_hal_nfc_listener_rx_start,FHalNfcError,
Function,-,f_hal_nfc_listener_sleep,FHalNfcError,
Function,+,f_hal_nfc_listener_start,FHalNfcError,
Function,-,f_hal_nfc_listener_tx,FHalNfcError,"const uint8_t*, size_t"
Function,-,f_hal_nfc_listener_wait_event,FHalNfcEvent,uint32_t
Function,-,f_hal_nfc_low_power_mode_start,FHalNfcError,
Function,-,f_hal_nfc_low_power_mode_stop,FHalNfcError,
Function,-,f_hal_nfc_poller_field_on,FHalNfcError,
Function,-,f_hal_nfc_poller_rx,FHalNfcError,"uint8_t*, size_t, size_t*"
Function,-,f_hal_nfc_poller_tx,FHalNfcError,"const uint8_t*, size_t"
Function,-,f_hal_nfc_poller_tx_custom_parity,FHalNfcError,"const uint8_t*, size_t"
Function,-,f_hal_nfc_poller_wait_event,FHalNfcEvent,uint32_t
Function,-,f_hal_nfc_release,FHalNfcError,
Function,-,f_hal_nfc_reset_mode,FHalNfcError,
Function,-,f_hal_nfc_set_mask_receive_timer,void,uint32_t
Function,-,f_hal_nfc_set_mode,FHalNfcError,"FHalNfcMode, FHalNfcBitrate"
Function,+,f_hal_nfc_set_mode,FHalNfcError,"FHalNfcMode, FHalNfcTech"
Function,-,f_hal_nfc_timer_block_tx_is_running,_Bool,
Function,-,f_hal_nfc_timer_block_tx_start,void,uint32_t
Function,-,f_hal_nfc_timer_block_tx_start_us,void,uint32_t
Function,-,f_hal_nfc_timer_block_tx_stop,void,
Function,-,f_hal_nfc_timer_fwt_start,void,uint32_t
Function,-,f_hal_nfc_timer_fwt_stop,void,
Function,-,f_hal_nfc_trx_reset,FHalNfcError,
Function,-,f_hal_nfc_wait_event,FHalNfcEvent,uint32_t
Function,-,f_hal_nfca_listener_deinit,FHalNfcError,
Function,-,f_hal_nfca_listener_init,FHalNfcError,
Function,-,f_hal_nfca_listener_tx_custom_parity,FHalNfcError,"const uint8_t*, const _Bool*, size_t"
Function,-,f_hal_nfca_receive_sdd_frame,FHalNfcError,"uint8_t*, size_t, size_t*"
Function,-,f_hal_nfca_send_sdd_frame,FHalNfcError,"const uint8_t*, size_t"
Expand Down Expand Up @@ -2668,6 +2670,13 @@ Function,+,sha256_finish,void,"sha256_context*, unsigned char[32]"
Function,+,sha256_process,void,sha256_context*
Function,+,sha256_start,void,sha256_context*
Function,+,sha256_update,void,"sha256_context*, const unsigned char*, unsigned int"
Function,+,signal_reader_alloc,SignalReader*,"const GpioPin*, uint32_t"
Function,+,signal_reader_free,void,SignalReader*
Function,+,signal_reader_set_polarity,void,"SignalReader*, SignalReaderPolarity"
Function,+,signal_reader_set_pull,void,"SignalReader*, GpioPull"
Function,+,signal_reader_set_sample_rate,void,"SignalReader*, SignalReaderTimeUnit, uint32_t"
Function,+,signal_reader_start,void,"SignalReader*, SignalReaderCallback, void*"
Function,+,signal_reader_stop,void,SignalReader*
Function,+,simple_array_alloc,SimpleArray*,const SimpleArrayConfig*
Function,+,simple_array_cget,const SimpleArrayElement*,"const SimpleArray*, uint32_t"
Function,+,simple_array_cget_data,const SimpleArrayData*,const SimpleArray*
Expand Down
Loading