diff options
author | Anna Prosvetova <anna@prosvetova.me> | 2021-11-01 23:35:54 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-11-01 23:35:54 +0300 |
commit | e9e76e144c13424869bf8afabfd8e8882baa0c24 (patch) | |
tree | 36cd3122d291408c30aef00056409fff7b8f669d /applications/power | |
parent | b397442d895194aec75c9075e74ac820cb4e6817 (diff) |
RPC: Implement storage_stat_request (#800)
* RPC: Update protobuf sources
* RPC: Implement storage_stat_request
* RPC: Test storage_stat_request
* FuriRecord: fix use after free in destroy method.
* Furi: refactor PubSub and it's usage. Fix allocation in RPC.
* FuriCore: fix memory leak in pubsub
* FuriCore: update unsubscribe method signature in pubsub, make subscription structure lighter.
* FuriCore: remove dead code
Co-authored-by: Aleksandr Kutuzov <alleteam@gmail.com>
Diffstat (limited to 'applications/power')
-rwxr-xr-x | applications/power/power_service/power.c | 22 | ||||
-rw-r--r-- | applications/power/power_service/power.h | 2 | ||||
-rw-r--r-- | applications/power/power_service/power_api.c | 5 | ||||
-rwxr-xr-x | applications/power/power_service/power_i.h | 2 |
4 files changed, 18 insertions, 13 deletions
diff --git a/applications/power/power_service/power.c b/applications/power/power_service/power.c index de712fd4..94137d73 100755 --- a/applications/power/power_service/power.c +++ b/applications/power/power_service/power.c @@ -31,7 +31,7 @@ Power* power_alloc() { power->gui = furi_record_open("gui"); // Pubsub - init_pubsub(&power->event_pubsub); + power->event_pubsub = furi_pubsub_alloc(); // State initialization power->state = PowerStateNotCharging; @@ -60,10 +60,6 @@ Power* power_alloc() { void power_free(Power* power) { furi_assert(power); - // Records - furi_record_close("notification"); - furi_record_close("gui"); - // Gui view_dispatcher_remove_view(power->view_dispatcher, PowerViewOff); power_off_free(power->power_off); @@ -73,6 +69,14 @@ void power_free(Power* power) { // State osMutexDelete(power->info_mtx); + + // FuriPubSub + furi_pubsub_free(power->event_pubsub); + + // Records + furi_record_close("notification"); + furi_record_close("gui"); + free(power); } @@ -83,14 +87,14 @@ static void power_check_charging_state(Power* power) { notification_internal_message(power->notification, &sequence_charged); power->state = PowerStateCharged; power->event.type = PowerEventTypeFullyCharged; - notify_pubsub(&power->event_pubsub, &power->event); + furi_pubsub_publish(power->event_pubsub, &power->event); } } else { if(power->state != PowerStateCharging) { notification_internal_message(power->notification, &sequence_charging); power->state = PowerStateCharging; power->event.type = PowerEventTypeStartCharging; - notify_pubsub(&power->event_pubsub, &power->event); + furi_pubsub_publish(power->event_pubsub, &power->event); } } } else { @@ -98,7 +102,7 @@ static void power_check_charging_state(Power* power) { notification_internal_message(power->notification, &sequence_not_charging); power->state = PowerStateNotCharging; power->event.type = PowerEventTypeStopCharging; - notify_pubsub(&power->event_pubsub, &power->event); + furi_pubsub_publish(power->event_pubsub, &power->event); } } } @@ -156,7 +160,7 @@ static void power_check_battery_level_change(Power* power) { power->battery_level = power->info.charge; power->event.type = PowerEventTypeBatteryLevelChanged; power->event.data.battery_level = power->battery_level; - notify_pubsub(&power->event_pubsub, &power->event); + furi_pubsub_publish(power->event_pubsub, &power->event); } } diff --git a/applications/power/power_service/power.h b/applications/power/power_service/power.h index d3dec410..947d917c 100644 --- a/applications/power/power_service/power.h +++ b/applications/power/power_service/power.h @@ -62,4 +62,4 @@ void power_get_info(Power* power, PowerInfo* info); /** Get power event pubsub handler * @param power - Power instance */ -PubSub* power_get_pubsub(Power* power); +FuriPubSub* power_get_pubsub(Power* power); diff --git a/applications/power/power_service/power_api.c b/applications/power/power_service/power_api.c index 46fa21ef..a3278f9b 100644 --- a/applications/power/power_service/power_api.c +++ b/applications/power/power_service/power_api.c @@ -1,4 +1,5 @@ #include "power_i.h" + #include <furi.h> #include "furi-hal-power.h" #include "furi-hal-bootloader.h" @@ -30,7 +31,7 @@ void power_get_info(Power* power, PowerInfo* info) { osMutexRelease(power->info_mtx); } -PubSub* power_get_pubsub(Power* power) { +FuriPubSub* power_get_pubsub(Power* power) { furi_assert(power); - return &power->event_pubsub; + return power->event_pubsub; } diff --git a/applications/power/power_service/power_i.h b/applications/power/power_service/power_i.h index 5bebd8cb..9833df5f 100755 --- a/applications/power/power_service/power_i.h +++ b/applications/power/power_service/power_i.h @@ -25,7 +25,7 @@ struct Power { ViewPort* battery_view_port; Gui* gui; NotificationApp* notification; - PubSub event_pubsub; + FuriPubSub* event_pubsub; PowerEvent event; PowerState state; |