mirror of
https://github.com/DarkFlippers/unleashed-firmware
synced 2024-11-14 00:37:21 +00:00
Merge branch 'DarkFlippers:dev' into dev
This commit is contained in:
commit
cfc5caca63
58 changed files with 198 additions and 96 deletions
|
@ -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")
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -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) {
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -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) \
|
||||||
|
|
|
@ -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) {
|
||||||
|
|
|
@ -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,
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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"
|
||||||
|
|
|
@ -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))
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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 = {
|
||||||
|
|
|
@ -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;
|
||||||
|
}
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -141,6 +141,7 @@ typedef enum {
|
||||||
StorageCommandSDInfo,
|
StorageCommandSDInfo,
|
||||||
StorageCommandSDStatus,
|
StorageCommandSDStatus,
|
||||||
StorageCommandCommonResolvePath,
|
StorageCommandCommonResolvePath,
|
||||||
|
StorageCommandSDMount,
|
||||||
} StorageCommand;
|
} StorageCommand;
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -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");
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -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",
|
||||||
|
|
|
@ -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(
|
||||||
|
|
|
@ -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);
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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,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*"
|
||||||
|
|
|
|
@ -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);
|
||||||
|
|
|
@ -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,
|
||||||
|
|
|
@ -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)
|
||||||
|
|
||||||
|
|
|
@ -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))
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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 {
|
||||||
|
|
|
@ -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:
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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) \
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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) \
|
||||||
|
|
|
@ -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"
|
||||||
|
|
||||||
/*
|
/*
|
||||||
*
|
*
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -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,
|
||||||
|
|
|
@ -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,
|
||||||
|
|
|
@ -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,
|
||||||
|
|
|
@ -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,
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -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 = {
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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)
|
||||||
|
|
Loading…
Reference in a new issue