Merge remote-tracking branch 'upstream/dev' into shutdown_idle

# Conflicts:
#	firmware/targets/f7/api_symbols.csv
This commit is contained in:
SHxKenzuto
2022-10-21 23:16:29 +02:00
332 changed files with 10688 additions and 1037 deletions

View File

@@ -1,5 +1,5 @@
entry,status,name,type,params
Version,+,2.3,,
Version,+,3.6,,
Header,+,applications/services/bt/bt_service/bt.h,,
Header,+,applications/services/cli/cli.h,,
Header,+,applications/services/cli/cli_vcp.h,,
@@ -124,9 +124,15 @@ Header,+,lib/one_wire/one_wire_host.h,,
Header,+,lib/one_wire/one_wire_host_timing.h,,
Header,+,lib/one_wire/one_wire_slave.h,,
Header,+,lib/print/wrappers.h,,
Header,+,lib/subghz/blocks/const.h,,
Header,+,lib/subghz/blocks/decoder.h,,
Header,+,lib/subghz/blocks/encoder.h,,
Header,+,lib/subghz/blocks/generic.h,,
Header,+,lib/subghz/blocks/math.h,,
Header,+,lib/subghz/environment.h,,
Header,+,lib/subghz/protocols/raw.h,,
Header,+,lib/subghz/receiver.h,,
Header,+,lib/subghz/subghz_setting.h,,
Header,+,lib/subghz/subghz_tx_rx_worker.h,,
Header,+,lib/subghz/subghz_worker.h,,
Header,+,lib/subghz/transmitter.h,,
@@ -929,6 +935,7 @@ Function,+,furi_hal_bt_nvm_sram_sem_release,void,
Function,+,furi_hal_bt_reinit,void,
Function,+,furi_hal_bt_serial_notify_buffer_is_empty,void,
Function,+,furi_hal_bt_serial_set_event_callback,void,"uint16_t, FuriHalBtSerialCallback, void*"
Function,+,furi_hal_bt_serial_set_rpc_status,void,FuriHalBtSerialRpcStatus
Function,+,furi_hal_bt_serial_start,void,
Function,+,furi_hal_bt_serial_stop,void,
Function,+,furi_hal_bt_serial_tx,_Bool,"uint8_t*, uint16_t"
@@ -969,7 +976,7 @@ Function,-,furi_hal_compress_icon_decode,void,"const uint8_t*, uint8_t**"
Function,-,furi_hal_compress_icon_init,void,
Function,+,furi_hal_console_disable,void,
Function,+,furi_hal_console_enable,void,
Function,-,furi_hal_console_init,void,
Function,+,furi_hal_console_init,void,
Function,+,furi_hal_console_printf,void,"const char[], ..."
Function,+,furi_hal_console_puts,void,const char*
Function,+,furi_hal_console_set_tx_callback,void,"FuriHalConsoleTxCallback, void*"
@@ -978,6 +985,9 @@ Function,+,furi_hal_console_tx_with_new_line,void,"const uint8_t*, size_t"
Function,+,furi_hal_cortex_delay_us,void,uint32_t
Function,-,furi_hal_cortex_init_early,void,
Function,+,furi_hal_cortex_instructions_per_microsecond,uint32_t,
Function,+,furi_hal_cortex_timer_get,FuriHalCortexTimer,uint32_t
Function,+,furi_hal_cortex_timer_is_expired,_Bool,FuriHalCortexTimer
Function,+,furi_hal_cortex_timer_wait,void,FuriHalCortexTimer
Function,+,furi_hal_crypto_decrypt,_Bool,"const uint8_t*, uint8_t*, size_t"
Function,+,furi_hal_crypto_encrypt,_Bool,"const uint8_t*, uint8_t*, size_t"
Function,-,furi_hal_crypto_init,void,
@@ -2072,6 +2082,7 @@ Function,-,select,int,"int, fd_set*, fd_set*, fd_set*, timeval*"
Function,-,serial_svc_is_started,_Bool,
Function,-,serial_svc_notify_buffer_is_empty,void,
Function,-,serial_svc_set_callbacks,void,"uint16_t, SerialServiceEventCallback, void*"
Function,-,serial_svc_set_rpc_status,void,SerialServiceRpcStatus
Function,-,serial_svc_start,void,
Function,-,serial_svc_stop,void,
Function,-,serial_svc_update_tx,_Bool,"uint8_t*, uint16_t"
@@ -2239,14 +2250,20 @@ Function,-,strupr,char*,char*
Function,-,strverscmp,int,"const char*, const char*"
Function,-,strxfrm,size_t,"char*, const char*, size_t"
Function,-,strxfrm_l,size_t,"char*, const char*, size_t, locale_t"
Function,+,subghz_block_generic_deserialize,_Bool,"SubGhzBlockGeneric*, FlipperFormat*"
Function,+,subghz_block_generic_get_preset_name,void,"const char*, FuriString*"
Function,+,subghz_block_generic_serialize,_Bool,"SubGhzBlockGeneric*, FlipperFormat*, SubGhzRadioPreset*"
Function,+,subghz_environment_alloc,SubGhzEnvironment*,
Function,+,subghz_environment_free,void,SubGhzEnvironment*
Function,-,subghz_environment_get_came_atomo_rainbow_table_file_name,const char*,SubGhzEnvironment*
Function,-,subghz_environment_get_keystore,SubGhzKeystore*,SubGhzEnvironment*
Function,-,subghz_environment_get_nice_flor_s_rainbow_table_file_name,const char*,SubGhzEnvironment*
Function,+,subghz_environment_get_came_atomo_rainbow_table_file_name,const char*,SubGhzEnvironment*
Function,+,subghz_environment_get_keystore,SubGhzKeystore*,SubGhzEnvironment*
Function,+,subghz_environment_get_nice_flor_s_rainbow_table_file_name,const char*,SubGhzEnvironment*
Function,+,subghz_environment_get_protocol_name_registry,const char*,"SubGhzEnvironment*, size_t"
Function,+,subghz_environment_get_protocol_registry,void*,SubGhzEnvironment*
Function,+,subghz_environment_load_keystore,_Bool,"SubGhzEnvironment*, const char*"
Function,-,subghz_environment_set_came_atomo_rainbow_table_file_name,void,"SubGhzEnvironment*, const char*"
Function,-,subghz_environment_set_nice_flor_s_rainbow_table_file_name,void,"SubGhzEnvironment*, const char*"
Function,+,subghz_environment_set_came_atomo_rainbow_table_file_name,void,"SubGhzEnvironment*, const char*"
Function,+,subghz_environment_set_nice_flor_s_rainbow_table_file_name,void,"SubGhzEnvironment*, const char*"
Function,+,subghz_environment_set_protocol_registry,void,"SubGhzEnvironment*, void*"
Function,-,subghz_keystore_alloc,SubGhzKeystore*,
Function,-,subghz_keystore_free,void,SubGhzKeystore*
Function,-,subghz_keystore_get_data,SubGhzKeyArray_t*,SubGhzKeystore*
@@ -2254,10 +2271,26 @@ Function,-,subghz_keystore_load,_Bool,"SubGhzKeystore*, const char*"
Function,-,subghz_keystore_raw_encrypted_save,_Bool,"const char*, const char*, uint8_t*"
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_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_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_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*"
Function,+,subghz_protocol_decoder_base_serialize,_Bool,"SubGhzProtocolDecoderBase*, FlipperFormat*, SubGhzPresetDefinition*"
Function,+,subghz_protocol_decoder_base_get_hash_data,uint8_t,SubGhzProtocolDecoderBase*
Function,+,subghz_protocol_decoder_base_get_string,_Bool,"SubGhzProtocolDecoderBase*, FuriString*"
Function,+,subghz_protocol_decoder_base_serialize,_Bool,"SubGhzProtocolDecoderBase*, FlipperFormat*, SubGhzRadioPreset*"
Function,-,subghz_protocol_decoder_base_set_decoder_callback,void,"SubGhzProtocolDecoderBase*, SubGhzProtocolDecoderBaseRxCallback, void*"
Function,+,subghz_protocol_decoder_raw_alloc,void*,SubGhzEnvironment*
Function,+,subghz_protocol_decoder_raw_deserialize,_Bool,"void*, FlipperFormat*"
@@ -2273,7 +2306,7 @@ Function,+,subghz_protocol_encoder_raw_yield,LevelDuration,void*
Function,+,subghz_protocol_raw_file_encoder_worker_set_callback_end,void,"SubGhzProtocolEncoderRAW*, SubGhzProtocolEncoderRAWCallbackEnd, void*"
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*, SubGhzPresetDefinition*"
Function,+,subghz_protocol_raw_save_to_file_init,_Bool,"SubGhzProtocolDecoderRAW*, const char*, SubGhzRadioPreset*"
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"
@@ -2282,6 +2315,23 @@ Function,+,subghz_receiver_reset,void,SubGhzReceiver*
Function,+,subghz_receiver_search_decoder_base_by_name,SubGhzProtocolDecoderBase*,"SubGhzReceiver*, const char*"
Function,+,subghz_receiver_set_filter,void,"SubGhzReceiver*, SubGhzProtocolFlag"
Function,+,subghz_receiver_set_rx_callback,void,"SubGhzReceiver*, SubGhzReceiverCallback, void*"
Function,+,subghz_setting_alloc,SubGhzSetting*,
Function,+,subghz_setting_delete_custom_preset,_Bool,"SubGhzSetting*, const char*"
Function,+,subghz_setting_free,void,SubGhzSetting*
Function,+,subghz_setting_get_default_frequency,uint32_t,SubGhzSetting*
Function,+,subghz_setting_get_frequency,uint32_t,"SubGhzSetting*, size_t"
Function,+,subghz_setting_get_frequency_count,size_t,SubGhzSetting*
Function,+,subghz_setting_get_frequency_default_index,uint32_t,SubGhzSetting*
Function,+,subghz_setting_get_hopper_frequency,uint32_t,"SubGhzSetting*, size_t"
Function,+,subghz_setting_get_hopper_frequency_count,size_t,SubGhzSetting*
Function,+,subghz_setting_get_inx_preset_by_name,int,"SubGhzSetting*, const char*"
Function,+,subghz_setting_get_preset_count,size_t,SubGhzSetting*
Function,+,subghz_setting_get_preset_data,uint8_t*,"SubGhzSetting*, size_t"
Function,+,subghz_setting_get_preset_data_by_name,uint8_t*,"SubGhzSetting*, const char*"
Function,+,subghz_setting_get_preset_data_size,size_t,"SubGhzSetting*, size_t"
Function,+,subghz_setting_get_preset_name,const char*,"SubGhzSetting*, size_t"
Function,+,subghz_setting_load,void,"SubGhzSetting*, const char*"
Function,+,subghz_setting_load_custom_preset,_Bool,"SubGhzSetting*, const char*, FlipperFormat*"
Function,+,subghz_transmitter_alloc_init,SubGhzTransmitter*,"SubGhzEnvironment*, const char*"
Function,+,subghz_transmitter_deserialize,_Bool,"SubGhzTransmitter*, FlipperFormat*"
Function,+,subghz_transmitter_free,void,SubGhzTransmitter*
@@ -2468,6 +2518,7 @@ Function,+,variable_item_list_set_enter_callback,void,"VariableItemList*, Variab
Function,+,variable_item_list_set_selected_item,void,"VariableItemList*, uint8_t"
Function,+,variable_item_set_current_value_index,void,"VariableItem*, uint8_t"
Function,+,variable_item_set_current_value_text,void,"VariableItem*, const char*"
Function,+,variable_item_set_values_count,void,"VariableItem*, uint8_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"
@@ -2512,17 +2563,17 @@ Function,+,view_port_alloc,ViewPort*,
Function,+,view_port_draw_callback_set,void,"ViewPort*, ViewPortDrawCallback, void*"
Function,+,view_port_enabled_set,void,"ViewPort*, _Bool"
Function,+,view_port_free,void,ViewPort*
Function,-,view_port_get_height,uint8_t,ViewPort*
Function,+,view_port_get_height,uint8_t,ViewPort*
Function,+,view_port_get_orientation,ViewPortOrientation,const ViewPort*
Function,+,view_port_get_width,uint8_t,ViewPort*
Function,+,view_port_input_callback_set,void,"ViewPort*, ViewPortInputCallback, void*"
Function,+,view_port_is_enabled,_Bool,ViewPort*
Function,-,view_port_set_height,void,"ViewPort*, uint8_t"
Function,+,view_port_set_height,void,"ViewPort*, uint8_t"
Function,+,view_port_set_orientation,void,"ViewPort*, ViewPortOrientation"
Function,+,view_port_set_width,void,"ViewPort*, uint8_t"
Function,+,view_port_update,void,ViewPort*
Function,+,view_set_context,void,"View*, void*"
Function,-,view_set_custom_callback,void,"View*, ViewCustomCallback"
Function,+,view_set_custom_callback,void,"View*, ViewCustomCallback"
Function,+,view_set_draw_callback,void,"View*, ViewDrawCallback"
Function,+,view_set_enter_callback,void,"View*, ViewCallback"
Function,+,view_set_exit_callback,void,"View*, ViewCallback"
1 entry status name type params
2 Version + 2.3 3.6
3 Header + applications/services/bt/bt_service/bt.h
4 Header + applications/services/cli/cli.h
5 Header + applications/services/cli/cli_vcp.h
124 Header + lib/one_wire/one_wire_host_timing.h
125 Header + lib/one_wire/one_wire_slave.h
126 Header + lib/print/wrappers.h
127 Header + lib/subghz/blocks/const.h
128 Header + lib/subghz/blocks/decoder.h
129 Header + lib/subghz/blocks/encoder.h
130 Header + lib/subghz/blocks/generic.h
131 Header + lib/subghz/blocks/math.h
132 Header + lib/subghz/environment.h
133 Header + lib/subghz/protocols/raw.h
134 Header + lib/subghz/receiver.h
135 Header + lib/subghz/subghz_setting.h
136 Header + lib/subghz/subghz_tx_rx_worker.h
137 Header + lib/subghz/subghz_worker.h
138 Header + lib/subghz/transmitter.h
935 Function + furi_hal_bt_reinit void
936 Function + furi_hal_bt_serial_notify_buffer_is_empty void
937 Function + furi_hal_bt_serial_set_event_callback void uint16_t, FuriHalBtSerialCallback, void*
938 Function + furi_hal_bt_serial_set_rpc_status void FuriHalBtSerialRpcStatus
939 Function + furi_hal_bt_serial_start void
940 Function + furi_hal_bt_serial_stop void
941 Function + furi_hal_bt_serial_tx _Bool uint8_t*, uint16_t
976 Function - furi_hal_compress_icon_init void
977 Function + furi_hal_console_disable void
978 Function + furi_hal_console_enable void
979 Function - + furi_hal_console_init void
980 Function + furi_hal_console_printf void const char[], ...
981 Function + furi_hal_console_puts void const char*
982 Function + furi_hal_console_set_tx_callback void FuriHalConsoleTxCallback, void*
985 Function + furi_hal_cortex_delay_us void uint32_t
986 Function - furi_hal_cortex_init_early void
987 Function + furi_hal_cortex_instructions_per_microsecond uint32_t
988 Function + furi_hal_cortex_timer_get FuriHalCortexTimer uint32_t
989 Function + furi_hal_cortex_timer_is_expired _Bool FuriHalCortexTimer
990 Function + furi_hal_cortex_timer_wait void FuriHalCortexTimer
991 Function + furi_hal_crypto_decrypt _Bool const uint8_t*, uint8_t*, size_t
992 Function + furi_hal_crypto_encrypt _Bool const uint8_t*, uint8_t*, size_t
993 Function - furi_hal_crypto_init void
2082 Function - serial_svc_is_started _Bool
2083 Function - serial_svc_notify_buffer_is_empty void
2084 Function - serial_svc_set_callbacks void uint16_t, SerialServiceEventCallback, void*
2085 Function - serial_svc_set_rpc_status void SerialServiceRpcStatus
2086 Function - serial_svc_start void
2087 Function - serial_svc_stop void
2088 Function - serial_svc_update_tx _Bool uint8_t*, uint16_t
2250 Function - strverscmp int const char*, const char*
2251 Function - strxfrm size_t char*, const char*, size_t
2252 Function - strxfrm_l size_t char*, const char*, size_t, locale_t
2253 Function + subghz_block_generic_deserialize _Bool SubGhzBlockGeneric*, FlipperFormat*
2254 Function + subghz_block_generic_get_preset_name void const char*, FuriString*
2255 Function + subghz_block_generic_serialize _Bool SubGhzBlockGeneric*, FlipperFormat*, SubGhzRadioPreset*
2256 Function + subghz_environment_alloc SubGhzEnvironment*
2257 Function + subghz_environment_free void SubGhzEnvironment*
2258 Function - + subghz_environment_get_came_atomo_rainbow_table_file_name const char* SubGhzEnvironment*
2259 Function - + subghz_environment_get_keystore SubGhzKeystore* SubGhzEnvironment*
2260 Function - + subghz_environment_get_nice_flor_s_rainbow_table_file_name const char* SubGhzEnvironment*
2261 Function + subghz_environment_get_protocol_name_registry const char* SubGhzEnvironment*, size_t
2262 Function + subghz_environment_get_protocol_registry void* SubGhzEnvironment*
2263 Function + subghz_environment_load_keystore _Bool SubGhzEnvironment*, const char*
2264 Function - + subghz_environment_set_came_atomo_rainbow_table_file_name void SubGhzEnvironment*, const char*
2265 Function - + subghz_environment_set_nice_flor_s_rainbow_table_file_name void SubGhzEnvironment*, const char*
2266 Function + subghz_environment_set_protocol_registry void SubGhzEnvironment*, void*
2267 Function - subghz_keystore_alloc SubGhzKeystore*
2268 Function - subghz_keystore_free void SubGhzKeystore*
2269 Function - subghz_keystore_get_data SubGhzKeyArray_t* SubGhzKeystore*
2271 Function - subghz_keystore_raw_encrypted_save _Bool const char*, const char*, uint8_t*
2272 Function - subghz_keystore_raw_get_data _Bool const char*, size_t, uint8_t*, size_t
2273 Function - subghz_keystore_save _Bool SubGhzKeystore*, const char*, uint8_t*
2274 Function + subghz_protocol_blocks_add_bit void SubGhzBlockDecoder*, uint8_t
2275 Function + subghz_protocol_blocks_crc16 uint16_t const uint8_t[], unsigned, uint16_t, uint16_t
2276 Function + subghz_protocol_blocks_crc16lsb uint16_t const uint8_t[], unsigned, uint16_t, uint16_t
2277 Function + subghz_protocol_blocks_crc4 uint8_t const uint8_t[], unsigned, uint8_t, uint8_t
2278 Function + subghz_protocol_blocks_crc7 uint8_t const uint8_t[], unsigned, uint8_t, uint8_t
2279 Function + subghz_protocol_blocks_crc8 uint8_t const uint8_t[], unsigned, uint8_t, uint8_t
2280 Function + subghz_protocol_blocks_crc8le uint8_t const uint8_t[], unsigned, uint8_t, uint8_t
2281 Function + subghz_protocol_blocks_get_bit_array _Bool uint8_t[], size_t
2282 Function + subghz_protocol_blocks_get_hash_data uint8_t SubGhzBlockDecoder*, size_t
2283 Function + subghz_protocol_blocks_get_parity uint8_t uint64_t, uint8_t
2284 Function + subghz_protocol_blocks_get_upload size_t uint8_t[], size_t, LevelDuration*, size_t, uint32_t
2285 Function + subghz_protocol_blocks_lfsr_digest16 uint16_t const uint8_t[], unsigned, uint16_t, uint16_t
2286 Function + subghz_protocol_blocks_lfsr_digest8 uint8_t const uint8_t[], unsigned, uint8_t, uint8_t
2287 Function + subghz_protocol_blocks_lfsr_digest8_reflect uint8_t const uint8_t[], int, uint8_t, uint8_t
2288 Function + subghz_protocol_blocks_reverse_key uint64_t uint64_t, uint8_t
2289 Function + subghz_protocol_blocks_set_bit_array void _Bool, uint8_t[], size_t, size_t
2290 Function - subghz_protocol_decoder_base_deserialize _Bool SubGhzProtocolDecoderBase*, FlipperFormat*
2291 Function - + subghz_protocol_decoder_base_get_hash_data uint8_t SubGhzProtocolDecoderBase*
2292 Function - + subghz_protocol_decoder_base_get_string _Bool SubGhzProtocolDecoderBase*, FuriString*
2293 Function + subghz_protocol_decoder_base_serialize _Bool SubGhzProtocolDecoderBase*, FlipperFormat*, SubGhzPresetDefinition* SubGhzProtocolDecoderBase*, FlipperFormat*, SubGhzRadioPreset*
2294 Function - subghz_protocol_decoder_base_set_decoder_callback void SubGhzProtocolDecoderBase*, SubGhzProtocolDecoderBaseRxCallback, void*
2295 Function + subghz_protocol_decoder_raw_alloc void* SubGhzEnvironment*
2296 Function + subghz_protocol_decoder_raw_deserialize _Bool void*, FlipperFormat*
2306 Function + subghz_protocol_raw_file_encoder_worker_set_callback_end void SubGhzProtocolEncoderRAW*, SubGhzProtocolEncoderRAWCallbackEnd, void*
2307 Function + subghz_protocol_raw_gen_fff_data void FlipperFormat*, const char*
2308 Function + subghz_protocol_raw_get_sample_write size_t SubGhzProtocolDecoderRAW*
2309 Function + subghz_protocol_raw_save_to_file_init _Bool SubGhzProtocolDecoderRAW*, const char*, SubGhzPresetDefinition* SubGhzProtocolDecoderRAW*, const char*, SubGhzRadioPreset*
2310 Function + subghz_protocol_raw_save_to_file_stop void SubGhzProtocolDecoderRAW*
2311 Function + subghz_receiver_alloc_init SubGhzReceiver* SubGhzEnvironment*
2312 Function + subghz_receiver_decode void SubGhzReceiver*, _Bool, uint32_t
2315 Function + subghz_receiver_search_decoder_base_by_name SubGhzProtocolDecoderBase* SubGhzReceiver*, const char*
2316 Function + subghz_receiver_set_filter void SubGhzReceiver*, SubGhzProtocolFlag
2317 Function + subghz_receiver_set_rx_callback void SubGhzReceiver*, SubGhzReceiverCallback, void*
2318 Function + subghz_setting_alloc SubGhzSetting*
2319 Function + subghz_setting_delete_custom_preset _Bool SubGhzSetting*, const char*
2320 Function + subghz_setting_free void SubGhzSetting*
2321 Function + subghz_setting_get_default_frequency uint32_t SubGhzSetting*
2322 Function + subghz_setting_get_frequency uint32_t SubGhzSetting*, size_t
2323 Function + subghz_setting_get_frequency_count size_t SubGhzSetting*
2324 Function + subghz_setting_get_frequency_default_index uint32_t SubGhzSetting*
2325 Function + subghz_setting_get_hopper_frequency uint32_t SubGhzSetting*, size_t
2326 Function + subghz_setting_get_hopper_frequency_count size_t SubGhzSetting*
2327 Function + subghz_setting_get_inx_preset_by_name int SubGhzSetting*, const char*
2328 Function + subghz_setting_get_preset_count size_t SubGhzSetting*
2329 Function + subghz_setting_get_preset_data uint8_t* SubGhzSetting*, size_t
2330 Function + subghz_setting_get_preset_data_by_name uint8_t* SubGhzSetting*, const char*
2331 Function + subghz_setting_get_preset_data_size size_t SubGhzSetting*, size_t
2332 Function + subghz_setting_get_preset_name const char* SubGhzSetting*, size_t
2333 Function + subghz_setting_load void SubGhzSetting*, const char*
2334 Function + subghz_setting_load_custom_preset _Bool SubGhzSetting*, const char*, FlipperFormat*
2335 Function + subghz_transmitter_alloc_init SubGhzTransmitter* SubGhzEnvironment*, const char*
2336 Function + subghz_transmitter_deserialize _Bool SubGhzTransmitter*, FlipperFormat*
2337 Function + subghz_transmitter_free void SubGhzTransmitter*
2518 Function + variable_item_list_set_selected_item void VariableItemList*, uint8_t
2519 Function + variable_item_set_current_value_index void VariableItem*, uint8_t
2520 Function + variable_item_set_current_value_text void VariableItem*, const char*
2521 Function + variable_item_set_values_count void VariableItem*, uint8_t
2522 Function - vasiprintf int char**, const char*, __gnuc_va_list
2523 Function - vasniprintf char* char*, size_t*, const char*, __gnuc_va_list
2524 Function - vasnprintf char* char*, size_t*, const char*, __gnuc_va_list
2563 Function + view_port_draw_callback_set void ViewPort*, ViewPortDrawCallback, void*
2564 Function + view_port_enabled_set void ViewPort*, _Bool
2565 Function + view_port_free void ViewPort*
2566 Function - + view_port_get_height uint8_t ViewPort*
2567 Function + view_port_get_orientation ViewPortOrientation const ViewPort*
2568 Function + view_port_get_width uint8_t ViewPort*
2569 Function + view_port_input_callback_set void ViewPort*, ViewPortInputCallback, void*
2570 Function + view_port_is_enabled _Bool ViewPort*
2571 Function - + view_port_set_height void ViewPort*, uint8_t
2572 Function + view_port_set_orientation void ViewPort*, ViewPortOrientation
2573 Function + view_port_set_width void ViewPort*, uint8_t
2574 Function + view_port_update void ViewPort*
2575 Function + view_set_context void View*, void*
2576 Function - + view_set_custom_callback void View*, ViewCustomCallback
2577 Function + view_set_draw_callback void View*, ViewDrawCallback
2578 Function + view_set_enter_callback void View*, ViewCallback
2579 Function + view_set_exit_callback void View*, ViewCallback

View File

@@ -11,6 +11,7 @@ typedef struct {
uint16_t rx_char_handle;
uint16_t tx_char_handle;
uint16_t flow_ctrl_char_handle;
uint16_t rpc_status_char_handle;
FuriMutex* buff_size_mtx;
uint32_t buff_size;
uint16_t bytes_ready_to_receive;
@@ -28,6 +29,8 @@ static const uint8_t char_rx_uuid[] =
{0x00, 0x00, 0xfe, 0x62, 0x8e, 0x22, 0x45, 0x41, 0x9d, 0x4c, 0x21, 0xed, 0xae, 0x82, 0xed, 0x19};
static const uint8_t flow_ctrl_uuid[] =
{0x00, 0x00, 0xfe, 0x63, 0x8e, 0x22, 0x45, 0x41, 0x9d, 0x4c, 0x21, 0xed, 0xae, 0x82, 0xed, 0x19};
static const uint8_t rpc_status_uuid[] =
{0x00, 0x00, 0xfe, 0x64, 0x8e, 0x22, 0x45, 0x41, 0x9d, 0x4c, 0x21, 0xed, 0xae, 0x82, 0xed, 0x19};
static SVCCTL_EvtAckStatus_t serial_svc_event_handler(void* event) {
SVCCTL_EvtAckStatus_t ret = SVCCTL_EvtNotAck;
@@ -67,6 +70,17 @@ static SVCCTL_EvtAckStatus_t serial_svc_event_handler(void* event) {
furi_check(furi_mutex_release(serial_svc->buff_size_mtx) == FuriStatusOk);
}
ret = SVCCTL_EvtAckFlowEnable;
} else if(attribute_modified->Attr_Handle == serial_svc->rpc_status_char_handle + 1) {
SerialServiceRpcStatus* rpc_status =
(SerialServiceRpcStatus*)attribute_modified->Attr_Data;
if(*rpc_status == SerialServiceRpcStatusNotActive) {
if(serial_svc->callback) {
SerialServiceEvent event = {
.event = SerialServiceEventTypesBleResetRequest,
};
serial_svc->callback(event, serial_svc->context);
}
}
}
} else if(blecore_evt->ecode == ACI_GATT_SERVER_CONFIRMATION_VSEVT_CODE) {
FURI_LOG_T(TAG, "Ack received");
@@ -82,6 +96,18 @@ static SVCCTL_EvtAckStatus_t serial_svc_event_handler(void* event) {
return ret;
}
static void serial_svc_update_rpc_char(SerialServiceRpcStatus status) {
tBleStatus ble_status = aci_gatt_update_char_value(
serial_svc->svc_handle,
serial_svc->rpc_status_char_handle,
0,
sizeof(SerialServiceRpcStatus),
(uint8_t*)&status);
if(ble_status) {
FURI_LOG_E(TAG, "Failed to update RPC status char: %d", ble_status);
}
}
void serial_svc_start() {
tBleStatus status;
serial_svc = malloc(sizeof(SerialSvc));
@@ -90,7 +116,7 @@ void serial_svc_start() {
// Add service
status = aci_gatt_add_service(
UUID_TYPE_128, (Service_UUID_t*)service_uuid, PRIMARY_SERVICE, 10, &serial_svc->svc_handle);
UUID_TYPE_128, (Service_UUID_t*)service_uuid, PRIMARY_SERVICE, 12, &serial_svc->svc_handle);
if(status) {
FURI_LOG_E(TAG, "Failed to add Serial service: %d", status);
}
@@ -141,6 +167,22 @@ void serial_svc_start() {
if(status) {
FURI_LOG_E(TAG, "Failed to add Flow Control characteristic: %d", status);
}
// Add RPC status characteristic
status = aci_gatt_add_char(
serial_svc->svc_handle,
UUID_TYPE_128,
(const Char_UUID_t*)rpc_status_uuid,
sizeof(SerialServiceRpcStatus),
CHAR_PROP_READ | CHAR_PROP_WRITE | CHAR_PROP_NOTIFY,
ATTR_PERMISSION_AUTHEN_READ | ATTR_PERMISSION_AUTHEN_WRITE,
GATT_NOTIFY_ATTRIBUTE_WRITE,
10,
CHAR_VALUE_LEN_CONSTANT,
&serial_svc->rpc_status_char_handle);
if(status) {
FURI_LOG_E(TAG, "Failed to add RPC status characteristic: %d", status);
}
serial_svc_update_rpc_char(SerialServiceRpcStatusNotActive);
// Allocate buffer size mutex
serial_svc->buff_size_mtx = furi_mutex_alloc(FuriMutexTypeNormal);
}
@@ -198,6 +240,10 @@ void serial_svc_stop() {
if(status) {
FURI_LOG_E(TAG, "Failed to delete Flow Control characteristic: %d", status);
}
status = aci_gatt_del_char(serial_svc->svc_handle, serial_svc->rpc_status_char_handle);
if(status) {
FURI_LOG_E(TAG, "Failed to delete RPC Status characteristic: %d", status);
}
// Delete service
status = aci_gatt_del_service(serial_svc->svc_handle);
if(status) {
@@ -242,3 +288,8 @@ bool serial_svc_update_tx(uint8_t* data, uint16_t data_len) {
return true;
}
void serial_svc_set_rpc_status(SerialServiceRpcStatus status) {
furi_assert(serial_svc);
serial_svc_update_rpc_char(status);
}

View File

@@ -10,9 +10,15 @@
extern "C" {
#endif
typedef enum {
SerialServiceRpcStatusNotActive = 0UL,
SerialServiceRpcStatusActive = 1UL,
} SerialServiceRpcStatus;
typedef enum {
SerialServiceEventTypeDataReceived,
SerialServiceEventTypeDataSent,
SerialServiceEventTypesBleResetRequest,
} SerialServiceEventType;
typedef struct {
@@ -34,6 +40,8 @@ void serial_svc_set_callbacks(
SerialServiceEventCallback callback,
void* context);
void serial_svc_set_rpc_status(SerialServiceRpcStatus status);
void serial_svc_notify_buffer_is_empty();
void serial_svc_stop();

View File

@@ -31,6 +31,16 @@ void furi_hal_bt_serial_notify_buffer_is_empty() {
serial_svc_notify_buffer_is_empty();
}
void furi_hal_bt_serial_set_rpc_status(FuriHalBtSerialRpcStatus status) {
SerialServiceRpcStatus st;
if(status == FuriHalBtSerialRpcStatusActive) {
st = SerialServiceRpcStatusActive;
} else {
st = SerialServiceRpcStatusNotActive;
}
serial_svc_set_rpc_status(st);
}
bool furi_hal_bt_serial_tx(uint8_t* data, uint16_t size) {
if(size > FURI_HAL_BT_SERIAL_PACKET_SIZE_MAX) {
return false;

View File

@@ -2,6 +2,8 @@
#include <stm32wbxx.h>
#define FURI_HAL_CORTEX_INSTRUCTIONS_PER_MICROSECOND (SystemCoreClock / 1000000)
void furi_hal_cortex_init_early() {
CoreDebug->DEMCR |= CoreDebug_DEMCR_TRCENA_Msk;
DWT->CTRL |= DWT_CTRL_CYCCNTENA_Msk;
@@ -13,11 +15,26 @@ void furi_hal_cortex_init_early() {
void furi_hal_cortex_delay_us(uint32_t microseconds) {
uint32_t start = DWT->CYCCNT;
uint32_t time_ticks = SystemCoreClock / 1000000 * microseconds;
uint32_t time_ticks = FURI_HAL_CORTEX_INSTRUCTIONS_PER_MICROSECOND * microseconds;
while((DWT->CYCCNT - start) < time_ticks) {
};
}
uint32_t furi_hal_cortex_instructions_per_microsecond() {
return SystemCoreClock / 1000000;
return FURI_HAL_CORTEX_INSTRUCTIONS_PER_MICROSECOND;
}
FuriHalCortexTimer furi_hal_cortex_timer_get(uint32_t timeout_us) {
FuriHalCortexTimer cortex_timer = {0};
cortex_timer.start = DWT->CYCCNT;
cortex_timer.value = FURI_HAL_CORTEX_INSTRUCTIONS_PER_MICROSECOND * timeout_us;
return cortex_timer;
}
bool furi_hal_cortex_timer_is_expired(FuriHalCortexTimer cortex_timer) {
return !((DWT->CYCCNT - cortex_timer.start) < cortex_timer.value);
}
void furi_hal_cortex_timer_wait(FuriHalCortexTimer cortex_timer) {
while(!furi_hal_cortex_timer_is_expired(cortex_timer));
}

View File

@@ -1,6 +1,7 @@
#include <furi_hal_i2c.h>
#include <furi_hal_version.h>
#include <furi_hal_power.h>
#include <furi_hal_cortex.h>
#include <stm32wbxx_ll_i2c.h>
#include <stm32wbxx_ll_gpio.h>
@@ -60,11 +61,11 @@ bool furi_hal_i2c_tx(
furi_assert(timeout > 0);
bool ret = true;
uint32_t timeout_tick = furi_get_tick() + timeout;
FuriHalCortexTimer timer = furi_hal_cortex_timer_get(timeout * 1000);
do {
while(LL_I2C_IsActiveFlag_BUSY(handle->bus->i2c)) {
if(furi_get_tick() >= timeout_tick) {
if(furi_hal_cortex_timer_is_expired(timer)) {
ret = false;
break;
}
@@ -89,7 +90,7 @@ bool furi_hal_i2c_tx(
size--;
}
if(furi_get_tick() >= timeout_tick) {
if(furi_hal_cortex_timer_is_expired(timer)) {
ret = false;
break;
}
@@ -111,11 +112,11 @@ bool furi_hal_i2c_rx(
furi_assert(timeout > 0);
bool ret = true;
uint32_t timeout_tick = furi_get_tick() + timeout;
FuriHalCortexTimer timer = furi_hal_cortex_timer_get(timeout * 1000);
do {
while(LL_I2C_IsActiveFlag_BUSY(handle->bus->i2c)) {
if(furi_get_tick() >= timeout_tick) {
if(furi_hal_cortex_timer_is_expired(timer)) {
ret = false;
break;
}
@@ -140,7 +141,7 @@ bool furi_hal_i2c_rx(
size--;
}
if(furi_get_tick() >= timeout_tick) {
if(furi_hal_cortex_timer_is_expired(timer)) {
ret = false;
break;
}
@@ -175,11 +176,11 @@ bool furi_hal_i2c_is_device_ready(FuriHalI2cBusHandle* handle, uint8_t i2c_addr,
furi_assert(timeout > 0);
bool ret = true;
uint32_t timeout_tick = furi_get_tick() + timeout;
FuriHalCortexTimer timer = furi_hal_cortex_timer_get(timeout * 1000);
do {
while(LL_I2C_IsActiveFlag_BUSY(handle->bus->i2c)) {
if(furi_get_tick() >= timeout_tick) {
if(furi_hal_cortex_timer_is_expired(timer)) {
return false;
}
}
@@ -190,14 +191,14 @@ bool furi_hal_i2c_is_device_ready(FuriHalI2cBusHandle* handle, uint8_t i2c_addr,
while((!LL_I2C_IsActiveFlag_NACK(handle->bus->i2c)) &&
(!LL_I2C_IsActiveFlag_STOP(handle->bus->i2c))) {
if(furi_get_tick() >= timeout_tick) {
if(furi_hal_cortex_timer_is_expired(timer)) {
return false;
}
}
if(LL_I2C_IsActiveFlag_NACK(handle->bus->i2c)) {
while(!LL_I2C_IsActiveFlag_STOP(handle->bus->i2c)) {
if(furi_get_tick() >= timeout_tick) {
if(furi_hal_cortex_timer_is_expired(timer)) {
return false;
}
}
@@ -214,7 +215,7 @@ bool furi_hal_i2c_is_device_ready(FuriHalI2cBusHandle* handle, uint8_t i2c_addr,
}
while(!LL_I2C_IsActiveFlag_STOP(handle->bus->i2c)) {
if(furi_get_tick() >= timeout_tick) {
if(furi_hal_cortex_timer_is_expired(timer)) {
return false;
}
}
@@ -308,11 +309,11 @@ bool furi_hal_i2c_write_mem(
bool ret = true;
uint8_t size = len + 1;
uint32_t timeout_tick = furi_get_tick() + timeout;
FuriHalCortexTimer timer = furi_hal_cortex_timer_get(timeout * 1000);
do {
while(LL_I2C_IsActiveFlag_BUSY(handle->bus->i2c)) {
if(furi_get_tick() >= timeout_tick) {
if(furi_hal_cortex_timer_is_expired(timer)) {
ret = false;
break;
}
@@ -341,7 +342,7 @@ bool furi_hal_i2c_write_mem(
size--;
}
if(furi_get_tick() >= timeout_tick) {
if(furi_hal_cortex_timer_is_expired(timer)) {
ret = false;
break;
}