use postcard::experimental::max_size::MaxSize;
use rmk_macro::event;
use rmk_types::led_indicator::LedIndicator;
use serde::{Deserialize, Serialize};
#[event(channel_size = crate::LAYER_CHANGE_EVENT_CHANNEL_SIZE, pubs = crate::LAYER_CHANGE_EVENT_PUB_SIZE, subs = crate::LAYER_CHANGE_EVENT_SUB_SIZE)]
#[derive(Serialize, Deserialize, Clone, Copy, Debug, PartialEq, Eq, MaxSize)]
#[cfg_attr(feature = "defmt", derive(defmt::Format))]
pub struct LayerChangeEvent(pub u8);
impl LayerChangeEvent {
pub fn new(layer: u8) -> Self {
Self(layer)
}
}
impl_payload_wrapper!(LayerChangeEvent, u8);
#[event(channel_size = crate::WPM_UPDATE_EVENT_CHANNEL_SIZE, pubs = crate::WPM_UPDATE_EVENT_PUB_SIZE, subs = crate::WPM_UPDATE_EVENT_SUB_SIZE)]
#[derive(Serialize, Deserialize, Clone, Copy, Debug, PartialEq, Eq, MaxSize)]
#[cfg_attr(feature = "defmt", derive(defmt::Format))]
pub struct WpmUpdateEvent(pub u16);
impl WpmUpdateEvent {
pub fn new(wpm: u16) -> Self {
Self(wpm)
}
}
impl_payload_wrapper!(WpmUpdateEvent, u16);
#[event(channel_size = crate::LED_INDICATOR_EVENT_CHANNEL_SIZE, pubs = crate::LED_INDICATOR_EVENT_PUB_SIZE, subs = crate::LED_INDICATOR_EVENT_SUB_SIZE)]
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
#[cfg_attr(feature = "defmt", derive(defmt::Format))]
pub struct LedIndicatorEvent(pub LedIndicator);
impl LedIndicatorEvent {
pub fn new(indicator: LedIndicator) -> Self {
Self(indicator)
}
}
impl_payload_wrapper!(LedIndicatorEvent, LedIndicator);
#[event(channel_size = crate::SLEEP_STATE_EVENT_CHANNEL_SIZE, pubs = crate::SLEEP_STATE_EVENT_PUB_SIZE, subs = crate::SLEEP_STATE_EVENT_SUB_SIZE)]
#[derive(Serialize, Deserialize, Clone, Copy, Debug, PartialEq, Eq, MaxSize)]
#[cfg_attr(feature = "defmt", derive(defmt::Format))]
pub struct SleepStateEvent(pub bool);
impl SleepStateEvent {
pub fn new(sleeping: bool) -> Self {
Self(sleeping)
}
}
impl_payload_wrapper!(SleepStateEvent, bool);