use lotus_shared::message::message_type;
use serde::{Deserialize, Serialize};
#[derive(Debug, Serialize, Deserialize)]
pub struct TriggerEvent {
pub id: String,
pub sensor_index: i32,
pub kind: TriggerKind,
}
impl TriggerEvent {
pub fn is_enter(&self) -> bool {
self.kind.is_enter()
}
pub fn is_leave(&self) -> bool {
self.kind.is_leave()
}
}
message_type!(TriggerEvent, "builtin", "trigger_event");
#[derive(Debug, Serialize, Deserialize)]
pub enum TriggerKind {
Enter,
Leave,
}
impl TriggerKind {
pub fn is_enter(&self) -> bool {
matches!(self, Self::Enter)
}
pub fn is_leave(&self) -> bool {
matches!(self, Self::Leave)
}
}
#[derive(Debug, Serialize, Deserialize)]
pub struct ButtonEvent {
pub id: String,
pub value: bool,
pub cockpit_index: u8,
}
message_type!(ButtonEvent, "builtin", "button_event");
#[derive(Debug, Serialize, Deserialize)]
pub struct BatterySwitch(pub bool);
message_type!(BatterySwitch, "builtin", "battery_switch");