From fda8370255f8e195c1306800125f880d4b7adc5f Mon Sep 17 00:00:00 2001 From: MX <10697207+xMasterX@users.noreply.github.com> Date: Mon, 25 Mar 2024 15:47:34 +0300 Subject: [PATCH] post merge fixes p2 [ci skip] --- applications/main/bad_usb/bad_usb_app_i.h | 2 +- applications/main/infrared/infrared_app.c | 87 +++++++++++++-- applications/main/infrared/infrared_app_i.h | 35 +++++- .../main/infrared/infrared_custom_event.h | 3 + .../infrared/scenes/infrared_scene_config.h | 2 +- .../scenes/infrared_scene_debug_settings.c | 85 --------------- .../scenes/infrared_scene_gpio_settings.c | 102 ++++++++++++++++++ .../infrared/scenes/infrared_scene_start.c | 15 ++- targets/f7/api_symbols.csv | 3 + targets/f7/furi_hal/furi_hal_infrared.c | 9 -- targets/furi_hal_include/furi_hal_infrared.h | 6 -- 11 files changed, 226 insertions(+), 123 deletions(-) delete mode 100644 applications/main/infrared/scenes/infrared_scene_debug_settings.c create mode 100644 applications/main/infrared/scenes/infrared_scene_gpio_settings.c diff --git a/applications/main/bad_usb/bad_usb_app_i.h b/applications/main/bad_usb/bad_usb_app_i.h index c12f9ac75..cb54d94e9 100644 --- a/applications/main/bad_usb/bad_usb_app_i.h +++ b/applications/main/bad_usb/bad_usb_app_i.h @@ -16,7 +16,7 @@ #include "views/bad_usb_view.h" #include -#define BAD_USB_APP_BASE_FOLDER ANY_PATH("badusb") +#define BAD_USB_APP_BASE_FOLDER EXT_PATH("badusb") #define BAD_USB_APP_PATH_LAYOUT_FOLDER BAD_USB_APP_BASE_FOLDER "/assets/layouts" #define BAD_USB_APP_SCRIPT_EXTENSION ".txt" #define BAD_USB_APP_LAYOUT_EXTENSION ".kl" diff --git a/applications/main/infrared/infrared_app.c b/applications/main/infrared/infrared_app.c index 15ee75d6c..4d63f7df3 100644 --- a/applications/main/infrared/infrared_app.c +++ b/applications/main/infrared/infrared_app.c @@ -1,7 +1,10 @@ #include "infrared_app_i.h" +#include + #include #include +#include #include #define TAG "InfraredApp" @@ -9,6 +12,14 @@ #define INFRARED_TX_MIN_INTERVAL_MS (50U) #define INFRARED_TASK_STACK_SIZE (2048UL) +#define INFRARED_SETTINGS_PATH EXT_PATH("infrared/.infrared.settings") +#define INFRARED_SETTINGS_VERSION (0) +#define INFRARED_SETTINGS_MAGIC (0x1F) + +typedef struct { + uint8_t tx_pin; +} InfraredSettings; + static const NotificationSequence* infrared_notification_sequences[InfraredNotificationMessageCount] = { &sequence_success, @@ -174,12 +185,6 @@ static InfraredApp* infrared_alloc(void) { view_dispatcher_add_view( view_dispatcher, InfraredViewDialogEx, dialog_ex_get_view(infrared->dialog_ex)); - infrared->variable_item_list = variable_item_list_alloc(); - view_dispatcher_add_view( - infrared->view_dispatcher, - InfraredViewVariableItemList, - variable_item_list_get_view(infrared->variable_item_list)); - infrared->button_menu = button_menu_alloc(); view_dispatcher_add_view( view_dispatcher, InfraredViewButtonMenu, button_menu_get_view(infrared->button_menu)); @@ -187,6 +192,12 @@ static InfraredApp* infrared_alloc(void) { infrared->popup = popup_alloc(); view_dispatcher_add_view(view_dispatcher, InfraredViewPopup, popup_get_view(infrared->popup)); + infrared->var_item_list = variable_item_list_alloc(); + view_dispatcher_add_view( + view_dispatcher, + InfraredViewVariableList, + variable_item_list_get_view(infrared->var_item_list)); + infrared->view_stack = view_stack_alloc(); view_dispatcher_add_view( view_dispatcher, InfraredViewStack, view_stack_get_view(infrared->view_stack)); @@ -237,15 +248,15 @@ static void infrared_free(InfraredApp* infrared) { view_dispatcher_remove_view(view_dispatcher, InfraredViewDialogEx); dialog_ex_free(infrared->dialog_ex); - view_dispatcher_remove_view(infrared->view_dispatcher, InfraredViewVariableItemList); - variable_item_list_free(infrared->variable_item_list); - view_dispatcher_remove_view(view_dispatcher, InfraredViewButtonMenu); button_menu_free(infrared->button_menu); view_dispatcher_remove_view(view_dispatcher, InfraredViewPopup); popup_free(infrared->popup); + view_dispatcher_remove_view(view_dispatcher, InfraredViewVariableList); + variable_item_list_free(infrared->var_item_list); + view_dispatcher_remove_view(view_dispatcher, InfraredViewStack); view_stack_free(infrared->view_stack); @@ -440,6 +451,60 @@ void infrared_show_error_message(const InfraredApp* infrared, const char* fmt, . va_end(args); } +void infrared_set_tx_pin(InfraredApp* infrared, FuriHalInfraredTxPin tx_pin) { + if(tx_pin < FuriHalInfraredTxPinMax) { + furi_hal_infrared_set_tx_output(tx_pin); + } 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) { + infrared_enable_otg(infrared, true); + } + } + + infrared->app_state.tx_pin = tx_pin; +} + +void infrared_enable_otg(InfraredApp* infrared, bool enable) { + if(enable) { + furi_hal_power_enable_otg(); + } else { + furi_hal_power_disable_otg(); + } + infrared->app_state.is_otg_enabled = enable; +} + +static void infrared_load_settings(InfraredApp* infrared) { + InfraredSettings settings = {0}; + + if(!saved_struct_load( + INFRARED_SETTINGS_PATH, + &settings, + sizeof(InfraredSettings), + INFRARED_SETTINGS_MAGIC, + INFRARED_SETTINGS_VERSION)) { + FURI_LOG_D(TAG, "Failed to load settings, using defaults"); + infrared_save_settings(infrared); + } + + infrared_set_tx_pin(infrared, settings.tx_pin); +} + +void infrared_save_settings(InfraredApp* infrared) { + InfraredSettings settings = { + .tx_pin = infrared->app_state.tx_pin, + }; + + if(!saved_struct_save( + INFRARED_SETTINGS_PATH, + &settings, + sizeof(InfraredSettings), + INFRARED_SETTINGS_MAGIC, + INFRARED_SETTINGS_VERSION)) { + FURI_LOG_E(TAG, "Failed to save settings"); + } +} + void infrared_signal_received_callback(void* context, InfraredWorkerSignal* received_signal) { furi_assert(context); InfraredApp* infrared = context; @@ -480,6 +545,7 @@ void infrared_popup_closed_callback(void* context) { int32_t infrared_app(void* p) { InfraredApp* infrared = infrared_alloc(); + infrared_load_settings(infrared); infrared_make_app_folder(infrared); bool is_remote_loaded = false; @@ -522,6 +588,9 @@ int32_t infrared_app(void* p) { view_dispatcher_run(infrared->view_dispatcher); + infrared_set_tx_pin(infrared, FuriHalInfraredTxPinInternal); + infrared_enable_otg(infrared, false); infrared_free(infrared); + return 0; } diff --git a/applications/main/infrared/infrared_app_i.h b/applications/main/infrared/infrared_app_i.h index effc61bae..1635fa0dc 100644 --- a/applications/main/infrared/infrared_app_i.h +++ b/applications/main/infrared/infrared_app_i.h @@ -4,6 +4,8 @@ */ #pragma once +#include + #include #include #include @@ -25,7 +27,6 @@ #include #include - #include #include "infrared_app.h" @@ -83,11 +84,13 @@ typedef struct { bool is_learning_new_remote; /**< Learning new remote or adding to an existing one. */ bool is_debug_enabled; /**< Whether to enable or disable debugging features. */ bool is_transmitting; /**< Whether a signal is currently being transmitted. */ + bool is_otg_enabled; /**< Whether OTG power (external 5V) is enabled. */ InfraredEditTarget edit_target : 8; /**< Selected editing target (a remote or a button). */ InfraredEditMode edit_mode : 8; /**< Selected editing operation (rename or delete). */ int32_t current_button_index; /**< Selected button index (move destination). */ int32_t prev_button_index; /**< Previous button index (move source). */ uint32_t last_transmit_time; /**< Lat time a signal was transmitted. */ + FuriHalInfraredTxPin tx_pin; } InfraredAppState; /** @@ -111,7 +114,7 @@ struct InfraredApp { DialogEx* dialog_ex; /**< Standard view for displaying dialogs. */ ButtonMenu* button_menu; /**< Custom view for interacting with IR remotes. */ Popup* popup; /**< Standard view for displaying messages. */ - VariableItemList* variable_item_list; + VariableItemList* var_item_list; /**< Standard view for displaying menus of choice items. */ ViewStack* view_stack; /**< Standard view for displaying stacked interfaces. */ InfraredDebugView* debug_view; /**< Custom view for displaying debug information. */ @@ -140,10 +143,10 @@ typedef enum { InfraredViewDialogEx, InfraredViewButtonMenu, InfraredViewPopup, + InfraredViewVariableList, InfraredViewStack, InfraredViewDebugView, InfraredViewMove, - InfraredViewVariableItemList, InfraredViewLoading, } InfraredView; @@ -276,6 +279,32 @@ void infrared_play_notification_message( void infrared_show_error_message(const InfraredApp* infrared, const char* fmt, ...) _ATTRIBUTE((__format__(__printf__, 2, 3))); +/** + * @brief Set which pin will be used to transmit infrared signals. + * + * Setting tx_pin to InfraredTxPinInternal will enable transmission via + * the built-in infrared LEDs. + * + * @param[in] infrared pointer to the application instance. + * @param[in] tx_pin pin to be used for signal transmission. + */ +void infrared_set_tx_pin(InfraredApp* infrared, FuriHalInfraredTxPin tx_pin); + +/** + * @brief Enable or disable 5V at the GPIO pin 1. + * + * @param[in] infrared pointer to the application instance. + * @param[in] enable boolean value corresponding to OTG state (true = enable, false = disable) + */ +void infrared_enable_otg(InfraredApp* infrared, bool enable); + +/** + * @brief Save current settings to a file. + * + * @param[in] infrared pointer to the application instance. + */ +void infrared_save_settings(InfraredApp* infrared); + /** * @brief Common received signal callback. * diff --git a/applications/main/infrared/infrared_custom_event.h b/applications/main/infrared/infrared_custom_event.h index b53e52a2f..02d9a276f 100644 --- a/applications/main/infrared/infrared_custom_event.h +++ b/applications/main/infrared/infrared_custom_event.h @@ -22,6 +22,9 @@ enum InfraredCustomEventType { InfraredCustomEventTypeRpcButtonPressIndex, InfraredCustomEventTypeRpcButtonRelease, InfraredCustomEventTypeRpcSessionClose, + + InfraredCustomEventTypeGpioTxPinChanged, + InfraredCustomEventTypeGpioOtgChanged, }; #pragma pack(push, 1) diff --git a/applications/main/infrared/scenes/infrared_scene_config.h b/applications/main/infrared/scenes/infrared_scene_config.h index 40b22a7ef..3be8e4743 100644 --- a/applications/main/infrared/scenes/infrared_scene_config.h +++ b/applications/main/infrared/scenes/infrared_scene_config.h @@ -20,7 +20,7 @@ ADD_SCENE(infrared, universal_ac, UniversalAC) ADD_SCENE(infrared, universal_fan, UniversalFan) ADD_SCENE(infrared, universal_audio, UniversalAudio) ADD_SCENE(infrared, universal_projector, UniversalProjector) +ADD_SCENE(infrared, gpio_settings, GpioSettings) ADD_SCENE(infrared, debug, Debug) ADD_SCENE(infrared, error_databases, ErrorDatabases) -ADD_SCENE(infrared, debug_settings, DebugSettings) ADD_SCENE(infrared, rpc, Rpc) diff --git a/applications/main/infrared/scenes/infrared_scene_debug_settings.c b/applications/main/infrared/scenes/infrared_scene_debug_settings.c deleted file mode 100644 index badfd172a..000000000 --- a/applications/main/infrared/scenes/infrared_scene_debug_settings.c +++ /dev/null @@ -1,85 +0,0 @@ -#include "../infrared_app_i.h" -#include - -uint8_t value_index_ir; - -#define DEB_PINS_COUNT (sizeof(infrared_debug_cfg_variables_text) / sizeof(char* const)) -const char* const infrared_debug_cfg_variables_text[] = { - "Internal", - "2 (A7)", -}; - -static void infrared_scene_debug_settings_changed(VariableItem* item) { - InfraredApp* infrared = variable_item_get_context(item); - value_index_ir = variable_item_get_current_value_index(item); - UNUSED(infrared); - - variable_item_set_current_value_text(item, infrared_debug_cfg_variables_text[value_index_ir]); - - furi_hal_infrared_set_debug_out(value_index_ir); -} - -static void infrared_scene_debug_settings_power_changed(VariableItem* item) { - bool value = variable_item_get_current_value_index(item); - if(value) { - for(int i = 0; i < 5 && !furi_hal_power_is_otg_enabled(); i++) { - furi_hal_power_enable_otg(); - furi_delay_ms(10); - } - } else { - if(furi_hal_power_is_otg_enabled()) { - furi_hal_power_disable_otg(); - } - } - variable_item_set_current_value_text(item, value ? "ON" : "OFF"); -} - -static void infrared_debug_settings_start_var_list_enter_callback(void* context, uint32_t index) { - InfraredApp* infrared = context; - view_dispatcher_send_custom_event(infrared->view_dispatcher, index); -} - -void infrared_scene_debug_settings_on_enter(void* context) { - InfraredApp* infrared = context; - - VariableItemList* variable_item_list = infrared->variable_item_list; - - value_index_ir = furi_hal_infrared_get_debug_out_status(); - VariableItem* item = variable_item_list_add( - variable_item_list, - "Send signal to", - DEB_PINS_COUNT, - infrared_scene_debug_settings_changed, - infrared); - - variable_item_list_set_enter_callback( - variable_item_list, infrared_debug_settings_start_var_list_enter_callback, infrared); - - variable_item_set_current_value_index(item, value_index_ir); - variable_item_set_current_value_text(item, infrared_debug_cfg_variables_text[value_index_ir]); - - item = variable_item_list_add( - variable_item_list, - "Ext Module 5v", - 2, - infrared_scene_debug_settings_power_changed, - infrared); - bool enabled = furi_hal_power_is_otg_enabled(); - variable_item_set_current_value_index(item, enabled); - variable_item_set_current_value_text(item, enabled ? "ON" : "OFF"); - - view_dispatcher_switch_to_view(infrared->view_dispatcher, InfraredViewVariableItemList); -} - -bool infrared_scene_debug_settings_on_event(void* context, SceneManagerEvent event) { - InfraredApp* infrared = context; - UNUSED(infrared); - UNUSED(event); - - return false; -} - -void infrared_scene_debug_settings_on_exit(void* context) { - InfraredApp* infrared = context; - variable_item_list_reset(infrared->variable_item_list); -} diff --git a/applications/main/infrared/scenes/infrared_scene_gpio_settings.c b/applications/main/infrared/scenes/infrared_scene_gpio_settings.c new file mode 100644 index 000000000..07782c08b --- /dev/null +++ b/applications/main/infrared/scenes/infrared_scene_gpio_settings.c @@ -0,0 +1,102 @@ +#include "../infrared_app_i.h" + +static const char* infrared_scene_gpio_settings_pin_text[] = { + "Flipper", + "2 (A7)", + "Detect", +}; + +static const char* infrared_scene_gpio_settings_otg_text[] = { + "OFF", + "ON", +}; + +static void infrared_scene_gpio_settings_pin_change_callback(VariableItem* item) { + InfraredApp* infrared = variable_item_get_context(item); + const uint8_t index = variable_item_get_current_value_index(item); + + variable_item_set_current_value_text(item, infrared_scene_gpio_settings_pin_text[index]); + view_dispatcher_send_custom_event( + infrared->view_dispatcher, + infrared_custom_event_pack(InfraredCustomEventTypeGpioTxPinChanged, index)); +} + +static void infrared_scene_gpio_settings_otg_change_callback(VariableItem* item) { + InfraredApp* infrared = variable_item_get_context(item); + const uint8_t index = variable_item_get_current_value_index(item); + + variable_item_set_current_value_text(item, infrared_scene_gpio_settings_otg_text[index]); + view_dispatcher_send_custom_event( + infrared->view_dispatcher, + infrared_custom_event_pack(InfraredCustomEventTypeGpioOtgChanged, index)); +} + +static void infrared_scene_gpio_settings_init(InfraredApp* infrared) { + VariableItemList* var_item_list = infrared->var_item_list; + VariableItem* item; + uint8_t value_index; + + item = variable_item_list_add( + var_item_list, + "Signal Output", + COUNT_OF(infrared_scene_gpio_settings_pin_text), + infrared_scene_gpio_settings_pin_change_callback, + infrared); + + value_index = infrared->app_state.tx_pin; + variable_item_set_current_value_index(item, value_index); + variable_item_set_current_value_text(item, infrared_scene_gpio_settings_pin_text[value_index]); + + item = variable_item_list_add( + var_item_list, + "5V on GPIO", + COUNT_OF(infrared_scene_gpio_settings_otg_text), + infrared_scene_gpio_settings_otg_change_callback, + infrared); + + if(infrared->app_state.tx_pin < FuriHalInfraredTxPinMax) { + value_index = infrared->app_state.is_otg_enabled; + variable_item_set_current_value_index(item, value_index); + variable_item_set_current_value_text( + item, infrared_scene_gpio_settings_otg_text[value_index]); + } else { + variable_item_set_values_count(item, 1); + variable_item_set_current_value_index(item, 0); + variable_item_set_current_value_text(item, "Auto"); + } +} + +void infrared_scene_gpio_settings_on_enter(void* context) { + InfraredApp* infrared = context; + infrared_scene_gpio_settings_init(infrared); + view_dispatcher_switch_to_view(infrared->view_dispatcher, InfraredViewVariableList); +} + +bool infrared_scene_gpio_settings_on_event(void* context, SceneManagerEvent event) { + bool consumed = false; + + InfraredApp* infrared = context; + + if(event.type == SceneManagerEventTypeCustom) { + const uint16_t custom_event_type = infrared_custom_event_get_type(event.event); + const uint16_t custom_event_value = infrared_custom_event_get_value(event.event); + + if(custom_event_type == InfraredCustomEventTypeGpioTxPinChanged) { + infrared_set_tx_pin(infrared, custom_event_value); + variable_item_list_reset(infrared->var_item_list); + infrared_scene_gpio_settings_init(infrared); + } else if(custom_event_type == InfraredCustomEventTypeGpioOtgChanged) { + infrared_enable_otg(infrared, custom_event_value); + } + + consumed = true; + } + + return consumed; +} + +void infrared_scene_gpio_settings_on_exit(void* context) { + InfraredApp* infrared = context; + variable_item_list_reset(infrared->var_item_list); + infrared_save_settings(infrared); +} diff --git a/applications/main/infrared/scenes/infrared_scene_start.c b/applications/main/infrared/scenes/infrared_scene_start.c index c27be304e..314f4865e 100644 --- a/applications/main/infrared/scenes/infrared_scene_start.c +++ b/applications/main/infrared/scenes/infrared_scene_start.c @@ -4,7 +4,7 @@ enum SubmenuIndex { SubmenuIndexUniversalRemotes, SubmenuIndexLearnNewRemote, SubmenuIndexSavedRemotes, - SubmenuIndexDebugSettings, + SubmenuIndexGpioSettings, SubmenuIndexLearnNewRemoteRaw, SubmenuIndexDebug }; @@ -40,7 +40,7 @@ void infrared_scene_start_on_enter(void* context) { submenu_add_item( submenu, "GPIO Settings", - SubmenuIndexDebugSettings, + SubmenuIndexGpioSettings, infrared_scene_start_submenu_callback, infrared); @@ -78,7 +78,6 @@ bool infrared_scene_start_on_event(void* context, SceneManagerEvent event) { scene_manager_set_scene_state(scene_manager, InfraredSceneStart, submenu_index); if(submenu_index == SubmenuIndexUniversalRemotes) { scene_manager_next_scene(scene_manager, InfraredSceneUniversal); - consumed = true; } else if( submenu_index == SubmenuIndexLearnNewRemote || submenu_index == SubmenuIndexLearnNewRemoteRaw) { @@ -89,18 +88,16 @@ bool infrared_scene_start_on_event(void* context, SceneManagerEvent event) { infrared->app_state.is_learning_new_remote = true; scene_manager_next_scene(scene_manager, InfraredSceneLearn); - consumed = true; } else if(submenu_index == SubmenuIndexSavedRemotes) { furi_string_set(infrared->file_path, INFRARED_APP_FOLDER); scene_manager_next_scene(scene_manager, InfraredSceneRemoteList); - consumed = true; + } else if(submenu_index == SubmenuIndexGpioSettings) { + scene_manager_next_scene(scene_manager, InfraredSceneGpioSettings); } else if(submenu_index == SubmenuIndexDebug) { scene_manager_next_scene(scene_manager, InfraredSceneDebug); - consumed = true; - } else if(submenu_index == SubmenuIndexDebugSettings) { - scene_manager_next_scene(scene_manager, InfraredSceneDebugSettings); - consumed = true; } + + consumed = true; } return consumed; diff --git a/targets/f7/api_symbols.csv b/targets/f7/api_symbols.csv index 6619b87a8..2a6cdc3b5 100644 --- a/targets/f7/api_symbols.csv +++ b/targets/f7/api_symbols.csv @@ -789,6 +789,7 @@ Function,+,calloc,void*,"size_t, size_t" Function,+,canvas_clear,void,Canvas* Function,+,canvas_commit,void,Canvas* Function,+,canvas_current_font_height,size_t,const Canvas* +Function,+,canvas_current_font_width,size_t,const Canvas* Function,+,canvas_draw_bitmap,void,"Canvas*, int32_t, int32_t, size_t, size_t, const uint8_t*" Function,+,canvas_draw_box,void,"Canvas*, int32_t, int32_t, size_t, size_t" Function,+,canvas_draw_circle,void,"Canvas*, int32_t, int32_t, size_t" @@ -798,6 +799,7 @@ Function,+,canvas_draw_frame,void,"Canvas*, int32_t, int32_t, size_t, size_t" Function,+,canvas_draw_glyph,void,"Canvas*, int32_t, int32_t, uint16_t" Function,+,canvas_draw_icon,void,"Canvas*, int32_t, int32_t, const Icon*" Function,+,canvas_draw_icon_animation,void,"Canvas*, int32_t, int32_t, IconAnimation*" +Function,+,canvas_draw_icon_bitmap,void,"Canvas*, uint8_t, uint8_t, int16_t, int16_t, const Icon*" Function,+,canvas_draw_icon_ex,void,"Canvas*, int32_t, int32_t, const Icon*, IconRotation" Function,+,canvas_draw_line,void,"Canvas*, int32_t, int32_t, int32_t, int32_t" Function,+,canvas_draw_rbox,void,"Canvas*, int32_t, int32_t, size_t, size_t, size_t" @@ -941,6 +943,7 @@ Function,+,elements_multiline_text_framed,void,"Canvas*, int32_t, int32_t, const Function,+,elements_progress_bar,void,"Canvas*, int32_t, int32_t, size_t, float" Function,+,elements_progress_bar_with_text,void,"Canvas*, int32_t, int32_t, size_t, float, const char*" Function,+,elements_scrollable_text_line,void,"Canvas*, int32_t, int32_t, size_t, FuriString*, size_t, _Bool" +Function,+,elements_scrollable_text_line_str,void,"Canvas*, uint8_t, uint8_t, uint8_t, const char*, size_t, _Bool, _Bool" Function,+,elements_scrollbar,void,"Canvas*, size_t, size_t" Function,+,elements_scrollbar_pos,void,"Canvas*, int32_t, int32_t, size_t, size_t, size_t" Function,+,elements_slightly_rounded_box,void,"Canvas*, int32_t, int32_t, size_t, size_t" diff --git a/targets/f7/furi_hal/furi_hal_infrared.c b/targets/f7/furi_hal/furi_hal_infrared.c index 0a4c7ddd1..bbb00198e 100644 --- a/targets/f7/furi_hal/furi_hal_infrared.c +++ b/targets/f7/furi_hal/furi_hal_infrared.c @@ -80,7 +80,6 @@ static FuriHalInfraredTxPin infrared_tx_output = FuriHalInfraredTxPinInternal; static volatile InfraredState furi_hal_infrared_state = InfraredStateIdle; static InfraredTimTx infrared_tim_tx; static InfraredTimRx infrared_tim_rx; -static bool infrared_external_output; static const GpioPin* infrared_tx_pins[FuriHalInfraredTxPinMax] = { [FuriHalInfraredTxPinInternal] = &gpio_infrared_tx, @@ -96,14 +95,6 @@ static uint8_t furi_hal_infrared_get_current_dma_tx_buffer(void); static void furi_hal_infrared_tx_dma_polarity_isr(); static void furi_hal_infrared_tx_dma_isr(); -void furi_hal_infrared_set_debug_out(bool enable) { - infrared_external_output = enable; -} - -bool furi_hal_infrared_get_debug_out_status(void) { - return infrared_external_output; -} - static void furi_hal_infrared_tim_rx_isr(void* context) { UNUSED(context); diff --git a/targets/furi_hal_include/furi_hal_infrared.h b/targets/furi_hal_include/furi_hal_infrared.h index d7124b470..29f7101c1 100644 --- a/targets/furi_hal_include/furi_hal_infrared.h +++ b/targets/furi_hal_include/furi_hal_infrared.h @@ -54,12 +54,6 @@ typedef void (*FuriHalInfraredRxCaptureCallback)(void* ctx, bool level, uint32_t */ typedef void (*FuriHalInfraredRxTimeoutCallback)(void* ctx); -// Debug TX pin set -void furi_hal_infrared_set_debug_out(bool enable); - -// Debug TX pin get status -bool furi_hal_infrared_get_debug_out_status(void); - /** Initialize INFRARED RX timer to receive interrupts. * * It provides interrupts for every RX-signal edge changing with its duration.