1use serde::{Deserialize, Serialize};
2
3#[derive(Debug, Serialize, Deserialize)]
4pub enum Event {
5 EnterTrigger(TriggerEvent),
6 LeaveTrigger(TriggerEvent),
7 Button(ButtonEvent),
8 FloatInput(FloatInputEvent),
9 Broadcast(BroadcastEvent),
10 VehicleEntered(VehicleEnteredEvent),
11 ReceiveMessage(ReceiveMessageEvent),
12 Empty,
13}
14
15#[derive(Debug, Serialize, Deserialize)]
16pub enum BroadcastValue {
17 Single(f32),
18 String(String),
19 Integer(i32),
20 Serializeable(serde_json::Value),
21}
22
23#[derive(Debug, Serialize, Deserialize)]
24pub enum ReceiveMessageValue {
25 Single(f32),
26 String(String),
27 Integer(i32),
28}
29
30#[derive(Debug, Serialize, Deserialize)]
31pub enum ReceiveMessageKind {
32 Parent,
33 Child,
34}
35
36#[derive(Debug, Serialize, Deserialize)]
37pub struct ReceiveMessageEvent {
38 pub slot_index: i32,
39 pub id: String,
40 pub kind: ReceiveMessageKind,
41 pub value: ReceiveMessageValue,
42}
43
44#[derive(Debug, Serialize, Deserialize)]
45pub struct TriggerEvent {
46 pub id: String,
47 pub sensor_index: i32,
48}
49
50#[derive(Debug, Serialize, Deserialize)]
51pub struct ButtonEvent {
52 pub id: String,
53 pub value: bool,
54 pub cockpit_index: u8,
55}
56
57#[derive(Debug, Serialize, Deserialize)]
58pub struct FloatInputEvent {
59 pub id: String,
60 pub value: f32,
61 pub cockpit_index: i32,
62}
63
64#[derive(Debug, Serialize, Deserialize)]
65pub struct BroadcastEvent {
66 pub bus_id: String,
67 pub id: String,
68 pub value: BroadcastValue,
69}
70#[derive(Debug, Serialize, Deserialize)]
71pub struct VehicleEnteredEvent {
72 pub id: String,
73 pub speed_mps: f32,
75}
76#[derive(Debug, Serialize, Deserialize)]
77pub struct ReceiveMessageFromChildEvent {
78 pub slot_index: i32,
79 pub id: String,
80 pub value: i32,
81}
82
83#[derive(Debug, Serialize, Deserialize)]
84pub struct ReceiveMessageFromParentEvent {
85 pub index_of_class: i32,
86 pub id: String,
87 pub value: i32,
88}