David Lee 2 лет назад
Родитель
Сommit
12cd62d43e

+ 2 - 0
helpers/xremote_storage.c

@@ -57,6 +57,7 @@ void xremote_save_settings(void* context) {
     flipper_format_write_uint32(fff_file, XREMOTE_SETTINGS_KEY_LED, &app->led, 1);
     flipper_format_write_uint32(
         fff_file, XREMOTE_SETTINGS_KEY_SAVE_SETTINGS, &app->save_settings, 1);
+    flipper_format_write_uint32(fff_file, XREMOTE_SETTINGS_KEY_IR_TIMING, &app->ir_timing, 1);
 
     if(!flipper_format_rewind(fff_file)) {
         xremote_close_config_file(fff_file);
@@ -108,6 +109,7 @@ void xremote_read_settings(void* context) {
     flipper_format_read_uint32(fff_file, XREMOTE_SETTINGS_KEY_LED, &app->led, 1);
     flipper_format_read_uint32(
         fff_file, XREMOTE_SETTINGS_KEY_SAVE_SETTINGS, &app->save_settings, 1);
+    flipper_format_read_uint32(fff_file, XREMOTE_SETTINGS_KEY_IR_TIMING, &app->ir_timing, 1);
 
     flipper_format_rewind(fff_file);
 

+ 2 - 1
helpers/xremote_storage.h

@@ -2,7 +2,7 @@
 
 #include "../xremote.h"
 
-#define XREMOTE_SETTINGS_FILE_VERSION 1
+#define XREMOTE_SETTINGS_FILE_VERSION 2
 #define CONFIG_FILE_DIRECTORY_PATH EXT_PATH("apps_data/xremote")
 #define XREMOTE_SETTINGS_SAVE_PATH CONFIG_FILE_DIRECTORY_PATH "/xremote.conf"
 #define XREMOTE_SETTINGS_SAVE_PATH_TMP XREMOTE_SETTINGS_SAVE_PATH ".tmp"
@@ -11,6 +11,7 @@
 #define XREMOTE_SETTINGS_KEY_LED "Led"
 #define XREMOTE_SETTINGS_KEY_SPEAKER "Speaker"
 #define XREMOTE_SETTINGS_KEY_SAVE_SETTINGS "SaveSettings"
+#define XREMOTE_SETTINGS_KEY_IR_TIMING "IRTiming"
 
 void xremote_save_settings(void* context);
 void xremote_read_settings(void* context);

+ 17 - 0
scenes/xremote_scene_settings.c

@@ -72,6 +72,15 @@ static void xremote_scene_settings_set_save_settings(VariableItem* item) {
     app->save_settings = settings_value[index];
 }
 
+static void xremote_scene_settings_set_ir_timing(VariableItem* item) {
+    XRemote* app = variable_item_get_context(item);
+    uint32_t index = variable_item_get_current_value_index(item);
+
+    snprintf(app->ir_timing_char, 20, "%lu", (index * 100));
+    variable_item_set_current_value_text(item, app->ir_timing_char);
+    app->ir_timing = (index * 100);
+}
+
 void xremote_scene_settings_submenu_callback(void* context, uint32_t index) {
     XRemote* app = context;
     view_dispatcher_send_custom_event(app->view_dispatcher, index);
@@ -110,6 +119,14 @@ void xremote_scene_settings_on_enter(void* context) {
     variable_item_set_current_value_index(item, value_index);
     variable_item_set_current_value_text(item, settings_text[value_index]);
 
+    // Set Infrared Timer
+    item = variable_item_list_add(
+        app->variable_item_list, "IR Timing in ms:", 30, xremote_scene_settings_set_ir_timing, app);
+
+    variable_item_set_current_value_index(item, (uint8_t)(app->ir_timing / 100));
+    snprintf(app->ir_timing_char, 20, "%lu", app->ir_timing);
+    variable_item_set_current_value_text(item, app->ir_timing_char);
+
     view_dispatcher_switch_to_view(app->view_dispatcher, XRemoteViewIdSettings);
 }
 

+ 1 - 1
scenes/xremote_scene_transmit.c

@@ -62,7 +62,7 @@ void xremote_scene_transmit_send_ir_signal(XRemote* app, CrossRemoteItem* item)
         app->ir_worker, infrared_worker_tx_get_signal_steady_callback, app);
     infrared_worker_tx_start(app->ir_worker);
     app->transmitting = true;
-    furi_thread_flags_wait(0, FuriFlagWaitAny, 1000);
+    furi_thread_flags_wait(0, FuriFlagWaitAny, app->ir_timing);
     xremote_scene_transmit_stop_ir_signal(app);
 }
 

+ 2 - 0
xremote.c

@@ -47,6 +47,8 @@ XRemote* xremote_app_alloc() {
     app->led = 1;
     app->save_settings = 1;
     app->transmitting = 0;
+    app->ir_timing = 1000;
+    app->ir_timing_char = "1000";
 
     // Load configs
     xremote_read_settings(app);

+ 2 - 0
xremote.h

@@ -38,6 +38,8 @@ typedef struct {
     uint32_t led;
     uint32_t save_settings;
     uint32_t edit_item;
+    uint32_t ir_timing;
+    char* ir_timing_char;
     bool transmitting;
     char text_store[XREMOTE_TEXT_STORE_NUM][XREMOTE_TEXT_STORE_SIZE + 1];
 } XRemote;