[FL-3637] NFC RC fixes (#3165)
* firmware: remove nfc lib build settings section * furi hal nfc: fix nfc irq gpio deinit * lib nfc: remove deprecated exception from sources * nfc: use ASK demodulator in transparent mode * mf ultralight: add upper page bound for NTAGI2C1K * furi hal nfc: set event if nfc event was started * nfc: fix PVS warnings * lib signal reader: remove gpio pull setting in alloc * furi: added math.h include for compatibility with existing apps * nfc: remove resolved TODO in mf desfire poller * bump api symbol version Co-authored-by: hedger <hedger@nanode.su> Co-authored-by: あく <alleteam@gmail.com>
This commit is contained in:
		
							parent
							
								
									844e0f10e5
								
							
						
					
					
						commit
						3d872cf37a
					
				@ -71,15 +71,6 @@ env = ENV.Clone(
 | 
				
			|||||||
                "FURI_DEBUG" if ENV["DEBUG"] else "FURI_NDEBUG",
 | 
					                "FURI_DEBUG" if ENV["DEBUG"] else "FURI_NDEBUG",
 | 
				
			||||||
            ],
 | 
					            ],
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
        "nfc": {
 | 
					 | 
				
			||||||
            "CCFLAGS": [
 | 
					 | 
				
			||||||
                "-Og",
 | 
					 | 
				
			||||||
            ],
 | 
					 | 
				
			||||||
            "CPPDEFINES": [
 | 
					 | 
				
			||||||
                "NDEBUG",
 | 
					 | 
				
			||||||
                "FURI_DEBUG",
 | 
					 | 
				
			||||||
            ],
 | 
					 | 
				
			||||||
        },
 | 
					 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    FW_API_TABLE=None,
 | 
					    FW_API_TABLE=None,
 | 
				
			||||||
    _APP_ICONS=None,
 | 
					    _APP_ICONS=None,
 | 
				
			||||||
 | 
				
			|||||||
@ -1,5 +1,5 @@
 | 
				
			|||||||
entry,status,name,type,params
 | 
					entry,status,name,type,params
 | 
				
			||||||
Version,+,40.0,,
 | 
					Version,+,40.1,,
 | 
				
			||||||
Header,+,applications/services/bt/bt_service/bt.h,,
 | 
					Header,+,applications/services/bt/bt_service/bt.h,,
 | 
				
			||||||
Header,+,applications/services/cli/cli.h,,
 | 
					Header,+,applications/services/cli/cli.h,,
 | 
				
			||||||
Header,+,applications/services/cli/cli_vcp.h,,
 | 
					Header,+,applications/services/cli/cli_vcp.h,,
 | 
				
			||||||
 | 
				
			|||||||
		
		
			
  | 
@ -1,5 +1,5 @@
 | 
				
			|||||||
entry,status,name,type,params
 | 
					entry,status,name,type,params
 | 
				
			||||||
Version,+,40.0,,
 | 
					Version,+,40.1,,
 | 
				
			||||||
Header,+,applications/drivers/subghz/cc1101_ext/cc1101_ext_interconnect.h,,
 | 
					Header,+,applications/drivers/subghz/cc1101_ext/cc1101_ext_interconnect.h,,
 | 
				
			||||||
Header,+,applications/services/bt/bt_service/bt.h,,
 | 
					Header,+,applications/services/bt/bt_service/bt.h,,
 | 
				
			||||||
Header,+,applications/services/cli/cli.h,,
 | 
					Header,+,applications/services/cli/cli.h,,
 | 
				
			||||||
 | 
				
			|||||||
		
		
			
  | 
@ -25,9 +25,10 @@ FuriHalNfcError furi_hal_nfc_event_stop() {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
void furi_hal_nfc_event_set(FuriHalNfcEventInternalType event) {
 | 
					void furi_hal_nfc_event_set(FuriHalNfcEventInternalType event) {
 | 
				
			||||||
    furi_assert(furi_hal_nfc_event);
 | 
					    furi_assert(furi_hal_nfc_event);
 | 
				
			||||||
    furi_assert(furi_hal_nfc_event->thread);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if(furi_hal_nfc_event->thread) {
 | 
				
			||||||
        furi_thread_flags_set(furi_hal_nfc_event->thread, event);
 | 
					        furi_thread_flags_set(furi_hal_nfc_event->thread, event);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
FuriHalNfcError furi_hal_nfc_abort() {
 | 
					FuriHalNfcError furi_hal_nfc_abort() {
 | 
				
			||||||
 | 
				
			|||||||
@ -23,6 +23,6 @@ void furi_hal_nfc_init_gpio_isr() {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void furi_hal_nfc_deinit_gpio_isr() {
 | 
					void furi_hal_nfc_deinit_gpio_isr() {
 | 
				
			||||||
    furi_hal_gpio_init(&gpio_nfc_irq_rfid_pull, GpioModeOutputOpenDrain, GpioPullNo, GpioSpeedLow);
 | 
					 | 
				
			||||||
    furi_hal_gpio_remove_int_callback(&gpio_nfc_irq_rfid_pull);
 | 
					    furi_hal_gpio_remove_int_callback(&gpio_nfc_irq_rfid_pull);
 | 
				
			||||||
 | 
					    furi_hal_gpio_init(&gpio_nfc_irq_rfid_pull, GpioModeAnalog, GpioPullNo, GpioSpeedLow);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -48,7 +48,7 @@ static FuriHalNfcIso15693Listener* furi_hal_nfc_iso15693_listener_alloc() {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    instance->signal = iso15693_signal_alloc(&gpio_spi_r_mosi);
 | 
					    instance->signal = iso15693_signal_alloc(&gpio_spi_r_mosi);
 | 
				
			||||||
    instance->parser =
 | 
					    instance->parser =
 | 
				
			||||||
        iso15693_parser_alloc(&gpio_spi_r_miso, FURI_HAL_NFC_ISO15693_MAX_FRAME_SIZE);
 | 
					        iso15693_parser_alloc(&gpio_nfc_irq_rfid_pull, FURI_HAL_NFC_ISO15693_MAX_FRAME_SIZE);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return instance;
 | 
					    return instance;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -24,6 +24,9 @@
 | 
				
			|||||||
// FreeRTOS timer, REMOVE AFTER REFACTORING
 | 
					// FreeRTOS timer, REMOVE AFTER REFACTORING
 | 
				
			||||||
#include <timers.h>
 | 
					#include <timers.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Workaround for math.h leaking through HAL in older versions
 | 
				
			||||||
 | 
					#include <math.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef __cplusplus
 | 
					#ifdef __cplusplus
 | 
				
			||||||
extern "C" {
 | 
					extern "C" {
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
				
			|||||||
@ -51,7 +51,7 @@ env.Append(
 | 
				
			|||||||
libenv = env.Clone(FW_LIB_NAME="nfc")
 | 
					libenv = env.Clone(FW_LIB_NAME="nfc")
 | 
				
			||||||
libenv.ApplyLibFlags()
 | 
					libenv.ApplyLibFlags()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
sources = libenv.GlobRecursive("*.c*", exclude="deprecated/*c")
 | 
					sources = libenv.GlobRecursive("*.c*")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
lib = libenv.StaticLibrary("${FW_LIB_NAME}", sources)
 | 
					lib = libenv.StaticLibrary("${FW_LIB_NAME}", sources)
 | 
				
			||||||
libenv.Install("${LIB_DIST_DIR}", lib)
 | 
					libenv.Install("${LIB_DIST_DIR}", lib)
 | 
				
			||||||
 | 
				
			|||||||
@ -297,7 +297,7 @@ bool mf_ultralight_load(MfUltralightData* data, FlipperFormat* ff, uint32_t vers
 | 
				
			|||||||
        uint32_t pages_total = 0;
 | 
					        uint32_t pages_total = 0;
 | 
				
			||||||
        if(!flipper_format_read_uint32(ff, MF_ULTRALIGHT_PAGES_TOTAL_KEY, &pages_total, 1)) break;
 | 
					        if(!flipper_format_read_uint32(ff, MF_ULTRALIGHT_PAGES_TOTAL_KEY, &pages_total, 1)) break;
 | 
				
			||||||
        uint32_t pages_read = 0;
 | 
					        uint32_t pages_read = 0;
 | 
				
			||||||
        if(data_format_version < mf_ultralight_data_format_version) {
 | 
					        if(data_format_version < mf_ultralight_data_format_version) { //-V547
 | 
				
			||||||
            pages_read = pages_total;
 | 
					            pages_read = pages_total;
 | 
				
			||||||
        } else {
 | 
					        } else {
 | 
				
			||||||
            if(!flipper_format_read_uint32(ff, MF_ULTRALIGHT_PAGES_READ_KEY, &pages_read, 1))
 | 
					            if(!flipper_format_read_uint32(ff, MF_ULTRALIGHT_PAGES_READ_KEY, &pages_read, 1))
 | 
				
			||||||
 | 
				
			|||||||
@ -518,6 +518,8 @@ static uint16_t mf_ultralight_get_upper_page_bound(MfUltralightType type) {
 | 
				
			|||||||
        upper_page_bound = 511;
 | 
					        upper_page_bound = 511;
 | 
				
			||||||
    else if(type == MfUltralightTypeNTAGI2C2K)
 | 
					    else if(type == MfUltralightTypeNTAGI2C2K)
 | 
				
			||||||
        upper_page_bound = 479;
 | 
					        upper_page_bound = 479;
 | 
				
			||||||
 | 
					    else if(type == MfUltralightTypeNTAGI2C1K)
 | 
				
			||||||
 | 
					        upper_page_bound = 225;
 | 
				
			||||||
    else {
 | 
					    else {
 | 
				
			||||||
        upper_page_bound = mf_ultralight_get_config_page_num(type) - 2;
 | 
					        upper_page_bound = mf_ultralight_get_config_page_num(type) - 2;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
				
			|||||||
@ -68,7 +68,7 @@ Iso15693Parser* iso15693_parser_alloc(const GpioPin* pin, size_t max_frame_size)
 | 
				
			|||||||
    signal_reader_set_sample_rate(
 | 
					    signal_reader_set_sample_rate(
 | 
				
			||||||
        instance->signal_reader, SignalReaderTimeUnit64Mhz, ISO15693_PARSER_BITRATE_F64MHZ);
 | 
					        instance->signal_reader, SignalReaderTimeUnit64Mhz, ISO15693_PARSER_BITRATE_F64MHZ);
 | 
				
			||||||
    signal_reader_set_pull(instance->signal_reader, GpioPullDown);
 | 
					    signal_reader_set_pull(instance->signal_reader, GpioPullDown);
 | 
				
			||||||
    signal_reader_set_polarity(instance->signal_reader, SignalReaderPolarityInverted);
 | 
					    signal_reader_set_polarity(instance->signal_reader, SignalReaderPolarityNormal);
 | 
				
			||||||
    signal_reader_set_trigger(instance->signal_reader, SignalReaderTriggerRisingFallingEdge);
 | 
					    signal_reader_set_trigger(instance->signal_reader, SignalReaderTriggerRisingFallingEdge);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return instance;
 | 
					    return instance;
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user