mirror of
https://github.com/DarkFlippers/unleashed-firmware
synced 2024-11-10 06:54:19 +00:00
typo combing
This commit is contained in:
parent
80a64d8e1a
commit
b89902942b
52 changed files with 118 additions and 118 deletions
|
@ -54,7 +54,7 @@ Our Discord Community:
|
|||
Also check the changelog in releases for latest updates!
|
||||
|
||||
### Current modified and new Sub-GHz protocols list:
|
||||
Thanks to Official team (to thier SubGHz Developer, Skorp) for implementing decoders for these protocols.
|
||||
Thanks to Official team (to their SubGHz Developer, Skorp) for implementing decoders for these protocols.
|
||||
|
||||
Encoders/sending made by Eng1n33r & @xMasterX:
|
||||
|
||||
|
|
|
@ -139,7 +139,7 @@ if GetOption("fullenv") or any(
|
|||
basic_dist = distenv.DistCommand("fw_dist", distenv["DIST_DEPENDS"])
|
||||
distenv.Default(basic_dist)
|
||||
|
||||
dist_dir = distenv.GetProjetDirName()
|
||||
dist_dir = distenv.GetProjectDirName()
|
||||
fap_dist = [
|
||||
distenv.Install(
|
||||
distenv.Dir(f"#/dist/{dist_dir}/apps/debug_elf"),
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
extern "C" {
|
||||
#endif
|
||||
|
||||
/** Anonumous instance */
|
||||
/** Anonymous instance */
|
||||
typedef struct InfraredProgressView InfraredProgressView;
|
||||
|
||||
/** Callback for back button handling */
|
||||
|
|
|
@ -14,7 +14,7 @@ static void lfrfid_clear_t5577_password_and_config_to_EM(LfRfid* app) {
|
|||
T55xxTiming* t55xxtiming = malloc(sizeof(T55xxTiming));
|
||||
Popup* popup = app->popup;
|
||||
char curr_buf[32] = {};
|
||||
//TODO: use .txt file in resourses for passwords.
|
||||
//TODO: use .txt file in resources for passwords.
|
||||
const uint32_t default_passwords[] = {
|
||||
0x51243648, 0x000D8787, 0x19920427, 0x50524F58, 0xF9DCEBA0, 0x65857569, 0x05D73B9F,
|
||||
0x89A69E60, 0x314159E0, 0xAA55BBBB, 0xA5B4C3D2, 0x1C0B5848, 0x00434343, 0x444E4752,
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
* @param aid - AID number array
|
||||
* @param aid_len - AID length
|
||||
* @param aid_name - string to keep AID name
|
||||
* @return - true if AID found, false otherwies
|
||||
* @return - true if AID found, false otherwise
|
||||
*/
|
||||
bool nfc_emv_parser_get_aid_name(
|
||||
Storage* storage,
|
||||
|
@ -21,7 +21,7 @@ bool nfc_emv_parser_get_aid_name(
|
|||
* @param storage Storage instance
|
||||
* @param country_code - ISO 3166 country code
|
||||
* @param country_name - string to keep country name
|
||||
* @return - true if country found, false otherwies
|
||||
* @return - true if country found, false otherwise
|
||||
*/
|
||||
bool nfc_emv_parser_get_country_name(
|
||||
Storage* storage,
|
||||
|
@ -32,7 +32,7 @@ bool nfc_emv_parser_get_country_name(
|
|||
* @param storage Storage instance
|
||||
* @param currency_code - ISO 3166 currency code
|
||||
* @param currency_name - string to keep currency name
|
||||
* @return - true if currency found, false otherwies
|
||||
* @return - true if currency found, false otherwise
|
||||
*/
|
||||
bool nfc_emv_parser_get_currency_name(
|
||||
Storage* storage,
|
||||
|
|
|
@ -9,7 +9,7 @@ struct SubGhzChatWorker {
|
|||
SubGhzTxRxWorker* subghz_txrx;
|
||||
|
||||
volatile bool worker_running;
|
||||
volatile bool worker_stoping;
|
||||
volatile bool worker_stopping;
|
||||
FuriMessageQueue* event_queue;
|
||||
uint32_t last_time_rx_data;
|
||||
|
||||
|
|
|
@ -117,15 +117,15 @@ static int32_t subghz_frequency_analyzer_worker_thread(void* context) {
|
|||
|
||||
// First stage: coarse scan
|
||||
for(size_t i = 0; i < subghz_setting_get_frequency_count(instance->setting); i++) {
|
||||
uint32_t current_frequnecy = subghz_setting_get_frequency(instance->setting, i);
|
||||
if(furi_hal_subghz_is_frequency_valid(current_frequnecy) &&
|
||||
(current_frequnecy != 467750000) &&
|
||||
uint32_t current_frequency = subghz_setting_get_frequency(instance->setting, i);
|
||||
if(furi_hal_subghz_is_frequency_valid(current_frequency) &&
|
||||
(current_frequency != 467750000) &&
|
||||
!((furi_hal_subghz.radio_type == SubGhzRadioExternal) &&
|
||||
(current_frequnecy >= 311900000 && current_frequnecy <= 312200000))) {
|
||||
(current_frequency >= 311900000 && current_frequency <= 312200000))) {
|
||||
furi_hal_spi_acquire(furi_hal_subghz.spi_bus_handle);
|
||||
cc1101_switch_to_idle(furi_hal_subghz.spi_bus_handle);
|
||||
frequency =
|
||||
cc1101_set_frequency(furi_hal_subghz.spi_bus_handle, current_frequnecy);
|
||||
cc1101_set_frequency(furi_hal_subghz.spi_bus_handle, current_frequency);
|
||||
|
||||
cc1101_calibrate(furi_hal_subghz.spi_bus_handle);
|
||||
do {
|
||||
|
@ -330,4 +330,4 @@ void subghz_frequency_analyzer_worker_set_trigger_level(
|
|||
|
||||
float subghz_frequency_analyzer_worker_get_trigger_level(SubGhzFrequencyAnalyzerWorker* instance) {
|
||||
return instance->trigger_level;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -23,7 +23,7 @@ typedef enum {
|
|||
/** SubGhzHopperState state */
|
||||
typedef enum {
|
||||
SubGhzHopperStateOFF,
|
||||
SubGhzHopperStateRunnig,
|
||||
SubGhzHopperStateRunning,
|
||||
SubGhzHopperStatePause,
|
||||
SubGhzHopperStateRSSITimeOut,
|
||||
} SubGhzHopperState;
|
||||
|
|
|
@ -368,7 +368,7 @@ bool subghz_scene_read_raw_on_event(void* context, SceneManagerEvent event) {
|
|||
|
||||
float rssi = furi_hal_subghz_get_rssi();
|
||||
|
||||
if(float_is_equal(subghz->txrx->raw_threshold_rssi, SUBGHZ_RAW_TRESHOLD_MIN)) {
|
||||
if(float_is_equal(subghz->txrx->raw_threshold_rssi, SUBGHZ_RAW_THRESHOLD_MIN)) {
|
||||
subghz_read_raw_add_data_rssi(subghz->subghz_read_raw, rssi, true);
|
||||
subghz_protocol_raw_save_to_file_pause(
|
||||
(SubGhzProtocolDecoderRAW*)subghz->txrx->decoder_result, false);
|
||||
|
@ -421,4 +421,4 @@ void subghz_scene_read_raw_on_exit(void* context) {
|
|||
|
||||
//filter restoration
|
||||
subghz_receiver_set_filter(subghz->txrx->receiver, subghz->txrx->filter);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -8,11 +8,11 @@ enum SubGhzSettingIndex {
|
|||
SubGhzSettingIndexBinRAW,
|
||||
SubGhzSettingIndexSound,
|
||||
SubGhzSettingIndexLock,
|
||||
SubGhzSettingIndexRAWThesholdRSSI,
|
||||
SubGhzSettingIndexRAWThresholdRSSI,
|
||||
};
|
||||
|
||||
#define RAW_THRESHOLD_RSSI_COUNT 11
|
||||
const char* const raw_theshold_rssi_text[RAW_THRESHOLD_RSSI_COUNT] = {
|
||||
const char* const raw_threshold_rssi_text[RAW_THRESHOLD_RSSI_COUNT] = {
|
||||
"-----",
|
||||
"-85.0",
|
||||
"-80.0",
|
||||
|
@ -26,7 +26,7 @@ const char* const raw_theshold_rssi_text[RAW_THRESHOLD_RSSI_COUNT] = {
|
|||
"-40.0",
|
||||
|
||||
};
|
||||
const float raw_theshold_rssi_value[RAW_THRESHOLD_RSSI_COUNT] = {
|
||||
const float raw_threshold_rssi_value[RAW_THRESHOLD_RSSI_COUNT] = {
|
||||
-90.0f,
|
||||
-85.0f,
|
||||
-80.0f,
|
||||
|
@ -47,7 +47,7 @@ const char* const hopping_text[HOPPING_COUNT] = {
|
|||
};
|
||||
const uint32_t hopping_value[HOPPING_COUNT] = {
|
||||
SubGhzHopperStateOFF,
|
||||
SubGhzHopperStateRunnig,
|
||||
SubGhzHopperStateRunning,
|
||||
};
|
||||
|
||||
#define SPEAKER_COUNT 2
|
||||
|
@ -213,8 +213,8 @@ static void subghz_scene_receiver_config_set_raw_threshold_rssi(VariableItem* it
|
|||
SubGhz* subghz = variable_item_get_context(item);
|
||||
uint8_t index = variable_item_get_current_value_index(item);
|
||||
|
||||
variable_item_set_current_value_text(item, raw_theshold_rssi_text[index]);
|
||||
subghz->txrx->raw_threshold_rssi = raw_theshold_rssi_value[index];
|
||||
variable_item_set_current_value_text(item, raw_threshold_rssi_text[index]);
|
||||
subghz->txrx->raw_threshold_rssi = raw_threshold_rssi_value[index];
|
||||
}
|
||||
|
||||
static void subghz_scene_receiver_config_var_list_enter_callback(void* context, uint32_t index) {
|
||||
|
@ -320,9 +320,9 @@ void subghz_scene_receiver_config_on_enter(void* context) {
|
|||
subghz_scene_receiver_config_set_raw_threshold_rssi,
|
||||
subghz);
|
||||
value_index = value_index_float(
|
||||
subghz->txrx->raw_threshold_rssi, raw_theshold_rssi_value, RAW_THRESHOLD_RSSI_COUNT);
|
||||
subghz->txrx->raw_threshold_rssi, raw_threshold_rssi_value, RAW_THRESHOLD_RSSI_COUNT);
|
||||
variable_item_set_current_value_index(item, value_index);
|
||||
variable_item_set_current_value_text(item, raw_theshold_rssi_text[value_index]);
|
||||
variable_item_set_current_value_text(item, raw_threshold_rssi_text[value_index]);
|
||||
}
|
||||
view_dispatcher_switch_to_view(subghz->view_dispatcher, SubGhzViewIdVariableItemList);
|
||||
}
|
||||
|
|
|
@ -148,7 +148,7 @@ bool subghz_scene_receiver_info_on_event(void* context, SceneManagerEvent event)
|
|||
subghz_rx(subghz, subghz->txrx->preset->frequency);
|
||||
}
|
||||
if(subghz->txrx->hopper_state == SubGhzHopperStatePause) {
|
||||
subghz->txrx->hopper_state = SubGhzHopperStateRunnig;
|
||||
subghz->txrx->hopper_state = SubGhzHopperStateRunning;
|
||||
}
|
||||
subghz->state_notifications = SubGhzNotificationStateRx;
|
||||
} else {
|
||||
|
@ -175,7 +175,7 @@ bool subghz_scene_receiver_info_on_event(void* context, SceneManagerEvent event)
|
|||
subghz_rx(subghz, subghz->txrx->preset->frequency);
|
||||
}
|
||||
if(subghz->txrx->hopper_state == SubGhzHopperStatePause) {
|
||||
subghz->txrx->hopper_state = SubGhzHopperStateRunnig;
|
||||
subghz->txrx->hopper_state = SubGhzHopperStateRunning;
|
||||
}
|
||||
subghz->state_notifications = SubGhzNotificationStateRx;
|
||||
}
|
||||
|
|
|
@ -14,7 +14,7 @@ void subghz_scene_set_seed_bft_on_enter(void* context) {
|
|||
SubGhz* subghz = context;
|
||||
|
||||
// Setup view
|
||||
// roguemaster don't steal!!!
|
||||
// RogueMaster don't steal!!!
|
||||
ByteInput* byte_input = subghz->byte_input;
|
||||
byte_input_set_header_text(byte_input, "Enter SEED in hex");
|
||||
byte_input_set_result_callback(
|
||||
|
|
|
@ -65,7 +65,7 @@ bool subghz_scene_set_seed_faac_on_event(void* context, SceneManagerEvent event)
|
|||
seed,
|
||||
"FAAC_SLH",
|
||||
subghz->txrx->preset);
|
||||
// rogueemaster dont steal!
|
||||
// RogueMaster dont steal!
|
||||
uint8_t seed_data[sizeof(uint32_t)] = {0};
|
||||
for(size_t i = 0; i < sizeof(uint32_t); i++) {
|
||||
seed_data[sizeof(uint32_t) - i - 1] = (seed >> i * 8) & 0xFF;
|
||||
|
|
|
@ -275,7 +275,7 @@ SubGhz* subghz_alloc(bool alloc_for_tx_only) {
|
|||
subghz->txrx->history = subghz_history_alloc();
|
||||
}
|
||||
|
||||
subghz->txrx->raw_threshold_rssi = SUBGHZ_RAW_TRESHOLD_MIN;
|
||||
subghz->txrx->raw_threshold_rssi = SUBGHZ_RAW_THRESHOLD_MIN;
|
||||
subghz->txrx->worker = subghz_worker_alloc();
|
||||
|
||||
subghz->txrx->fff_data = flipper_format_string_alloc();
|
||||
|
|
|
@ -80,7 +80,7 @@ void subghz_history_get_text_item_menu(SubGhzHistory* instance, FuriString* outp
|
|||
*
|
||||
* @param instance - SubGhzHistory instance
|
||||
* @param output - FuriString* output
|
||||
* @return bool - is FUUL
|
||||
* @return bool - is FULL
|
||||
*/
|
||||
bool subghz_history_get_text_space_left(SubGhzHistory* instance, FuriString* output);
|
||||
|
||||
|
|
|
@ -92,7 +92,7 @@ uint32_t subghz_history_rand_range(uint32_t min, uint32_t max);
|
|||
*
|
||||
* @param file - Stream*
|
||||
* @param is_negative_start - first value is negative or positive?
|
||||
* @param current_position - 0 if started from begining
|
||||
* @param current_position - 0 if started from beginning
|
||||
* @param empty_line - add RAW_Data to this line
|
||||
* @return true
|
||||
* @return false
|
||||
|
@ -160,4 +160,4 @@ bool subghz_history_stream_seek_to_key(Stream* stream, const char* key, bool str
|
|||
* @return true
|
||||
* @return false
|
||||
*/
|
||||
bool subghz_history_stream_read_value(Stream* stream, FuriString* value, bool* last);
|
||||
bool subghz_history_stream_read_value(Stream* stream, FuriString* value, bool* last);
|
||||
|
|
|
@ -575,7 +575,7 @@ void subghz_hopper_update(SubGhz* subghz) {
|
|||
return;
|
||||
}
|
||||
} else {
|
||||
subghz->txrx->hopper_state = SubGhzHopperStateRunnig;
|
||||
subghz->txrx->hopper_state = SubGhzHopperStateRunning;
|
||||
}
|
||||
// Select next frequency
|
||||
if(subghz->txrx->hopper_idx_frequency <
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
#define MENU_ITEMS 4u
|
||||
#define UNLOCK_CNT 3
|
||||
|
||||
#define SUBGHZ_RAW_TRESHOLD_MIN -90.0f
|
||||
#define SUBGHZ_RAW_THRESHOLD_MIN -90.0f
|
||||
|
||||
typedef struct {
|
||||
FuriString* item_str;
|
||||
|
@ -80,10 +80,10 @@ void subghz_receiver_rssi(SubGhzViewReceiver* instance, float rssi) {
|
|||
instance->view,
|
||||
SubGhzViewReceiverModel * model,
|
||||
{
|
||||
if(rssi < SUBGHZ_RAW_TRESHOLD_MIN) {
|
||||
if(rssi < SUBGHZ_RAW_THRESHOLD_MIN) {
|
||||
model->u_rssi = 0;
|
||||
} else {
|
||||
model->u_rssi = (uint8_t)(rssi - SUBGHZ_RAW_TRESHOLD_MIN);
|
||||
model->u_rssi = (uint8_t)(rssi - SUBGHZ_RAW_THRESHOLD_MIN);
|
||||
}
|
||||
},
|
||||
true);
|
||||
|
|
|
@ -23,7 +23,7 @@ typedef struct {
|
|||
FuriString* sample_write;
|
||||
FuriString* file_name;
|
||||
uint8_t* rssi_history;
|
||||
uint8_t rssi_curret;
|
||||
uint8_t rssi_current;
|
||||
bool rssi_history_end;
|
||||
uint8_t ind_write;
|
||||
uint8_t ind_sin;
|
||||
|
@ -62,17 +62,17 @@ void subghz_read_raw_add_data_rssi(SubGhzReadRAW* instance, float rssi, bool tra
|
|||
furi_assert(instance);
|
||||
uint8_t u_rssi = 0;
|
||||
|
||||
if(rssi < SUBGHZ_RAW_TRESHOLD_MIN) {
|
||||
if(rssi < SUBGHZ_RAW_THRESHOLD_MIN) {
|
||||
u_rssi = 0;
|
||||
} else {
|
||||
u_rssi = (uint8_t)((rssi - SUBGHZ_RAW_TRESHOLD_MIN) / 2.7);
|
||||
u_rssi = (uint8_t)((rssi - SUBGHZ_RAW_THRESHOLD_MIN) / 2.7);
|
||||
}
|
||||
|
||||
with_view_model(
|
||||
instance->view,
|
||||
SubGhzReadRAWModel * model,
|
||||
{
|
||||
model->rssi_curret = u_rssi;
|
||||
model->rssi_current = u_rssi;
|
||||
if(trace) {
|
||||
model->rssi_history[model->ind_write++] = u_rssi;
|
||||
} else {
|
||||
|
@ -206,10 +206,10 @@ void subghz_read_raw_draw_rssi(Canvas* canvas, SubGhzReadRAWModel* model) {
|
|||
canvas_draw_line(canvas, i, 47, i, 47 - model->rssi_history[i]);
|
||||
}
|
||||
canvas_draw_line(
|
||||
canvas, model->ind_write + 1, 47, model->ind_write + 1, 47 - model->rssi_curret);
|
||||
canvas, model->ind_write + 1, 47, model->ind_write + 1, 47 - model->rssi_current);
|
||||
if(model->ind_write > 3) {
|
||||
canvas_draw_line(
|
||||
canvas, model->ind_write - 1, 47, model->ind_write - 1, 47 - model->rssi_curret);
|
||||
canvas, model->ind_write - 1, 47, model->ind_write - 1, 47 - model->rssi_current);
|
||||
|
||||
for(uint8_t i = 13; i < 47; i += width * 2) {
|
||||
canvas_draw_line(canvas, model->ind_write, i, model->ind_write, i + width);
|
||||
|
@ -231,13 +231,13 @@ void subghz_read_raw_draw_rssi(Canvas* canvas, SubGhzReadRAWModel* model) {
|
|||
SUBGHZ_READ_RAW_RSSI_HISTORY_SIZE - 1,
|
||||
47,
|
||||
SUBGHZ_READ_RAW_RSSI_HISTORY_SIZE - 1,
|
||||
47 - model->rssi_curret);
|
||||
47 - model->rssi_current);
|
||||
canvas_draw_line(
|
||||
canvas,
|
||||
SUBGHZ_READ_RAW_RSSI_HISTORY_SIZE + 1,
|
||||
47,
|
||||
SUBGHZ_READ_RAW_RSSI_HISTORY_SIZE + 1,
|
||||
47 - model->rssi_curret);
|
||||
47 - model->rssi_current);
|
||||
|
||||
for(uint8_t i = 13; i < 47; i += width * 2) {
|
||||
canvas_draw_line(
|
||||
|
@ -266,9 +266,9 @@ void subghz_read_raw_draw_threshold_rssi(Canvas* canvas, SubGhzReadRAWModel* mod
|
|||
uint8_t x = 118;
|
||||
uint8_t y = 48;
|
||||
|
||||
if(model->raw_threshold_rssi > SUBGHZ_RAW_TRESHOLD_MIN) {
|
||||
if(model->raw_threshold_rssi > SUBGHZ_RAW_THRESHOLD_MIN) {
|
||||
uint8_t x = 118;
|
||||
y -= (uint8_t)((model->raw_threshold_rssi - SUBGHZ_RAW_TRESHOLD_MIN) / 2.7);
|
||||
y -= (uint8_t)((model->raw_threshold_rssi - SUBGHZ_RAW_THRESHOLD_MIN) / 2.7);
|
||||
|
||||
uint8_t width = 3;
|
||||
for(uint8_t i = 0; i < x; i += width * 2) {
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
#include <gui/view.h>
|
||||
#include "../helpers/subghz_custom_event.h"
|
||||
|
||||
#define SUBGHZ_RAW_TRESHOLD_MIN -90.0f
|
||||
#define SUBGHZ_RAW_THRESHOLD_MIN -90.0f
|
||||
|
||||
typedef struct SubGhzReadRAW SubGhzReadRAW;
|
||||
|
||||
|
|
|
@ -178,7 +178,7 @@ bool u2f_data_cert_key_load(uint8_t* cert_key) {
|
|||
uint8_t key_slot = 0;
|
||||
uint32_t version = 0;
|
||||
|
||||
// Check if unique key exists in secure eclave and generate it if missing
|
||||
// Check if unique key exists in secure eclave(typo?) and generate it if missing
|
||||
if(!furi_hal_crypto_verify_key(U2F_DATA_FILE_ENCRYPTION_KEY_SLOT_UNIQUE)) return false;
|
||||
|
||||
FuriString* filetype;
|
||||
|
|
|
@ -640,7 +640,7 @@ static void render_callback(Canvas* canvas, void* ctx) {
|
|||
//canvas_draw_str(canvas, 0, 40, "D: ");
|
||||
//canvas_draw_str(canvas, 0, 50, "Ok: ");
|
||||
|
||||
//PNGs are located in assets/icons/UniRFRemix before compiliation
|
||||
//PNGs are located in assets/icons/UniRFRemix before compilation
|
||||
|
||||
//Icons for Labels
|
||||
//canvas_draw_icon(canvas, 0, 0, &I_UniRFRemix_LeftAlignedButtons_9x64);
|
||||
|
@ -1046,4 +1046,4 @@ int32_t unirfremix_app(void* p) {
|
|||
unirfremix_free(app, true);
|
||||
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -137,7 +137,7 @@ void cli_command_date(Cli* cli, FuriString* args, void* context) {
|
|||
}
|
||||
|
||||
void cli_command_src(Cli* cli, FuriString* args, void* context) {
|
||||
// Quality of life feaature for people exploring CLI on lab.flipper.net/cli
|
||||
// Quality of life feature for people exploring CLI on lab.flipper.net/cli
|
||||
// By Yousef AK
|
||||
UNUSED(cli);
|
||||
UNUSED(args);
|
||||
|
|
|
@ -14,7 +14,7 @@ void crypto_cli_print_usage() {
|
|||
"\tdecrypt <key_slot:int> <iv:hex>\t - Using key from secure enclave and IV decrypt hex encoded encrypted with AES256CBC data to plain text\r\n");
|
||||
printf("\thas_key <key_slot:int>\t - Check if secure enclave has key in slot\r\n");
|
||||
printf(
|
||||
"\tstore_key <key_slot:int> <key_type:str> <key_size:int> <key_data:hex>\t - Store key in secure enclave. !!! NON-REVERSABLE OPERATION - READ MANUAL FIRST !!!\r\n");
|
||||
"\tstore_key <key_slot:int> <key_type:str> <key_size:int> <key_data:hex>\t - Store key in secure enclave. !!! NON-REVERSIBLE OPERATION - READ MANUAL FIRST !!!\r\n");
|
||||
};
|
||||
|
||||
void crypto_cli_encrypt(Cli* cli, FuriString* args) {
|
||||
|
|
|
@ -152,7 +152,7 @@ bool animation_manager_is_animation_loaded(AnimationManager* animation_manager);
|
|||
void animation_manager_unload_and_stall_animation(AnimationManager* animation_manager);
|
||||
|
||||
/**
|
||||
* Load and Contunue execution of animation manager.
|
||||
* Load and Continue execution of animation manager.
|
||||
*
|
||||
* @animation_manager instance
|
||||
*/
|
||||
|
|
|
@ -363,7 +363,7 @@ void canvas_draw_rframe(
|
|||
uint8_t height,
|
||||
uint8_t radius);
|
||||
|
||||
/** Draw rounded-corner box of width, height at x,y, with round value raduis
|
||||
/** Draw rounded-corner box of width, height at x,y, with round value radius
|
||||
*
|
||||
* @param canvas Canvas instance
|
||||
* @param x x coordinate
|
||||
|
|
|
@ -635,8 +635,8 @@ void elements_text_box(
|
|||
ElementTextBoxLine line[ELEMENTS_MAX_LINES_NUM];
|
||||
bool bold = false;
|
||||
bool mono = false;
|
||||
bool inversed = false;
|
||||
bool inversed_present = false;
|
||||
bool inverse = false;
|
||||
bool inverse_present = false;
|
||||
Font current_font = FontSecondary;
|
||||
Font prev_font = FontSecondary;
|
||||
const CanvasFontParameters* font_params = canvas_get_font_params(canvas, current_font);
|
||||
|
@ -692,8 +692,8 @@ void elements_text_box(
|
|||
canvas_set_font(canvas, FontKeyboard);
|
||||
mono = !mono;
|
||||
}
|
||||
if(text[i] == ELEMENTS_INVERSED_MARKER) {
|
||||
inversed_present = true;
|
||||
if(text[i] == ELEMENTS_INVERSE_MARKER) {
|
||||
inverse_present = true;
|
||||
}
|
||||
continue;
|
||||
}
|
||||
|
@ -709,10 +709,10 @@ void elements_text_box(
|
|||
if(text[i] == '\0') {
|
||||
full_text_processed = true;
|
||||
}
|
||||
if(inversed_present) {
|
||||
if(inverse_present) {
|
||||
line_leading_min += 1;
|
||||
line_leading_default += 1;
|
||||
inversed_present = false;
|
||||
inverse_present = false;
|
||||
}
|
||||
line[line_num].leading_min = line_leading_min;
|
||||
line[line_num].leading_default = line_leading_default;
|
||||
|
@ -775,7 +775,7 @@ void elements_text_box(
|
|||
canvas_set_font(canvas, FontSecondary);
|
||||
bold = false;
|
||||
mono = false;
|
||||
inversed = false;
|
||||
inverse = false;
|
||||
for(uint8_t i = 0; i < line_num; i++) {
|
||||
for(uint8_t j = 0; j < line[i].len; j++) {
|
||||
// Process format symbols
|
||||
|
@ -799,11 +799,11 @@ void elements_text_box(
|
|||
mono = !mono;
|
||||
continue;
|
||||
}
|
||||
if(line[i].text[j] == ELEMENTS_INVERSED_MARKER) {
|
||||
inversed = !inversed;
|
||||
if(line[i].text[j] == ELEMENTS_INVERSE_MARKER) {
|
||||
inverse = !inverse;
|
||||
continue;
|
||||
}
|
||||
if(inversed) {
|
||||
if(inverse) {
|
||||
canvas_draw_box(
|
||||
canvas,
|
||||
line[i].x - 1,
|
||||
|
|
|
@ -19,7 +19,7 @@ extern "C" {
|
|||
#define ELEMENTS_MAX_LINES_NUM (7)
|
||||
#define ELEMENTS_BOLD_MARKER '#'
|
||||
#define ELEMENTS_MONO_MARKER '*'
|
||||
#define ELEMENTS_INVERSED_MARKER '!'
|
||||
#define ELEMENTS_INVERSE_MARKER '!'
|
||||
|
||||
/** Draw progress bar.
|
||||
*
|
||||
|
@ -240,7 +240,7 @@ void elements_scrollable_text_line(
|
|||
* @param[in] text Formatted text. The following formats are available:
|
||||
* "\e#Bold text\e#" - bold font is used
|
||||
* "\e*Monospaced text\e*" - monospaced font is used
|
||||
* "\e!Inversed text\e!" - white text on black background
|
||||
* "\e!Inverted text\e!" - white text on black background
|
||||
* @param strip_to_dots Strip text to ... if does not fit to width
|
||||
*/
|
||||
void elements_text_box(
|
||||
|
|
|
@ -61,7 +61,7 @@ void button_panel_reserve(ButtonPanel* button_panel, size_t reserve_x, size_t re
|
|||
* @param matrix_place_x coordinates by x-axis on virtual grid, it
|
||||
* is only used for navigation
|
||||
* @param matrix_place_y coordinates by y-axis on virtual grid, it
|
||||
* is only used for naviagation
|
||||
* is only used for navigation
|
||||
* @param x x-coordinate to draw icon on
|
||||
* @param y y-coordinate to draw icon on
|
||||
* @param icon_name name of the icon to draw
|
||||
|
|
|
@ -309,9 +309,9 @@ static void text_input_handle_ok(TextInput* text_input, TextInputModel* model, b
|
|||
char selected = get_selected_char(model);
|
||||
size_t text_length = strlen(model->text_buffer);
|
||||
|
||||
bool toogle_case = text_length == 0;
|
||||
if(shift) toogle_case = !toogle_case;
|
||||
if(toogle_case) {
|
||||
bool toggle_case = text_length == 0;
|
||||
if(shift) toggle_case = !toggle_case;
|
||||
if(toggle_case) {
|
||||
selected = char_to_uppercase(selected);
|
||||
}
|
||||
|
||||
|
|
|
@ -91,7 +91,7 @@ void widget_add_string_element(
|
|||
* @param[in] text Formatted text. The following formats are available:
|
||||
* "\e#Bold text\e#" - bold font is used
|
||||
* "\e*Monospaced text\e*" - monospaced font is used
|
||||
* "\e!Inversed text\e!" - white text on black background
|
||||
* "\e!Inverted text\e!" - white text on black background
|
||||
* @param strip_to_dots Strip text to ... if does not fit to width
|
||||
*/
|
||||
void widget_add_text_box_element(
|
||||
|
|
|
@ -10,7 +10,7 @@ SceneManager* scene_manager_alloc(const SceneManagerHandlers* app_scene_handlers
|
|||
scene_manager->scene_handlers = app_scene_handlers;
|
||||
// Allocate all scenes
|
||||
scene_manager->scene = malloc(sizeof(AppScene) * app_scene_handlers->scene_num);
|
||||
// Initialize ScaneManager array for navigation
|
||||
// Initialize SceneManager array for navigation
|
||||
SceneManagerIdStack_init(scene_manager->scene_id_stack);
|
||||
|
||||
return scene_manager;
|
||||
|
@ -19,7 +19,7 @@ SceneManager* scene_manager_alloc(const SceneManagerHandlers* app_scene_handlers
|
|||
void scene_manager_free(SceneManager* scene_manager) {
|
||||
furi_assert(scene_manager);
|
||||
|
||||
// Clear ScaneManager array
|
||||
// Clear SceneManager array
|
||||
SceneManagerIdStack_clear(scene_manager->scene_id_stack);
|
||||
// Clear allocated scenes
|
||||
free(scene_manager->scene);
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
* GUI: ViewStack API
|
||||
*
|
||||
* ViewStack accumulates several Views in one stack.
|
||||
* Draw callbacks are called sequenctially starting from
|
||||
* Draw callbacks are called sequentially starting from
|
||||
* first added. Input callbacks are called in reverse order.
|
||||
* Consumed input is not passed on underlying layers.
|
||||
*/
|
||||
|
|
|
@ -66,7 +66,7 @@ void power_draw_battery_callback(Canvas* canvas, void* context) {
|
|||
4.2)) { // not looking nice with low voltage indicator
|
||||
canvas_set_font(canvas, FontBatteryPercent);
|
||||
|
||||
// align charge dispaly value with digits to draw
|
||||
// align charge display value with digits to draw
|
||||
uint8_t bar_charge = power->info.charge;
|
||||
if(bar_charge > 23 && bar_charge < 38) {
|
||||
bar_charge = 23;
|
||||
|
@ -158,7 +158,7 @@ void power_draw_battery_callback(Canvas* canvas, void* context) {
|
|||
canvas_set_color(canvas, ColorWhite);
|
||||
canvas_draw_box(canvas, 1, 1, 22, 6);
|
||||
|
||||
// align charge dispaly value with digits to draw
|
||||
// align charge display value with digits to draw
|
||||
uint8_t bar_charge = power->info.charge;
|
||||
|
||||
if(bar_charge > 48 && bar_charge < 63) {
|
||||
|
|
|
@ -145,8 +145,8 @@ void rpc_session_set_terminated_callback(
|
|||
|
||||
/* Doesn't forbid using rpc_feed_bytes() after session close - it's safe.
|
||||
* Because any bytes received in buffer will be flushed before next session.
|
||||
* If bytes get into stream buffer before it's get epmtified and this
|
||||
* command is gets processed - it's safe either. But case of it is quite
|
||||
* If bytes get into stream buffer before it's get emptied and this
|
||||
* command is gets processed - it's safe either way. But case of it is quite
|
||||
* odd: client sends close request and sends command after.
|
||||
*/
|
||||
size_t
|
||||
|
|
|
@ -305,14 +305,14 @@ typedef void (*Storage_name_converter)(FuriString*);
|
|||
|
||||
/** Backs up internal storage to a tar archive
|
||||
* @param api pointer to the api
|
||||
* @param dstmane destination archive path
|
||||
* @param dstname destination archive path
|
||||
* @return FS_Error operation result
|
||||
*/
|
||||
FS_Error storage_int_backup(Storage* api, const char* dstname);
|
||||
|
||||
/** Restores internal storage from a tar archive
|
||||
* @param api pointer to the api
|
||||
* @param dstmane archive path
|
||||
* @param dstname archive path
|
||||
* @param converter pointer to filename conversion function, may be NULL
|
||||
* @return FS_Error operation result
|
||||
*/
|
||||
|
|
|
@ -39,11 +39,11 @@ PowerSettingsApp* power_settings_app_alloc(uint32_t first_scene) {
|
|||
view_dispatcher_attach_to_gui(app->view_dispatcher, app->gui, ViewDispatcherTypeFullscreen);
|
||||
|
||||
// Views
|
||||
app->batery_info = battery_info_alloc();
|
||||
app->battery_info = battery_info_alloc();
|
||||
view_dispatcher_add_view(
|
||||
app->view_dispatcher,
|
||||
PowerSettingsAppViewBatteryInfo,
|
||||
battery_info_get_view(app->batery_info));
|
||||
battery_info_get_view(app->battery_info));
|
||||
app->submenu = submenu_alloc();
|
||||
view_dispatcher_add_view(
|
||||
app->view_dispatcher, PowerSettingsAppViewSubmenu, submenu_get_view(app->submenu));
|
||||
|
@ -60,7 +60,7 @@ void power_settings_app_free(PowerSettingsApp* app) {
|
|||
furi_assert(app);
|
||||
// Views
|
||||
view_dispatcher_remove_view(app->view_dispatcher, PowerSettingsAppViewBatteryInfo);
|
||||
battery_info_free(app->batery_info);
|
||||
battery_info_free(app->battery_info);
|
||||
view_dispatcher_remove_view(app->view_dispatcher, PowerSettingsAppViewSubmenu);
|
||||
submenu_free(app->submenu);
|
||||
view_dispatcher_remove_view(app->view_dispatcher, PowerSettingsAppViewDialog);
|
||||
|
|
|
@ -19,7 +19,7 @@ typedef struct {
|
|||
Gui* gui;
|
||||
SceneManager* scene_manager;
|
||||
ViewDispatcher* view_dispatcher;
|
||||
BatteryInfo* batery_info;
|
||||
BatteryInfo* battery_info;
|
||||
Submenu* submenu;
|
||||
DialogEx* dialog;
|
||||
PowerInfo info;
|
||||
|
|
|
@ -11,7 +11,7 @@ static void power_settings_scene_battery_info_update_model(PowerSettingsApp* app
|
|||
.charge = app->info.charge,
|
||||
.health = app->info.health,
|
||||
};
|
||||
battery_info_set_data(app->batery_info, &battery_info_data);
|
||||
battery_info_set_data(app->battery_info, &battery_info_data);
|
||||
}
|
||||
|
||||
void power_settings_scene_battery_info_on_enter(void* context) {
|
||||
|
|
|
@ -71,21 +71,21 @@ static void heap_trace_mode_changed(VariableItem* item) {
|
|||
furi_hal_rtc_set_heap_track_mode(heap_trace_mode_value[index]);
|
||||
}
|
||||
|
||||
const char* const mesurement_units_text[] = {
|
||||
const char* const measurement_units_text[] = {
|
||||
"Metric",
|
||||
"Imperial",
|
||||
};
|
||||
|
||||
const uint32_t mesurement_units_value[] = {
|
||||
const uint32_t measurement_units_value[] = {
|
||||
LocaleMeasurementUnitsMetric,
|
||||
LocaleMeasurementUnitsImperial,
|
||||
};
|
||||
|
||||
static void mesurement_units_changed(VariableItem* item) {
|
||||
static void measurement_units_changed(VariableItem* item) {
|
||||
// SystemSettings* app = variable_item_get_context(item);
|
||||
uint8_t index = variable_item_get_current_value_index(item);
|
||||
variable_item_set_current_value_text(item, mesurement_units_text[index]);
|
||||
locale_set_measurement_unit(mesurement_units_value[index]);
|
||||
variable_item_set_current_value_text(item, measurement_units_text[index]);
|
||||
locale_set_measurement_unit(measurement_units_value[index]);
|
||||
}
|
||||
|
||||
const char* const time_format_text[] = {
|
||||
|
@ -148,13 +148,13 @@ SystemSettings* system_settings_alloc() {
|
|||
item = variable_item_list_add(
|
||||
app->var_item_list,
|
||||
"Units",
|
||||
COUNT_OF(mesurement_units_text),
|
||||
mesurement_units_changed,
|
||||
COUNT_OF(measurement_units_text),
|
||||
measurement_units_changed,
|
||||
app);
|
||||
value_index = value_index_uint32(
|
||||
locale_get_measurement_unit(), mesurement_units_value, COUNT_OF(mesurement_units_value));
|
||||
locale_get_measurement_unit(), measurement_units_value, COUNT_OF(measurement_units_value));
|
||||
variable_item_set_current_value_index(item, value_index);
|
||||
variable_item_set_current_value_text(item, mesurement_units_text[value_index]);
|
||||
variable_item_set_current_value_text(item, measurement_units_text[value_index]);
|
||||
|
||||
item = variable_item_list_add(
|
||||
app->var_item_list, "Time Format", COUNT_OF(time_format_text), time_format_changed, app);
|
||||
|
|
|
@ -22,7 +22,7 @@ If you notice you get a parsed code when capturing it's best to click "Retry" a
|
|||
|
||||
**Parsed data**
|
||||
|
||||
This is the cleanest type of data because it means it is a recognised code.
|
||||
This is the cleanest type of data because it means it is a recognized code.
|
||||
|
||||
```
|
||||
name: EXAMPLE
|
||||
|
|
|
@ -14,7 +14,7 @@ I wrote it with the idea of _expanding the unit list_ on mind, so adding new one
|
|||
## Current conversions
|
||||
|
||||
- `Decimal / Hexadecimal / Binary`
|
||||
- `Celsius / Fahernheit / Kelvin`
|
||||
- `Celsius / Fahrenheit / Kelvin`
|
||||
- `Kilometers / Meters / Centimeters / Miles / Feet / Inches`
|
||||
- `Degree / Radian`
|
||||
|
||||
|
|
|
@ -70,7 +70,7 @@ if you need your custom one, make sure it doesn't listed here
|
|||
|
||||
### User frequencies added AFTER that default list! You need to continue until you reach the end of that list
|
||||
|
||||
### If you want to disable default list and use ONLY user added frequecies from user settings file
|
||||
### If you want to disable default list and use ONLY user added frequencies from user settings file
|
||||
Change that line
|
||||
`#Add_standard_frequencies: true`
|
||||
to
|
||||
|
@ -81,7 +81,7 @@ Just add new line
|
|||
`Frequency: 928000000` - where `928000000` is your frequency, keep it in that format! it should be 9 digits!
|
||||
|
||||
### Hopper frequency list
|
||||
To add new frequecy to hopper:
|
||||
To add new frequency to hopper:
|
||||
add new line `Hopper_frequency: 345000000`<br>
|
||||
But remember! You should keep it as small as possible, or hopper functionality would be useless!<br>
|
||||
If `#Add_standard_frequencies: true` is not changed<br>
|
||||
|
@ -95,4 +95,4 @@ Your frequencies will be added after default ones
|
|||
433420000,
|
||||
433920000,
|
||||
868350000,
|
||||
```
|
||||
```
|
||||
|
|
|
@ -72,7 +72,7 @@ To run cleanup (think of `make clean`) for specified targets, add the `-c` optio
|
|||
- `get_stlink` - output serial numbers for attached STLink probes. Used for specifying an adapter with `OPENOCD_ADAPTER_SERIAL=...`.
|
||||
- `lint`, `format` - run clang-format on the C source code to check and reformat it according to the `.clang-format` specs.
|
||||
- `lint_py`, `format_py` - run [black](https://black.readthedocs.io/en/stable/index.html) on the Python source code, build system files & application manifests.
|
||||
- `firmware_pvs` - generate a PVS Studio report for the firmware. Requires PVS Studio to be availabe on your system's `PATH`.
|
||||
- `firmware_pvs` - generate a PVS Studio report for the firmware. Requires PVS Studio to be available on your system's `PATH`.
|
||||
- `cli` - start a Flipper CLI session over USB.
|
||||
|
||||
### Firmware targets
|
||||
|
|
|
@ -141,7 +141,7 @@ Long payload not fitting into internal memory buffer and consisting of short dur
|
|||
Frequency: 433920000
|
||||
Preset: FuriHalSubGhzPresetCustom
|
||||
Custom_preset_module: CC1101
|
||||
Сustom_preset_data: 02 0D 03 07 08 32 0B 06 14 00 13 00 12 30 11 32 10 17 18 18 19 18 1D 91 1C 00 1B 07 20 FB 22 11 21 B6 00 00 00 C0 00 00 00 00 00 00
|
||||
Custom_preset_data: 02 0D 03 07 08 32 0B 06 14 00 13 00 12 30 11 32 10 17 18 18 19 18 1D 91 1C 00 1B 07 20 FB 22 11 21 B6 00 00 00 C0 00 00 00 00 00 00
|
||||
Protocol: RAW
|
||||
RAW_Data: 29262 361 -68 2635 -66 24113 -66 11 ...
|
||||
RAW_Data: -424 205 -412 159 -412 381 -240 181 ...
|
||||
|
|
|
@ -32,7 +32,7 @@ COPRO_STACK_TYPE = "ble_light"
|
|||
# Leave 0 to let scripts automatically calculate it
|
||||
COPRO_STACK_ADDR = "0x0"
|
||||
|
||||
# If you override COPRO_CUBE_DIR on commandline, override this as well
|
||||
# If you override COPRO_CUBE_DIR on command-line, override this as well
|
||||
COPRO_STACK_BIN_DIR = posixpath.join(
|
||||
COPRO_CUBE_DIR,
|
||||
"Projects",
|
||||
|
|
|
@ -31,7 +31,7 @@ typedef enum {
|
|||
|
||||
/**
|
||||
* Init UART
|
||||
* Configures GPIO to UART function, сonfigures UART hardware, enables UART hardware
|
||||
* Configures GPIO to UART function, configures UART hardware, enables UART hardware
|
||||
* @param channel UART channel
|
||||
* @param baud baudrate
|
||||
*/
|
||||
|
|
|
@ -16,7 +16,7 @@ struct SubGhzFileEncoderWorker {
|
|||
FlipperFormat* flipper_format;
|
||||
|
||||
volatile bool worker_running;
|
||||
volatile bool worker_stoping;
|
||||
volatile bool worker_stopping;
|
||||
bool level;
|
||||
bool is_storage_slow;
|
||||
FuriString* str_data;
|
||||
|
@ -105,7 +105,7 @@ LevelDuration subghz_file_encoder_worker_get_level_duration(void* context) {
|
|||
} else if(duration == 0) { //-V547
|
||||
level_duration = level_duration_reset();
|
||||
FURI_LOG_I(TAG, "Stop transmission");
|
||||
instance->worker_stoping = true;
|
||||
instance->worker_stopping = true;
|
||||
}
|
||||
return level_duration;
|
||||
} else {
|
||||
|
@ -142,7 +142,7 @@ static int32_t subghz_file_encoder_worker_thread(void* context) {
|
|||
//skip the end of the previous line "\n"
|
||||
stream_seek(stream, 1, StreamOffsetFromCurrent);
|
||||
res = true;
|
||||
instance->worker_stoping = false;
|
||||
instance->worker_stopping = false;
|
||||
FURI_LOG_I(TAG, "Start transmission");
|
||||
} while(0);
|
||||
|
||||
|
@ -174,7 +174,7 @@ static int32_t subghz_file_encoder_worker_thread(void* context) {
|
|||
}
|
||||
FURI_LOG_I(TAG, "End transmission");
|
||||
while(instance->worker_running) {
|
||||
if(instance->worker_stoping) {
|
||||
if(instance->worker_stopping) {
|
||||
if(instance->callback_end) instance->callback_end(instance->context_end);
|
||||
}
|
||||
furi_delay_ms(50);
|
||||
|
@ -198,7 +198,7 @@ SubGhzFileEncoderWorker* subghz_file_encoder_worker_alloc() {
|
|||
instance->str_data = furi_string_alloc();
|
||||
instance->file_path = furi_string_alloc();
|
||||
instance->level = false;
|
||||
instance->worker_stoping = true;
|
||||
instance->worker_stopping = true;
|
||||
|
||||
return instance;
|
||||
}
|
||||
|
|
|
@ -16,7 +16,7 @@ struct SubGhzTxRxWorker {
|
|||
FuriStreamBuffer* stream_rx;
|
||||
|
||||
volatile bool worker_running;
|
||||
volatile bool worker_stoping;
|
||||
volatile bool worker_stopping;
|
||||
|
||||
SubGhzTxRxWorkerStatus status;
|
||||
|
||||
|
@ -166,7 +166,7 @@ static int32_t subghz_tx_rx_worker_thread(void* context) {
|
|||
subghz_tx_rx_worker_tx(instance, data, size_tx);
|
||||
}
|
||||
} else {
|
||||
//recive
|
||||
//receive
|
||||
if(subghz_tx_rx_worker_rx(instance, data, size_rx)) {
|
||||
if(furi_stream_buffer_spaces_available(instance->stream_rx) >= size_rx[0]) {
|
||||
if(instance->callback_have_read &&
|
||||
|
@ -211,7 +211,7 @@ SubGhzTxRxWorker* subghz_tx_rx_worker_alloc() {
|
|||
furi_stream_buffer_alloc(sizeof(uint8_t) * SUBGHZ_TXRX_WORKER_BUF_SIZE, sizeof(uint8_t));
|
||||
|
||||
instance->status = SubGhzTxRxWorkerStatusIDLE;
|
||||
instance->worker_stoping = true;
|
||||
instance->worker_stopping = true;
|
||||
|
||||
return instance;
|
||||
}
|
||||
|
|
|
@ -4,7 +4,7 @@ from SCons.Script import Mkdir
|
|||
from SCons.Defaults import Touch
|
||||
|
||||
|
||||
def GetProjetDirName(env, project=None):
|
||||
def GetProjectDirName(env, project=None):
|
||||
parts = [f"f{env['TARGET_HW']}"]
|
||||
if project:
|
||||
parts.append(project)
|
||||
|
@ -21,7 +21,7 @@ def GetProjetDirName(env, project=None):
|
|||
|
||||
|
||||
def create_fw_build_targets(env, configuration_name):
|
||||
flavor = GetProjetDirName(env, configuration_name)
|
||||
flavor = GetProjectDirName(env, configuration_name)
|
||||
build_dir = env.Dir("build").Dir(flavor)
|
||||
return env.SConscript(
|
||||
"firmware.scons",
|
||||
|
@ -49,7 +49,7 @@ def AddFwProject(env, base_env, fw_type, fw_env_key):
|
|||
],
|
||||
)
|
||||
|
||||
env.Replace(DIST_DIR=env.GetProjetDirName())
|
||||
env.Replace(DIST_DIR=env.GetProjectDirName())
|
||||
return project_env
|
||||
|
||||
|
||||
|
@ -115,7 +115,7 @@ def generate(env):
|
|||
env.AddMethod(AddFwProject)
|
||||
env.AddMethod(DistCommand)
|
||||
env.AddMethod(AddOpenOCDFlashTarget)
|
||||
env.AddMethod(GetProjetDirName)
|
||||
env.AddMethod(GetProjectDirName)
|
||||
env.AddMethod(AddJFlashTarget)
|
||||
env.AddMethod(AddUsbFlashTarget)
|
||||
|
||||
|
|
|
@ -26,7 +26,7 @@ Other:
|
|||
cli:
|
||||
Open a Flipper CLI session over USB
|
||||
firmware_cdb, updater_cdb:
|
||||
Generate сompilation_database.json
|
||||
Generate compilation_database.json
|
||||
lint, lint_py:
|
||||
run linters
|
||||
format, format_py:
|
||||
|
|
|
@ -93,7 +93,7 @@ class HardwareTargetLoader:
|
|||
sdk_headers = []
|
||||
seen_sdk_headers = set(self.excluded_headers)
|
||||
for sdk_path in self.sdk_header_paths:
|
||||
# dirty, but fast - exclude headers from overlayed targets by name
|
||||
# dirty, but fast - exclude headers from overlaid targets by name
|
||||
# proper way would be to use relative paths, but names will do for now
|
||||
for header in self.env.GlobRecursive("*.h", sdk_path, "*_i.h"):
|
||||
if header.name not in seen_sdk_headers:
|
||||
|
|
Loading…
Reference in a new issue