Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/ClusterM/flipperzero-firmware.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnna Prosvetova <anna@prosvetova.me>2021-11-01 23:35:54 +0300
committerGitHub <noreply@github.com>2021-11-01 23:35:54 +0300
commite9e76e144c13424869bf8afabfd8e8882baa0c24 (patch)
tree36cd3122d291408c30aef00056409fff7b8f669d /applications/power
parentb397442d895194aec75c9075e74ac820cb4e6817 (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-xapplications/power/power_service/power.c22
-rw-r--r--applications/power/power_service/power.h2
-rw-r--r--applications/power/power_service/power_api.c5
-rwxr-xr-xapplications/power/power_service/power_i.h2
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;