Furi: core refactoring and CMSIS removal part 2 (#1410)

* Furi: rename and move core
* Furi: drop CMSIS_OS header and unused api, partially refactor and cleanup the rest
* Furi: CMSIS_OS drop and refactoring.
* Furi: refactoring, remove cmsis legacy
* Furi: fix incorrect assert on queue deallocation, cleanup timer
* Furi: improve delay api, get rid of floats
* hal: dropped furi_hal_crc
* Furi: move DWT based delay to cortex HAL
* Furi: update core documentation

Co-authored-by: hedger <hedger@nanode.su>
This commit is contained in:
あく
2022-07-20 13:56:33 +03:00
committed by GitHub
parent f9c2287ea7
commit e3c7201a20
264 changed files with 2569 additions and 3883 deletions

View File

@@ -27,9 +27,9 @@ typedef struct {
typedef struct {
MusicPlayerModel* model;
osMutexId_t* model_mutex;
FuriMutex** model_mutex;
osMessageQueueId_t input_queue;
FuriMessageQueue* input_queue;
ViewPort* view_port;
Gui* gui;
@@ -126,7 +126,7 @@ static bool is_black_note(uint8_t semitone, uint8_t id) {
static void render_callback(Canvas* canvas, void* ctx) {
MusicPlayer* music_player = ctx;
furi_check(osMutexAcquire(music_player->model_mutex, osWaitForever) == osOK);
furi_check(furi_mutex_acquire(music_player->model_mutex, FuriWaitForever) == FuriStatusOk);
canvas_clear(canvas);
canvas_set_color(canvas, ColorBlack);
@@ -208,13 +208,13 @@ static void render_callback(Canvas* canvas, void* ctx) {
canvas_draw_line(canvas, x_pos, 64 - 16 * i, x_pos + 48, 64 - 16 * i);
}
osMutexRelease(music_player->model_mutex);
furi_mutex_release(music_player->model_mutex);
}
static void input_callback(InputEvent* input_event, void* ctx) {
MusicPlayer* music_player = ctx;
if(input_event->type == InputTypeShort) {
osMessageQueuePut(music_player->input_queue, input_event, 0, 0);
furi_message_queue_put(music_player->input_queue, input_event, 0);
}
}
@@ -225,7 +225,7 @@ static void music_player_worker_callback(
float position,
void* context) {
MusicPlayer* music_player = context;
furi_check(osMutexAcquire(music_player->model_mutex, osWaitForever) == osOK);
furi_check(furi_mutex_acquire(music_player->model_mutex, FuriWaitForever) == FuriStatusOk);
for(size_t i = 0; i < MUSIC_PLAYER_SEMITONE_HISTORY_SIZE - 1; i++) {
size_t r = MUSIC_PLAYER_SEMITONE_HISTORY_SIZE - 1 - i;
@@ -243,7 +243,7 @@ static void music_player_worker_callback(
music_player->model->semitone_history[0] = semitone;
music_player->model->duration_history[0] = duration;
osMutexRelease(music_player->model_mutex);
furi_mutex_release(music_player->model_mutex);
view_port_update(music_player->view_port);
}
@@ -255,9 +255,9 @@ MusicPlayer* music_player_alloc() {
memset(instance->model->semitone_history, 0xff, MUSIC_PLAYER_SEMITONE_HISTORY_SIZE);
instance->model->volume = 3;
instance->model_mutex = osMutexNew(NULL);
instance->model_mutex = furi_mutex_alloc(FuriMutexTypeNormal);
instance->input_queue = osMessageQueueNew(8, sizeof(InputEvent), NULL);
instance->input_queue = furi_message_queue_alloc(8, sizeof(InputEvent));
instance->worker = music_player_worker_alloc();
music_player_worker_set_volume(
@@ -282,9 +282,9 @@ void music_player_free(MusicPlayer* instance) {
music_player_worker_free(instance->worker);
osMessageQueueDelete(instance->input_queue);
furi_message_queue_free(instance->input_queue);
osMutexDelete(instance->model_mutex);
furi_mutex_free(instance->model_mutex);
free(instance->model);
free(instance);
@@ -327,11 +327,13 @@ int32_t music_player_app(void* p) {
music_player_worker_start(music_player->worker);
InputEvent input;
while(osMessageQueueGet(music_player->input_queue, &input, NULL, osWaitForever) == osOK) {
furi_check(osMutexAcquire(music_player->model_mutex, osWaitForever) == osOK);
while(furi_message_queue_get(music_player->input_queue, &input, FuriWaitForever) ==
FuriStatusOk) {
furi_check(
furi_mutex_acquire(music_player->model_mutex, FuriWaitForever) == FuriStatusOk);
if(input.key == InputKeyBack) {
osMutexRelease(music_player->model_mutex);
furi_mutex_release(music_player->model_mutex);
break;
} else if(input.key == InputKeyUp) {
if(music_player->model->volume < COUNT_OF(MUSIC_PLAYER_VOLUMES) - 1)
@@ -344,7 +346,7 @@ int32_t music_player_app(void* p) {
music_player->worker, MUSIC_PLAYER_VOLUMES[music_player->model->volume]);
}
osMutexRelease(music_player->model_mutex);
furi_mutex_release(music_player->model_mutex);
view_port_update(music_player->view_port);
}

View File

@@ -26,7 +26,7 @@ static void music_player_cli(Cli* cli, string_t args, void* context) {
music_player_worker_set_volume(music_player_worker, 1.0f);
music_player_worker_start(music_player_worker);
while(!cli_cmd_interrupt_received(cli)) {
osDelay(50);
furi_delay_ms(50);
}
music_player_worker_stop(music_player_worker);
} while(0);

View File

@@ -51,20 +51,20 @@ static int32_t music_player_worker_thread_callback(void* context) {
while(instance->should_work) {
if(NoteBlockArray_end_p(it)) {
NoteBlockArray_it(it, instance->notes);
osDelay(10);
furi_delay_ms(10);
} else {
NoteBlock* note_block = NoteBlockArray_ref(it);
float note_from_a4 = (float)note_block->semitone - NOTE_C4_SEMITONE;
float frequency = NOTE_C4 * powf(TWO_POW_TWELTH_ROOT, note_from_a4);
float duration =
60.0 * osKernelGetTickFreq() * 4 / instance->bpm / note_block->duration;
60.0 * furi_kernel_get_tick_frequency() * 4 / instance->bpm / note_block->duration;
uint32_t dots = note_block->dots;
while(dots > 0) {
duration += duration / 2;
dots--;
}
uint32_t next_tick = furi_hal_get_tick() + duration;
uint32_t next_tick = furi_get_tick() + duration;
float volume = instance->volume;
if(instance->callback) {
@@ -78,10 +78,10 @@ static int32_t music_player_worker_thread_callback(void* context) {
furi_hal_speaker_stop();
furi_hal_speaker_start(frequency, volume);
while(instance->should_work && furi_hal_get_tick() < next_tick) {
while(instance->should_work && furi_get_tick() < next_tick) {
volume *= 0.9945679;
furi_hal_speaker_set_volume(volume);
furi_hal_delay_ms(2);
furi_delay_ms(2);
}
NoteBlockArray_next(it);
}