Fix for spelling (#2051)
* Fix for spelling * Review iteration Co-authored-by: あく <alleteam@gmail.com>
This commit is contained in:
		
							parent
							
								
									03140e4349
								
							
						
					
					
						commit
						e121e6a287
					
				@ -2,7 +2,7 @@
 | 
			
		||||
 | 
			
		||||
Thank you for investing your time in contributing to our project! 
 | 
			
		||||
 | 
			
		||||
Read our [Code of Coduct](CODE_OF_CONDUCT.md) to keep our community approachable and respectable.
 | 
			
		||||
Read our [Code of Conduct](CODE_OF_CONDUCT.md) to keep our community approachable and respectable.
 | 
			
		||||
 | 
			
		||||
In this guide you will get an overview of the contribution workflow from opening an issue, creating a PR, reviewing, and merging the PR.
 | 
			
		||||
 | 
			
		||||
@ -17,12 +17,12 @@ See the [ReadMe](ReadMe.md) to get an overview of the project. Here are some hel
 | 
			
		||||
 | 
			
		||||
## Getting started
 | 
			
		||||
 | 
			
		||||
Before writing code and creating PR make sure that it aligns with our mission and guidlines:
 | 
			
		||||
Before writing code and creating PR make sure that it aligns with our mission and guidelines:
 | 
			
		||||
 | 
			
		||||
- All our devices are intended for research and education.
 | 
			
		||||
- PR that contains code intended to commit crimes is not going to be accepted.
 | 
			
		||||
- Your PR must comply with our [Coding Style](CODING_STYLE.md)
 | 
			
		||||
- Your PR must contain code compatiable with project [LICENSE](LICENSE).
 | 
			
		||||
- Your PR must contain code compatible with project [LICENSE](LICENSE).
 | 
			
		||||
- PR will only be merged if it pass CI/CD.
 | 
			
		||||
- PR will only be merged if it pass review by code owner.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -71,7 +71,7 @@ void WIEGAND::end() {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void WIEGAND::ReadD0() {
 | 
			
		||||
    _bitCount++; // Increament bit count for Interrupt connected to D0
 | 
			
		||||
    _bitCount++; // Increment bit count for Interrupt connected to D0
 | 
			
		||||
    if(_bitCount > 31) // If bit count more than 31, process high bits
 | 
			
		||||
    {
 | 
			
		||||
        _cardTempHigh |= ((0x80000000 & _cardTemp) >> 31); //	shift value to high bits
 | 
			
		||||
 | 
			
		||||
@ -98,7 +98,7 @@ void bt_debug_app_free(BtDebugApp* app) {
 | 
			
		||||
int32_t bt_debug_app(void* p) {
 | 
			
		||||
    UNUSED(p);
 | 
			
		||||
    if(!furi_hal_bt_is_testing_supported()) {
 | 
			
		||||
        FURI_LOG_E(TAG, "Incorrect radio stack: radio testing fetures are absent.");
 | 
			
		||||
        FURI_LOG_E(TAG, "Incorrect radio stack: radio testing features are absent.");
 | 
			
		||||
        DialogsApp* dialogs = furi_record_open(RECORD_DIALOGS);
 | 
			
		||||
        dialog_message_show_storage_error(dialogs, "Incorrect\nRadioStack");
 | 
			
		||||
        return 255;
 | 
			
		||||
 | 
			
		||||
@ -145,7 +145,7 @@ DisplayTest* display_test_alloc() {
 | 
			
		||||
    view_set_previous_callback(view, display_test_previous_callback);
 | 
			
		||||
    view_dispatcher_add_view(instance->view_dispatcher, DisplayTestViewConfigure, view);
 | 
			
		||||
 | 
			
		||||
    // Configurtion items
 | 
			
		||||
    // Configuration items
 | 
			
		||||
    VariableItem* item;
 | 
			
		||||
    instance->config_bias = false;
 | 
			
		||||
    instance->config_contrast = 32;
 | 
			
		||||
 | 
			
		||||
@ -11,7 +11,7 @@
 | 
			
		||||
extern size_t memmgr_get_free_heap(void);
 | 
			
		||||
extern size_t memmgr_get_minimum_free_heap(void);
 | 
			
		||||
 | 
			
		||||
// current heap managment realization consume:
 | 
			
		||||
// current heap management realization consume:
 | 
			
		||||
// X bytes after allocate and 0 bytes after allocate and free,
 | 
			
		||||
// where X = sizeof(void*) + sizeof(size_t), look to BlockLink_t
 | 
			
		||||
const size_t heap_overhead_max_size = sizeof(void*) + sizeof(size_t);
 | 
			
		||||
@ -21,7 +21,7 @@ bool heap_equal(size_t heap_size, size_t heap_size_old) {
 | 
			
		||||
    const size_t heap_low = heap_size_old - heap_overhead_max_size;
 | 
			
		||||
    const size_t heap_high = heap_size_old + heap_overhead_max_size;
 | 
			
		||||
 | 
			
		||||
    // not extact, so we must test it against bigger numbers than "overhead size"
 | 
			
		||||
    // not exact, so we must test it against bigger numbers than "overhead size"
 | 
			
		||||
    const bool result = ((heap_size >= heap_low) && (heap_size <= heap_high));
 | 
			
		||||
 | 
			
		||||
    // debug allocation info
 | 
			
		||||
 | 
			
		||||
@ -136,7 +136,7 @@ static bool nfc_test_digital_signal_test_encode(
 | 
			
		||||
            ref_timings_sum += ref[i];
 | 
			
		||||
            if(timings_diff > timing_tolerance) {
 | 
			
		||||
                FURI_LOG_E(
 | 
			
		||||
                    TAG, "Too big differece in %d timings. Ref: %ld, DUT: %ld", i, ref[i], dut[i]);
 | 
			
		||||
                    TAG, "Too big difference in %d timings. Ref: %ld, DUT: %ld", i, ref[i], dut[i]);
 | 
			
		||||
                timing_check_success = false;
 | 
			
		||||
                break;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
@ -219,21 +219,21 @@ MU_TEST_1(stream_composite_subtest, Stream* stream) {
 | 
			
		||||
    mu_check(stream_eof(stream));
 | 
			
		||||
    mu_assert_int_eq(0, stream_tell(stream));
 | 
			
		||||
 | 
			
		||||
    // insert formated string at the end of stream
 | 
			
		||||
    // insert formatted string at the end of stream
 | 
			
		||||
    // "" -> "dio666"
 | 
			
		||||
    mu_check(stream_insert_format(stream, "%s%d", "dio", 666));
 | 
			
		||||
    mu_assert_int_eq(6, stream_size(stream));
 | 
			
		||||
    mu_check(stream_eof(stream));
 | 
			
		||||
    mu_assert_int_eq(6, stream_tell(stream));
 | 
			
		||||
 | 
			
		||||
    // insert formated string at the end of stream
 | 
			
		||||
    // insert formatted string at the end of stream
 | 
			
		||||
    // "dio666" -> "dio666zlo555"
 | 
			
		||||
    mu_check(stream_insert_format(stream, "%s%d", "zlo", 555));
 | 
			
		||||
    mu_assert_int_eq(12, stream_size(stream));
 | 
			
		||||
    mu_check(stream_eof(stream));
 | 
			
		||||
    mu_assert_int_eq(12, stream_tell(stream));
 | 
			
		||||
 | 
			
		||||
    // insert formated string at the 6 pos
 | 
			
		||||
    // insert formatted string at the 6 pos
 | 
			
		||||
    // "dio666" -> "dio666baba13zlo555"
 | 
			
		||||
    mu_check(stream_seek(stream, 6, StreamOffsetFromStart));
 | 
			
		||||
    mu_check(stream_insert_format(stream, "%s%d", "baba", 13));
 | 
			
		||||
 | 
			
		||||
@ -3,7 +3,7 @@
 | 
			
		||||
#include "../archive_i.h"
 | 
			
		||||
#include <storage/storage.h>
 | 
			
		||||
 | 
			
		||||
#define TAB_RIGHT InputKeyRight // Default tab swith direction
 | 
			
		||||
#define TAB_RIGHT InputKeyRight // Default tab switch direction
 | 
			
		||||
#define TAB_DEFAULT ArchiveTabFavorites // Start tab
 | 
			
		||||
#define FILE_LIST_BUF_LEN 100
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -31,7 +31,7 @@ bool elf_resolve_from_hashtable(const char* name, Elf32_Addr* address) {
 | 
			
		||||
 | 
			
		||||
    auto find_res = std::lower_bound(elf_api_table.cbegin(), elf_api_table.cend(), key);
 | 
			
		||||
    if((find_res == elf_api_table.cend() || (find_res->hash != gnu_sym_hash))) {
 | 
			
		||||
        FURI_LOG_W(TAG, "Cant find symbol '%s' (hash %lx)!", name, gnu_sym_hash);
 | 
			
		||||
        FURI_LOG_W(TAG, "Can't find symbol '%s' (hash %lx)!", name, gnu_sym_hash);
 | 
			
		||||
        result = false;
 | 
			
		||||
    } else {
 | 
			
		||||
        result = true;
 | 
			
		||||
 | 
			
		||||
@ -25,7 +25,7 @@ TUPLE_DEF2(
 | 
			
		||||
    (frequency, uint32_t),
 | 
			
		||||
    (count, uint8_t),
 | 
			
		||||
    (rssi_max, uint8_t))
 | 
			
		||||
/* Register globaly the oplist */
 | 
			
		||||
/* Register globally the oplist */
 | 
			
		||||
#define M_OPL_SubGhzFrequencyAnalyzerLogItem_t() \
 | 
			
		||||
    TUPLE_OPLIST(SubGhzFrequencyAnalyzerLogItem, M_POD_OPLIST, M_DEFAULT_OPLIST, M_DEFAULT_OPLIST)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -56,7 +56,7 @@ extern const size_t FLIPPER_DEBUG_APPS_COUNT;
 | 
			
		||||
extern const FlipperApplication FLIPPER_SYSTEM_APPS[];
 | 
			
		||||
extern const size_t FLIPPER_SYSTEM_APPS_COUNT;
 | 
			
		||||
 | 
			
		||||
/* Seperate scene app holder
 | 
			
		||||
/* Separate scene app holder
 | 
			
		||||
 * Spawned by loader
 | 
			
		||||
 */
 | 
			
		||||
extern const FlipperApplication FLIPPER_SCENE;
 | 
			
		||||
 | 
			
		||||
@ -69,7 +69,7 @@ View* animation_manager_get_animation_view(AnimationManager* animation_manager);
 | 
			
		||||
void animation_manager_set_context(AnimationManager* animation_manager, void* context);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Set callback for Animation Manager for defered calls
 | 
			
		||||
 * Set callback for Animation Manager for deferred calls
 | 
			
		||||
 * for animation_manager_new_idle_process().
 | 
			
		||||
 * Animation Manager doesn't have it's own thread, so main thread gives
 | 
			
		||||
 * callbacks to A.M. to call when it should perform some inner manipulations.
 | 
			
		||||
@ -96,7 +96,7 @@ void animation_manager_set_new_idle_callback(
 | 
			
		||||
void animation_manager_new_idle_process(AnimationManager* animation_manager);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Set callback for Animation Manager for defered calls
 | 
			
		||||
 * Set callback for Animation Manager for deferred calls
 | 
			
		||||
 * for animation_manager_check_blocking_process().
 | 
			
		||||
 *
 | 
			
		||||
 * @animation_manager   instance
 | 
			
		||||
@ -115,7 +115,7 @@ void animation_manager_set_check_callback(
 | 
			
		||||
void animation_manager_check_blocking_process(AnimationManager* animation_manager);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Set callback for Animation Manager for defered calls
 | 
			
		||||
 * Set callback for Animation Manager for deferred calls
 | 
			
		||||
 * for animation_manager_interact_process().
 | 
			
		||||
 *
 | 
			
		||||
 * @animation_manager   instance
 | 
			
		||||
 | 
			
		||||
@ -90,7 +90,7 @@ void elements_button_center(Canvas* canvas, const char* str);
 | 
			
		||||
 *
 | 
			
		||||
 * @param   canvas                  Canvas instance
 | 
			
		||||
 * @param   x, y                    coordinates based on align param
 | 
			
		||||
 * @param   horizontal, vertical    aligment of multiline text
 | 
			
		||||
 * @param   horizontal, vertical    alignment of multiline text
 | 
			
		||||
 * @param   text                    string (possible multiline)
 | 
			
		||||
 */
 | 
			
		||||
void elements_multiline_text_aligned(
 | 
			
		||||
 | 
			
		||||
@ -76,8 +76,8 @@ void dialog_ex_set_context(DialogEx* dialog_ex, void* context);
 | 
			
		||||
 * @param      text        text to be shown, can be multiline
 | 
			
		||||
 * @param      x           x position
 | 
			
		||||
 * @param      y           y position
 | 
			
		||||
 * @param      horizontal  horizontal text aligment
 | 
			
		||||
 * @param      vertical    vertical text aligment
 | 
			
		||||
 * @param      horizontal  horizontal text alignment
 | 
			
		||||
 * @param      vertical    vertical text alignment
 | 
			
		||||
 */
 | 
			
		||||
void dialog_ex_set_header(
 | 
			
		||||
    DialogEx* dialog_ex,
 | 
			
		||||
@ -95,8 +95,8 @@ void dialog_ex_set_header(
 | 
			
		||||
 * @param      text        text to be shown, can be multiline
 | 
			
		||||
 * @param      x           x position
 | 
			
		||||
 * @param      y           y position
 | 
			
		||||
 * @param      horizontal  horizontal text aligment
 | 
			
		||||
 * @param      vertical    vertical text aligment
 | 
			
		||||
 * @param      horizontal  horizontal text alignment
 | 
			
		||||
 * @param      vertical    vertical text alignment
 | 
			
		||||
 */
 | 
			
		||||
void dialog_ex_set_text(
 | 
			
		||||
    DialogEx* dialog_ex,
 | 
			
		||||
 | 
			
		||||
@ -64,7 +64,7 @@ void popup_set_context(Popup* popup, void* context);
 | 
			
		||||
 * @param      x           x position
 | 
			
		||||
 * @param      y           y position
 | 
			
		||||
 * @param      horizontal  horizontal alignment
 | 
			
		||||
 * @param      vertical    vertical aligment
 | 
			
		||||
 * @param      vertical    vertical alignment
 | 
			
		||||
 */
 | 
			
		||||
void popup_set_header(
 | 
			
		||||
    Popup* popup,
 | 
			
		||||
@ -83,7 +83,7 @@ void popup_set_header(
 | 
			
		||||
 * @param      x           x position
 | 
			
		||||
 * @param      y           y position
 | 
			
		||||
 * @param      horizontal  horizontal alignment
 | 
			
		||||
 * @param      vertical    vertical aligment
 | 
			
		||||
 * @param      vertical    vertical alignment
 | 
			
		||||
 */
 | 
			
		||||
void popup_set_text(
 | 
			
		||||
    Popup* popup,
 | 
			
		||||
 | 
			
		||||
@ -43,7 +43,7 @@ static void text_box_process_up(TextBox* text_box) {
 | 
			
		||||
                model->scroll_pos--;
 | 
			
		||||
                // Reach last symbol of previous line
 | 
			
		||||
                model->text_pos--;
 | 
			
		||||
                // Search prevous line start
 | 
			
		||||
                // Search previous line start
 | 
			
		||||
                while((model->text_pos != model->text) && (*(--model->text_pos) != '\n'))
 | 
			
		||||
                    ;
 | 
			
		||||
                if(*model->text_pos == '\n') {
 | 
			
		||||
 | 
			
		||||
@ -1,6 +1,6 @@
 | 
			
		||||
/**
 | 
			
		||||
 * @file text_input.h
 | 
			
		||||
 * GUI: TextInput keybord view module API
 | 
			
		||||
 * GUI: TextInput keyboard view module API
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#pragma once
 | 
			
		||||
 | 
			
		||||
@ -152,7 +152,7 @@ void view_dispatcher_remove_view(ViewDispatcher* view_dispatcher, uint32_t view_
 | 
			
		||||
    if(view_dispatcher->current_view == view) {
 | 
			
		||||
        view_dispatcher_set_current_view(view_dispatcher, NULL);
 | 
			
		||||
    }
 | 
			
		||||
    // Check if view is recieving input
 | 
			
		||||
    // Check if view is receiving input
 | 
			
		||||
    if(view_dispatcher->ongoing_input_view == view) {
 | 
			
		||||
        view_dispatcher->ongoing_input_view = NULL;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@ -20,8 +20,8 @@ typedef enum {
 | 
			
		||||
    InputTypePress, /**< Press event, emitted after debounce */
 | 
			
		||||
    InputTypeRelease, /**< Release event, emitted after debounce */
 | 
			
		||||
    InputTypeShort, /**< Short event, emitted after InputTypeRelease done withing INPUT_LONG_PRESS interval */
 | 
			
		||||
    InputTypeLong, /**< Long event, emmited after INPUT_LONG_PRESS interval, asynchronouse to InputTypeRelease  */
 | 
			
		||||
    InputTypeRepeat, /**< Repeat event, emmited with INPUT_REPEATE_PRESS period after InputTypeLong event */
 | 
			
		||||
    InputTypeLong, /**< Long event, emitted after INPUT_LONG_PRESS_COUNTS interval, asynchronous to InputTypeRelease  */
 | 
			
		||||
    InputTypeRepeat, /**< Repeat event, emitted with INPUT_LONG_PRESS_COUNTS period after InputTypeLong event */
 | 
			
		||||
    InputTypeMAX, /**< Special value for exceptional */
 | 
			
		||||
} InputType;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -86,7 +86,7 @@ FuriPubSub* power_get_pubsub(Power* power);
 | 
			
		||||
 */
 | 
			
		||||
bool power_is_battery_healthy(Power* power);
 | 
			
		||||
 | 
			
		||||
/** Enable or disable battery low level notification mesage
 | 
			
		||||
/** Enable or disable battery low level notification message
 | 
			
		||||
 *
 | 
			
		||||
 * @param power     Power instance
 | 
			
		||||
 * @param enable    true - enable, false - disable
 | 
			
		||||
 | 
			
		||||
@ -25,7 +25,7 @@ typedef void (*RpcSendBytesCallback)(void* context, uint8_t* bytes, size_t bytes
 | 
			
		||||
typedef void (*RpcBufferIsEmptyCallback)(void* context);
 | 
			
		||||
/** Callback to notify transport layer that close_session command
 | 
			
		||||
 * is received. Any other actions lays on transport layer.
 | 
			
		||||
 * No destruction or session close preformed. */
 | 
			
		||||
 * No destruction or session close performed. */
 | 
			
		||||
typedef void (*RpcSessionClosedCallback)(void* context);
 | 
			
		||||
/** Callback to notify transport layer that session was closed
 | 
			
		||||
 * and all operations were finished */
 | 
			
		||||
 | 
			
		||||
@ -330,7 +330,7 @@ static void rpc_system_storage_read_process(const PB_Main* request, void* contex
 | 
			
		||||
 | 
			
		||||
    rpc_system_storage_reset_state(rpc_storage, session, true);
 | 
			
		||||
 | 
			
		||||
    /* use same message memory to send reponse */
 | 
			
		||||
    /* use same message memory to send response */
 | 
			
		||||
    PB_Main* response = malloc(sizeof(PB_Main));
 | 
			
		||||
    const char* path = request->content.storage_read_request.path;
 | 
			
		||||
    Storage* fs_api = furi_record_open(RECORD_STORAGE);
 | 
			
		||||
 | 
			
		||||
@ -25,13 +25,13 @@ typedef enum {
 | 
			
		||||
typedef enum {
 | 
			
		||||
    FSE_OK, /**< No error */
 | 
			
		||||
    FSE_NOT_READY, /**< FS not ready */
 | 
			
		||||
    FSE_EXIST, /**< File/Dir alrady exist */
 | 
			
		||||
    FSE_EXIST, /**< File/Dir already exist */
 | 
			
		||||
    FSE_NOT_EXIST, /**< File/Dir does not exist */
 | 
			
		||||
    FSE_INVALID_PARAMETER, /**< Invalid API parameter */
 | 
			
		||||
    FSE_DENIED, /**< Access denied */
 | 
			
		||||
    FSE_INVALID_NAME, /**< Invalid name/path */
 | 
			
		||||
    FSE_INTERNAL, /**< Internal error */
 | 
			
		||||
    FSE_NOT_IMPLEMENTED, /**< Functon not implemented */
 | 
			
		||||
    FSE_NOT_IMPLEMENTED, /**< Function not implemented */
 | 
			
		||||
    FSE_ALREADY_OPEN, /**< File/Dir already opened */
 | 
			
		||||
} FS_Error;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -17,7 +17,7 @@ typedef enum {
 | 
			
		||||
struct File {
 | 
			
		||||
    uint32_t file_id; /**< File ID for internal references */
 | 
			
		||||
    FileType type;
 | 
			
		||||
    FS_Error error_id; /**< Standart API error from FS_Error enum */
 | 
			
		||||
    FS_Error error_id; /**< Standard API error from FS_Error enum */
 | 
			
		||||
    int32_t internal_error_id; /**< Internal API error value */
 | 
			
		||||
    void* storage;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
@ -255,19 +255,19 @@ FS_Error storage_common_fs_info(
 | 
			
		||||
const char* storage_error_get_desc(FS_Error error_id);
 | 
			
		||||
 | 
			
		||||
/** Retrieves the error id from the file object
 | 
			
		||||
 * @param file pointer to file object. Pointer must not point to NULL. YOU CANNOT RETREIVE THE ERROR ID IF THE FILE HAS BEEN CLOSED
 | 
			
		||||
 * @param file pointer to file object. Pointer must not point to NULL. YOU CANNOT RETRIEVE THE ERROR ID IF THE FILE HAS BEEN CLOSED
 | 
			
		||||
 * @return FS_Error error id
 | 
			
		||||
 */
 | 
			
		||||
FS_Error storage_file_get_error(File* file);
 | 
			
		||||
 | 
			
		||||
/** Retrieves the internal (storage-specific) error id from the file object
 | 
			
		||||
 * @param file pointer to file object. Pointer must not point to NULL. YOU CANNOT RETREIVE THE INTERNAL ERROR ID IF THE FILE HAS BEEN CLOSED
 | 
			
		||||
 * @param file pointer to file object. Pointer must not point to NULL. YOU CANNOT RETRIEVE THE INTERNAL ERROR ID IF THE FILE HAS BEEN CLOSED
 | 
			
		||||
 * @return FS_Error error id
 | 
			
		||||
 */
 | 
			
		||||
int32_t storage_file_get_internal_error(File* file);
 | 
			
		||||
 | 
			
		||||
/** Retrieves the error text from the file object
 | 
			
		||||
 * @param file pointer to file object. Pointer must not point to NULL. YOU CANNOT RETREIVE THE ERROR TEXT IF THE FILE HAS BEEN CLOSED
 | 
			
		||||
 * @param file pointer to file object. Pointer must not point to NULL. YOU CANNOT RETRIEVE THE ERROR TEXT IF THE FILE HAS BEEN CLOSED
 | 
			
		||||
 * @return const char* error text
 | 
			
		||||
 */
 | 
			
		||||
const char* storage_file_get_error_desc(File* file);
 | 
			
		||||
 | 
			
		||||
@ -26,7 +26,7 @@ typedef struct {
 | 
			
		||||
    NotificationApp* notification;
 | 
			
		||||
    Storage* fs_api;
 | 
			
		||||
 | 
			
		||||
    // view managment
 | 
			
		||||
    // view management
 | 
			
		||||
    SceneManager* scene_manager;
 | 
			
		||||
    ViewDispatcher* view_dispatcher;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -30,7 +30,7 @@ typedef struct {
 | 
			
		||||
    Widget* widget;
 | 
			
		||||
    NotificationApp* notifications;
 | 
			
		||||
 | 
			
		||||
    // view managment
 | 
			
		||||
    // view management
 | 
			
		||||
    SceneManager* scene_manager;
 | 
			
		||||
    ViewDispatcher* view_dispatcher;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -44,7 +44,7 @@ To run cleanup (think of `make clean`) for specified targets, add `-c` option.
 | 
			
		||||
 
 | 
			
		||||
- `fw_dist` - build & publish firmware to `dist` folder. This is a default target, when no other are specified
 | 
			
		||||
- `fap_dist` - build external plugins & publish to `dist` folder  
 | 
			
		||||
- `updater_package`, `updater_minpackage` - build self-update package. Minimal version only inclues firmware's DFU file; full version also includes radio stack & resources for SD card
 | 
			
		||||
- `updater_package`, `updater_minpackage` - build self-update package. Minimal version only includes firmware's DFU file; full version also includes radio stack & resources for SD card
 | 
			
		||||
- `copro_dist` - bundle Core2 FUS+stack binaries for qFlipper
 | 
			
		||||
- `flash` - flash attached device with OpenOCD over ST-Link
 | 
			
		||||
- `flash_usb`, `flash_usb_full` - build, upload and install update package to device over USB. See details on `updater_package`, `updater_minpackage` 
 | 
			
		||||
 | 
			
		||||
@ -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 aswell
 | 
			
		||||
# If you override COPRO_CUBE_DIR on commandline, override this as well
 | 
			
		||||
COPRO_STACK_BIN_DIR = posixpath.join(
 | 
			
		||||
    COPRO_CUBE_DIR,
 | 
			
		||||
    "Projects",
 | 
			
		||||
 | 
			
		||||
@ -8,7 +8,7 @@
 | 
			
		||||
typedef struct {
 | 
			
		||||
    FuriLogLevel log_level;
 | 
			
		||||
    FuriLogPuts puts;
 | 
			
		||||
    FuriLogTimestamp timetamp;
 | 
			
		||||
    FuriLogTimestamp timestamp;
 | 
			
		||||
    FuriMutex* mutex;
 | 
			
		||||
} FuriLogParams;
 | 
			
		||||
 | 
			
		||||
@ -18,7 +18,7 @@ void furi_log_init() {
 | 
			
		||||
    // Set default logging parameters
 | 
			
		||||
    furi_log.log_level = FURI_LOG_LEVEL_DEFAULT;
 | 
			
		||||
    furi_log.puts = furi_hal_console_puts;
 | 
			
		||||
    furi_log.timetamp = furi_get_tick;
 | 
			
		||||
    furi_log.timestamp = furi_get_tick;
 | 
			
		||||
    furi_log.mutex = furi_mutex_alloc(FuriMutexTypeNormal);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -59,7 +59,7 @@ void furi_log_print_format(FuriLogLevel level, const char* tag, const char* form
 | 
			
		||||
        furi_string_printf(
 | 
			
		||||
            string,
 | 
			
		||||
            "%lu %s[%s][%s] " FURI_LOG_CLR_RESET,
 | 
			
		||||
            furi_log.timetamp(),
 | 
			
		||||
            furi_log.timestamp(),
 | 
			
		||||
            color,
 | 
			
		||||
            log_letter,
 | 
			
		||||
            tag);
 | 
			
		||||
@ -98,5 +98,5 @@ void furi_log_set_puts(FuriLogPuts puts) {
 | 
			
		||||
 | 
			
		||||
void furi_log_set_timestamp(FuriLogTimestamp timestamp) {
 | 
			
		||||
    furi_assert(timestamp);
 | 
			
		||||
    furi_log.timetamp = timestamp;
 | 
			
		||||
    furi_log.timestamp = timestamp;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -1,6 +1,6 @@
 | 
			
		||||
/**
 | 
			
		||||
 * @file memmgr.h
 | 
			
		||||
 * Furi: memory managment API and glue
 | 
			
		||||
 * Furi: memory management API and glue
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#pragma once
 | 
			
		||||
 | 
			
		||||
@ -1,6 +1,6 @@
 | 
			
		||||
/**
 | 
			
		||||
 * @file memmgr_heap.h
 | 
			
		||||
 * Furi: heap memory managment API and allocator
 | 
			
		||||
 * Furi: heap memory management API and allocator
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#pragma once
 | 
			
		||||
 | 
			
		||||
@ -48,7 +48,7 @@ typedef int32_t (*FuriThreadCallback)(void* context);
 | 
			
		||||
 */
 | 
			
		||||
typedef void (*FuriThreadStdoutWriteCallback)(const char* data, size_t size);
 | 
			
		||||
 | 
			
		||||
/** FuriThread state change calback called upon thread state change
 | 
			
		||||
/** FuriThread state change callback called upon thread state change
 | 
			
		||||
 * @param      state    new thread state
 | 
			
		||||
 * @param      context  callback context
 | 
			
		||||
 */
 | 
			
		||||
@ -194,7 +194,7 @@ size_t furi_thread_get_heap_size(FuriThread* thread);
 | 
			
		||||
 */
 | 
			
		||||
int32_t furi_thread_get_return_code(FuriThread* thread);
 | 
			
		||||
 | 
			
		||||
/** Thread releated methods that doesn't involve FuriThread directly */
 | 
			
		||||
/** Thread related methods that doesn't involve FuriThread directly */
 | 
			
		||||
 | 
			
		||||
/** Get FreeRTOS FuriThreadId for current thread
 | 
			
		||||
 *
 | 
			
		||||
 | 
			
		||||
@ -4,7 +4,7 @@
 | 
			
		||||
 | 
			
		||||
bool init_mutex(ValueMutex* valuemutex, void* value, size_t size) {
 | 
			
		||||
    // mutex without name,
 | 
			
		||||
    // no attributes (unfortunatly robust mutex is not supported by FreeRTOS),
 | 
			
		||||
    // no attributes (unfortunately robust mutex is not supported by FreeRTOS),
 | 
			
		||||
    // with dynamic memory allocation
 | 
			
		||||
    valuemutex->mutex = furi_mutex_alloc(FuriMutexTypeNormal);
 | 
			
		||||
    if(valuemutex->mutex == NULL) return false;
 | 
			
		||||
 | 
			
		||||
@ -39,7 +39,7 @@ bool delete_mutex(ValueMutex* valuemutex);
 | 
			
		||||
void* acquire_mutex(ValueMutex* valuemutex, uint32_t timeout);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Helper: infinitly wait for mutex
 | 
			
		||||
 * Helper: infinitely wait for mutex
 | 
			
		||||
 */
 | 
			
		||||
static inline void* acquire_mutex_block(ValueMutex* valuemutex) {
 | 
			
		||||
    return acquire_mutex(valuemutex, FuriWaitForever);
 | 
			
		||||
@ -135,7 +135,7 @@ void consumer_app(void* _p) {
 | 
			
		||||
        flapp_exit(NULL);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // continously read value every 1s
 | 
			
		||||
    // continuously read value every 1s
 | 
			
		||||
    uint32_t counter;
 | 
			
		||||
    while(1) {
 | 
			
		||||
        if(read_mutex(counter_mutex, &counter, sizeof(counter), OsWaitForever)) {
 | 
			
		||||
 | 
			
		||||
@ -15,9 +15,9 @@ void furi_run() {
 | 
			
		||||
    furi_assert(xTaskGetSchedulerState() == taskSCHEDULER_NOT_STARTED);
 | 
			
		||||
 | 
			
		||||
#if(__ARM_ARCH_7A__ == 0U)
 | 
			
		||||
    /* Service Call interrupt might be configured before kernel start     */
 | 
			
		||||
    /* and when its priority is lower or equal to BASEPRI, svc intruction */
 | 
			
		||||
    /* causes a Hard Fault.                                               */
 | 
			
		||||
    /* Service Call interrupt might be configured before kernel start      */
 | 
			
		||||
    /* and when its priority is lower or equal to BASEPRI, svc instruction */
 | 
			
		||||
    /* causes a Hard Fault.                                                */
 | 
			
		||||
    NVIC_SetPriority(SVCall_IRQn, 0U);
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user