C++ DevKit
C++ set of OOP library
|
The RotaryEncoder is a device used to control a value the can be incremented/decremented by the user. It can be associated with UIControlledIncrementalValue. More...
#include <rtos_rotary_encoder.h>
Public Member Functions | |
rtosRotaryEncoder (uint encoder_clk_gpio, uint encoder_dt_gpio, gpio_irq_callback_t call_back, QueueHandle_t in_switch_button_queue, QueueHandle_t out_control_event_queue, struct_rtosConfigSwitchButton conf={}, uint32_t event_mask_config=GPIO_IRQ_EDGE_FALL|GPIO_IRQ_EDGE_RISE) | |
Construct a new Rotary Encoder object compliant with FreeRTOS. | |
~rtosRotaryEncoder () | |
Destroy the Rotary Encoder object. | |
void | rtos_process_IRQ_event () override |
Process IRQ event and sent the resulting event to the event queue. | |
![]() | |
rtosSwitchButton (uint gpio, gpio_irq_callback_t call_back, QueueHandle_t in_switch_button_queue, QueueHandle_t out_control_event_queue, struct_rtosConfigSwitchButton conf={}, uint32_t event_mask_config=GPIO_IRQ_EDGE_FALL|GPIO_IRQ_EDGE_RISE) | |
Construct a new rtos Switch Button object. | |
~rtosSwitchButton () | |
Destroy the SwitchButton object. | |
Additional Inherited Members | |
![]() | |
bool | is_switch_pushed (uint32_t current_event_mask) |
return the logical status of the switch. It process rising and falling edges of the interrupt, according to the active_lo status of the switch. | |
![]() | |
uint | debounce_delay_us |
The time during which all changes in the switch state is ignored. | |
uint | long_push_delay_ms |
when a button is pushed more than long_push_delay_ms (in milliseconds) a UIControlEvent::LONG_PUSH is returned. | |
uint | long_release_delay_us |
if the button is released after long_release_delay_us (in microseconds) a UIControlEvent::RELEASED_AFTER_LONG_TIME is returned, else a UIControlEvent::RELEASED_AFTER_SHORT_TIME is released. | |
uint | time_out_delay_ms |
if the button is released after time_out_delay_ms (in milliseconds) a UIControlEvent::TIME_OUT is returned, | |
uint | gpio |
the GPIO that reads the logical state of the switch (pushed or released) | |
bool | active_lo |
his indicates that when the switch is pushed, a logical LO (0) signal is read. | |
uint | previous_change_time_us |
the system time stored on the previous switch state change. | |
bool | previous_switch_pushed_state |
The previous state read during the previous period. | |
ButtonState | button_status {ButtonState::IDLE} |
the logical button status, required to manage the event returned when the switch is pushed or released. | |
QueueHandle_t | switch_button_queue |
the queue from which IRQ data are received | |
QueueHandle_t | control_event_queue |
the queue to which the resulting control event is sent | |
The RotaryEncoder is a device used to control a value the can be incremented/decremented by the user. It can be associated with UIControlledIncrementalValue.
A rotary encoder has two signals: one can be considered as a clock (clk) , the other as the data (dt).
Clock signal is produced by rotating the encoder. Each time a falling edge is generated on the clock, the value on dt gives the direction of the rotation.
Due to the short time between clk and dt, we cannot usually sample the signals. IRQ is more appropriate.
As a UIController, the rotary encoder is associated with a Model.
rtosRotaryEncoder::rtosRotaryEncoder | ( | uint | encoder_clk_gpio, |
uint | encoder_dt_gpio, | ||
gpio_irq_callback_t | call_back, | ||
QueueHandle_t | in_switch_button_queue, | ||
QueueHandle_t | out_control_event_queue, | ||
struct_rtosConfigSwitchButton | conf = {}, | ||
uint32_t | event_mask_config = GPIO_IRQ_EDGE_FALL | GPIO_IRQ_EDGE_RISE ) |
Construct a new Rotary Encoder object compliant with FreeRTOS.
encoder_clk_gpio | Construct a new Rotary Encoder object |
encoder_dt_gpio | Construct a new Rotary Encoder object |
call_back | the IRQ callbaak |
in_switch_button_queue | the input queue receiveing IRQ data |
out_control_event_queue | the output queue receiving control event |
conf | the clock configutration (as a debounced switch) |
event_mask_config | the IRQ mask |
|
overridevirtual |
Process IRQ event and sent the resulting event to the event queue.
Reimplemented from rtosSwitchButton.