lighthouse_protocol/payload/metrics/
laser.rs1use std::collections::HashMap;
2
3use serde::Deserialize;
4
5#[derive(Debug, Deserialize, PartialEq, Clone)]
6pub struct LaserMetrics {
7 pub rooms: Vec<RoomMetrics>,
8}
9
10#[derive(Debug, Deserialize, PartialEq, Clone)]
11pub struct RoomMetrics {
12 pub room: String,
13 #[serde(flatten)]
14 pub api: RoomApiMetrics,
15}
16
17#[derive(Debug, Deserialize, PartialEq, Clone)]
34#[serde(untagged)]
35pub enum RoomApiMetrics {
36 V1(RoomV1Metrics),
37 V2(RoomV2Metrics),
38}
39
40#[derive(Debug, Deserialize, PartialEq, Clone)]
41pub struct RoomV1Metrics {
42 pub controller_metrics: BoardV1Metrics,
43 pub lamp_metrics: HashMap<i32, BoardV1Metrics>,
44}
45
46#[derive(Debug, Deserialize, PartialEq, Clone)]
47pub struct BoardV1Metrics {
48 pub id: i32,
49 pub version: i32,
50 pub uptime: i32,
51 pub temperature: i32,
52 pub init_temperature: i32,
53 pub settings: String,
54 pub timeout: i32,
55 #[serde(skip_serializing_if = "Option::is_none")]
56 pub frames: Option<i32>,
57 #[serde(skip_serializing_if = "Option::is_none")]
58 pub is_responding: Option<bool>,
59}
60
61#[derive(Debug, Deserialize, PartialEq, Clone)]
62pub struct RoomV2Metrics {
63 pub controller_metrics: ControllerV2Metrics,
64 pub lamp_metrics: Vec<LampV2Metrics>,
65}
66
67#[derive(Debug, Deserialize, PartialEq, Clone)]
68pub struct ControllerV2Metrics {
69 pub responding: bool,
70 pub ping_latency_ms: f64,
71 pub firmware_version: i32,
72 pub uptime: i32,
73 pub frames: i32,
74 pub fps: i32,
75 pub core_temperature: f64,
76 pub board_temperature: f64,
77 pub shunt_voltage: f64,
78 pub voltage: f64,
79 pub power: f64,
80 pub current: f64,
81}
82
83#[derive(Debug, Deserialize, PartialEq, Clone)]
84pub struct LampV2Metrics {
85 pub responding: bool,
86 pub firmware_version: i32,
87 pub uptime: i32,
88 pub timeout: i32,
89 pub temperature: i32,
90 pub fuse_tripped: bool,
91 pub flashing_status: String,
92}