mirror of
https://github.com/Next-Flip/Momentum-Firmware.git
synced 2026-07-07 22:58:10 -07:00
Merge branch 'dev' into shutdown_idle
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
entry,status,name,type,params
|
||||
Version,+,3.6,,
|
||||
Version,+,7.0,,
|
||||
Header,+,applications/services/bt/bt_service/bt.h,,
|
||||
Header,+,applications/services/cli/cli.h,,
|
||||
Header,+,applications/services/cli/cli_vcp.h,,
|
||||
@@ -260,6 +260,8 @@ Function,-,__eprintf,void,"const char*, const char*, unsigned int, const char*"
|
||||
Function,+,__errno,int*,
|
||||
Function,-,__fpclassifyd,int,double
|
||||
Function,-,__fpclassifyf,int,float
|
||||
Function,+,__furi_crash,void,
|
||||
Function,+,__furi_halt,void,
|
||||
Function,-,__getdelim,ssize_t,"char**, size_t*, int, FILE*"
|
||||
Function,-,__getline,ssize_t,"char**, size_t*, FILE*"
|
||||
Function,-,__isinfd,int,double
|
||||
@@ -891,7 +893,6 @@ Function,-,ftello,off_t,FILE*
|
||||
Function,-,ftrylockfile,int,FILE*
|
||||
Function,-,funlockfile,void,FILE*
|
||||
Function,-,funopen,FILE*,"const void*, int (*)(void*, char*, int), int (*)(void*, const char*, int), fpos_t (*)(void*, fpos_t, int), int (*)(void*)"
|
||||
Function,+,furi_crash,void,const char*
|
||||
Function,+,furi_delay_ms,void,uint32_t
|
||||
Function,+,furi_delay_tick,void,uint32_t
|
||||
Function,+,furi_delay_until_tick,FuriStatus,uint32_t
|
||||
@@ -1308,7 +1309,6 @@ Function,+,furi_hal_version_uid,const uint8_t*,
|
||||
Function,+,furi_hal_version_uid_size,size_t,
|
||||
Function,-,furi_hal_vibro_init,void,
|
||||
Function,+,furi_hal_vibro_on,void,_Bool
|
||||
Function,+,furi_halt,void,const char*
|
||||
Function,-,furi_init,void,
|
||||
Function,+,furi_kernel_get_tick_frequency,uint32_t,
|
||||
Function,+,furi_kernel_lock,int32_t,
|
||||
@@ -2272,21 +2272,26 @@ Function,-,subghz_keystore_raw_encrypted_save,_Bool,"const char*, const char*, u
|
||||
Function,-,subghz_keystore_raw_get_data,_Bool,"const char*, size_t, uint8_t*, size_t"
|
||||
Function,-,subghz_keystore_save,_Bool,"SubGhzKeystore*, const char*, uint8_t*"
|
||||
Function,+,subghz_protocol_blocks_add_bit,void,"SubGhzBlockDecoder*, uint8_t"
|
||||
Function,+,subghz_protocol_blocks_crc16,uint16_t,"const uint8_t[], unsigned, uint16_t, uint16_t"
|
||||
Function,+,subghz_protocol_blocks_crc16lsb,uint16_t,"const uint8_t[], unsigned, uint16_t, uint16_t"
|
||||
Function,+,subghz_protocol_blocks_crc4,uint8_t,"const uint8_t[], unsigned, uint8_t, uint8_t"
|
||||
Function,+,subghz_protocol_blocks_crc7,uint8_t,"const uint8_t[], unsigned, uint8_t, uint8_t"
|
||||
Function,+,subghz_protocol_blocks_crc8,uint8_t,"const uint8_t[], unsigned, uint8_t, uint8_t"
|
||||
Function,+,subghz_protocol_blocks_crc8le,uint8_t,"const uint8_t[], unsigned, uint8_t, uint8_t"
|
||||
Function,+,subghz_protocol_blocks_add_bytes,uint8_t,"const uint8_t[], size_t"
|
||||
Function,+,subghz_protocol_blocks_add_to_128_bit,void,"SubGhzBlockDecoder*, uint8_t, uint64_t*"
|
||||
Function,+,subghz_protocol_blocks_crc16,uint16_t,"const uint8_t[], size_t, uint16_t, uint16_t"
|
||||
Function,+,subghz_protocol_blocks_crc16lsb,uint16_t,"const uint8_t[], size_t, uint16_t, uint16_t"
|
||||
Function,+,subghz_protocol_blocks_crc4,uint8_t,"const uint8_t[], size_t, uint8_t, uint8_t"
|
||||
Function,+,subghz_protocol_blocks_crc7,uint8_t,"const uint8_t[], size_t, uint8_t, uint8_t"
|
||||
Function,+,subghz_protocol_blocks_crc8,uint8_t,"const uint8_t[], size_t, uint8_t, uint8_t"
|
||||
Function,+,subghz_protocol_blocks_crc8le,uint8_t,"const uint8_t[], size_t, uint8_t, uint8_t"
|
||||
Function,+,subghz_protocol_blocks_get_bit_array,_Bool,"uint8_t[], size_t"
|
||||
Function,+,subghz_protocol_blocks_get_hash_data,uint8_t,"SubGhzBlockDecoder*, size_t"
|
||||
Function,+,subghz_protocol_blocks_get_parity,uint8_t,"uint64_t, uint8_t"
|
||||
Function,+,subghz_protocol_blocks_get_upload,size_t,"uint8_t[], size_t, LevelDuration*, size_t, uint32_t"
|
||||
Function,+,subghz_protocol_blocks_lfsr_digest16,uint16_t,"const uint8_t[], unsigned, uint16_t, uint16_t"
|
||||
Function,+,subghz_protocol_blocks_lfsr_digest8,uint8_t,"const uint8_t[], unsigned, uint8_t, uint8_t"
|
||||
Function,+,subghz_protocol_blocks_lfsr_digest8_reflect,uint8_t,"const uint8_t[], int, uint8_t, uint8_t"
|
||||
Function,+,subghz_protocol_blocks_lfsr_digest16,uint16_t,"const uint8_t[], size_t, uint16_t, uint16_t"
|
||||
Function,+,subghz_protocol_blocks_lfsr_digest8,uint8_t,"const uint8_t[], size_t, uint8_t, uint8_t"
|
||||
Function,+,subghz_protocol_blocks_lfsr_digest8_reflect,uint8_t,"const uint8_t[], size_t, uint8_t, uint8_t"
|
||||
Function,+,subghz_protocol_blocks_parity8,uint8_t,uint8_t
|
||||
Function,+,subghz_protocol_blocks_parity_bytes,uint8_t,"const uint8_t[], size_t"
|
||||
Function,+,subghz_protocol_blocks_reverse_key,uint64_t,"uint64_t, uint8_t"
|
||||
Function,+,subghz_protocol_blocks_set_bit_array,void,"_Bool, uint8_t[], size_t, size_t"
|
||||
Function,+,subghz_protocol_blocks_xor_bytes,uint8_t,"const uint8_t[], size_t"
|
||||
Function,-,subghz_protocol_decoder_base_deserialize,_Bool,"SubGhzProtocolDecoderBase*, FlipperFormat*"
|
||||
Function,+,subghz_protocol_decoder_base_get_hash_data,uint8_t,SubGhzProtocolDecoderBase*
|
||||
Function,+,subghz_protocol_decoder_base_get_string,_Bool,"SubGhzProtocolDecoderBase*, FuriString*"
|
||||
@@ -2307,6 +2312,7 @@ Function,+,subghz_protocol_raw_file_encoder_worker_set_callback_end,void,"SubGhz
|
||||
Function,+,subghz_protocol_raw_gen_fff_data,void,"FlipperFormat*, const char*"
|
||||
Function,+,subghz_protocol_raw_get_sample_write,size_t,SubGhzProtocolDecoderRAW*
|
||||
Function,+,subghz_protocol_raw_save_to_file_init,_Bool,"SubGhzProtocolDecoderRAW*, const char*, SubGhzRadioPreset*"
|
||||
Function,+,subghz_protocol_raw_save_to_file_pause,void,"SubGhzProtocolDecoderRAW*, _Bool"
|
||||
Function,+,subghz_protocol_raw_save_to_file_stop,void,SubGhzProtocolDecoderRAW*
|
||||
Function,+,subghz_receiver_alloc_init,SubGhzReceiver*,SubGhzEnvironment*
|
||||
Function,+,subghz_receiver_decode,void,"SubGhzReceiver*, _Bool, uint32_t"
|
||||
@@ -2656,189 +2662,7 @@ Function,-,yn,double,"int, double"
|
||||
Function,-,ynf,float,"int, float"
|
||||
Variable,-,AHBPrescTable,const uint32_t[16],
|
||||
Variable,-,APBPrescTable,const uint32_t[8],
|
||||
Variable,+,A_125khz_14,const Icon,
|
||||
Variable,+,A_BadUsb_14,const Icon,
|
||||
Variable,+,A_Debug_14,const Icon,
|
||||
Variable,+,A_FileManager_14,const Icon,
|
||||
Variable,+,A_GPIO_14,const Icon,
|
||||
Variable,+,A_Infrared_14,const Icon,
|
||||
Variable,+,A_Levelup1_128x64,const Icon,
|
||||
Variable,+,A_Levelup2_128x64,const Icon,
|
||||
Variable,+,A_Loading_24,const Icon,
|
||||
Variable,+,A_NFC_14,const Icon,
|
||||
Variable,+,A_Plugins_14,const Icon,
|
||||
Variable,+,A_Round_loader_8x8,const Icon,
|
||||
Variable,+,A_Settings_14,const Icon,
|
||||
Variable,+,A_Sub1ghz_14,const Icon,
|
||||
Variable,+,A_U2F_14,const Icon,
|
||||
Variable,+,A_iButton_14,const Icon,
|
||||
Variable,-,ITM_RxBuffer,volatile int32_t,
|
||||
Variable,+,I_125_10px,const Icon,
|
||||
Variable,+,I_ActiveConnection_50x64,const Icon,
|
||||
Variable,+,I_ArrowC_1_36x36,const Icon,
|
||||
Variable,+,I_ArrowDownEmpty_14x15,const Icon,
|
||||
Variable,+,I_ArrowDownFilled_14x15,const Icon,
|
||||
Variable,+,I_ArrowUpEmpty_14x15,const Icon,
|
||||
Variable,+,I_ArrowUpFilled_14x15,const Icon,
|
||||
Variable,+,I_Attention_5x8,const Icon,
|
||||
Variable,+,I_Auth_62x31,const Icon,
|
||||
Variable,+,I_BLE_Pairing_128x64,const Icon,
|
||||
Variable,+,I_Background_128x11,const Icon,
|
||||
Variable,+,I_BatteryBody_52x28,const Icon,
|
||||
Variable,+,I_Battery_16x16,const Icon,
|
||||
Variable,+,I_Battery_26x8,const Icon,
|
||||
Variable,+,I_Ble_connected_15x15,const Icon,
|
||||
Variable,+,I_Ble_disconnected_15x15,const Icon,
|
||||
Variable,+,I_Bluetooth_Connected_16x8,const Icon,
|
||||
Variable,+,I_Bluetooth_Idle_5x8,const Icon,
|
||||
Variable,+,I_ButtonCenter_7x7,const Icon,
|
||||
Variable,+,I_ButtonDown_7x4,const Icon,
|
||||
Variable,+,I_ButtonLeftSmall_3x5,const Icon,
|
||||
Variable,+,I_ButtonLeft_4x7,const Icon,
|
||||
Variable,+,I_ButtonRightSmall_3x5,const Icon,
|
||||
Variable,+,I_ButtonRight_4x7,const Icon,
|
||||
Variable,+,I_ButtonUp_7x4,const Icon,
|
||||
Variable,+,I_Button_18x18,const Icon,
|
||||
Variable,+,I_Certification1_103x56,const Icon,
|
||||
Variable,+,I_Certification2_98x33,const Icon,
|
||||
Variable,+,I_Charging_lightning_9x10,const Icon,
|
||||
Variable,+,I_Charging_lightning_mask_9x10,const Icon,
|
||||
Variable,+,I_Circles_47x47,const Icon,
|
||||
Variable,+,I_Clock_18x18,const Icon,
|
||||
Variable,+,I_Connect_me_62x31,const Icon,
|
||||
Variable,+,I_Connected_62x31,const Icon,
|
||||
Variable,+,I_CoolHi_25x27,const Icon,
|
||||
Variable,+,I_CoolHi_hvr_25x27,const Icon,
|
||||
Variable,+,I_CoolLo_25x27,const Icon,
|
||||
Variable,+,I_CoolLo_hvr_25x27,const Icon,
|
||||
Variable,+,I_Cry_dolph_55x52,const Icon,
|
||||
Variable,+,I_DFU_128x50,const Icon,
|
||||
Variable,+,I_Dehumidify_25x27,const Icon,
|
||||
Variable,+,I_Dehumidify_hvr_25x27,const Icon,
|
||||
Variable,+,I_Detailed_chip_17x13,const Icon,
|
||||
Variable,+,I_DolphinCommon_56x48,const Icon,
|
||||
Variable,+,I_DolphinMafia_115x62,const Icon,
|
||||
Variable,+,I_DolphinNice_96x59,const Icon,
|
||||
Variable,+,I_DolphinReadingSuccess_59x63,const Icon,
|
||||
Variable,+,I_DolphinWait_61x59,const Icon,
|
||||
Variable,+,I_DoorLeft_70x55,const Icon,
|
||||
Variable,+,I_DoorRight_70x55,const Icon,
|
||||
Variable,+,I_Down_25x27,const Icon,
|
||||
Variable,+,I_Down_hvr_25x27,const Icon,
|
||||
Variable,+,I_Drive_112x35,const Icon,
|
||||
Variable,+,I_Error_18x18,const Icon,
|
||||
Variable,+,I_Error_62x31,const Icon,
|
||||
Variable,+,I_EviSmile1_18x21,const Icon,
|
||||
Variable,+,I_EviSmile2_18x21,const Icon,
|
||||
Variable,+,I_EviWaiting1_18x21,const Icon,
|
||||
Variable,+,I_EviWaiting2_18x21,const Icon,
|
||||
Variable,+,I_FaceCharging_29x14,const Icon,
|
||||
Variable,+,I_FaceConfused_29x14,const Icon,
|
||||
Variable,+,I_FaceNopower_29x14,const Icon,
|
||||
Variable,+,I_FaceNormal_29x14,const Icon,
|
||||
Variable,+,I_GameMode_11x8,const Icon,
|
||||
Variable,+,I_Health_16x16,const Icon,
|
||||
Variable,+,I_HeatHi_25x27,const Icon,
|
||||
Variable,+,I_HeatHi_hvr_25x27,const Icon,
|
||||
Variable,+,I_HeatLo_25x27,const Icon,
|
||||
Variable,+,I_HeatLo_hvr_25x27,const Icon,
|
||||
Variable,+,I_InfraredArrowDown_4x8,const Icon,
|
||||
Variable,+,I_InfraredArrowUp_4x8,const Icon,
|
||||
Variable,+,I_InfraredLearnShort_128x31,const Icon,
|
||||
Variable,+,I_KeyBackspaceSelected_16x9,const Icon,
|
||||
Variable,+,I_KeyBackspace_16x9,const Icon,
|
||||
Variable,+,I_KeySaveSelected_24x11,const Icon,
|
||||
Variable,+,I_KeySave_24x11,const Icon,
|
||||
Variable,+,I_Keychain_39x36,const Icon,
|
||||
Variable,+,I_Left_mouse_icon_9x9,const Icon,
|
||||
Variable,+,I_Lock_7x8,const Icon,
|
||||
Variable,+,I_Lock_8x8,const Icon,
|
||||
Variable,+,I_MHz_25x11,const Icon,
|
||||
Variable,+,I_Medium_chip_22x21,const Icon,
|
||||
Variable,+,I_Modern_reader_18x34,const Icon,
|
||||
Variable,+,I_Move_flipper_26x39,const Icon,
|
||||
Variable,+,I_Mute_25x27,const Icon,
|
||||
Variable,+,I_Mute_hvr_25x27,const Icon,
|
||||
Variable,+,I_NFC_manual_60x50,const Icon,
|
||||
Variable,+,I_Nfc_10px,const Icon,
|
||||
Variable,+,I_Off_25x27,const Icon,
|
||||
Variable,+,I_Off_hvr_25x27,const Icon,
|
||||
Variable,+,I_Ok_btn_9x9,const Icon,
|
||||
Variable,+,I_Ok_btn_pressed_13x13,const Icon,
|
||||
Variable,+,I_Percent_10x14,const Icon,
|
||||
Variable,+,I_Pin_arrow_down_7x9,const Icon,
|
||||
Variable,+,I_Pin_arrow_left_9x7,const Icon,
|
||||
Variable,+,I_Pin_arrow_right_9x7,const Icon,
|
||||
Variable,+,I_Pin_arrow_up_7x9,const Icon,
|
||||
Variable,+,I_Pin_attention_dpad_29x29,const Icon,
|
||||
Variable,+,I_Pin_back_arrow_10x8,const Icon,
|
||||
Variable,+,I_Pin_back_full_40x8,const Icon,
|
||||
Variable,+,I_Pin_pointer_5x3,const Icon,
|
||||
Variable,+,I_Pin_star_7x7,const Icon,
|
||||
Variable,+,I_Power_25x27,const Icon,
|
||||
Variable,+,I_Power_hvr_25x27,const Icon,
|
||||
Variable,+,I_Pressed_Button_13x13,const Icon,
|
||||
Variable,+,I_Quest_7x8,const Icon,
|
||||
Variable,+,I_RFIDBigChip_37x36,const Icon,
|
||||
Variable,+,I_RFIDDolphinReceive_97x61,const Icon,
|
||||
Variable,+,I_RFIDDolphinSend_97x61,const Icon,
|
||||
Variable,+,I_RFIDDolphinSuccess_108x57,const Icon,
|
||||
Variable,+,I_Reader_detect_43x40,const Icon,
|
||||
Variable,+,I_Release_arrow_18x15,const Icon,
|
||||
Variable,+,I_Restoring_38x32,const Icon,
|
||||
Variable,+,I_Right_mouse_icon_9x9,const Icon,
|
||||
Variable,+,I_SDQuestion_35x43,const Icon,
|
||||
Variable,+,I_SDcardFail_11x8,const Icon,
|
||||
Variable,+,I_SDcardMounted_11x8,const Icon,
|
||||
Variable,+,I_Scanning_123x52,const Icon,
|
||||
Variable,+,I_SmallArrowDown_3x5,const Icon,
|
||||
Variable,+,I_SmallArrowDown_4x7,const Icon,
|
||||
Variable,+,I_SmallArrowUp_3x5,const Icon,
|
||||
Variable,+,I_SmallArrowUp_4x7,const Icon,
|
||||
Variable,+,I_Smile_18x18,const Icon,
|
||||
Variable,+,I_Space_65x18,const Icon,
|
||||
Variable,+,I_Tap_reader_36x38,const Icon,
|
||||
Variable,+,I_Temperature_16x16,const Icon,
|
||||
Variable,+,I_Unlock_7x8,const Icon,
|
||||
Variable,+,I_Unplug_bg_bottom_128x10,const Icon,
|
||||
Variable,+,I_Unplug_bg_top_128x14,const Icon,
|
||||
Variable,+,I_Up_25x27,const Icon,
|
||||
Variable,+,I_Up_hvr_25x27,const Icon,
|
||||
Variable,+,I_Updating_32x40,const Icon,
|
||||
Variable,+,I_UsbTree_48x22,const Icon,
|
||||
Variable,+,I_Vol_down_25x27,const Icon,
|
||||
Variable,+,I_Vol_down_hvr_25x27,const Icon,
|
||||
Variable,+,I_Vol_up_25x27,const Icon,
|
||||
Variable,+,I_Vol_up_hvr_25x27,const Icon,
|
||||
Variable,+,I_Voldwn_6x6,const Icon,
|
||||
Variable,+,I_Voltage_16x16,const Icon,
|
||||
Variable,+,I_Volup_8x6,const Icon,
|
||||
Variable,+,I_WarningDolphin_45x42,const Icon,
|
||||
Variable,+,I_Warning_30x23,const Icon,
|
||||
Variable,+,I_back_10px,const Icon,
|
||||
Variable,+,I_badusb_10px,const Icon,
|
||||
Variable,+,I_dir_10px,const Icon,
|
||||
Variable,+,I_iButtonDolphinVerySuccess_108x52,const Icon,
|
||||
Variable,+,I_iButtonKey_49x44,const Icon,
|
||||
Variable,+,I_ibutt_10px,const Icon,
|
||||
Variable,+,I_ir_10px,const Icon,
|
||||
Variable,+,I_loading_10px,const Icon,
|
||||
Variable,+,I_music_10px,const Icon,
|
||||
Variable,+,I_passport_bad1_46x49,const Icon,
|
||||
Variable,+,I_passport_bad2_46x49,const Icon,
|
||||
Variable,+,I_passport_bad3_46x49,const Icon,
|
||||
Variable,+,I_passport_bottom_128x18,const Icon,
|
||||
Variable,+,I_passport_happy1_46x49,const Icon,
|
||||
Variable,+,I_passport_happy2_46x49,const Icon,
|
||||
Variable,+,I_passport_happy3_46x49,const Icon,
|
||||
Variable,+,I_passport_left_6x46,const Icon,
|
||||
Variable,+,I_passport_okay1_46x49,const Icon,
|
||||
Variable,+,I_passport_okay2_46x49,const Icon,
|
||||
Variable,+,I_passport_okay3_46x49,const Icon,
|
||||
Variable,+,I_sub1_10px,const Icon,
|
||||
Variable,+,I_u2f_10px,const Icon,
|
||||
Variable,+,I_unknown_10px,const Icon,
|
||||
Variable,+,I_update_10px,const Icon,
|
||||
Variable,-,MSIRangeTable,const uint32_t[16],
|
||||
Variable,-,SmpsPrescalerTable,const uint32_t[4][6],
|
||||
Variable,+,SystemCoreClock,uint32_t,
|
||||
|
||||
|
Executable → Regular
@@ -36,5 +36,6 @@ bool furi_hal_cortex_timer_is_expired(FuriHalCortexTimer cortex_timer) {
|
||||
}
|
||||
|
||||
void furi_hal_cortex_timer_wait(FuriHalCortexTimer cortex_timer) {
|
||||
while(!furi_hal_cortex_timer_is_expired(cortex_timer));
|
||||
while(!furi_hal_cortex_timer_is_expired(cortex_timer))
|
||||
;
|
||||
}
|
||||
@@ -620,6 +620,10 @@ uint16_t furi_hal_nfc_bitstream_to_data_and_parity(
|
||||
uint16_t in_buff_bits,
|
||||
uint8_t* out_data,
|
||||
uint8_t* out_parity) {
|
||||
if(in_buff_bits < 8) {
|
||||
out_data[0] = in_buff[0];
|
||||
return in_buff_bits;
|
||||
}
|
||||
if(in_buff_bits % 9 != 0) {
|
||||
return 0;
|
||||
}
|
||||
@@ -635,7 +639,7 @@ uint16_t furi_hal_nfc_bitstream_to_data_and_parity(
|
||||
bit_processed += 9;
|
||||
curr_byte++;
|
||||
}
|
||||
return curr_byte;
|
||||
return curr_byte * 8;
|
||||
}
|
||||
|
||||
bool furi_hal_nfc_tx_rx(FuriHalNfcTxRxContext* tx_rx, uint16_t timeout_ms) {
|
||||
@@ -692,8 +696,8 @@ bool furi_hal_nfc_tx_rx(FuriHalNfcTxRxContext* tx_rx, uint16_t timeout_ms) {
|
||||
|
||||
if(tx_rx->tx_rx_type == FuriHalNfcTxRxTypeRaw ||
|
||||
tx_rx->tx_rx_type == FuriHalNfcTxRxTypeRxRaw) {
|
||||
tx_rx->rx_bits = 8 * furi_hal_nfc_bitstream_to_data_and_parity(
|
||||
temp_rx_buff, *temp_rx_bits, tx_rx->rx_data, tx_rx->rx_parity);
|
||||
tx_rx->rx_bits = furi_hal_nfc_bitstream_to_data_and_parity(
|
||||
temp_rx_buff, *temp_rx_bits, tx_rx->rx_data, tx_rx->rx_parity);
|
||||
} else {
|
||||
memcpy(tx_rx->rx_data, temp_rx_buff, MIN(*temp_rx_bits / 8, FURI_HAL_NFC_DATA_BUFF_SIZE));
|
||||
tx_rx->rx_bits = *temp_rx_bits;
|
||||
|
||||
@@ -111,7 +111,7 @@ bool furi_hal_nfc_is_busy();
|
||||
*
|
||||
* @return true if initialized
|
||||
*/
|
||||
bool furi_hal_nfc_is_init();
|
||||
bool furi_hal_nfc_is_init();
|
||||
|
||||
/** NFC field on
|
||||
*/
|
||||
@@ -234,7 +234,6 @@ void furi_hal_nfc_sleep();
|
||||
|
||||
void furi_hal_nfc_stop();
|
||||
|
||||
|
||||
/* Low level transport API, use it to implement your own transport layers */
|
||||
|
||||
#define furi_hal_nfc_ll_ms2fc rfalConvMsTo1fc
|
||||
@@ -250,7 +249,8 @@ typedef enum {
|
||||
FuriHalNfcReturnBusy = 2, /*!< device or resource busy */
|
||||
FuriHalNfcReturnIo = 3, /*!< generic IO error */
|
||||
FuriHalNfcReturnTimeout = 4, /*!< error due to timeout */
|
||||
FuriHalNfcReturnRequest = 5, /*!< invalid request or requested function can't be executed at the moment */
|
||||
FuriHalNfcReturnRequest =
|
||||
5, /*!< invalid request or requested function can't be executed at the moment */
|
||||
FuriHalNfcReturnNomsg = 6, /*!< No message of desired type */
|
||||
FuriHalNfcReturnParam = 7, /*!< Parameter error */
|
||||
FuriHalNfcReturnSystem = 8, /*!< System error */
|
||||
@@ -261,20 +261,23 @@ typedef enum {
|
||||
FuriHalNfcReturnAgain = 13, /*!< Call again */
|
||||
FuriHalNfcReturnMemCorrupt = 14, /*!< memory corruption */
|
||||
FuriHalNfcReturnNotImplemented = 15, /*!< not implemented */
|
||||
FuriHalNfcReturnPcCorrupt = 16, /*!< Program Counter has been manipulated or spike/noise trigger illegal operation */
|
||||
FuriHalNfcReturnPcCorrupt =
|
||||
16, /*!< Program Counter has been manipulated or spike/noise trigger illegal operation */
|
||||
FuriHalNfcReturnSend = 17, /*!< error sending*/
|
||||
FuriHalNfcReturnIgnore = 18, /*!< indicates error detected but to be ignored */
|
||||
FuriHalNfcReturnSemantic = 19, /*!< indicates error in state machine (unexpected cmd) */
|
||||
FuriHalNfcReturnSyntax = 20, /*!< indicates error in state machine (unknown cmd) */
|
||||
FuriHalNfcReturnCrc = 21, /*!< crc error */
|
||||
FuriHalNfcReturnNotfound = 22, /*!< transponder not found */
|
||||
FuriHalNfcReturnNotunique = 23, /*!< transponder not unique - more than one transponder in field */
|
||||
FuriHalNfcReturnNotunique =
|
||||
23, /*!< transponder not unique - more than one transponder in field */
|
||||
FuriHalNfcReturnNotsupp = 24, /*!< requested operation not supported */
|
||||
FuriHalNfcReturnWrite = 25, /*!< write error */
|
||||
FuriHalNfcReturnFifo = 26, /*!< fifo over or underflow error */
|
||||
FuriHalNfcReturnPar = 27, /*!< parity error */
|
||||
FuriHalNfcReturnDone = 28, /*!< transfer has already finished */
|
||||
FuriHalNfcReturnRfCollision = 29, /*!< collision error (Bit Collision or during RF Collision avoidance ) */
|
||||
FuriHalNfcReturnRfCollision =
|
||||
29, /*!< collision error (Bit Collision or during RF Collision avoidance ) */
|
||||
FuriHalNfcReturnHwOverrun = 30, /*!< lost one or more received bytes */
|
||||
FuriHalNfcReturnReleaseReq = 31, /*!< device requested release */
|
||||
FuriHalNfcReturnSleepReq = 32, /*!< device requested sleep */
|
||||
@@ -282,7 +285,8 @@ typedef enum {
|
||||
FuriHalNfcReturnMaxReruns = 34, /*!< blocking procedure reached maximum runs */
|
||||
FuriHalNfcReturnDisabled = 35, /*!< operation aborted due to disabled configuration */
|
||||
FuriHalNfcReturnHwMismatch = 36, /*!< expected hw do not match */
|
||||
FuriHalNfcReturnLinkLoss = 37, /*!< Other device's field didn't behave as expected: turned off by Initiator in Passive mode, or AP2P did not turn on field */
|
||||
FuriHalNfcReturnLinkLoss =
|
||||
37, /*!< Other device's field didn't behave as expected: turned off by Initiator in Passive mode, or AP2P did not turn on field */
|
||||
FuriHalNfcReturnInvalidHandle = 38, /*!< invalid or not initalized device handle */
|
||||
FuriHalNfcReturnIncompleteByte = 40, /*!< Incomplete byte rcvd */
|
||||
FuriHalNfcReturnIncompleteByte01 = 41, /*!< Incomplete byte rcvd - 1 bit */
|
||||
@@ -295,38 +299,40 @@ typedef enum {
|
||||
} FuriHalNfcReturn;
|
||||
|
||||
typedef enum {
|
||||
FuriHalNfcModeNone = 0, /*!< No mode selected/defined */
|
||||
FuriHalNfcModePollNfca = 1, /*!< Mode to perform as NFCA (ISO14443A) Poller (PCD) */
|
||||
FuriHalNfcModePollNfcaT1t = 2, /*!< Mode to perform as NFCA T1T (Topaz) Poller (PCD) */
|
||||
FuriHalNfcModePollNfcb = 3, /*!< Mode to perform as NFCB (ISO14443B) Poller (PCD) */
|
||||
FuriHalNfcModePollBPrime = 4, /*!< Mode to perform as B' Calypso (Innovatron) (PCD) */
|
||||
FuriHalNfcModePollBCts = 5, /*!< Mode to perform as CTS Poller (PCD) */
|
||||
FuriHalNfcModePollNfcf = 6, /*!< Mode to perform as NFCF (FeliCa) Poller (PCD) */
|
||||
FuriHalNfcModePollNfcv = 7, /*!< Mode to perform as NFCV (ISO15963) Poller (PCD) */
|
||||
FuriHalNfcModePollPicopass = 8, /*!< Mode to perform as PicoPass / iClass Poller (PCD) */
|
||||
FuriHalNfcModePollActiveP2p = 9, /*!< Mode to perform as Active P2P (ISO18092) Initiator */
|
||||
FuriHalNfcModeListenNfca = 10, /*!< Mode to perform as NFCA (ISO14443A) Listener (PICC) */
|
||||
FuriHalNfcModeListenNfcb = 11, /*!< Mode to perform as NFCA (ISO14443B) Listener (PICC) */
|
||||
FuriHalNfcModeListenNfcf = 12, /*!< Mode to perform as NFCA (ISO15963) Listener (PICC) */
|
||||
FuriHalNfcModeListenActiveP2p = 13 /*!< Mode to perform as Active P2P (ISO18092) Target */
|
||||
FuriHalNfcModeNone = 0, /*!< No mode selected/defined */
|
||||
FuriHalNfcModePollNfca = 1, /*!< Mode to perform as NFCA (ISO14443A) Poller (PCD) */
|
||||
FuriHalNfcModePollNfcaT1t = 2, /*!< Mode to perform as NFCA T1T (Topaz) Poller (PCD) */
|
||||
FuriHalNfcModePollNfcb = 3, /*!< Mode to perform as NFCB (ISO14443B) Poller (PCD) */
|
||||
FuriHalNfcModePollBPrime = 4, /*!< Mode to perform as B' Calypso (Innovatron) (PCD) */
|
||||
FuriHalNfcModePollBCts = 5, /*!< Mode to perform as CTS Poller (PCD) */
|
||||
FuriHalNfcModePollNfcf = 6, /*!< Mode to perform as NFCF (FeliCa) Poller (PCD) */
|
||||
FuriHalNfcModePollNfcv = 7, /*!< Mode to perform as NFCV (ISO15963) Poller (PCD) */
|
||||
FuriHalNfcModePollPicopass = 8, /*!< Mode to perform as PicoPass / iClass Poller (PCD) */
|
||||
FuriHalNfcModePollActiveP2p = 9, /*!< Mode to perform as Active P2P (ISO18092) Initiator */
|
||||
FuriHalNfcModeListenNfca = 10, /*!< Mode to perform as NFCA (ISO14443A) Listener (PICC) */
|
||||
FuriHalNfcModeListenNfcb = 11, /*!< Mode to perform as NFCA (ISO14443B) Listener (PICC) */
|
||||
FuriHalNfcModeListenNfcf = 12, /*!< Mode to perform as NFCA (ISO15963) Listener (PICC) */
|
||||
FuriHalNfcModeListenActiveP2p = 13 /*!< Mode to perform as Active P2P (ISO18092) Target */
|
||||
} FuriHalNfcMode;
|
||||
|
||||
typedef enum {
|
||||
FuriHalNfcBitrate106 = 0, /*!< Bit Rate 106 kbit/s (fc/128) */
|
||||
FuriHalNfcBitrate212 = 1, /*!< Bit Rate 212 kbit/s (fc/64) */
|
||||
FuriHalNfcBitrate424 = 2, /*!< Bit Rate 424 kbit/s (fc/32) */
|
||||
FuriHalNfcBitrate848 = 3, /*!< Bit Rate 848 kbit/s (fc/16) */
|
||||
FuriHalNfcBitrate1695 = 4, /*!< Bit Rate 1695 kbit/s (fc/8) */
|
||||
FuriHalNfcBitrate3390 = 5, /*!< Bit Rate 3390 kbit/s (fc/4) */
|
||||
FuriHalNfcBitrate6780 = 6, /*!< Bit Rate 6780 kbit/s (fc/2) */
|
||||
FuriHalNfcBitrate13560 = 7, /*!< Bit Rate 13560 kbit/s (fc) */
|
||||
FuriHalNfcBitrate52p97 = 0xEB, /*!< Bit Rate 52.97 kbit/s (fc/256) Fast Mode VICC->VCD */
|
||||
FuriHalNfcBitrate26p48 = 0xEC, /*!< Bit Rate 26,48 kbit/s (fc/512) NFCV VICC->VCD & VCD->VICC 1of4 */
|
||||
FuriHalNfcBitrate1p66 = 0xED, /*!< Bit Rate 1,66 kbit/s (fc/8192) NFCV VCD->VICC 1of256 */
|
||||
FuriHalNfcBitrateKeep = 0xFF /*!< Value indicating to keep the same previous bit rate */
|
||||
FuriHalNfcBitrate106 = 0, /*!< Bit Rate 106 kbit/s (fc/128) */
|
||||
FuriHalNfcBitrate212 = 1, /*!< Bit Rate 212 kbit/s (fc/64) */
|
||||
FuriHalNfcBitrate424 = 2, /*!< Bit Rate 424 kbit/s (fc/32) */
|
||||
FuriHalNfcBitrate848 = 3, /*!< Bit Rate 848 kbit/s (fc/16) */
|
||||
FuriHalNfcBitrate1695 = 4, /*!< Bit Rate 1695 kbit/s (fc/8) */
|
||||
FuriHalNfcBitrate3390 = 5, /*!< Bit Rate 3390 kbit/s (fc/4) */
|
||||
FuriHalNfcBitrate6780 = 6, /*!< Bit Rate 6780 kbit/s (fc/2) */
|
||||
FuriHalNfcBitrate13560 = 7, /*!< Bit Rate 13560 kbit/s (fc) */
|
||||
FuriHalNfcBitrate52p97 = 0xEB, /*!< Bit Rate 52.97 kbit/s (fc/256) Fast Mode VICC->VCD */
|
||||
FuriHalNfcBitrate26p48 =
|
||||
0xEC, /*!< Bit Rate 26,48 kbit/s (fc/512) NFCV VICC->VCD & VCD->VICC 1of4 */
|
||||
FuriHalNfcBitrate1p66 = 0xED, /*!< Bit Rate 1,66 kbit/s (fc/8192) NFCV VCD->VICC 1of256 */
|
||||
FuriHalNfcBitrateKeep = 0xFF /*!< Value indicating to keep the same previous bit rate */
|
||||
} FuriHalNfcBitrate;
|
||||
|
||||
FuriHalNfcReturn furi_hal_nfc_ll_set_mode(FuriHalNfcMode mode, FuriHalNfcBitrate txBR, FuriHalNfcBitrate rxBR);
|
||||
FuriHalNfcReturn
|
||||
furi_hal_nfc_ll_set_mode(FuriHalNfcMode mode, FuriHalNfcBitrate txBR, FuriHalNfcBitrate rxBR);
|
||||
|
||||
#define FURI_HAL_NFC_LL_GT_NFCA furi_hal_nfc_ll_ms2fc(5U) /*!< GTA Digital 2.0 6.10.4.1 & B.2 */
|
||||
#define FURI_HAL_NFC_LL_GT_NFCB furi_hal_nfc_ll_ms2fc(5U) /*!< GTB Digital 2.0 7.9.4.1 & B.3 */
|
||||
@@ -334,40 +340,57 @@ FuriHalNfcReturn furi_hal_nfc_ll_set_mode(FuriHalNfcMode mode, FuriHalNfcBitrate
|
||||
#define FURI_HAL_NFC_LL_GT_NFCV furi_hal_nfc_ll_ms2fc(5U) /*!< GTV Digital 2.0 9.7.5.1 & B.5 */
|
||||
#define FURI_HAL_NFC_LL_GT_PICOPASS furi_hal_nfc_ll_ms2fc(1U) /*!< GT Picopass */
|
||||
#define FURI_HAL_NFC_LL_GT_AP2P furi_hal_nfc_ll_ms2fc(5U) /*!< TIRFG Ecma 340 11.1.1 */
|
||||
#define FURI_HAL_NFC_LL_GT_AP2P_ADJUSTED furi_hal_nfc_ll_ms2fc(5U + 25U) /*!< Adjusted GT for greater interoperability (Sony XPERIA P, Nokia N9, Huawei P2) */
|
||||
#define FURI_HAL_NFC_LL_GT_AP2P_ADJUSTED \
|
||||
furi_hal_nfc_ll_ms2fc( \
|
||||
5U + \
|
||||
25U) /*!< Adjusted GT for greater interoperability (Sony XPERIA P, Nokia N9, Huawei P2) */
|
||||
|
||||
void furi_hal_nfc_ll_set_guard_time(uint32_t cycles);
|
||||
|
||||
typedef enum {
|
||||
FuriHalNfcErrorHandlingNone = 0, /*!< No special error handling will be performed */
|
||||
FuriHalNfcErrorHandlingNfc = 1, /*!< Error handling set to perform as NFC compliant device */
|
||||
FuriHalNfcErrorHandlingEmvco = 2 /*!< Error handling set to perform as EMVCo compliant device */
|
||||
FuriHalNfcErrorHandlingNone = 0, /*!< No special error handling will be performed */
|
||||
FuriHalNfcErrorHandlingNfc = 1, /*!< Error handling set to perform as NFC compliant device */
|
||||
FuriHalNfcErrorHandlingEmvco =
|
||||
2 /*!< Error handling set to perform as EMVCo compliant device */
|
||||
} FuriHalNfcErrorHandling;
|
||||
|
||||
void furi_hal_nfc_ll_set_error_handling(FuriHalNfcErrorHandling eHandling);
|
||||
|
||||
/* RFAL Frame Delay Time (FDT) Listen default values */
|
||||
#define FURI_HAL_NFC_LL_FDT_LISTEN_NFCA_POLLER 1172U /*!< FDTA,LISTEN,MIN (n=9) Last bit: Logic "1" - tnn,min/2 Digital 1.1 6.10 ; EMV CCP Spec Book D v2.01 4.8.1.3 */
|
||||
#define FURI_HAL_NFC_LL_FDT_LISTEN_NFCB_POLLER 1008U /*!< TR0B,MIN Digital 1.1 7.1.3 & A.3 ; EMV CCP Spec Book D v2.01 4.8.1.3 & Table A.5 */
|
||||
#define FURI_HAL_NFC_LL_FDT_LISTEN_NFCF_POLLER 2672U /*!< TR0F,LISTEN,MIN Digital 1.1 8.7.1.1 & A.4 */
|
||||
#define FURI_HAL_NFC_LL_FDT_LISTEN_NFCV_POLLER 4310U /*!< FDTV,LISTEN,MIN t1 min Digital 2.1 B.5 ; ISO15693-3 2009 9.1 */
|
||||
#define FURI_HAL_NFC_LL_FDT_LISTEN_PICOPASS_POLLER 3400U /*!< ISO15693 t1 min - observed adjustment */
|
||||
#define FURI_HAL_NFC_LL_FDT_LISTEN_AP2P_POLLER 64U /*!< FDT AP2P No actual FDTListen is required as fields switch and collision avoidance */
|
||||
#define FURI_HAL_NFC_LL_FDT_LISTEN_NFCA_POLLER \
|
||||
1172U /*!< FDTA,LISTEN,MIN (n=9) Last bit: Logic "1" - tnn,min/2 Digital 1.1 6.10 ; EMV CCP Spec Book D v2.01 4.8.1.3 */
|
||||
#define FURI_HAL_NFC_LL_FDT_LISTEN_NFCB_POLLER \
|
||||
1008U /*!< TR0B,MIN Digital 1.1 7.1.3 & A.3 ; EMV CCP Spec Book D v2.01 4.8.1.3 & Table A.5 */
|
||||
#define FURI_HAL_NFC_LL_FDT_LISTEN_NFCF_POLLER \
|
||||
2672U /*!< TR0F,LISTEN,MIN Digital 1.1 8.7.1.1 & A.4 */
|
||||
#define FURI_HAL_NFC_LL_FDT_LISTEN_NFCV_POLLER \
|
||||
4310U /*!< FDTV,LISTEN,MIN t1 min Digital 2.1 B.5 ; ISO15693-3 2009 9.1 */
|
||||
#define FURI_HAL_NFC_LL_FDT_LISTEN_PICOPASS_POLLER \
|
||||
3400U /*!< ISO15693 t1 min - observed adjustment */
|
||||
#define FURI_HAL_NFC_LL_FDT_LISTEN_AP2P_POLLER \
|
||||
64U /*!< FDT AP2P No actual FDTListen is required as fields switch and collision avoidance */
|
||||
#define FURI_HAL_NFC_LL_FDT_LISTEN_NFCA_LISTENER 1172U /*!< FDTA,LISTEN,MIN Digital 1.1 6.10 */
|
||||
#define FURI_HAL_NFC_LL_FDT_LISTEN_NFCB_LISTENER 1024U /*!< TR0B,MIN Digital 1.1 7.1.3 & A.3 ; EMV CCP Spec Book D v2.01 4.8.1.3 & Table A.5 */
|
||||
#define FURI_HAL_NFC_LL_FDT_LISTEN_NFCF_LISTENER 2688U /*!< TR0F,LISTEN,MIN Digital 2.1 8.7.1.1 & B.4 */
|
||||
#define FURI_HAL_NFC_LL_FDT_LISTEN_AP2P_LISTENER 64U /*!< FDT AP2P No actual FDTListen exists as fields switch and collision avoidance */
|
||||
#define FURI_HAL_NFC_LL_FDT_LISTEN_NFCB_LISTENER \
|
||||
1024U /*!< TR0B,MIN Digital 1.1 7.1.3 & A.3 ; EMV CCP Spec Book D v2.01 4.8.1.3 & Table A.5 */
|
||||
#define FURI_HAL_NFC_LL_FDT_LISTEN_NFCF_LISTENER \
|
||||
2688U /*!< TR0F,LISTEN,MIN Digital 2.1 8.7.1.1 & B.4 */
|
||||
#define FURI_HAL_NFC_LL_FDT_LISTEN_AP2P_LISTENER \
|
||||
64U /*!< FDT AP2P No actual FDTListen exists as fields switch and collision avoidance */
|
||||
|
||||
void furi_hal_nfc_ll_set_fdt_listen(uint32_t cycles);
|
||||
|
||||
/* RFAL Frame Delay Time (FDT) Poll default values */
|
||||
#define FURI_HAL_NFC_LL_FDT_POLL_NFCA_POLLER 6780U /*!< FDTA,POLL,MIN Digital 1.1 6.10.3.1 & A.2 */
|
||||
#define FURI_HAL_NFC_LL_FDT_POLL_NFCA_T1T_POLLER 384U /*!< RRDDT1T,MIN,B1 Digital 1.1 10.7.1 & A.5 */
|
||||
#define FURI_HAL_NFC_LL_FDT_POLL_NFCB_POLLER 6780U /*!< FDTB,POLL,MIN = TR2B,MIN,DEFAULT Digital 1.1 7.9.3 & A.3 ; EMVCo 3.0 FDTB,PCD,MIN Table A.5 */
|
||||
#define FURI_HAL_NFC_LL_FDT_POLL_NFCA_POLLER \
|
||||
6780U /*!< FDTA,POLL,MIN Digital 1.1 6.10.3.1 & A.2 */
|
||||
#define FURI_HAL_NFC_LL_FDT_POLL_NFCA_T1T_POLLER \
|
||||
384U /*!< RRDDT1T,MIN,B1 Digital 1.1 10.7.1 & A.5 */
|
||||
#define FURI_HAL_NFC_LL_FDT_POLL_NFCB_POLLER \
|
||||
6780U /*!< FDTB,POLL,MIN = TR2B,MIN,DEFAULT Digital 1.1 7.9.3 & A.3 ; EMVCo 3.0 FDTB,PCD,MIN Table A.5 */
|
||||
#define FURI_HAL_NFC_LL_FDT_POLL_NFCF_POLLER 6800U /*!< FDTF,POLL,MIN Digital 2.1 8.7.3 & B.4 */
|
||||
#define FURI_HAL_NFC_LL_FDT_POLL_NFCV_POLLER 4192U /*!< FDTV,POLL Digital 2.1 9.7.3.1 & B.5 */
|
||||
#define FURI_HAL_NFC_LL_FDT_POLL_PICOPASS_POLLER 1790U /*!< FDT Max */
|
||||
#define FURI_HAL_NFC_LL_FDT_POLL_AP2P_POLLER 0U /*!< FDT AP2P No actual FDTPoll exists as fields switch and collision avoidance */
|
||||
#define FURI_HAL_NFC_LL_FDT_POLL_AP2P_POLLER \
|
||||
0U /*!< FDT AP2P No actual FDTPoll exists as fields switch and collision avoidance */
|
||||
|
||||
void furi_hal_nfc_ll_set_fdt_poll(uint32_t FDTPoll);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user