 052237f8c9
			
		
	
	
		052237f8c9
		
			
		
	
	
	
	
		
			
			* IR: Doxygen docs, some rename * Rename irda -> infrared * Rollback collateral renames Co-authored-by: あく <alleteam@gmail.com>
		
			
				
	
	
		
			124 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			124 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| #include <stdint.h>
 | |
| #include <gui/modules/loading.h>
 | |
| #include <gui/view_stack.h>
 | |
| #include "infrared/scene/infrared_app_scene.h"
 | |
| #include "infrared/infrared_app.h"
 | |
| 
 | |
| void InfraredAppSceneUniversalTV::on_enter(InfraredApp* app) {
 | |
|     InfraredAppViewManager* view_manager = app->get_view_manager();
 | |
|     ButtonPanel* button_panel = view_manager->get_button_panel();
 | |
|     button_panel_reserve(button_panel, 2, 3);
 | |
| 
 | |
|     int i = 0;
 | |
|     button_panel_add_item(
 | |
|         button_panel,
 | |
|         i,
 | |
|         0,
 | |
|         0,
 | |
|         3,
 | |
|         19,
 | |
|         &I_Power_25x27,
 | |
|         &I_Power_hvr_25x27,
 | |
|         infrared_app_item_callback,
 | |
|         app);
 | |
|     brute_force.add_record(i, "POWER");
 | |
|     ++i;
 | |
|     button_panel_add_item(
 | |
|         button_panel,
 | |
|         i,
 | |
|         1,
 | |
|         0,
 | |
|         36,
 | |
|         19,
 | |
|         &I_Mute_25x27,
 | |
|         &I_Mute_hvr_25x27,
 | |
|         infrared_app_item_callback,
 | |
|         app);
 | |
|     brute_force.add_record(i, "MUTE");
 | |
|     ++i;
 | |
|     button_panel_add_item(
 | |
|         button_panel,
 | |
|         i,
 | |
|         0,
 | |
|         1,
 | |
|         3,
 | |
|         66,
 | |
|         &I_Vol_up_25x27,
 | |
|         &I_Vol_up_hvr_25x27,
 | |
|         infrared_app_item_callback,
 | |
|         app);
 | |
|     brute_force.add_record(i, "VOL+");
 | |
|     ++i;
 | |
|     button_panel_add_item(
 | |
|         button_panel,
 | |
|         i,
 | |
|         1,
 | |
|         1,
 | |
|         36,
 | |
|         66,
 | |
|         &I_Up_25x27,
 | |
|         &I_Up_hvr_25x27,
 | |
|         infrared_app_item_callback,
 | |
|         app);
 | |
|     brute_force.add_record(i, "CH+");
 | |
|     ++i;
 | |
|     button_panel_add_item(
 | |
|         button_panel,
 | |
|         i,
 | |
|         0,
 | |
|         2,
 | |
|         3,
 | |
|         98,
 | |
|         &I_Vol_down_25x27,
 | |
|         &I_Vol_down_hvr_25x27,
 | |
|         infrared_app_item_callback,
 | |
|         app);
 | |
|     brute_force.add_record(i, "VOL-");
 | |
|     ++i;
 | |
|     button_panel_add_item(
 | |
|         button_panel,
 | |
|         i,
 | |
|         1,
 | |
|         2,
 | |
|         36,
 | |
|         98,
 | |
|         &I_Down_25x27,
 | |
|         &I_Down_hvr_25x27,
 | |
|         infrared_app_item_callback,
 | |
|         app);
 | |
|     brute_force.add_record(i, "CH-");
 | |
| 
 | |
|     button_panel_add_label(button_panel, 6, 11, FontPrimary, "TV remote");
 | |
|     button_panel_add_label(button_panel, 9, 64, FontSecondary, "Vol");
 | |
|     button_panel_add_label(button_panel, 43, 64, FontSecondary, "Ch");
 | |
| 
 | |
|     view_manager->switch_to(InfraredAppViewManager::ViewId::UniversalRemote);
 | |
| 
 | |
|     auto stack_view = app->get_view_manager()->get_universal_view_stack();
 | |
|     auto loading_view = app->get_view_manager()->get_loading();
 | |
|     view_stack_add_view(stack_view, loading_get_view(loading_view));
 | |
| 
 | |
|     /**
 | |
|      * Problem: Update events are not handled in Loading View, because:
 | |
|      * 1) Timer task has least prio
 | |
|      * 2) Storage service uses drivers that capture whole CPU time
 | |
|      *      to handle SD communication
 | |
|      *
 | |
|      * Ugly workaround, but it works for current situation:
 | |
|      * raise timer task prio for DB scanning period.
 | |
|      */
 | |
|     TaskHandle_t timer_task = xTaskGetHandle(configTIMER_SERVICE_TASK_NAME);
 | |
|     TaskHandle_t storage_task = xTaskGetHandle("StorageSrv");
 | |
|     uint32_t timer_prio = uxTaskPriorityGet(timer_task);
 | |
|     uint32_t storage_prio = uxTaskPriorityGet(storage_task);
 | |
|     vTaskPrioritySet(timer_task, storage_prio + 1);
 | |
|     bool result = brute_force.calculate_messages();
 | |
|     vTaskPrioritySet(timer_task, timer_prio);
 | |
| 
 | |
|     view_stack_remove_view(stack_view, loading_get_view(loading_view));
 | |
| 
 | |
|     if(!result) {
 | |
|         app->switch_to_previous_scene();
 | |
|     }
 | |
| }
 |