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!
|
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.
|
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
|
## 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.
|
- All our devices are intended for research and education.
|
||||||
- PR that contains code intended to commit crimes is not going to be accepted.
|
- 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 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 CI/CD.
|
||||||
- PR will only be merged if it pass review by code owner.
|
- PR will only be merged if it pass review by code owner.
|
||||||
|
|
||||||
|
@ -71,7 +71,7 @@ void WIEGAND::end() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void WIEGAND::ReadD0() {
|
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
|
if(_bitCount > 31) // If bit count more than 31, process high bits
|
||||||
{
|
{
|
||||||
_cardTempHigh |= ((0x80000000 & _cardTemp) >> 31); // shift value to 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) {
|
int32_t bt_debug_app(void* p) {
|
||||||
UNUSED(p);
|
UNUSED(p);
|
||||||
if(!furi_hal_bt_is_testing_supported()) {
|
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);
|
DialogsApp* dialogs = furi_record_open(RECORD_DIALOGS);
|
||||||
dialog_message_show_storage_error(dialogs, "Incorrect\nRadioStack");
|
dialog_message_show_storage_error(dialogs, "Incorrect\nRadioStack");
|
||||||
return 255;
|
return 255;
|
||||||
|
@ -145,7 +145,7 @@ DisplayTest* display_test_alloc() {
|
|||||||
view_set_previous_callback(view, display_test_previous_callback);
|
view_set_previous_callback(view, display_test_previous_callback);
|
||||||
view_dispatcher_add_view(instance->view_dispatcher, DisplayTestViewConfigure, view);
|
view_dispatcher_add_view(instance->view_dispatcher, DisplayTestViewConfigure, view);
|
||||||
|
|
||||||
// Configurtion items
|
// Configuration items
|
||||||
VariableItem* item;
|
VariableItem* item;
|
||||||
instance->config_bias = false;
|
instance->config_bias = false;
|
||||||
instance->config_contrast = 32;
|
instance->config_contrast = 32;
|
||||||
|
@ -11,7 +11,7 @@
|
|||||||
extern size_t memmgr_get_free_heap(void);
|
extern size_t memmgr_get_free_heap(void);
|
||||||
extern size_t memmgr_get_minimum_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,
|
// X bytes after allocate and 0 bytes after allocate and free,
|
||||||
// where X = sizeof(void*) + sizeof(size_t), look to BlockLink_t
|
// where X = sizeof(void*) + sizeof(size_t), look to BlockLink_t
|
||||||
const size_t heap_overhead_max_size = sizeof(void*) + sizeof(size_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_low = heap_size_old - heap_overhead_max_size;
|
||||||
const size_t heap_high = 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));
|
const bool result = ((heap_size >= heap_low) && (heap_size <= heap_high));
|
||||||
|
|
||||||
// debug allocation info
|
// debug allocation info
|
||||||
|
@ -136,7 +136,7 @@ static bool nfc_test_digital_signal_test_encode(
|
|||||||
ref_timings_sum += ref[i];
|
ref_timings_sum += ref[i];
|
||||||
if(timings_diff > timing_tolerance) {
|
if(timings_diff > timing_tolerance) {
|
||||||
FURI_LOG_E(
|
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;
|
timing_check_success = false;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -219,21 +219,21 @@ MU_TEST_1(stream_composite_subtest, Stream* stream) {
|
|||||||
mu_check(stream_eof(stream));
|
mu_check(stream_eof(stream));
|
||||||
mu_assert_int_eq(0, stream_tell(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"
|
// "" -> "dio666"
|
||||||
mu_check(stream_insert_format(stream, "%s%d", "dio", 666));
|
mu_check(stream_insert_format(stream, "%s%d", "dio", 666));
|
||||||
mu_assert_int_eq(6, stream_size(stream));
|
mu_assert_int_eq(6, stream_size(stream));
|
||||||
mu_check(stream_eof(stream));
|
mu_check(stream_eof(stream));
|
||||||
mu_assert_int_eq(6, stream_tell(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"
|
// "dio666" -> "dio666zlo555"
|
||||||
mu_check(stream_insert_format(stream, "%s%d", "zlo", 555));
|
mu_check(stream_insert_format(stream, "%s%d", "zlo", 555));
|
||||||
mu_assert_int_eq(12, stream_size(stream));
|
mu_assert_int_eq(12, stream_size(stream));
|
||||||
mu_check(stream_eof(stream));
|
mu_check(stream_eof(stream));
|
||||||
mu_assert_int_eq(12, stream_tell(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"
|
// "dio666" -> "dio666baba13zlo555"
|
||||||
mu_check(stream_seek(stream, 6, StreamOffsetFromStart));
|
mu_check(stream_seek(stream, 6, StreamOffsetFromStart));
|
||||||
mu_check(stream_insert_format(stream, "%s%d", "baba", 13));
|
mu_check(stream_insert_format(stream, "%s%d", "baba", 13));
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
#include "../archive_i.h"
|
#include "../archive_i.h"
|
||||||
#include <storage/storage.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 TAB_DEFAULT ArchiveTabFavorites // Start tab
|
||||||
#define FILE_LIST_BUF_LEN 100
|
#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);
|
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))) {
|
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;
|
result = false;
|
||||||
} else {
|
} else {
|
||||||
result = true;
|
result = true;
|
||||||
|
@ -25,7 +25,7 @@ TUPLE_DEF2(
|
|||||||
(frequency, uint32_t),
|
(frequency, uint32_t),
|
||||||
(count, uint8_t),
|
(count, uint8_t),
|
||||||
(rssi_max, uint8_t))
|
(rssi_max, uint8_t))
|
||||||
/* Register globaly the oplist */
|
/* Register globally the oplist */
|
||||||
#define M_OPL_SubGhzFrequencyAnalyzerLogItem_t() \
|
#define M_OPL_SubGhzFrequencyAnalyzerLogItem_t() \
|
||||||
TUPLE_OPLIST(SubGhzFrequencyAnalyzerLogItem, M_POD_OPLIST, M_DEFAULT_OPLIST, M_DEFAULT_OPLIST)
|
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 FlipperApplication FLIPPER_SYSTEM_APPS[];
|
||||||
extern const size_t FLIPPER_SYSTEM_APPS_COUNT;
|
extern const size_t FLIPPER_SYSTEM_APPS_COUNT;
|
||||||
|
|
||||||
/* Seperate scene app holder
|
/* Separate scene app holder
|
||||||
* Spawned by loader
|
* Spawned by loader
|
||||||
*/
|
*/
|
||||||
extern const FlipperApplication FLIPPER_SCENE;
|
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);
|
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().
|
* for animation_manager_new_idle_process().
|
||||||
* Animation Manager doesn't have it's own thread, so main thread gives
|
* 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.
|
* 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);
|
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().
|
* for animation_manager_check_blocking_process().
|
||||||
*
|
*
|
||||||
* @animation_manager instance
|
* @animation_manager instance
|
||||||
@ -115,7 +115,7 @@ void animation_manager_set_check_callback(
|
|||||||
void animation_manager_check_blocking_process(AnimationManager* animation_manager);
|
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().
|
* for animation_manager_interact_process().
|
||||||
*
|
*
|
||||||
* @animation_manager instance
|
* @animation_manager instance
|
||||||
|
@ -90,7 +90,7 @@ void elements_button_center(Canvas* canvas, const char* str);
|
|||||||
*
|
*
|
||||||
* @param canvas Canvas instance
|
* @param canvas Canvas instance
|
||||||
* @param x, y coordinates based on align param
|
* @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)
|
* @param text string (possible multiline)
|
||||||
*/
|
*/
|
||||||
void elements_multiline_text_aligned(
|
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 text text to be shown, can be multiline
|
||||||
* @param x x position
|
* @param x x position
|
||||||
* @param y y position
|
* @param y y position
|
||||||
* @param horizontal horizontal text aligment
|
* @param horizontal horizontal text alignment
|
||||||
* @param vertical vertical text aligment
|
* @param vertical vertical text alignment
|
||||||
*/
|
*/
|
||||||
void dialog_ex_set_header(
|
void dialog_ex_set_header(
|
||||||
DialogEx* dialog_ex,
|
DialogEx* dialog_ex,
|
||||||
@ -95,8 +95,8 @@ void dialog_ex_set_header(
|
|||||||
* @param text text to be shown, can be multiline
|
* @param text text to be shown, can be multiline
|
||||||
* @param x x position
|
* @param x x position
|
||||||
* @param y y position
|
* @param y y position
|
||||||
* @param horizontal horizontal text aligment
|
* @param horizontal horizontal text alignment
|
||||||
* @param vertical vertical text aligment
|
* @param vertical vertical text alignment
|
||||||
*/
|
*/
|
||||||
void dialog_ex_set_text(
|
void dialog_ex_set_text(
|
||||||
DialogEx* dialog_ex,
|
DialogEx* dialog_ex,
|
||||||
|
@ -64,7 +64,7 @@ void popup_set_context(Popup* popup, void* context);
|
|||||||
* @param x x position
|
* @param x x position
|
||||||
* @param y y position
|
* @param y y position
|
||||||
* @param horizontal horizontal alignment
|
* @param horizontal horizontal alignment
|
||||||
* @param vertical vertical aligment
|
* @param vertical vertical alignment
|
||||||
*/
|
*/
|
||||||
void popup_set_header(
|
void popup_set_header(
|
||||||
Popup* popup,
|
Popup* popup,
|
||||||
@ -83,7 +83,7 @@ void popup_set_header(
|
|||||||
* @param x x position
|
* @param x x position
|
||||||
* @param y y position
|
* @param y y position
|
||||||
* @param horizontal horizontal alignment
|
* @param horizontal horizontal alignment
|
||||||
* @param vertical vertical aligment
|
* @param vertical vertical alignment
|
||||||
*/
|
*/
|
||||||
void popup_set_text(
|
void popup_set_text(
|
||||||
Popup* popup,
|
Popup* popup,
|
||||||
|
@ -43,7 +43,7 @@ static void text_box_process_up(TextBox* text_box) {
|
|||||||
model->scroll_pos--;
|
model->scroll_pos--;
|
||||||
// Reach last symbol of previous line
|
// Reach last symbol of previous line
|
||||||
model->text_pos--;
|
model->text_pos--;
|
||||||
// Search prevous line start
|
// Search previous line start
|
||||||
while((model->text_pos != model->text) && (*(--model->text_pos) != '\n'))
|
while((model->text_pos != model->text) && (*(--model->text_pos) != '\n'))
|
||||||
;
|
;
|
||||||
if(*model->text_pos == '\n') {
|
if(*model->text_pos == '\n') {
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/**
|
/**
|
||||||
* @file text_input.h
|
* @file text_input.h
|
||||||
* GUI: TextInput keybord view module API
|
* GUI: TextInput keyboard view module API
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
@ -152,7 +152,7 @@ void view_dispatcher_remove_view(ViewDispatcher* view_dispatcher, uint32_t view_
|
|||||||
if(view_dispatcher->current_view == view) {
|
if(view_dispatcher->current_view == view) {
|
||||||
view_dispatcher_set_current_view(view_dispatcher, NULL);
|
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) {
|
if(view_dispatcher->ongoing_input_view == view) {
|
||||||
view_dispatcher->ongoing_input_view = NULL;
|
view_dispatcher->ongoing_input_view = NULL;
|
||||||
}
|
}
|
||||||
|
@ -20,8 +20,8 @@ typedef enum {
|
|||||||
InputTypePress, /**< Press event, emitted after debounce */
|
InputTypePress, /**< Press event, emitted after debounce */
|
||||||
InputTypeRelease, /**< Release event, emitted after debounce */
|
InputTypeRelease, /**< Release event, emitted after debounce */
|
||||||
InputTypeShort, /**< Short event, emitted after InputTypeRelease done withing INPUT_LONG_PRESS interval */
|
InputTypeShort, /**< Short event, emitted after InputTypeRelease done withing INPUT_LONG_PRESS interval */
|
||||||
InputTypeLong, /**< Long event, emmited after INPUT_LONG_PRESS interval, asynchronouse to InputTypeRelease */
|
InputTypeLong, /**< Long event, emitted after INPUT_LONG_PRESS_COUNTS interval, asynchronous to InputTypeRelease */
|
||||||
InputTypeRepeat, /**< Repeat event, emmited with INPUT_REPEATE_PRESS period after InputTypeLong event */
|
InputTypeRepeat, /**< Repeat event, emitted with INPUT_LONG_PRESS_COUNTS period after InputTypeLong event */
|
||||||
InputTypeMAX, /**< Special value for exceptional */
|
InputTypeMAX, /**< Special value for exceptional */
|
||||||
} InputType;
|
} InputType;
|
||||||
|
|
||||||
|
@ -86,7 +86,7 @@ FuriPubSub* power_get_pubsub(Power* power);
|
|||||||
*/
|
*/
|
||||||
bool power_is_battery_healthy(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 power Power instance
|
||||||
* @param enable true - enable, false - disable
|
* @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);
|
typedef void (*RpcBufferIsEmptyCallback)(void* context);
|
||||||
/** Callback to notify transport layer that close_session command
|
/** Callback to notify transport layer that close_session command
|
||||||
* is received. Any other actions lays on transport layer.
|
* 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);
|
typedef void (*RpcSessionClosedCallback)(void* context);
|
||||||
/** Callback to notify transport layer that session was closed
|
/** Callback to notify transport layer that session was closed
|
||||||
* and all operations were finished */
|
* 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);
|
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));
|
PB_Main* response = malloc(sizeof(PB_Main));
|
||||||
const char* path = request->content.storage_read_request.path;
|
const char* path = request->content.storage_read_request.path;
|
||||||
Storage* fs_api = furi_record_open(RECORD_STORAGE);
|
Storage* fs_api = furi_record_open(RECORD_STORAGE);
|
||||||
|
@ -25,13 +25,13 @@ typedef enum {
|
|||||||
typedef enum {
|
typedef enum {
|
||||||
FSE_OK, /**< No error */
|
FSE_OK, /**< No error */
|
||||||
FSE_NOT_READY, /**< FS not ready */
|
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_NOT_EXIST, /**< File/Dir does not exist */
|
||||||
FSE_INVALID_PARAMETER, /**< Invalid API parameter */
|
FSE_INVALID_PARAMETER, /**< Invalid API parameter */
|
||||||
FSE_DENIED, /**< Access denied */
|
FSE_DENIED, /**< Access denied */
|
||||||
FSE_INVALID_NAME, /**< Invalid name/path */
|
FSE_INVALID_NAME, /**< Invalid name/path */
|
||||||
FSE_INTERNAL, /**< Internal error */
|
FSE_INTERNAL, /**< Internal error */
|
||||||
FSE_NOT_IMPLEMENTED, /**< Functon not implemented */
|
FSE_NOT_IMPLEMENTED, /**< Function not implemented */
|
||||||
FSE_ALREADY_OPEN, /**< File/Dir already opened */
|
FSE_ALREADY_OPEN, /**< File/Dir already opened */
|
||||||
} FS_Error;
|
} FS_Error;
|
||||||
|
|
||||||
|
@ -17,7 +17,7 @@ typedef enum {
|
|||||||
struct File {
|
struct File {
|
||||||
uint32_t file_id; /**< File ID for internal references */
|
uint32_t file_id; /**< File ID for internal references */
|
||||||
FileType type;
|
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 */
|
int32_t internal_error_id; /**< Internal API error value */
|
||||||
void* storage;
|
void* storage;
|
||||||
};
|
};
|
||||||
|
@ -255,19 +255,19 @@ FS_Error storage_common_fs_info(
|
|||||||
const char* storage_error_get_desc(FS_Error error_id);
|
const char* storage_error_get_desc(FS_Error error_id);
|
||||||
|
|
||||||
/** Retrieves the error id from the file object
|
/** 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
|
* @return FS_Error error id
|
||||||
*/
|
*/
|
||||||
FS_Error storage_file_get_error(File* file);
|
FS_Error storage_file_get_error(File* file);
|
||||||
|
|
||||||
/** Retrieves the internal (storage-specific) error id from the file object
|
/** 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
|
* @return FS_Error error id
|
||||||
*/
|
*/
|
||||||
int32_t storage_file_get_internal_error(File* file);
|
int32_t storage_file_get_internal_error(File* file);
|
||||||
|
|
||||||
/** Retrieves the error text from the file object
|
/** 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
|
* @return const char* error text
|
||||||
*/
|
*/
|
||||||
const char* storage_file_get_error_desc(File* file);
|
const char* storage_file_get_error_desc(File* file);
|
||||||
|
@ -26,7 +26,7 @@ typedef struct {
|
|||||||
NotificationApp* notification;
|
NotificationApp* notification;
|
||||||
Storage* fs_api;
|
Storage* fs_api;
|
||||||
|
|
||||||
// view managment
|
// view management
|
||||||
SceneManager* scene_manager;
|
SceneManager* scene_manager;
|
||||||
ViewDispatcher* view_dispatcher;
|
ViewDispatcher* view_dispatcher;
|
||||||
|
|
||||||
|
@ -30,7 +30,7 @@ typedef struct {
|
|||||||
Widget* widget;
|
Widget* widget;
|
||||||
NotificationApp* notifications;
|
NotificationApp* notifications;
|
||||||
|
|
||||||
// view managment
|
// view management
|
||||||
SceneManager* scene_manager;
|
SceneManager* scene_manager;
|
||||||
ViewDispatcher* view_dispatcher;
|
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
|
- `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
|
- `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
|
- `copro_dist` - bundle Core2 FUS+stack binaries for qFlipper
|
||||||
- `flash` - flash attached device with OpenOCD over ST-Link
|
- `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`
|
- `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
|
# Leave 0 to let scripts automatically calculate it
|
||||||
COPRO_STACK_ADDR = "0x0"
|
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_STACK_BIN_DIR = posixpath.join(
|
||||||
COPRO_CUBE_DIR,
|
COPRO_CUBE_DIR,
|
||||||
"Projects",
|
"Projects",
|
||||||
|
@ -8,7 +8,7 @@
|
|||||||
typedef struct {
|
typedef struct {
|
||||||
FuriLogLevel log_level;
|
FuriLogLevel log_level;
|
||||||
FuriLogPuts puts;
|
FuriLogPuts puts;
|
||||||
FuriLogTimestamp timetamp;
|
FuriLogTimestamp timestamp;
|
||||||
FuriMutex* mutex;
|
FuriMutex* mutex;
|
||||||
} FuriLogParams;
|
} FuriLogParams;
|
||||||
|
|
||||||
@ -18,7 +18,7 @@ void furi_log_init() {
|
|||||||
// Set default logging parameters
|
// Set default logging parameters
|
||||||
furi_log.log_level = FURI_LOG_LEVEL_DEFAULT;
|
furi_log.log_level = FURI_LOG_LEVEL_DEFAULT;
|
||||||
furi_log.puts = furi_hal_console_puts;
|
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);
|
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(
|
furi_string_printf(
|
||||||
string,
|
string,
|
||||||
"%lu %s[%s][%s] " FURI_LOG_CLR_RESET,
|
"%lu %s[%s][%s] " FURI_LOG_CLR_RESET,
|
||||||
furi_log.timetamp(),
|
furi_log.timestamp(),
|
||||||
color,
|
color,
|
||||||
log_letter,
|
log_letter,
|
||||||
tag);
|
tag);
|
||||||
@ -98,5 +98,5 @@ void furi_log_set_puts(FuriLogPuts puts) {
|
|||||||
|
|
||||||
void furi_log_set_timestamp(FuriLogTimestamp timestamp) {
|
void furi_log_set_timestamp(FuriLogTimestamp timestamp) {
|
||||||
furi_assert(timestamp);
|
furi_assert(timestamp);
|
||||||
furi_log.timetamp = timestamp;
|
furi_log.timestamp = timestamp;
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/**
|
/**
|
||||||
* @file memmgr.h
|
* @file memmgr.h
|
||||||
* Furi: memory managment API and glue
|
* Furi: memory management API and glue
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/**
|
/**
|
||||||
* @file memmgr_heap.h
|
* @file memmgr_heap.h
|
||||||
* Furi: heap memory managment API and allocator
|
* Furi: heap memory management API and allocator
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
@ -48,7 +48,7 @@ typedef int32_t (*FuriThreadCallback)(void* context);
|
|||||||
*/
|
*/
|
||||||
typedef void (*FuriThreadStdoutWriteCallback)(const char* data, size_t size);
|
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 state new thread state
|
||||||
* @param context callback context
|
* @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);
|
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
|
/** Get FreeRTOS FuriThreadId for current thread
|
||||||
*
|
*
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
|
|
||||||
bool init_mutex(ValueMutex* valuemutex, void* value, size_t size) {
|
bool init_mutex(ValueMutex* valuemutex, void* value, size_t size) {
|
||||||
// mutex without name,
|
// 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
|
// with dynamic memory allocation
|
||||||
valuemutex->mutex = furi_mutex_alloc(FuriMutexTypeNormal);
|
valuemutex->mutex = furi_mutex_alloc(FuriMutexTypeNormal);
|
||||||
if(valuemutex->mutex == NULL) return false;
|
if(valuemutex->mutex == NULL) return false;
|
||||||
|
@ -39,7 +39,7 @@ bool delete_mutex(ValueMutex* valuemutex);
|
|||||||
void* acquire_mutex(ValueMutex* valuemutex, uint32_t timeout);
|
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) {
|
static inline void* acquire_mutex_block(ValueMutex* valuemutex) {
|
||||||
return acquire_mutex(valuemutex, FuriWaitForever);
|
return acquire_mutex(valuemutex, FuriWaitForever);
|
||||||
@ -135,7 +135,7 @@ void consumer_app(void* _p) {
|
|||||||
flapp_exit(NULL);
|
flapp_exit(NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
// continously read value every 1s
|
// continuously read value every 1s
|
||||||
uint32_t counter;
|
uint32_t counter;
|
||||||
while(1) {
|
while(1) {
|
||||||
if(read_mutex(counter_mutex, &counter, sizeof(counter), OsWaitForever)) {
|
if(read_mutex(counter_mutex, &counter, sizeof(counter), OsWaitForever)) {
|
||||||
|
@ -15,9 +15,9 @@ void furi_run() {
|
|||||||
furi_assert(xTaskGetSchedulerState() == taskSCHEDULER_NOT_STARTED);
|
furi_assert(xTaskGetSchedulerState() == taskSCHEDULER_NOT_STARTED);
|
||||||
|
|
||||||
#if(__ARM_ARCH_7A__ == 0U)
|
#if(__ARM_ARCH_7A__ == 0U)
|
||||||
/* Service Call interrupt might be configured before kernel start */
|
/* Service Call interrupt might be configured before kernel start */
|
||||||
/* and when its priority is lower or equal to BASEPRI, svc intruction */
|
/* and when its priority is lower or equal to BASEPRI, svc instruction */
|
||||||
/* causes a Hard Fault. */
|
/* causes a Hard Fault. */
|
||||||
NVIC_SetPriority(SVCall_IRQn, 0U);
|
NVIC_SetPriority(SVCall_IRQn, 0U);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user