This commit is contained in:
Willy-JL
2024-05-21 04:10:46 +01:00
80 changed files with 1512 additions and 746 deletions

View File

@@ -1,10 +1,11 @@
entry,status,name,type,params
Version,+,61.2,,
Version,+,62.3,,
Header,+,applications/drivers/subghz/cc1101_ext/cc1101_ext_interconnect.h,,
Header,+,applications/main/archive/helpers/archive_helpers_ext.h,,
Header,+,applications/main/subghz/subghz_fap.h,,
Header,+,applications/services/applications.h,,
Header,+,applications/services/bt/bt_service/bt.h,,
Header,+,applications/services/bt/bt_service/bt_keys_storage.h,,
Header,+,applications/services/bt/bt_settings.h,,
Header,+,applications/services/cli/cli.h,,
Header,+,applications/services/cli/cli_vcp.h,,
@@ -173,6 +174,7 @@ Header,+,lib/nfc/protocols/mf_ultralight/mf_ultralight_listener.h,,
Header,+,lib/nfc/protocols/mf_ultralight/mf_ultralight_poller.h,,
Header,+,lib/nfc/protocols/mf_ultralight/mf_ultralight_poller_sync.h,,
Header,+,lib/nfc/protocols/slix/slix.h,,
Header,+,lib/nfc/protocols/slix/slix_poller.h,,
Header,+,lib/nfc/protocols/st25tb/st25tb.h,,
Header,+,lib/nfc/protocols/st25tb/st25tb_poller.h,,
Header,+,lib/nfc/protocols/st25tb/st25tb_poller_sync.h,,
@@ -239,10 +241,12 @@ Header,+,lib/toolbox/hex.h,,
Header,+,lib/toolbox/keys_dict.h,,
Header,+,lib/toolbox/manchester_decoder.h,,
Header,+,lib/toolbox/manchester_encoder.h,,
Header,+,lib/toolbox/md5_calc.h,,
Header,+,lib/toolbox/name_generator.h,,
Header,+,lib/toolbox/path.h,,
Header,+,lib/toolbox/pretty_format.h,,
Header,+,lib/toolbox/protocols/protocol_dict.h,,
Header,+,lib/toolbox/pulse_protocols/pulse_glue.h,,
Header,+,lib/toolbox/saved_struct.h,,
Header,+,lib/toolbox/simple_array.h,,
Header,+,lib/toolbox/stream/buffered_file_stream.h,,
@@ -251,6 +255,7 @@ Header,+,lib/toolbox/stream/stream.h,,
Header,+,lib/toolbox/stream/string_stream.h,,
Header,+,lib/toolbox/tar/tar_archive.h,,
Header,+,lib/toolbox/value_index.h,,
Header,+,lib/toolbox/varint.h,,
Header,+,lib/toolbox/version.h,,
Header,+,targets/f7/ble_glue/furi_ble/event_dispatcher.h,,
Header,+,targets/f7/ble_glue/furi_ble/gatt.h,,
@@ -779,8 +784,15 @@ Function,-,bsearch,void*,"const void*, const void*, size_t, size_t, __compar_fn_
Function,-,bt_close_rpc_connection,void,Bt*
Function,+,bt_disconnect,void,Bt*
Function,+,bt_forget_bonded_devices,void,Bt*
Function,+,bt_keys_storage_alloc,BtKeysStorage*,const char*
Function,+,bt_keys_storage_delete,_Bool,BtKeysStorage*
Function,+,bt_keys_storage_free,void,BtKeysStorage*
Function,+,bt_keys_storage_load,_Bool,BtKeysStorage*
Function,+,bt_keys_storage_set_default_path,void,Bt*
Function,+,bt_keys_storage_set_file_path,void,"BtKeysStorage*, const char*"
Function,+,bt_keys_storage_set_ram_params,void,"BtKeysStorage*, uint8_t*, uint16_t"
Function,+,bt_keys_storage_set_storage_path,void,"Bt*, const char*"
Function,+,bt_keys_storage_update,_Bool,"BtKeysStorage*, uint8_t*, uint32_t"
Function,-,bt_open_rpc_connection,void,Bt*
Function,+,bt_profile_restore_default,_Bool,Bt*
Function,+,bt_profile_start,FuriHalBleProfileBase*,"Bt*, const FuriHalBleProfileTemplate*, FuriHalBleProfileParams"
@@ -877,7 +889,7 @@ Function,+,compress_alloc,Compress*,uint16_t
Function,+,compress_decode,_Bool,"Compress*, uint8_t*, size_t, uint8_t*, size_t, size_t*"
Function,+,compress_encode,_Bool,"Compress*, uint8_t*, size_t, uint8_t*, size_t, size_t*"
Function,+,compress_free,void,Compress*
Function,+,compress_icon_alloc,CompressIcon*,
Function,+,compress_icon_alloc,CompressIcon*,size_t
Function,+,compress_icon_decode,void,"CompressIcon*, const uint8_t*, uint8_t**"
Function,+,compress_icon_free,void,CompressIcon*
Function,-,copysign,double,"double, double"
@@ -1789,7 +1801,7 @@ Function,+,furi_mutex_free,void,FuriMutex*
Function,+,furi_mutex_get_owner,FuriThreadId,FuriMutex*
Function,+,furi_mutex_release,FuriStatus,FuriMutex*
Function,+,furi_pubsub_alloc,FuriPubSub*,
Function,-,furi_pubsub_free,void,FuriPubSub*
Function,+,furi_pubsub_free,void,FuriPubSub*
Function,+,furi_pubsub_publish,void,"FuriPubSub*, void*"
Function,+,furi_pubsub_subscribe,FuriPubSubSubscription*,"FuriPubSub*, FuriPubSubCallback, void*"
Function,+,furi_pubsub_unsubscribe,void,"FuriPubSub*, FuriPubSubSubscription*"
@@ -2018,8 +2030,10 @@ Function,+,icon_animation_set_update_callback,void,"IconAnimation*, IconAnimatio
Function,+,icon_animation_start,void,IconAnimation*
Function,+,icon_animation_stop,void,IconAnimation*
Function,+,icon_get_data,const uint8_t*,const Icon*
Function,+,icon_get_height,uint8_t,const Icon*
Function,+,icon_get_width,uint8_t,const Icon*
Function,+,icon_get_frame_count,uint32_t,const Icon*
Function,+,icon_get_frame_data,const uint8_t*,"const Icon*, uint32_t"
Function,+,icon_get_height,uint16_t,const Icon*
Function,+,icon_get_width,uint16_t,const Icon*
Function,-,ilogb,int,double
Function,-,ilogbf,int,float
Function,-,ilogbl,int,long double
@@ -2491,6 +2505,8 @@ Function,-,mbedtls_sha256_update,int,"mbedtls_sha256_context*, const unsigned ch
Function,-,mblen,int,"const char*, size_t"
Function,-,mbstowcs,size_t,"wchar_t*, const char*, size_t"
Function,-,mbtowc,int,"wchar_t*, const char*, size_t"
Function,+,md5_calc_file,_Bool,"File*, const char*, unsigned char[16], FS_Error*"
Function,+,md5_string_calc_file,_Bool,"File*, const char*, FuriString*, FS_Error*"
Function,-,memccpy,void*,"void*, const void*, int, size_t"
Function,+,memchr,void*,"const void*, int, size_t"
Function,+,memcmp,int,"const void*, const void*, size_t"
@@ -2966,6 +2982,11 @@ Function,+,protocol_dict_render_brief_data,void,"ProtocolDict*, FuriString*, siz
Function,+,protocol_dict_render_data,void,"ProtocolDict*, FuriString*, size_t"
Function,+,protocol_dict_render_uid,void,"ProtocolDict*, FuriString*, size_t"
Function,+,protocol_dict_set_data,void,"ProtocolDict*, size_t, const uint8_t*, size_t"
Function,+,pulse_glue_alloc,PulseGlue*,
Function,+,pulse_glue_free,void,PulseGlue*
Function,+,pulse_glue_pop,void,"PulseGlue*, uint32_t*, uint32_t*"
Function,+,pulse_glue_push,_Bool,"PulseGlue*, _Bool, uint32_t"
Function,+,pulse_glue_reset,void,PulseGlue*
Function,-,pulse_reader_alloc,PulseReader*,"const GpioPin*, uint32_t"
Function,-,pulse_reader_free,void,PulseReader*
Function,-,pulse_reader_receive,uint32_t,"PulseReader*, int"
@@ -3125,6 +3146,11 @@ Function,+,slix_is_counter_increment_protected,_Bool,const SlixData*
Function,+,slix_is_equal,_Bool,"const SlixData*, const SlixData*"
Function,+,slix_is_privacy_mode,_Bool,const SlixData*
Function,+,slix_load,_Bool,"SlixData*, FlipperFormat*, uint32_t"
Function,+,slix_poller_get_nxp_system_info,SlixError,"SlixPoller*, SlixSystemInfo*"
Function,+,slix_poller_get_random_number,SlixError,"SlixPoller*, SlixRandomNumber*"
Function,+,slix_poller_read_signature,SlixError,"SlixPoller*, SlixSignature*"
Function,+,slix_poller_send_frame,SlixError,"SlixPoller*, const BitBuffer*, BitBuffer*, uint32_t"
Function,+,slix_poller_set_password,SlixError,"SlixPoller*, SlixPasswordType, SlixPassword, SlixRandomNumber"
Function,+,slix_reset,void,SlixData*
Function,+,slix_save,_Bool,"const SlixData*, FlipperFormat*"
Function,+,slix_set_uid,_Bool,"SlixData*, const uint8_t*, size_t"
@@ -3622,6 +3648,12 @@ Function,+,variable_item_set_current_value_text,void,"VariableItem*, const char*
Function,+,variable_item_set_item_label,void,"VariableItem*, const char*"
Function,+,variable_item_set_locked,void,"VariableItem*, _Bool, const char*"
Function,+,variable_item_set_values_count,void,"VariableItem*, uint8_t"
Function,+,varint_int32_length,size_t,int32_t
Function,+,varint_int32_pack,size_t,"int32_t, uint8_t*"
Function,+,varint_int32_unpack,size_t,"int32_t*, const uint8_t*, size_t"
Function,+,varint_uint32_length,size_t,uint32_t
Function,+,varint_uint32_pack,size_t,"uint32_t, uint8_t*"
Function,+,varint_uint32_unpack,size_t,"uint32_t*, const uint8_t*, size_t"
Function,-,vasiprintf,int,"char**, const char*, __gnuc_va_list"
Function,-,vasniprintf,char*,"char*, size_t*, const char*, __gnuc_va_list"
Function,-,vasnprintf,char*,"char*, size_t*, const char*, __gnuc_va_list"
1 entry status name type params
2 Version + 61.2 62.3
3 Header + applications/drivers/subghz/cc1101_ext/cc1101_ext_interconnect.h
4 Header + applications/main/archive/helpers/archive_helpers_ext.h
5 Header + applications/main/subghz/subghz_fap.h
6 Header + applications/services/applications.h
7 Header + applications/services/bt/bt_service/bt.h
8 Header + applications/services/bt/bt_service/bt_keys_storage.h
9 Header + applications/services/bt/bt_settings.h
10 Header + applications/services/cli/cli.h
11 Header + applications/services/cli/cli_vcp.h
174 Header + lib/nfc/protocols/mf_ultralight/mf_ultralight_poller.h
175 Header + lib/nfc/protocols/mf_ultralight/mf_ultralight_poller_sync.h
176 Header + lib/nfc/protocols/slix/slix.h
177 Header + lib/nfc/protocols/slix/slix_poller.h
178 Header + lib/nfc/protocols/st25tb/st25tb.h
179 Header + lib/nfc/protocols/st25tb/st25tb_poller.h
180 Header + lib/nfc/protocols/st25tb/st25tb_poller_sync.h
241 Header + lib/toolbox/keys_dict.h
242 Header + lib/toolbox/manchester_decoder.h
243 Header + lib/toolbox/manchester_encoder.h
244 Header + lib/toolbox/md5_calc.h
245 Header + lib/toolbox/name_generator.h
246 Header + lib/toolbox/path.h
247 Header + lib/toolbox/pretty_format.h
248 Header + lib/toolbox/protocols/protocol_dict.h
249 Header + lib/toolbox/pulse_protocols/pulse_glue.h
250 Header + lib/toolbox/saved_struct.h
251 Header + lib/toolbox/simple_array.h
252 Header + lib/toolbox/stream/buffered_file_stream.h
255 Header + lib/toolbox/stream/string_stream.h
256 Header + lib/toolbox/tar/tar_archive.h
257 Header + lib/toolbox/value_index.h
258 Header + lib/toolbox/varint.h
259 Header + lib/toolbox/version.h
260 Header + targets/f7/ble_glue/furi_ble/event_dispatcher.h
261 Header + targets/f7/ble_glue/furi_ble/gatt.h
784 Function - bt_close_rpc_connection void Bt*
785 Function + bt_disconnect void Bt*
786 Function + bt_forget_bonded_devices void Bt*
787 Function + bt_keys_storage_alloc BtKeysStorage* const char*
788 Function + bt_keys_storage_delete _Bool BtKeysStorage*
789 Function + bt_keys_storage_free void BtKeysStorage*
790 Function + bt_keys_storage_load _Bool BtKeysStorage*
791 Function + bt_keys_storage_set_default_path void Bt*
792 Function + bt_keys_storage_set_file_path void BtKeysStorage*, const char*
793 Function + bt_keys_storage_set_ram_params void BtKeysStorage*, uint8_t*, uint16_t
794 Function + bt_keys_storage_set_storage_path void Bt*, const char*
795 Function + bt_keys_storage_update _Bool BtKeysStorage*, uint8_t*, uint32_t
796 Function - bt_open_rpc_connection void Bt*
797 Function + bt_profile_restore_default _Bool Bt*
798 Function + bt_profile_start FuriHalBleProfileBase* Bt*, const FuriHalBleProfileTemplate*, FuriHalBleProfileParams
889 Function + compress_decode _Bool Compress*, uint8_t*, size_t, uint8_t*, size_t, size_t*
890 Function + compress_encode _Bool Compress*, uint8_t*, size_t, uint8_t*, size_t, size_t*
891 Function + compress_free void Compress*
892 Function + compress_icon_alloc CompressIcon* size_t
893 Function + compress_icon_decode void CompressIcon*, const uint8_t*, uint8_t**
894 Function + compress_icon_free void CompressIcon*
895 Function - copysign double double, double
1801 Function + furi_mutex_get_owner FuriThreadId FuriMutex*
1802 Function + furi_mutex_release FuriStatus FuriMutex*
1803 Function + furi_pubsub_alloc FuriPubSub*
1804 Function - + furi_pubsub_free void FuriPubSub*
1805 Function + furi_pubsub_publish void FuriPubSub*, void*
1806 Function + furi_pubsub_subscribe FuriPubSubSubscription* FuriPubSub*, FuriPubSubCallback, void*
1807 Function + furi_pubsub_unsubscribe void FuriPubSub*, FuriPubSubSubscription*
2030 Function + icon_animation_start void IconAnimation*
2031 Function + icon_animation_stop void IconAnimation*
2032 Function + icon_get_data const uint8_t* const Icon*
2033 Function + icon_get_height icon_get_frame_count uint8_t uint32_t const Icon*
2034 Function + icon_get_width icon_get_frame_data uint8_t const uint8_t* const Icon* const Icon*, uint32_t
2035 Function + icon_get_height uint16_t const Icon*
2036 Function + icon_get_width uint16_t const Icon*
2037 Function - ilogb int double
2038 Function - ilogbf int float
2039 Function - ilogbl int long double
2505 Function - mblen int const char*, size_t
2506 Function - mbstowcs size_t wchar_t*, const char*, size_t
2507 Function - mbtowc int wchar_t*, const char*, size_t
2508 Function + md5_calc_file _Bool File*, const char*, unsigned char[16], FS_Error*
2509 Function + md5_string_calc_file _Bool File*, const char*, FuriString*, FS_Error*
2510 Function - memccpy void* void*, const void*, int, size_t
2511 Function + memchr void* const void*, int, size_t
2512 Function + memcmp int const void*, const void*, size_t
2982 Function + protocol_dict_render_data void ProtocolDict*, FuriString*, size_t
2983 Function + protocol_dict_render_uid void ProtocolDict*, FuriString*, size_t
2984 Function + protocol_dict_set_data void ProtocolDict*, size_t, const uint8_t*, size_t
2985 Function + pulse_glue_alloc PulseGlue*
2986 Function + pulse_glue_free void PulseGlue*
2987 Function + pulse_glue_pop void PulseGlue*, uint32_t*, uint32_t*
2988 Function + pulse_glue_push _Bool PulseGlue*, _Bool, uint32_t
2989 Function + pulse_glue_reset void PulseGlue*
2990 Function - pulse_reader_alloc PulseReader* const GpioPin*, uint32_t
2991 Function - pulse_reader_free void PulseReader*
2992 Function - pulse_reader_receive uint32_t PulseReader*, int
3146 Function + slix_is_equal _Bool const SlixData*, const SlixData*
3147 Function + slix_is_privacy_mode _Bool const SlixData*
3148 Function + slix_load _Bool SlixData*, FlipperFormat*, uint32_t
3149 Function + slix_poller_get_nxp_system_info SlixError SlixPoller*, SlixSystemInfo*
3150 Function + slix_poller_get_random_number SlixError SlixPoller*, SlixRandomNumber*
3151 Function + slix_poller_read_signature SlixError SlixPoller*, SlixSignature*
3152 Function + slix_poller_send_frame SlixError SlixPoller*, const BitBuffer*, BitBuffer*, uint32_t
3153 Function + slix_poller_set_password SlixError SlixPoller*, SlixPasswordType, SlixPassword, SlixRandomNumber
3154 Function + slix_reset void SlixData*
3155 Function + slix_save _Bool const SlixData*, FlipperFormat*
3156 Function + slix_set_uid _Bool SlixData*, const uint8_t*, size_t
3648 Function + variable_item_set_item_label void VariableItem*, const char*
3649 Function + variable_item_set_locked void VariableItem*, _Bool, const char*
3650 Function + variable_item_set_values_count void VariableItem*, uint8_t
3651 Function + varint_int32_length size_t int32_t
3652 Function + varint_int32_pack size_t int32_t, uint8_t*
3653 Function + varint_int32_unpack size_t int32_t*, const uint8_t*, size_t
3654 Function + varint_uint32_length size_t uint32_t
3655 Function + varint_uint32_pack size_t uint32_t, uint8_t*
3656 Function + varint_uint32_unpack size_t uint32_t*, const uint8_t*, size_t
3657 Function - vasiprintf int char**, const char*, __gnuc_va_list
3658 Function - vasniprintf char* char*, size_t*, const char*, __gnuc_va_list
3659 Function - vasnprintf char* char*, size_t*, const char*, __gnuc_va_list

View File

@@ -133,7 +133,7 @@ void furi_hal_clock_switch_hse2hsi(void) {
;
LL_RCC_SetSysClkSource(LL_RCC_SYS_CLKSOURCE_HSI);
furi_assert(LL_RCC_GetSMPSClockSelection() == LL_RCC_SMPS_CLKSOURCE_HSI);
furi_check(LL_RCC_GetSMPSClockSelection() == LL_RCC_SMPS_CLKSOURCE_HSI);
while(LL_RCC_GetSysClkSource() != LL_RCC_SYS_CLKSOURCE_STATUS_HSI)
;
@@ -170,7 +170,7 @@ void furi_hal_clock_switch_hsi2hse(void) {
}
bool furi_hal_clock_switch_hse2pll(void) {
furi_assert(LL_RCC_GetSysClkSource() == LL_RCC_SYS_CLKSOURCE_STATUS_HSE);
furi_check(LL_RCC_GetSysClkSource() == LL_RCC_SYS_CLKSOURCE_STATUS_HSE);
LL_RCC_PLL_Enable();
LL_RCC_PLLSAI1_Enable();
@@ -180,12 +180,13 @@ bool furi_hal_clock_switch_hse2pll(void) {
while(!LL_RCC_PLLSAI1_IsReady())
;
if(SHCI_C2_SetSystemClock(SET_SYSTEM_CLOCK_HSE_TO_PLL) != SHCI_Success) {
// This API returns garbage if stack version < 1.20.0
SHCI_C2_SetSystemClock(SET_SYSTEM_CLOCK_HSE_TO_PLL);
// So we'll check results by asking hardware directly
if(LL_RCC_GetSysClkSource() != LL_RCC_SYS_CLKSOURCE_STATUS_PLL) {
return false;
}
furi_check(LL_RCC_GetSysClkSource() == LL_RCC_SYS_CLKSOURCE_STATUS_PLL);
LL_SetSystemCoreClock(CPU_CLOCK_PLL_HZ);
SysTick->LOAD = (uint32_t)((SystemCoreClock / 1000) - 1UL);
@@ -193,18 +194,19 @@ bool furi_hal_clock_switch_hse2pll(void) {
}
bool furi_hal_clock_switch_pll2hse(void) {
furi_assert(LL_RCC_GetSysClkSource() == LL_RCC_SYS_CLKSOURCE_STATUS_PLL);
furi_check(LL_RCC_GetSysClkSource() == LL_RCC_SYS_CLKSOURCE_STATUS_PLL);
LL_RCC_HSE_Enable();
while(!LL_RCC_HSE_IsReady())
;
if(SHCI_C2_SetSystemClock(SET_SYSTEM_CLOCK_PLL_ON_TO_HSE) != SHCI_Success) {
// This API returns garbage if stack version < 1.20.0
SHCI_C2_SetSystemClock(SET_SYSTEM_CLOCK_PLL_ON_TO_HSE);
// So we'll check results by asking hardware directly
if(LL_RCC_GetSysClkSource() != LL_RCC_SYS_CLKSOURCE_STATUS_HSE) {
return false;
}
furi_check(LL_RCC_GetSysClkSource() == LL_RCC_SYS_CLKSOURCE_STATUS_HSE);
LL_SetSystemCoreClock(CPU_CLOCK_HSE_HZ);
SysTick->LOAD = (uint32_t)((SystemCoreClock / 1000) - 1UL);

View File

@@ -16,6 +16,12 @@
#define TAG "FuriHalFlash"
#ifdef FLASH_OP_DEBUG
#undef FURI_LOG_T
#define FURI_LOG_T(...)
#else
#endif
#define FURI_HAL_CRITICAL_MSG "Critical flash operation fail"
#define FURI_HAL_FLASH_READ_BLOCK (8U)
#define FURI_HAL_FLASH_WRITE_BLOCK (8U)
@@ -295,6 +301,7 @@ bool furi_hal_flash_wait_last_operation(uint32_t timeout) {
}
void furi_hal_flash_erase(uint8_t page) {
uint32_t op_stat = DWT->CYCCNT;
furi_hal_flash_begin(true);
/* Ensure that controller state is valid */
@@ -317,6 +324,12 @@ void furi_hal_flash_erase(uint8_t page) {
furi_hal_flush_cache();
furi_hal_flash_end(true);
op_stat = DWT->CYCCNT - op_stat;
FURI_LOG_T(
TAG,
"erase took %lu clocks or %fus",
op_stat,
(double)((float)op_stat / (float)furi_hal_cortex_instructions_per_microsecond()));
}
static inline void furi_hal_flash_write_dword_internal_nowait(size_t address, uint64_t* data) {
@@ -339,6 +352,7 @@ static inline void furi_hal_flash_write_dword_internal(size_t address, uint64_t*
}
void furi_hal_flash_write_dword(size_t address, uint64_t data) {
uint32_t op_stat = DWT->CYCCNT;
furi_hal_flash_begin(false);
/* Ensure that controller state is valid */
@@ -361,6 +375,12 @@ void furi_hal_flash_write_dword(size_t address, uint64_t data) {
/* Wait for last operation to be completed */
furi_check(furi_hal_flash_wait_last_operation(FURI_HAL_FLASH_TIMEOUT));
op_stat = DWT->CYCCNT - op_stat;
FURI_LOG_T(
TAG,
"write_dword took %lu clocks or %fus",
op_stat,
(double)((float)op_stat / (float)furi_hal_cortex_instructions_per_microsecond()));
}
static size_t furi_hal_flash_get_page_address(uint8_t page) {
@@ -373,6 +393,7 @@ void furi_hal_flash_program_page(const uint8_t page, const uint8_t* data, uint16
furi_hal_flash_erase(page);
uint32_t op_stat = DWT->CYCCNT;
furi_hal_flash_begin(false);
furi_check(furi_hal_flash_wait_last_operation(FURI_HAL_FLASH_TIMEOUT));
@@ -432,6 +453,12 @@ void furi_hal_flash_program_page(const uint8_t page, const uint8_t* data, uint16
CLEAR_BIT(FLASH->CR, FLASH_CR_PG);
furi_hal_flash_end(false);
op_stat = DWT->CYCCNT - op_stat;
FURI_LOG_T(
TAG,
"program_page took %lu clocks or %fus",
op_stat,
(double)((float)op_stat / (float)furi_hal_cortex_instructions_per_microsecond()));
}
int16_t furi_hal_flash_get_page_number(size_t address) {

View File

@@ -47,7 +47,6 @@
"mbedtls",
"lfrfid",
"flipper_application",
"toolbox",
"u8g2",
"nanopb",
"update_util",
@@ -56,6 +55,7 @@
"flipperformat",
"flipper7",
"bit_lib",
"toolbox",
"datetime"
]
}