use rmk_macro::{input_device, processor};
#[derive(Clone, Copy, Debug)]
pub struct SensorEvent {
pub value: u16,
}
#[derive(Clone, Copy, Debug)]
pub struct ConfigEvent {
pub threshold: u16,
}
#[derive(Clone, Copy, Debug)]
pub struct ModeEvent {
pub mode: u8,
}
mod basic {
use super::{ConfigEvent, SensorEvent, input_device, processor};
#[input_device(publish = SensorEvent)]
#[processor(subscribe = [ConfigEvent])]
pub struct SensorController {
pub threshold: u16,
}
}
mod reversed {
use super::{ConfigEvent, SensorEvent, input_device, processor};
#[processor(subscribe = [ConfigEvent])]
#[input_device(publish = SensorEvent)]
pub struct ReversedSensorController {
pub threshold: u16,
}
}
mod polling {
use super::{ConfigEvent, SensorEvent, input_device, processor};
#[input_device(publish = SensorEvent)]
#[processor(subscribe = [ConfigEvent], poll_interval = 50)]
pub struct PollingSensorController {
pub counter: u32,
}
}
mod multi_event {
use super::{ConfigEvent, ModeEvent, SensorEvent, input_device, processor};
#[input_device(publish = SensorEvent)]
#[processor(subscribe = [ConfigEvent, ModeEvent])]
pub struct MultiEventSensorController {
pub threshold: u16,
pub mode: u8,
}
}
mod multi_event_polling {
use super::{ConfigEvent, ModeEvent, SensorEvent, input_device, processor};
#[input_device(publish = SensorEvent)]
#[processor(subscribe = [ConfigEvent, ModeEvent], poll_interval = 100)]
pub struct MultiEventPollingSensorController {
pub threshold: u16,
pub mode: u8,
pub counter: u32,
}
}