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:
@@ -51,7 +51,7 @@ Power* power_alloc() {
|
||||
power->state = PowerStateNotCharging;
|
||||
power->battery_low = false;
|
||||
power->power_off_timeout = POWER_OFF_TIMEOUT;
|
||||
power->api_mtx = osMutexNew(NULL);
|
||||
power->api_mtx = furi_mutex_alloc(FuriMutexTypeNormal);
|
||||
|
||||
// Gui
|
||||
power->view_dispatcher = view_dispatcher_alloc();
|
||||
@@ -83,7 +83,7 @@ void power_free(Power* power) {
|
||||
view_port_free(power->battery_view_port);
|
||||
|
||||
// State
|
||||
osMutexDelete(power->api_mtx);
|
||||
furi_mutex_free(power->api_mtx);
|
||||
|
||||
// FuriPubSub
|
||||
furi_pubsub_free(power->event_pubsub);
|
||||
@@ -138,10 +138,10 @@ static bool power_update_info(Power* power) {
|
||||
info.temperature_charger = furi_hal_power_get_battery_temperature(FuriHalPowerICCharger);
|
||||
info.temperature_gauge = furi_hal_power_get_battery_temperature(FuriHalPowerICFuelGauge);
|
||||
|
||||
osMutexAcquire(power->api_mtx, osWaitForever);
|
||||
furi_mutex_acquire(power->api_mtx, FuriWaitForever);
|
||||
bool need_refresh = power->info.charge != info.charge;
|
||||
power->info = info;
|
||||
osMutexRelease(power->api_mtx);
|
||||
furi_mutex_release(power->api_mtx);
|
||||
|
||||
return need_refresh;
|
||||
}
|
||||
@@ -226,7 +226,7 @@ int32_t power_srv(void* p) {
|
||||
furi_hal_power_check_otg_status();
|
||||
}
|
||||
|
||||
osDelay(1000);
|
||||
furi_delay_ms(1000);
|
||||
}
|
||||
|
||||
power_free(power);
|
||||
|
@@ -1,7 +1,7 @@
|
||||
#pragma once
|
||||
|
||||
#include <stdint.h>
|
||||
#include <furi/pubsub.h>
|
||||
#include <core/pubsub.h>
|
||||
#include <stdbool.h>
|
||||
|
||||
typedef struct Power Power;
|
||||
|
@@ -9,7 +9,7 @@ void power_off(Power* power) {
|
||||
// Notify user if USB is plugged
|
||||
view_dispatcher_send_to_front(power->view_dispatcher);
|
||||
view_dispatcher_switch_to_view(power->view_dispatcher, PowerViewPopup);
|
||||
osDelay(10);
|
||||
furi_delay_ms(10);
|
||||
furi_halt("Disconnect USB for safe shutdown");
|
||||
}
|
||||
|
||||
@@ -28,9 +28,9 @@ void power_get_info(Power* power, PowerInfo* info) {
|
||||
furi_assert(power);
|
||||
furi_assert(info);
|
||||
|
||||
osMutexAcquire(power->api_mtx, osWaitForever);
|
||||
furi_mutex_acquire(power->api_mtx, FuriWaitForever);
|
||||
memcpy(info, &power->info, sizeof(power->info));
|
||||
osMutexRelease(power->api_mtx);
|
||||
furi_mutex_release(power->api_mtx);
|
||||
}
|
||||
|
||||
FuriPubSub* power_get_pubsub(Power* power) {
|
||||
@@ -41,15 +41,15 @@ FuriPubSub* power_get_pubsub(Power* power) {
|
||||
bool power_is_battery_healthy(Power* power) {
|
||||
furi_assert(power);
|
||||
bool is_healthy = false;
|
||||
osMutexAcquire(power->api_mtx, osWaitForever);
|
||||
furi_mutex_acquire(power->api_mtx, FuriWaitForever);
|
||||
is_healthy = power->info.health > POWER_BATTERY_HEALTHY_LEVEL;
|
||||
osMutexRelease(power->api_mtx);
|
||||
furi_mutex_release(power->api_mtx);
|
||||
return is_healthy;
|
||||
}
|
||||
|
||||
void power_enable_low_battery_level_notification(Power* power, bool enable) {
|
||||
furi_assert(power);
|
||||
osMutexAcquire(power->api_mtx, osWaitForever);
|
||||
furi_mutex_acquire(power->api_mtx, FuriWaitForever);
|
||||
power->show_low_bat_level_message = enable;
|
||||
osMutexRelease(power->api_mtx);
|
||||
furi_mutex_release(power->api_mtx);
|
||||
}
|
||||
|
@@ -38,7 +38,7 @@ struct Power {
|
||||
uint8_t battery_level;
|
||||
uint8_t power_off_timeout;
|
||||
|
||||
osMutexId_t api_mtx;
|
||||
FuriMutex* api_mtx;
|
||||
};
|
||||
|
||||
typedef enum {
|
||||
|
Reference in New Issue
Block a user