mirror of
https://github.com/Next-Flip/Momentum-Firmware.git
synced 2026-04-24 03:29:57 -07:00
Apps: IR: Support new settings from OFW
This commit is contained in:
Submodule applications/external updated: 8fc8f9a6bd...b552847933
@@ -12,14 +12,6 @@
|
||||
#define INFRARED_TX_MIN_INTERVAL_MS (50U)
|
||||
#define INFRARED_TASK_STACK_SIZE (2048UL)
|
||||
|
||||
#define INFRARED_SETTINGS_VERSION (1)
|
||||
#define INFRARED_SETTINGS_MAGIC (0x1F)
|
||||
|
||||
typedef struct {
|
||||
FuriHalInfraredTxPin tx_pin;
|
||||
bool otg_enabled;
|
||||
} InfraredSettings;
|
||||
|
||||
static const NotificationSequence*
|
||||
infrared_notification_sequences[InfraredNotificationMessageCount] = {
|
||||
&sequence_success,
|
||||
|
||||
@@ -15,4 +15,13 @@
|
||||
typedef struct InfraredApp InfraredApp;
|
||||
|
||||
#include <storage/storage.h>
|
||||
#include <furi_hal_infrared.h>
|
||||
|
||||
#define INFRARED_SETTINGS_PATH EXT_PATH("infrared/.infrared.settings")
|
||||
#define INFRARED_SETTINGS_VERSION (1)
|
||||
#define INFRARED_SETTINGS_MAGIC (0x1F)
|
||||
|
||||
typedef struct {
|
||||
FuriHalInfraredTxPin tx_pin;
|
||||
bool otg_enabled;
|
||||
} InfraredSettings;
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
#include <infrared/infrared_last_settings.c>
|
||||
@@ -8,7 +8,9 @@
|
||||
#include <dialogs/dialogs.h>
|
||||
#include <ir_remote_icons.h>
|
||||
#include <assets_icons.h>
|
||||
#include <infrared/infrared_last_settings.h>
|
||||
|
||||
#include <infrared/infrared_app.h>
|
||||
#include <toolbox/saved_struct.h>
|
||||
|
||||
#include <notification/notification.h>
|
||||
#include <notification/notification_messages.h>
|
||||
@@ -401,9 +403,30 @@ int32_t infrared_remote_app(char* p) {
|
||||
flipper_format_free(ff);
|
||||
furi_record_close(RECORD_STORAGE);
|
||||
|
||||
InfraredLastSettings* last_settings = infrared_last_settings_alloc();
|
||||
infrared_last_settings_load(last_settings);
|
||||
infrared_last_settings_apply(last_settings);
|
||||
bool otg_was_enabled = furi_hal_power_is_otg_enabled();
|
||||
InfraredSettings settings = {0};
|
||||
saved_struct_load(
|
||||
INFRARED_SETTINGS_PATH,
|
||||
&settings,
|
||||
sizeof(InfraredSettings),
|
||||
INFRARED_SETTINGS_MAGIC,
|
||||
INFRARED_SETTINGS_VERSION);
|
||||
if(settings.tx_pin < FuriHalInfraredTxPinMax) {
|
||||
furi_hal_infrared_set_tx_output(settings.tx_pin);
|
||||
if(settings.otg_enabled != otg_was_enabled) {
|
||||
if(settings.otg_enabled) {
|
||||
furi_hal_power_enable_otg();
|
||||
} else {
|
||||
furi_hal_power_disable_otg();
|
||||
}
|
||||
}
|
||||
} else {
|
||||
FuriHalInfraredTxPin tx_pin_detected = furi_hal_infrared_detect_tx_output();
|
||||
furi_hal_infrared_set_tx_output(tx_pin_detected);
|
||||
if(tx_pin_detected != FuriHalInfraredTxPinInternal) {
|
||||
furi_hal_power_enable_otg();
|
||||
}
|
||||
}
|
||||
|
||||
bool running = true;
|
||||
NotificationApp* notification = furi_record_open(RECORD_NOTIFICATION);
|
||||
@@ -546,8 +569,13 @@ int32_t infrared_remote_app(char* p) {
|
||||
}
|
||||
}
|
||||
|
||||
infrared_last_settings_reset(last_settings);
|
||||
infrared_last_settings_free(last_settings);
|
||||
if(furi_hal_power_is_otg_enabled() != otg_was_enabled) {
|
||||
if(otg_was_enabled) {
|
||||
furi_hal_power_enable_otg();
|
||||
} else {
|
||||
furi_hal_power_disable_otg();
|
||||
}
|
||||
}
|
||||
|
||||
// Free all things
|
||||
furi_string_free(app->up_button);
|
||||
|
||||
Reference in New Issue
Block a user