#[macro_export]
macro_rules! debounced_input_config {
(impl $config_name:ty, debounce_timer: $timer_type:ty = $timer_value:expr) => {
impl $crate::DebouncedInputConfig for $config_name {
type Timer = $timer_type;
const DEBOUNCE_TIMER: $timer_type = $timer_value;
}
};
($vis:vis $config_name:ident, debounce_timer: $timer_type:ty = $timer_value:expr) => {
$vis struct $config_name;
debounced_input_config!(
impl $config_name,
debounce_timer: $timer_type = $timer_value
);
};
}
#[macro_export]
macro_rules! encoder_config {
(
impl $config_name:ty,
debounce_timer: $timer_type:ty = $timer_value:expr,
counts_div: $counts_type:ty = $counts_div_value:expr
) => {
$crate::debounced_input_config!(
impl $config_name,
debounce_timer: $timer_type = $timer_value
);
impl $crate::EncoderConfig for $config_name {
type Counts = $counts_type;
const COUNTS_DIV: $counts_type = $counts_div_value;
}
};
(
$vis:vis $config_name:ident,
debounce_timer: $timer_type:ty = $timer_value:expr,
counts_div: $counts_type:ty = $counts_div_value:expr
) => {
$vis struct $config_name;
encoder_config!(impl $config_name,
debounce_timer: $timer_type = $timer_value,
counts_div: $counts_type = $counts_div_value
);
};
}