mirror of
https://github.com/Next-Flip/Momentum-Firmware.git
synced 2026-05-17 04:34:44 -07:00
Add new Universal Remotes
Added New Digital Sign, Monitor, and LED Universal Remotes in the Infrared Universal Remote GUI
This commit is contained in:
@@ -15,10 +15,13 @@ ADD_SCENE(infrared, remote, Remote)
|
|||||||
ADD_SCENE(infrared, remote_list, RemoteList)
|
ADD_SCENE(infrared, remote_list, RemoteList)
|
||||||
ADD_SCENE(infrared, universal, Universal)
|
ADD_SCENE(infrared, universal, Universal)
|
||||||
ADD_SCENE(infrared, universal_tv, UniversalTV)
|
ADD_SCENE(infrared, universal_tv, UniversalTV)
|
||||||
|
ADD_SCENE(infrared, universal_monitor, UniversalMonitor)
|
||||||
|
ADD_SCENE(infrared, universal_digitalsign, UniversalDigitalSign)
|
||||||
|
ADD_SCENE(infrared, universal_projector, UniversalProjector)
|
||||||
|
ADD_SCENE(infrared, universal_audio, UniversalAudio)
|
||||||
|
ADD_SCENE(infrared, universal_led, UniversalLED)
|
||||||
ADD_SCENE(infrared, universal_ac, UniversalAC)
|
ADD_SCENE(infrared, universal_ac, UniversalAC)
|
||||||
ADD_SCENE(infrared, universal_fan, UniversalFan)
|
ADD_SCENE(infrared, universal_fan, UniversalFan)
|
||||||
ADD_SCENE(infrared, universal_audio, UniversalAudio)
|
|
||||||
ADD_SCENE(infrared, universal_projector, UniversalProjector)
|
|
||||||
ADD_SCENE(infrared, debug, Debug)
|
ADD_SCENE(infrared, debug, Debug)
|
||||||
ADD_SCENE(infrared, error_databases, ErrorDatabases)
|
ADD_SCENE(infrared, error_databases, ErrorDatabases)
|
||||||
ADD_SCENE(infrared, debug_settings, DebugSettings)
|
ADD_SCENE(infrared, debug_settings, DebugSettings)
|
||||||
|
|||||||
@@ -2,10 +2,13 @@
|
|||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
SubmenuIndexUniversalTV,
|
SubmenuIndexUniversalTV,
|
||||||
SubmenuIndexUniversalAudio,
|
SubmenuIndexUniversalMonitor,
|
||||||
|
SubmenuIndexUniversalDigitalSign,
|
||||||
SubmenuIndexUniversalProjector,
|
SubmenuIndexUniversalProjector,
|
||||||
SubmenuIndexUniversalFan,
|
SubmenuIndexUniversalAudio,
|
||||||
|
SubmenuIndexUniversalLED,
|
||||||
SubmenuIndexUniversalAirConditioner,
|
SubmenuIndexUniversalAirConditioner,
|
||||||
|
SubmenuIndexUniversalFan,
|
||||||
} SubmenuIndex;
|
} SubmenuIndex;
|
||||||
|
|
||||||
static void infrared_scene_universal_submenu_callback(void* context, uint32_t index) {
|
static void infrared_scene_universal_submenu_callback(void* context, uint32_t index) {
|
||||||
@@ -26,8 +29,15 @@ void infrared_scene_universal_on_enter(void* context) {
|
|||||||
|
|
||||||
submenu_add_item(
|
submenu_add_item(
|
||||||
submenu,
|
submenu,
|
||||||
"Audio",
|
"Monitors",
|
||||||
SubmenuIndexUniversalAudio,
|
SubmenuIndexUniversalMonitor,
|
||||||
|
infrared_scene_universal_submenu_callback,
|
||||||
|
context);
|
||||||
|
|
||||||
|
submenu_add_item(
|
||||||
|
submenu,
|
||||||
|
"Digital Signs",
|
||||||
|
SubmenuIndexUniversalDigitalSign,
|
||||||
infrared_scene_universal_submenu_callback,
|
infrared_scene_universal_submenu_callback,
|
||||||
context);
|
context);
|
||||||
|
|
||||||
@@ -40,8 +50,15 @@ void infrared_scene_universal_on_enter(void* context) {
|
|||||||
|
|
||||||
submenu_add_item(
|
submenu_add_item(
|
||||||
submenu,
|
submenu,
|
||||||
"Fans",
|
"Audio",
|
||||||
SubmenuIndexUniversalFan,
|
SubmenuIndexUniversalAudio,
|
||||||
|
infrared_scene_universal_submenu_callback,
|
||||||
|
context);
|
||||||
|
|
||||||
|
submenu_add_item(
|
||||||
|
submenu,
|
||||||
|
"LEDs",
|
||||||
|
SubmenuIndexUniversalLED,
|
||||||
infrared_scene_universal_submenu_callback,
|
infrared_scene_universal_submenu_callback,
|
||||||
context);
|
context);
|
||||||
|
|
||||||
@@ -52,6 +69,13 @@ void infrared_scene_universal_on_enter(void* context) {
|
|||||||
infrared_scene_universal_submenu_callback,
|
infrared_scene_universal_submenu_callback,
|
||||||
context);
|
context);
|
||||||
|
|
||||||
|
submenu_add_item(
|
||||||
|
submenu,
|
||||||
|
"Fans",
|
||||||
|
SubmenuIndexUniversalFan,
|
||||||
|
infrared_scene_universal_submenu_callback,
|
||||||
|
context);
|
||||||
|
|
||||||
submenu_set_selected_item(
|
submenu_set_selected_item(
|
||||||
submenu, scene_manager_get_scene_state(infrared->scene_manager, InfraredSceneUniversal));
|
submenu, scene_manager_get_scene_state(infrared->scene_manager, InfraredSceneUniversal));
|
||||||
|
|
||||||
@@ -67,18 +91,27 @@ bool infrared_scene_universal_on_event(void* context, SceneManagerEvent event) {
|
|||||||
if(event.event == SubmenuIndexUniversalTV) {
|
if(event.event == SubmenuIndexUniversalTV) {
|
||||||
scene_manager_next_scene(scene_manager, InfraredSceneUniversalTV);
|
scene_manager_next_scene(scene_manager, InfraredSceneUniversalTV);
|
||||||
consumed = true;
|
consumed = true;
|
||||||
} else if(event.event == SubmenuIndexUniversalAudio) {
|
} else if(event.event == SubmenuIndexUniversalMonitor) {
|
||||||
scene_manager_next_scene(scene_manager, InfraredSceneUniversalAudio);
|
scene_manager_next_scene(scene_manager, InfraredSceneUniversalMonitor);
|
||||||
|
consumed = true;
|
||||||
|
} else if(event.event == SubmenuIndexUniversalDigitalSign) {
|
||||||
|
scene_manager_next_scene(scene_manager, InfraredSceneUniversalDigitalSign);
|
||||||
consumed = true;
|
consumed = true;
|
||||||
} else if(event.event == SubmenuIndexUniversalProjector) {
|
} else if(event.event == SubmenuIndexUniversalProjector) {
|
||||||
scene_manager_next_scene(scene_manager, InfraredSceneUniversalProjector);
|
scene_manager_next_scene(scene_manager, InfraredSceneUniversalProjector);
|
||||||
consumed = true;
|
consumed = true;
|
||||||
} else if(event.event == SubmenuIndexUniversalFan) {
|
} else if(event.event == SubmenuIndexUniversalAudio) {
|
||||||
scene_manager_next_scene(scene_manager, InfraredSceneUniversalFan);
|
scene_manager_next_scene(scene_manager, InfraredSceneUniversalAudio);
|
||||||
|
consumed = true;
|
||||||
|
} else if(event.event == SubmenuIndexUniversalLED) {
|
||||||
|
scene_manager_next_scene(scene_manager, InfraredSceneUniversalLED);
|
||||||
consumed = true;
|
consumed = true;
|
||||||
} else if(event.event == SubmenuIndexUniversalAirConditioner) {
|
} else if(event.event == SubmenuIndexUniversalAirConditioner) {
|
||||||
scene_manager_next_scene(scene_manager, InfraredSceneUniversalAC);
|
scene_manager_next_scene(scene_manager, InfraredSceneUniversalAC);
|
||||||
consumed = true;
|
consumed = true;
|
||||||
|
} else if(event.event == SubmenuIndexUniversalFan) {
|
||||||
|
scene_manager_next_scene(scene_manager, InfraredSceneUniversalFan);
|
||||||
|
consumed = true;
|
||||||
}
|
}
|
||||||
scene_manager_set_scene_state(scene_manager, InfraredSceneUniversal, event.event);
|
scene_manager_set_scene_state(scene_manager, InfraredSceneUniversal, event.event);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,86 @@
|
|||||||
|
#include "../infrared_i.h"
|
||||||
|
|
||||||
|
#include "common/infrared_scene_universal_common.h"
|
||||||
|
|
||||||
|
void infrared_scene_universal_digital_sign_on_enter(void* context) {
|
||||||
|
infrared_scene_universal_common_on_enter(context);
|
||||||
|
|
||||||
|
Infrared* infrared = context;
|
||||||
|
ButtonPanel* button_panel = infrared->button_panel;
|
||||||
|
InfraredBruteForce* brute_force = infrared->brute_force;
|
||||||
|
|
||||||
|
infrared_brute_force_set_db_filename(brute_force, EXT_PATH("infrared/assets/digital_sign.ir"));
|
||||||
|
|
||||||
|
button_panel_reserve(button_panel, 2, 2);
|
||||||
|
uint32_t i = 0;
|
||||||
|
button_panel_add_item(
|
||||||
|
button_panel,
|
||||||
|
i,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
3,
|
||||||
|
19,
|
||||||
|
&I_Power_25x27,
|
||||||
|
&I_Power_hvr_25x27,
|
||||||
|
infrared_scene_universal_common_item_callback,
|
||||||
|
context);
|
||||||
|
infrared_brute_force_add_record(brute_force, i++, "POWER");
|
||||||
|
button_panel_add_item(
|
||||||
|
button_panel,
|
||||||
|
i,
|
||||||
|
1,
|
||||||
|
0,
|
||||||
|
36,
|
||||||
|
19,
|
||||||
|
&I_Input_25x27,
|
||||||
|
&I_Input_hvr_25x27,
|
||||||
|
infrared_scene_universal_common_item_callback,
|
||||||
|
context);
|
||||||
|
infrared_brute_force_add_record(brute_force, i++, "SOURCE");
|
||||||
|
button_panel_add_item(
|
||||||
|
button_panel,
|
||||||
|
i,
|
||||||
|
0,
|
||||||
|
1,
|
||||||
|
3,
|
||||||
|
64,
|
||||||
|
&I_Play_25x27,
|
||||||
|
&I_Play_hvr_25x27,
|
||||||
|
infrared_scene_universal_common_item_callback,
|
||||||
|
context);
|
||||||
|
infrared_brute_force_add_record(brute_force, i++, "PLAY");
|
||||||
|
button_panel_add_item(
|
||||||
|
button_panel,
|
||||||
|
i,
|
||||||
|
1,
|
||||||
|
1,
|
||||||
|
36,
|
||||||
|
64,
|
||||||
|
&I_Stop_25x27,
|
||||||
|
&I_Stop_hvr_25x27,
|
||||||
|
infrared_scene_universal_common_item_callback,
|
||||||
|
context);
|
||||||
|
infrared_brute_force_add_record(brute_force, i++, "STOP");
|
||||||
|
|
||||||
|
button_panel_add_label(button_panel, 6, 11, FontPrimary, "Digital Sign");
|
||||||
|
button_panel_add_label(button_panel, 17, 60, FontSecondary, "Control");
|
||||||
|
|
||||||
|
view_set_orientation(view_stack_get_view(infrared->view_stack), ViewOrientationVertical);
|
||||||
|
view_dispatcher_switch_to_view(infrared->view_dispatcher, InfraredViewStack);
|
||||||
|
|
||||||
|
infrared_show_loading_popup(infrared, true);
|
||||||
|
bool success = infrared_brute_force_calculate_messages(brute_force);
|
||||||
|
infrared_show_loading_popup(infrared, false);
|
||||||
|
|
||||||
|
if(!success) {
|
||||||
|
scene_manager_next_scene(infrared->scene_manager, InfraredSceneErrorDatabases);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bool infrared_scene_universal_digital_sign_on_event(void* context, SceneManagerEvent event) {
|
||||||
|
return infrared_scene_universal_common_on_event(context, event);
|
||||||
|
}
|
||||||
|
|
||||||
|
void infrared_scene_universal_digital_sign_on_exit(void* context) {
|
||||||
|
infrared_scene_universal_common_on_exit(context);
|
||||||
|
}
|
||||||
@@ -0,0 +1,86 @@
|
|||||||
|
#include "../infrared_i.h"
|
||||||
|
|
||||||
|
#include "common/infrared_scene_universal_common.h"
|
||||||
|
|
||||||
|
void infrared_scene_universal_led_on_enter(void* context) {
|
||||||
|
infrared_scene_universal_common_on_enter(context);
|
||||||
|
|
||||||
|
Infrared* infrared = context;
|
||||||
|
ButtonPanel* button_panel = infrared->button_panel;
|
||||||
|
InfraredBruteForce* brute_force = infrared->brute_force;
|
||||||
|
|
||||||
|
infrared_brute_force_set_db_filename(brute_force, EXT_PATH("infrared/assets/led.ir"));
|
||||||
|
|
||||||
|
button_panel_reserve(button_panel, 2, 2);
|
||||||
|
uint32_t i = 0;
|
||||||
|
button_panel_add_item(
|
||||||
|
button_panel,
|
||||||
|
i,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
3,
|
||||||
|
19,
|
||||||
|
&I_Power_25x27,
|
||||||
|
&I_Power_hvr_25x27,
|
||||||
|
infrared_scene_universal_common_item_callback,
|
||||||
|
context);
|
||||||
|
infrared_brute_force_add_record(brute_force, i++, "POWER");
|
||||||
|
button_panel_add_item(
|
||||||
|
button_panel,
|
||||||
|
i,
|
||||||
|
1,
|
||||||
|
0,
|
||||||
|
36,
|
||||||
|
19,
|
||||||
|
&I_Flash_25x27,
|
||||||
|
&I_Flash_hvr_25x27,
|
||||||
|
infrared_scene_universal_common_item_callback,
|
||||||
|
context);
|
||||||
|
infrared_brute_force_add_record(brute_force, i++, "FLASH");
|
||||||
|
button_panel_add_item(
|
||||||
|
button_panel,
|
||||||
|
i,
|
||||||
|
0,
|
||||||
|
1,
|
||||||
|
3,
|
||||||
|
64,
|
||||||
|
&I_Vol_up_25x27,
|
||||||
|
&I_Vol_up_hvr_25x27,
|
||||||
|
infrared_scene_universal_common_item_callback,
|
||||||
|
context);
|
||||||
|
infrared_brute_force_add_record(brute_force, i++, "BRIGHTNESS+");
|
||||||
|
button_panel_add_item(
|
||||||
|
button_panel,
|
||||||
|
i,
|
||||||
|
1,
|
||||||
|
1,
|
||||||
|
36,
|
||||||
|
64,
|
||||||
|
&I_Vol_down_25x27,
|
||||||
|
&I_Vol_down_hvr_25x27,
|
||||||
|
infrared_scene_universal_common_item_callback,
|
||||||
|
context);
|
||||||
|
infrared_brute_force_add_record(brute_force, i++, "BRIGHTNESS-");
|
||||||
|
|
||||||
|
button_panel_add_label(button_panel, 5, 11, FontPrimary, "LED Remote");
|
||||||
|
button_panel_add_label(button_panel, 13, 60, FontSecondary, "Brightness");
|
||||||
|
|
||||||
|
view_set_orientation(view_stack_get_view(infrared->view_stack), ViewOrientationVertical);
|
||||||
|
view_dispatcher_switch_to_view(infrared->view_dispatcher, InfraredViewStack);
|
||||||
|
|
||||||
|
infrared_show_loading_popup(infrared, true);
|
||||||
|
bool success = infrared_brute_force_calculate_messages(brute_force);
|
||||||
|
infrared_show_loading_popup(infrared, false);
|
||||||
|
|
||||||
|
if(!success) {
|
||||||
|
scene_manager_next_scene(infrared->scene_manager, InfraredSceneErrorDatabases);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bool infrared_scene_universal_led_on_event(void* context, SceneManagerEvent event) {
|
||||||
|
return infrared_scene_universal_common_on_event(context, event);
|
||||||
|
}
|
||||||
|
|
||||||
|
void infrared_scene_universal_led_on_exit(void* context) {
|
||||||
|
infrared_scene_universal_common_on_exit(context);
|
||||||
|
}
|
||||||
@@ -0,0 +1,87 @@
|
|||||||
|
#include "../infrared_i.h"
|
||||||
|
|
||||||
|
#include "common/infrared_scene_universal_common.h"
|
||||||
|
|
||||||
|
void infrared_scene_universal_monitor_on_enter(void* context) {
|
||||||
|
infrared_scene_universal_common_on_enter(context);
|
||||||
|
|
||||||
|
Infrared* infrared = context;
|
||||||
|
ButtonPanel* button_panel = infrared->button_panel;
|
||||||
|
InfraredBruteForce* brute_force = infrared->brute_force;
|
||||||
|
|
||||||
|
infrared_brute_force_set_db_filename(brute_force, EXT_PATH("infrared/assets/monitor.ir"));
|
||||||
|
|
||||||
|
//TODO: Add navigation buttons, add more monitors..
|
||||||
|
button_panel_reserve(button_panel, 2, 2);
|
||||||
|
uint32_t i = 0;
|
||||||
|
button_panel_add_item(
|
||||||
|
button_panel,
|
||||||
|
i,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
3,
|
||||||
|
24,
|
||||||
|
&I_Power_25x27,
|
||||||
|
&I_Power_hvr_25x27,
|
||||||
|
infrared_scene_universal_common_item_callback,
|
||||||
|
context);
|
||||||
|
infrared_brute_force_add_record(brute_force, i++, "POWER");
|
||||||
|
button_panel_add_item(
|
||||||
|
button_panel,
|
||||||
|
i,
|
||||||
|
1,
|
||||||
|
0,
|
||||||
|
36,
|
||||||
|
24,
|
||||||
|
&I_Input_25x27,
|
||||||
|
&I_Input_hvr_25x27,
|
||||||
|
infrared_scene_universal_common_item_callback,
|
||||||
|
context);
|
||||||
|
infrared_brute_force_add_record(brute_force, i++, "SOURCE");
|
||||||
|
button_panel_add_item(
|
||||||
|
button_panel,
|
||||||
|
i,
|
||||||
|
0,
|
||||||
|
1,
|
||||||
|
3,
|
||||||
|
66,
|
||||||
|
&I_Mode_25x27,
|
||||||
|
&I_Mode_hvr_25x27,
|
||||||
|
infrared_scene_universal_common_item_callback,
|
||||||
|
context);
|
||||||
|
infrared_brute_force_add_record(brute_force, i++, "MENU");
|
||||||
|
button_panel_add_item(
|
||||||
|
button_panel,
|
||||||
|
i,
|
||||||
|
1,
|
||||||
|
1,
|
||||||
|
36,
|
||||||
|
66,
|
||||||
|
&I_Exit_25x27,
|
||||||
|
&I_Exit_hvr_25x27,
|
||||||
|
infrared_scene_universal_common_item_callback,
|
||||||
|
context);
|
||||||
|
infrared_brute_force_add_record(brute_force, i++, "EXIT");
|
||||||
|
|
||||||
|
button_panel_add_label(button_panel, 11, 11, FontPrimary, "Monitor");
|
||||||
|
button_panel_add_label(button_panel, 19, 60, FontSecondary, "Menu");
|
||||||
|
|
||||||
|
view_set_orientation(view_stack_get_view(infrared->view_stack), ViewOrientationVertical);
|
||||||
|
view_dispatcher_switch_to_view(infrared->view_dispatcher, InfraredViewStack);
|
||||||
|
|
||||||
|
infrared_show_loading_popup(infrared, true);
|
||||||
|
bool success = infrared_brute_force_calculate_messages(brute_force);
|
||||||
|
infrared_show_loading_popup(infrared, false);
|
||||||
|
|
||||||
|
if(!success) {
|
||||||
|
scene_manager_next_scene(infrared->scene_manager, InfraredSceneErrorDatabases);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bool infrared_scene_universal_monitor_on_event(void* context, SceneManagerEvent event) {
|
||||||
|
return infrared_scene_universal_common_on_event(context, event);
|
||||||
|
}
|
||||||
|
|
||||||
|
void infrared_scene_universal_monitor_on_exit(void* context) {
|
||||||
|
infrared_scene_universal_common_on_exit(context);
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user