MyRP2_ui_core
Loading...
Searching...
No Matches
test_ui_core.cpp
Go to the documentation of this file.
1
12#include "test_manager.h"
13#include "rotary_encoder.h"
15#include <map>
16#include <string>
17#include "probe.h"
18
19#define CENTRAL_SWITCH_GPIO 6
20#define ENCODER_CLK_GPIO 26
21#define ENCODER_DT_GPIO 21
22
23Probe pr_D1 = Probe(1);
24Probe pr_D4 = Probe(4);
25Probe pr_D5 = Probe(5);
26
27StructSwitchButtonConfig cfg_central_switch{
28 .debounce_delay_us = 5000,
29 .long_release_delay_us = 1000000,
30 .long_push_delay_us = 1000000,
31 .active_lo = true};
32
33StructSwitchButtonConfig cfg_encoder_clk{
34 .debounce_delay_us = 5000};
35
36void shared_irq_call_back(uint gpio, uint32_t event_mask);
37RotaryEncoder encoder = RotaryEncoder(ENCODER_CLK_GPIO, ENCODER_DT_GPIO,
38 shared_irq_call_back, cfg_encoder_clk);
39
40SwitchButton central_switch = SwitchButton(CENTRAL_SWITCH_GPIO, cfg_central_switch);
41
42void shared_irq_call_back(uint gpio, uint32_t event_mask)
43{
44 pr_D1.pulse_us(10);
45 switch (gpio)
46 {
47 case ENCODER_CLK_GPIO:
48 encoder.interrupt_service_routine(event_mask);
49 break;
50
51 default:
52 printf("unknown IRQ\n");
53 break;
54 };
55}
56
57int main()
58{
59 pr_D1.hi();
60 stdio_init_all();
61
62 TestIncrementalValue value_0 = TestIncrementalValue("val0", 0, 5, true, 1);
63 TestIncrementalValue value_1 = TestIncrementalValue("val1", 0, 10, false, 1);
64 TestIncrementalValue value_2 = TestIncrementalValue("val2", -20, 3, false, 1);
65
69
70 Test_Manager manager = Test_Manager(&encoder);
71
72 TestObjectManagerWidget manager_widget = TestObjectManagerWidget(&manager);
73
74 TestSetOfWidget set_of_widget = TestSetOfWidget();
75 set_of_widget.add_widget(&manager_widget);
76 set_of_widget.add_widget(&value_0_widget);
77 set_of_widget.add_widget(&value_1_widget);
78 set_of_widget.add_widget(&value_2_widget);
79
80
81 value_0.update_status(ControlledObjectStatus::HAS_FOCUS);
82 manager.add_managed_model(&value_0);
83 manager.add_managed_model(&value_1);
84 manager.add_managed_model(&value_2);
85
86 pr_D1.lo();
87
88 while (true)
89 {
90 pr_D4.pulse_us(10);
91 ControlEvent event = central_switch.process_sample_event();
92 manager.process_control_event(event);
93 pr_D5.hi();
94 set_of_widget.refresh();
95 pr_D5.lo();
96 sleep_ms(20);
97 }
98
99 return 0;
100}
void process_control_event(ControlEvent _event)
void update_status(ControlledObjectStatus _new_status)
Definition ui_core.cpp:39
void add_managed_model(UIModelObject *_new_model)
Definition ui_core.cpp:126
void add_widget(UIWidget *_sub_widget)
Definition ui_core.cpp:230
virtual void refresh()
WARNING : this function can be redefined. When several widget display one Model, only le last one mus...
Definition ui_core.cpp:235
ControlEvent
The list of predefined event that a Controller can send to the controlled object, leaving it the resp...
Definition ui_core.h:26