Merge branch 'DarkFlippers:dev' into dev

This commit is contained in:
Eng1n33r 2023-09-04 20:50:46 +03:00 committed by GitHub
commit cfc5caca63
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
58 changed files with 198 additions and 96 deletions

View file

@ -10,7 +10,7 @@
#include <lib/subghz/devices/devices.h> #include <lib/subghz/devices/devices.h>
#include <lib/subghz/devices/cc1101_configs.h> #include <lib/subghz/devices/cc1101_configs.h>
#define TAG "SubGhz TEST" #define TAG "SubGhzTest"
#define KEYSTORE_DIR_NAME EXT_PATH("subghz/assets/keeloq_mfcodes") #define KEYSTORE_DIR_NAME EXT_PATH("subghz/assets/keeloq_mfcodes")
#define CAME_ATOMO_DIR_NAME EXT_PATH("subghz/assets/came_atomo") #define CAME_ATOMO_DIR_NAME EXT_PATH("subghz/assets/came_atomo")
#define NICE_FLOR_S_DIR_NAME EXT_PATH("subghz/assets/nice_flor_s") #define NICE_FLOR_S_DIR_NAME EXT_PATH("subghz/assets/nice_flor_s")

View file

@ -15,7 +15,7 @@
#include <cc1101.h> #include <cc1101.h>
#include <stdio.h> #include <stdio.h>
#define TAG "SubGhz_Device_CC1101_Ext" #define TAG "SubGhzDeviceCc1101Ext"
#define SUBGHZ_DEVICE_CC1101_EXT_TX_GPIO &gpio_ext_pb2 #define SUBGHZ_DEVICE_CC1101_EXT_TX_GPIO &gpio_ext_pb2
#define SUBGHZ_DEVICE_CC1101_EXT_E07_AMP_GPIO &gpio_ext_pc3 #define SUBGHZ_DEVICE_CC1101_EXT_E07_AMP_GPIO &gpio_ext_pc3

View file

@ -2,7 +2,7 @@
#include "cc1101_ext.h" #include "cc1101_ext.h"
#include <lib/subghz/devices/cc1101_configs.h> #include <lib/subghz/devices/cc1101_configs.h>
#define TAG "SubGhzDeviceCC1101Ext" #define TAG "SubGhzDeviceCc1101Ext"
static bool subghz_device_cc1101_ext_interconnect_is_frequency_valid(uint32_t frequency) { static bool subghz_device_cc1101_ext_interconnect_is_frequency_valid(uint32_t frequency) {
bool ret = subghz_device_cc1101_ext_is_frequency_valid(frequency); bool ret = subghz_device_cc1101_ext_is_frequency_valid(frequency);

View file

@ -4,7 +4,7 @@
#include <toolbox/stream/file_stream.h> #include <toolbox/stream/file_stream.h>
// Define log tag // Define log tag
#define TAG "example_apps_assets" #define TAG "ExampleAppsAssets"
static void example_apps_data_print_file_content(Storage* storage, const char* path) { static void example_apps_data_print_file_content(Storage* storage, const char* path) {
Stream* stream = file_stream_alloc(storage); Stream* stream = file_stream_alloc(storage);

View file

@ -2,7 +2,7 @@
#include <storage/storage.h> #include <storage/storage.h>
// Define log tag // Define log tag
#define TAG "example_apps_data" #define TAG "ExampleAppsData"
// Application entry point // Application entry point
int32_t example_apps_data_main(void* p) { int32_t example_apps_data_main(void* p) {

View file

@ -11,7 +11,7 @@
#include <loader/firmware_api/firmware_api.h> #include <loader/firmware_api/firmware_api.h>
#include <storage/storage.h> #include <storage/storage.h>
#define TAG "example_plugins" #define TAG "ExamplePlugins"
int32_t example_plugins_app(void* p) { int32_t example_plugins_app(void* p) {
UNUSED(p); UNUSED(p);

View file

@ -11,7 +11,7 @@
#include <furi.h> #include <furi.h>
#define TAG "example_plugins" #define TAG "ExamplePlugins"
int32_t example_plugins_multi_app(void* p) { int32_t example_plugins_multi_app(void* p) {
UNUSED(p); UNUSED(p);

View file

@ -8,7 +8,7 @@
#include <loader/firmware_api/firmware_api.h> #include <loader/firmware_api/firmware_api.h>
#define TAG "example_advanced_plugins" #define TAG "ExampleAdvancedPlugins"
int32_t example_advanced_plugins_app(void* p) { int32_t example_advanced_plugins_app(void* p) {
UNUSED(p); UNUSED(p);

View file

@ -9,7 +9,7 @@
#include "ducky_script_i.h" #include "ducky_script_i.h"
#include <dolphin/dolphin.h> #include <dolphin/dolphin.h>
#define TAG "BadUSB" #define TAG "BadUsb"
#define WORKER_TAG TAG "Worker" #define WORKER_TAG TAG "Worker"
#define BADUSB_ASCII_TO_KEY(script, x) \ #define BADUSB_ASCII_TO_KEY(script, x) \

View file

@ -171,7 +171,7 @@ static const DuckyCmd ducky_commands[] = {
{"WAIT_FOR_BUTTON_PRESS", ducky_fnc_waitforbutton, -1}, {"WAIT_FOR_BUTTON_PRESS", ducky_fnc_waitforbutton, -1},
}; };
#define TAG "BadUSB" #define TAG "BadUsb"
#define WORKER_TAG TAG "Worker" #define WORKER_TAG TAG "Worker"
int32_t ducky_execute_cmd(BadUsbScript* bad_usb, const char* line) { int32_t ducky_execute_cmd(BadUsbScript* bad_usb, const char* line) {

View file

@ -3,7 +3,7 @@
#include <toolbox/path.h> #include <toolbox/path.h>
#include <dolphin/dolphin.h> #include <dolphin/dolphin.h>
#define TAG "iButtonApp" #define TAG "IButtonApp"
static const NotificationSequence sequence_blink_set_yellow = { static const NotificationSequence sequence_blink_set_yellow = {
&message_blink_set_color_yellow, &message_blink_set_color_yellow,

View file

@ -28,7 +28,7 @@
// Rx RAW | only internal module // Rx RAW | only internal module
// Chat | both // Chat | both
#define TAG "SubGhz CLI" #define TAG "SubGhzCli"
static void subghz_cli_radio_device_power_on() { static void subghz_cli_radio_device_power_on() {
uint8_t attempts = 5; uint8_t attempts = 5;

View file

@ -9,7 +9,7 @@
#include <assets_icons.h> #include <assets_icons.h>
#define SUBGHZ_READ_RAW_RSSI_HISTORY_SIZE 100 #define SUBGHZ_READ_RAW_RSSI_HISTORY_SIZE 100
#define TAG "SubGhzReadRAW" #define TAG "SubGhzReadRaw"
struct SubGhzReadRAW { struct SubGhzReadRAW {
View* view; View* view;

View file

@ -10,7 +10,7 @@
#include "hmac_sha256.h" #include "hmac_sha256.h"
#include "micro-ecc/uECC.h" #include "micro-ecc/uECC.h"
#define TAG "U2F" #define TAG "U2f"
#define WORKER_TAG TAG "Worker" #define WORKER_TAG TAG "Worker"
#define U2F_CMD_REGISTER 0x01 #define U2F_CMD_REGISTER 0x01

View file

@ -5,7 +5,7 @@
#include <furi_hal_random.h> #include <furi_hal_random.h>
#include <flipper_format/flipper_format.h> #include <flipper_format/flipper_format.h>
#define TAG "U2F" #define TAG "U2f"
#define U2F_DATA_FOLDER EXT_PATH("u2f/") #define U2F_DATA_FOLDER EXT_PATH("u2f/")
#define U2F_CERT_FILE U2F_DATA_FOLDER "assets/cert.der" #define U2F_CERT_FILE U2F_DATA_FOLDER "assets/cert.der"

View file

@ -10,7 +10,7 @@
#include <furi_hal_console.h> #include <furi_hal_console.h>
#define TAG "U2FHID" #define TAG "U2fHid"
#define WORKER_TAG TAG "Worker" #define WORKER_TAG TAG "Worker"
#define U2F_HID_MAX_PAYLOAD_LEN ((HID_U2F_PACKET_LEN - 7) + 128 * (HID_U2F_PACKET_LEN - 5)) #define U2F_HID_MAX_PAYLOAD_LEN ((HID_U2F_PACKET_LEN - 7) + 128 * (HID_U2F_PACKET_LEN - 5))

View file

@ -12,7 +12,7 @@
#define ICON_SD_MOUNTED &I_SDcardMounted_11x8 #define ICON_SD_MOUNTED &I_SDcardMounted_11x8
#define ICON_SD_ERROR &I_SDcardFail_11x8 #define ICON_SD_ERROR &I_SDcardFail_11x8
#define TAG RECORD_STORAGE #define TAG "Storage"
static void storage_app_sd_icon_draw_callback(Canvas* canvas, void* context) { static void storage_app_sd_icon_draw_callback(Canvas* canvas, void* context) {
furi_assert(canvas); furi_assert(canvas);

View file

@ -334,12 +334,20 @@ const char* storage_file_get_error_desc(File* file);
*/ */
FS_Error storage_sd_format(Storage* api); FS_Error storage_sd_format(Storage* api);
/** Will unmount the SD card /** Will unmount the SD card.
* Will return FSE_NOT_READY if the SD card is not mounted.
* Will return FSE_DENIED if there are open files on the SD card.
* @param api pointer to the api * @param api pointer to the api
* @return FS_Error operation result * @return FS_Error operation result
*/ */
FS_Error storage_sd_unmount(Storage* api); FS_Error storage_sd_unmount(Storage* api);
/** Will mount the SD card
* @param api pointer to the api
* @return FS_Error operation result
*/
FS_Error storage_sd_mount(Storage* api);
/** Retrieves SD card information /** Retrieves SD card information
* @param api pointer to the api * @param api pointer to the api
* @param info pointer to the info * @param info pointer to the info

View file

@ -11,7 +11,7 @@
#define MAX_EXT_LEN 16 #define MAX_EXT_LEN 16
#define FILE_BUFFER_SIZE 512 #define FILE_BUFFER_SIZE 512
#define TAG "StorageAPI" #define TAG "StorageApi"
#define S_API_PROLOGUE FuriApiLock lock = api_lock_alloc_locked(); #define S_API_PROLOGUE FuriApiLock lock = api_lock_alloc_locked();
@ -781,6 +781,14 @@ FS_Error storage_sd_unmount(Storage* storage) {
return S_RETURN_ERROR; return S_RETURN_ERROR;
} }
FS_Error storage_sd_mount(Storage* storage) {
S_API_PROLOGUE;
SAData data = {};
S_API_MESSAGE(StorageCommandSDMount);
S_API_EPILOGUE;
return S_RETURN_ERROR;
}
FS_Error storage_sd_info(Storage* storage, SDInfo* info) { FS_Error storage_sd_info(Storage* storage, SDInfo* info) {
S_API_PROLOGUE; S_API_PROLOGUE;
SAData data = { SAData data = {

View file

@ -1,6 +1,8 @@
#include "storage_glue.h" #include "storage_glue.h"
#include <furi_hal.h> #include <furi_hal.h>
#define TAG "StorageGlue"
/****************** storage file ******************/ /****************** storage file ******************/
void storage_file_init(StorageFile* obj) { void storage_file_init(StorageFile* obj) {
@ -149,3 +151,8 @@ bool storage_pop_storage_file(File* file, StorageData* storage) {
return result; return result;
} }
size_t storage_open_files_count(StorageData* storage) {
size_t count = StorageFileList_size(storage->files);
return count;
}

View file

@ -68,6 +68,8 @@ void* storage_get_storage_file_data(const File* file, StorageData* storage);
void storage_push_storage_file(File* file, FuriString* path, StorageData* storage); void storage_push_storage_file(File* file, FuriString* path, StorageData* storage);
bool storage_pop_storage_file(File* file, StorageData* storage); bool storage_pop_storage_file(File* file, StorageData* storage);
size_t storage_open_files_count(StorageData* storage);
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif

View file

@ -141,6 +141,7 @@ typedef enum {
StorageCommandSDInfo, StorageCommandSDInfo,
StorageCommandSDStatus, StorageCommandSDStatus,
StorageCommandCommonResolvePath, StorageCommandCommonResolvePath,
StorageCommandSDMount,
} StorageCommand; } StorageCommand;
typedef struct { typedef struct {

View file

@ -418,12 +418,38 @@ static FS_Error storage_process_sd_format(Storage* app) {
static FS_Error storage_process_sd_unmount(Storage* app) { static FS_Error storage_process_sd_unmount(Storage* app) {
FS_Error ret = FSE_OK; FS_Error ret = FSE_OK;
if(storage_data_status(&app->storage[ST_EXT]) == StorageStatusNotReady) { do {
ret = FSE_NOT_READY; StorageData* storage = &app->storage[ST_EXT];
} else { if(storage_data_status(storage) == StorageStatusNotReady) {
sd_unmount_card(&app->storage[ST_EXT]); ret = FSE_NOT_READY;
storage_data_timestamp(&app->storage[ST_EXT]); break;
} }
if(storage_open_files_count(storage)) {
ret = FSE_DENIED;
break;
}
sd_unmount_card(storage);
storage_data_timestamp(storage);
} while(false);
return ret;
}
static FS_Error storage_process_sd_mount(Storage* app) {
FS_Error ret = FSE_OK;
do {
StorageData* storage = &app->storage[ST_EXT];
if(storage_data_status(storage) != StorageStatusNotReady) {
ret = FSE_NOT_READY;
break;
}
ret = sd_mount_card(storage, true);
storage_data_timestamp(storage);
} while(false);
return ret; return ret;
} }
@ -630,6 +656,9 @@ void storage_process_message_internal(Storage* app, StorageMessage* message) {
case StorageCommandSDUnmount: case StorageCommandSDUnmount:
message->return_data->error_value = storage_process_sd_unmount(app); message->return_data->error_value = storage_process_sd_unmount(app);
break; break;
case StorageCommandSDMount:
message->return_data->error_value = storage_process_sd_mount(app);
break;
case StorageCommandSDInfo: case StorageCommandSDInfo:
message->return_data->error_value = message->return_data->error_value =
storage_process_sd_info(app, message->data->sdinfo.info); storage_process_sd_info(app, message->data->sdinfo.info);

View file

@ -24,7 +24,7 @@ static FS_Error storage_ext_parse_error(SDError error);
/******************* Core Functions *******************/ /******************* Core Functions *******************/
static bool sd_mount_card(StorageData* storage, bool notify) { static bool sd_mount_card_internal(StorageData* storage, bool notify) {
bool result = false; bool result = false;
uint8_t counter = sd_max_mount_retry_count(); uint8_t counter = sd_max_mount_retry_count();
uint8_t bsp_result; uint8_t bsp_result;
@ -106,6 +106,32 @@ FS_Error sd_unmount_card(StorageData* storage) {
return storage_ext_parse_error(error); return storage_ext_parse_error(error);
} }
FS_Error sd_mount_card(StorageData* storage, bool notify) {
sd_mount_card_internal(storage, notify);
FS_Error error;
if(storage->status != StorageStatusOK) {
FURI_LOG_E(TAG, "sd init error: %s", storage_data_status_text(storage));
if(notify) {
NotificationApp* notification = furi_record_open(RECORD_NOTIFICATION);
sd_notify_error(notification);
furi_record_close(RECORD_NOTIFICATION);
}
error = FSE_INTERNAL;
} else {
FURI_LOG_I(TAG, "card mounted");
if(notify) {
NotificationApp* notification = furi_record_open(RECORD_NOTIFICATION);
sd_notify_success(notification);
furi_record_close(RECORD_NOTIFICATION);
}
error = FSE_OK;
}
return error;
}
FS_Error sd_format_card(StorageData* storage) { FS_Error sd_format_card(StorageData* storage) {
#ifdef FURI_RAM_EXEC #ifdef FURI_RAM_EXEC
UNUSED(storage); UNUSED(storage);
@ -222,25 +248,8 @@ static void storage_ext_tick_internal(StorageData* storage, bool notify) {
if(sd_data->sd_was_present) { if(sd_data->sd_was_present) {
if(hal_sd_detect()) { if(hal_sd_detect()) {
FURI_LOG_I(TAG, "card detected"); FURI_LOG_I(TAG, "card detected");
sd_mount_card(storage, notify);
if(storage->status != StorageStatusOK) {
FURI_LOG_E(TAG, "sd init error: %s", storage_data_status_text(storage));
if(notify) {
NotificationApp* notification = furi_record_open(RECORD_NOTIFICATION);
sd_notify_error(notification);
furi_record_close(RECORD_NOTIFICATION);
}
} else {
FURI_LOG_I(TAG, "card mounted");
if(notify) {
NotificationApp* notification = furi_record_open(RECORD_NOTIFICATION);
sd_notify_success(notification);
furi_record_close(RECORD_NOTIFICATION);
}
}
sd_data->sd_was_present = false; sd_data->sd_was_present = false;
sd_mount_card(storage, notify);
if(!hal_sd_detect()) { if(!hal_sd_detect()) {
FURI_LOG_I(TAG, "card removed while mounting"); FURI_LOG_I(TAG, "card removed while mounting");

View file

@ -8,6 +8,7 @@ extern "C" {
#endif #endif
void storage_ext_init(StorageData* storage); void storage_ext_init(StorageData* storage);
FS_Error sd_mount_card(StorageData* storage, bool notify);
FS_Error sd_unmount_card(StorageData* storage); FS_Error sd_unmount_card(StorageData* storage);
FS_Error sd_format_card(StorageData* storage); FS_Error sd_format_card(StorageData* storage);
FS_Error sd_card_info(StorageData* storage, SDInfo* sd_info); FS_Error sd_card_info(StorageData* storage, SDInfo* sd_info);

View file

@ -31,12 +31,24 @@ void storage_settings_scene_start_on_enter(void* context) {
StorageSettingsStartSubmenuIndexSDInfo, StorageSettingsStartSubmenuIndexSDInfo,
storage_settings_scene_start_submenu_callback, storage_settings_scene_start_submenu_callback,
app); app);
submenu_add_item(
submenu, FS_Error sd_status = storage_sd_status(app->fs_api);
"Unmount SD Card", if(sd_status != FSE_OK) {
StorageSettingsStartSubmenuIndexUnmount, submenu_add_item(
storage_settings_scene_start_submenu_callback, submenu,
app); "Mount SD Card",
StorageSettingsStartSubmenuIndexUnmount,
storage_settings_scene_start_submenu_callback,
app);
} else {
submenu_add_item(
submenu,
"Unmount SD Card",
StorageSettingsStartSubmenuIndexUnmount,
storage_settings_scene_start_submenu_callback,
app);
}
submenu_add_item( submenu_add_item(
submenu, submenu,
"Format SD Card", "Format SD Card",

View file

@ -12,13 +12,17 @@ void storage_settings_scene_unmount_confirm_on_enter(void* context) {
DialogEx* dialog_ex = app->dialog_ex; DialogEx* dialog_ex = app->dialog_ex;
FS_Error sd_status = storage_sd_status(app->fs_api); FS_Error sd_status = storage_sd_status(app->fs_api);
if(sd_status == FSE_NOT_READY) { if(sd_status == FSE_NOT_READY) {
dialog_ex_set_icon(dialog_ex, 72, 17, &I_DolphinCommon_56x48); dialog_ex_set_header(dialog_ex, "Mount SD Card?", 64, 10, AlignCenter, AlignCenter);
dialog_ex_set_header(dialog_ex, "SD Card Not Mounted", 64, 3, AlignCenter, AlignTop);
dialog_ex_set_text( dialog_ex_set_text(
dialog_ex, "Try to reinsert\nor format SD\ncard.", 3, 19, AlignLeft, AlignTop); dialog_ex,
dialog_ex_set_center_button_text(dialog_ex, "Ok"); "This may turn off power\nfor external modules",
64,
32,
AlignCenter,
AlignCenter);
dialog_ex_set_left_button_text(dialog_ex, "Cancel");
dialog_ex_set_right_button_text(dialog_ex, "Mount");
} else { } else {
dialog_ex_set_header(dialog_ex, "Unmount SD Card?", 64, 10, AlignCenter, AlignCenter); dialog_ex_set_header(dialog_ex, "Unmount SD Card?", 64, 10, AlignCenter, AlignCenter);
dialog_ex_set_text( dialog_ex_set_text(

View file

@ -9,22 +9,41 @@ static void
void storage_settings_scene_unmounted_on_enter(void* context) { void storage_settings_scene_unmounted_on_enter(void* context) {
StorageSettings* app = context; StorageSettings* app = context;
FS_Error error = storage_sd_unmount(app->fs_api);
DialogEx* dialog_ex = app->dialog_ex; DialogEx* dialog_ex = app->dialog_ex;
FS_Error sd_status = storage_sd_status(app->fs_api);
if(sd_status == FSE_NOT_READY) {
FS_Error error = storage_sd_mount(app->fs_api);
if(error == FSE_OK) {
dialog_ex_set_header(dialog_ex, "SD Card Mounted", 64, 3, AlignCenter, AlignTop);
dialog_ex_set_text(
dialog_ex, "Flipper can use\nSD card now.", 3, 22, AlignLeft, AlignTop);
notification_message(app->notification, &sequence_blink_green_100);
} else {
dialog_ex_set_header(dialog_ex, "Cannot Mount SD Card", 64, 3, AlignCenter, AlignTop);
dialog_ex_set_text(
dialog_ex, storage_error_get_desc(error), 3, 22, AlignLeft, AlignTop);
notification_message(app->notification, &sequence_blink_red_100);
}
} else {
FS_Error error = storage_sd_unmount(app->fs_api);
if(error == FSE_OK) {
dialog_ex_set_header(dialog_ex, "SD Card Unmounted", 64, 3, AlignCenter, AlignTop);
dialog_ex_set_text(
dialog_ex, "You can remove\nSD card now.", 3, 22, AlignLeft, AlignTop);
notification_message(app->notification, &sequence_blink_green_100);
} else {
dialog_ex_set_header(
dialog_ex, "Cannot Unmount SD Card", 64, 3, AlignCenter, AlignTop);
dialog_ex_set_text(
dialog_ex, storage_error_get_desc(error), 3, 22, AlignLeft, AlignTop);
notification_message(app->notification, &sequence_blink_red_100);
}
}
dialog_ex_set_center_button_text(dialog_ex, "OK"); dialog_ex_set_center_button_text(dialog_ex, "OK");
dialog_ex_set_icon(dialog_ex, 72, 17, &I_DolphinCommon_56x48); dialog_ex_set_icon(dialog_ex, 72, 17, &I_DolphinCommon_56x48);
if(error == FSE_OK) {
dialog_ex_set_header(dialog_ex, "SD Card Unmounted", 64, 3, AlignCenter, AlignTop);
dialog_ex_set_text(dialog_ex, "You can remove\nSD card now.", 3, 22, AlignLeft, AlignTop);
notification_message(app->notification, &sequence_blink_green_100);
} else {
dialog_ex_set_header(dialog_ex, "Cannot Unmount SD Card", 64, 3, AlignCenter, AlignTop);
dialog_ex_set_text(dialog_ex, storage_error_get_desc(error), 3, 22, AlignLeft, AlignTop);
notification_message(app->notification, &sequence_blink_red_100);
}
dialog_ex_set_context(dialog_ex, app); dialog_ex_set_context(dialog_ex, app);
dialog_ex_set_result_callback(dialog_ex, storage_settings_scene_unmounted_dialog_callback); dialog_ex_set_result_callback(dialog_ex, storage_settings_scene_unmounted_dialog_callback);

View file

@ -11,7 +11,7 @@
#include <toolbox/tar/tar_archive.h> #include <toolbox/tar/tar_archive.h>
#include <toolbox/crc32_calc.h> #include <toolbox/crc32_calc.h>
#define TAG "UpdWorkerRAM" #define TAG "UpdWorkerRam"
#define STM_DFU_VENDOR_ID 0x0483 #define STM_DFU_VENDOR_ID 0x0483
#define STM_DFU_PRODUCT_ID 0xDF11 #define STM_DFU_PRODUCT_ID 0xDF11

View file

@ -1,5 +1,5 @@
entry,status,name,type,params entry,status,name,type,params
Version,+,36.0,, Version,+,36.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,,
@ -2001,6 +2001,7 @@ Function,+,storage_int_backup,FS_Error,"Storage*, const char*"
Function,+,storage_int_restore,FS_Error,"Storage*, const char*, Storage_name_converter" Function,+,storage_int_restore,FS_Error,"Storage*, const char*, Storage_name_converter"
Function,+,storage_sd_format,FS_Error,Storage* Function,+,storage_sd_format,FS_Error,Storage*
Function,+,storage_sd_info,FS_Error,"Storage*, SDInfo*" Function,+,storage_sd_info,FS_Error,"Storage*, SDInfo*"
Function,+,storage_sd_mount,FS_Error,Storage*
Function,+,storage_sd_status,FS_Error,Storage* Function,+,storage_sd_status,FS_Error,Storage*
Function,+,storage_sd_unmount,FS_Error,Storage* Function,+,storage_sd_unmount,FS_Error,Storage*
Function,+,storage_simply_mkdir,_Bool,"Storage*, const char*" Function,+,storage_simply_mkdir,_Bool,"Storage*, const char*"

1 entry status name type params
2 Version + 36.0 36.1
3 Header + applications/services/bt/bt_service/bt.h
4 Header + applications/services/cli/cli.h
5 Header + applications/services/cli/cli_vcp.h
2001 Function + storage_int_restore FS_Error Storage*, const char*, Storage_name_converter
2002 Function + storage_sd_format FS_Error Storage*
2003 Function + storage_sd_info FS_Error Storage*, SDInfo*
2004 Function + storage_sd_mount FS_Error Storage*
2005 Function + storage_sd_status FS_Error Storage*
2006 Function + storage_sd_unmount FS_Error Storage*
2007 Function + storage_simply_mkdir _Bool Storage*, const char*

View file

@ -1,5 +1,5 @@
entry,status,name,type,params entry,status,name,type,params
Version,+,36.0,, Version,+,36.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,,
@ -2650,6 +2650,7 @@ Function,+,storage_int_backup,FS_Error,"Storage*, const char*"
Function,+,storage_int_restore,FS_Error,"Storage*, const char*, Storage_name_converter" Function,+,storage_int_restore,FS_Error,"Storage*, const char*, Storage_name_converter"
Function,+,storage_sd_format,FS_Error,Storage* Function,+,storage_sd_format,FS_Error,Storage*
Function,+,storage_sd_info,FS_Error,"Storage*, SDInfo*" Function,+,storage_sd_info,FS_Error,"Storage*, SDInfo*"
Function,+,storage_sd_mount,FS_Error,Storage*
Function,+,storage_sd_status,FS_Error,Storage* Function,+,storage_sd_status,FS_Error,Storage*
Function,+,storage_sd_unmount,FS_Error,Storage* Function,+,storage_sd_unmount,FS_Error,Storage*
Function,+,storage_simply_mkdir,_Bool,"Storage*, const char*" Function,+,storage_simply_mkdir,_Bool,"Storage*, const char*"

1 entry status name type params
2 Version + 36.0 36.1
3 Header + applications/drivers/subghz/cc1101_ext/cc1101_ext_interconnect.h
4 Header + applications/services/bt/bt_service/bt.h
5 Header + applications/services/cli/cli.h
2650 Function + storage_int_restore FS_Error Storage*, const char*, Storage_name_converter
2651 Function + storage_sd_format FS_Error Storage*
2652 Function + storage_sd_info FS_Error Storage*, SDInfo*
2653 Function + storage_sd_mount FS_Error Storage*
2654 Function + storage_sd_status FS_Error Storage*
2655 Function + storage_sd_unmount FS_Error Storage*
2656 Function + storage_simply_mkdir _Bool Storage*, const char*

View file

@ -8,7 +8,7 @@
#include <stm32wbxx_ll_cortex.h> #include <stm32wbxx_ll_cortex.h>
#include <furi.h> #include <furi.h>
#define TAG "FuriHalI2C" #define TAG "FuriHalI2c"
void furi_hal_i2c_init_early() { void furi_hal_i2c_init_early() {
furi_hal_i2c_bus_power.callback(&furi_hal_i2c_bus_power, FuriHalI2cBusEventInit); furi_hal_i2c_bus_power.callback(&furi_hal_i2c_bus_power, FuriHalI2cBusEventInit);

View file

@ -3,7 +3,7 @@
#include <furi.h> #include <furi.h>
#include <algorithm> #include <algorithm>
#define TAG "hashtable_api" #define TAG "ApiHashtable"
bool elf_resolve_from_hashtable( bool elf_resolve_from_hashtable(
const ElfApiInterface* interface, const ElfApiInterface* interface,

View file

@ -17,7 +17,7 @@
#define BUFFER_SIZE 512 #define BUFFER_SIZE 512
#define TAG "fap_assets" #define TAG "FapAssets"
#pragma pack(push, 1) #pragma pack(push, 1)

View file

@ -5,7 +5,7 @@
#include "elf_api_interface.h" #include "elf_api_interface.h"
#include "../api_hashtable/api_hashtable.h" #include "../api_hashtable/api_hashtable.h"
#define TAG "elf" #define TAG "Elf"
#define ELF_NAME_BUFFER_LEN 32 #define ELF_NAME_BUFFER_LEN 32
#define SECTION_OFFSET(e, n) ((e)->section_table + (n) * sizeof(Elf32_Shdr)) #define SECTION_OFFSET(e, n) ((e)->section_table + (n) * sizeof(Elf32_Shdr))

View file

@ -9,7 +9,7 @@
#include <furi.h> #include <furi.h>
#define TAG "libmgr" #define TAG "PluginManager"
ARRAY_DEF(FlipperApplicationList, FlipperApplication*, M_PTR_OPLIST) ARRAY_DEF(FlipperApplicationList, FlipperApplication*, M_PTR_OPLIST)
#define M_OPL_FlipperApplicationList_t() ARRAY_OPLIST(FlipperApplicationList, M_PTR_OPLIST) #define M_OPL_FlipperApplicationList_t() ARRAY_OPLIST(FlipperApplicationList, M_PTR_OPLIST)

View file

@ -6,7 +6,7 @@
#define LFRFID_RAW_FILE_MAGIC 0x4C464952 #define LFRFID_RAW_FILE_MAGIC 0x4C464952
#define LFRFID_RAW_FILE_VERSION 1 #define LFRFID_RAW_FILE_VERSION 1
#define TAG "RFID RAW File" #define TAG "LfRfidRawFile"
typedef struct { typedef struct {
uint32_t magic; uint32_t magic;

View file

@ -10,7 +10,7 @@
#define RFID_DATA_BUFFER_SIZE 2048 #define RFID_DATA_BUFFER_SIZE 2048
#define READ_DATA_BUFFER_COUNT 4 #define READ_DATA_BUFFER_COUNT 4
#define TAG_EMULATE "RAW EMULATE" #define TAG_EMULATE "RawEmulate"
// emulate mode // emulate mode
typedef struct { typedef struct {

View file

@ -7,7 +7,7 @@
#include "tools/varint_pair.h" #include "tools/varint_pair.h"
#include "tools/bit_lib.h" #include "tools/bit_lib.h"
#define TAG "LFRFIDWorker" #define TAG "LfRfidWorker"
/** /**
* if READ_DEBUG_GPIO is defined: * if READ_DEBUG_GPIO is defined:

View file

@ -7,7 +7,7 @@
#include "furi_hal_nfc.h" #include "furi_hal_nfc.h"
#include <furi_hal_random.h> #include <furi_hal_random.h>
#define TAG "SLIX" #define TAG "Slix"
ReturnCode slix2_read_nxp_sysinfo(FuriHalNfcDevData* nfc_data, NfcVData* nfcv_data) { ReturnCode slix2_read_nxp_sysinfo(FuriHalNfcDevData* nfc_data, NfcVData* nfcv_data) {
furi_assert(nfc_data); furi_assert(nfc_data);

View file

@ -2,7 +2,7 @@
#include <furi_hal.h> #include <furi_hal.h>
#include "../cc1101_configs.h" #include "../cc1101_configs.h"
#define TAG "SubGhzDeviceCC1101Int" #define TAG "SubGhzDeviceCc1101Int"
static bool subghz_device_cc1101_int_interconnect_is_frequency_valid(uint32_t frequency) { static bool subghz_device_cc1101_int_interconnect_is_frequency_valid(uint32_t frequency) {
bool ret = furi_hal_subghz_is_frequency_valid(frequency); bool ret = furi_hal_subghz_is_frequency_valid(frequency);

View file

@ -7,7 +7,7 @@
#include "../blocks/math.h" #include "../blocks/math.h"
// protocol BERNER / ELKA / TEDSEN / TELETASTER // protocol BERNER / ELKA / TEDSEN / TELETASTER
#define TAG "SubGhzProtocolBETT" #define TAG "SubGhzProtocolBett"
#define DIP_P 0b11 //(+) #define DIP_P 0b11 //(+)
#define DIP_O 0b10 //(0) #define DIP_O 0b10 //(0)

View file

@ -9,7 +9,7 @@
#include <lib/toolbox/stream/stream.h> #include <lib/toolbox/stream/stream.h>
#include <lib/flipper_format/flipper_format_i.h> #include <lib/flipper_format/flipper_format_i.h>
#define TAG "SubGhzProtocolBinRAW" #define TAG "SubGhzProtocolBinRaw"
//change very carefully, RAM ends at the most inopportune moment //change very carefully, RAM ends at the most inopportune moment
#define BIN_RAW_BUF_RAW_SIZE 2048 #define BIN_RAW_BUF_RAW_SIZE 2048

View file

@ -12,7 +12,7 @@
* *
*/ */
#define TAG "SubGhzProtocolCAME" #define TAG "SubGhzProtocolCame"
#define CAME_12_COUNT_BIT 12 #define CAME_12_COUNT_BIT 12
#define CAME_24_COUNT_BIT 24 #define CAME_24_COUNT_BIT 24
#define PRASTEL_COUNT_BIT 25 #define PRASTEL_COUNT_BIT 25

View file

@ -13,7 +13,7 @@
* *
*/ */
#define TAG "SubGhzProtocolCAME_Twee" #define TAG "SubGhzProtocolCameTwee"
#define DIP_PATTERN "%c%c%c%c%c%c%c%c%c%c" #define DIP_PATTERN "%c%c%c%c%c%c%c%c%c%c"
#define CNT_TO_DIP(dip) \ #define CNT_TO_DIP(dip) \

View file

@ -6,7 +6,7 @@
#include "../blocks/generic.h" #include "../blocks/generic.h"
#include "../blocks/math.h" #include "../blocks/math.h"
#define TAG "SubGhzProtocolChamb_Code" #define TAG "SubGhzProtocolChambCode"
#define CHAMBERLAIN_CODE_BIT_STOP 0b0001 #define CHAMBERLAIN_CODE_BIT_STOP 0b0001
#define CHAMBERLAIN_CODE_BIT_1 0b0011 #define CHAMBERLAIN_CODE_BIT_1 0b0011

View file

@ -12,7 +12,7 @@
* *
*/ */
#define TAG "SubGhzProtocolHoltek_HT12X" #define TAG "SubGhzProtocolHoltekHt12x"
#define DIP_PATTERN "%c%c%c%c%c%c%c%c" #define DIP_PATTERN "%c%c%c%c%c%c%c%c"
#define CNT_TO_DIP(dip) \ #define CNT_TO_DIP(dip) \

View file

@ -6,7 +6,7 @@
#include "../blocks/generic.h" #include "../blocks/generic.h"
#include "../blocks/math.h" #include "../blocks/math.h"
#define TAG "SubGhzProtocolHoneywellWDB" #define TAG "SubGhzProtocolHoneywellWdb"
/* /*
* *

View file

@ -6,7 +6,7 @@
#include "../blocks/generic.h" #include "../blocks/generic.h"
#include "../blocks/math.h" #include "../blocks/math.h"
#define TAG "SubGhzProtocolHormannHSM" #define TAG "SubGhzProtocolHormannHsm"
#define HORMANN_HSM_PATTERN 0xFF000000003 #define HORMANN_HSM_PATTERN 0xFF000000003

View file

@ -6,7 +6,7 @@
#include "../blocks/generic.h" #include "../blocks/generic.h"
#include "../blocks/math.h" #include "../blocks/math.h"
#define TAG "SubGhzProtocol_iDo_117/111" #define TAG "SubGhzProtocolIdo117/111"
static const SubGhzBlockConst subghz_protocol_ido_const = { static const SubGhzBlockConst subghz_protocol_ido_const = {
.te_short = 450, .te_short = 450,

View file

@ -6,7 +6,7 @@
#include "../blocks/generic.h" #include "../blocks/generic.h"
#include "../blocks/math.h" #include "../blocks/math.h"
#define TAG "SubGhzProtocoKIA" #define TAG "SubGhzProtocoKia"
static const SubGhzBlockConst subghz_protocol_kia_const = { static const SubGhzBlockConst subghz_protocol_kia_const = {
.te_short = 250, .te_short = 250,

View file

@ -8,7 +8,7 @@
#include "../blocks/generic.h" #include "../blocks/generic.h"
#include "../blocks/math.h" #include "../blocks/math.h"
#define TAG "SubGhzProtocoKingGates_stylo_4k" #define TAG "SubGhzProtocoKingGatesStylo4k"
static const SubGhzBlockConst subghz_protocol_kinggates_stylo_4k_const = { static const SubGhzBlockConst subghz_protocol_kinggates_stylo_4k_const = {
.te_short = 400, .te_short = 400,

View file

@ -5,7 +5,7 @@
#include "../blocks/generic.h" #include "../blocks/generic.h"
#include "../blocks/math.h" #include "../blocks/math.h"
#define TAG "SubGhzProtocolNiceFLO" #define TAG "SubGhzProtocolNiceFlo"
static const SubGhzBlockConst subghz_protocol_nice_flo_const = { static const SubGhzBlockConst subghz_protocol_nice_flo_const = {
.te_short = 700, .te_short = 700,

View file

@ -6,7 +6,7 @@
#include "../blocks/generic.h" #include "../blocks/generic.h"
#include "../blocks/math.h" #include "../blocks/math.h"
#define TAG "SubGhzProtocolPhoenix_V2" #define TAG "SubGhzProtocolPhoenixV2"
//transmission only static mode //transmission only static mode

View file

@ -11,7 +11,7 @@
#include <flipper_format/flipper_format_i.h> #include <flipper_format/flipper_format_i.h>
#include <lib/toolbox/stream/stream.h> #include <lib/toolbox/stream/stream.h>
#define TAG "SubGhzProtocolRAW" #define TAG "SubGhzProtocolRaw"
#define SUBGHZ_DOWNLOAD_MAX_SIZE 512 #define SUBGHZ_DOWNLOAD_MAX_SIZE 512
static const SubGhzBlockConst subghz_protocol_raw_const = { static const SubGhzBlockConst subghz_protocol_raw_const = {

View file

@ -11,7 +11,7 @@
* https://github.com/merbanan/rtl_433/blob/master/src/devices/secplus_v1.c * https://github.com/merbanan/rtl_433/blob/master/src/devices/secplus_v1.c
*/ */
#define TAG "SubGhzProtocoSecPlus_v1" #define TAG "SubGhzProtocoSecPlusV1"
#define SECPLUS_V1_BIT_ERR -1 //0b0000 #define SECPLUS_V1_BIT_ERR -1 //0b0000
#define SECPLUS_V1_BIT_0 0 //0b0001 #define SECPLUS_V1_BIT_0 0 //0b0001

View file

@ -15,7 +15,7 @@
* https://github.com/merbanan/rtl_433/blob/master/src/devices/secplus_v2.c * https://github.com/merbanan/rtl_433/blob/master/src/devices/secplus_v2.c
*/ */
#define TAG "SubGhzProtocoSecPlus_v2" #define TAG "SubGhzProtocoSecPlusV2"
#define SECPLUS_V2_HEADER 0x3C0000000000 #define SECPLUS_V2_HEADER 0x3C0000000000
#define SECPLUS_V2_HEADER_MASK 0xFFFF3C0000000000 #define SECPLUS_V2_HEADER_MASK 0xFFFF3C0000000000

View file

@ -12,7 +12,7 @@
* *
*/ */
#define TAG "SubGhzProtocolSMC5326" #define TAG "SubGhzProtocolSmc5326"
#define DIP_P 0b11 //(+) #define DIP_P 0b11 //(+)
#define DIP_O 0b10 //(0) #define DIP_O 0b10 //(0)