1use super::hashrate::HashRate;
2use super::serialize::{serialize_frequency, serialize_temperature, serialize_voltage};
3use measurements::{Frequency, Temperature, Voltage};
4use serde::{Deserialize, Serialize};
5
6#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
7pub struct ChipData {
8 pub position: u16,
10 pub hashrate: Option<HashRate>,
12 #[serde(serialize_with = "serialize_temperature")]
14 #[serde(skip_serializing_if = "Option::is_none")]
15 pub temperature: Option<Temperature>,
16 #[serde(serialize_with = "serialize_voltage")]
18 #[serde(skip_serializing_if = "Option::is_none")]
19 pub voltage: Option<Voltage>,
20 #[serde(serialize_with = "serialize_frequency")]
22 #[serde(skip_serializing_if = "Option::is_none")]
23 pub frequency: Option<Frequency>,
24 pub tuned: Option<bool>,
26 pub working: Option<bool>,
28}
29
30#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
31pub struct BoardData {
32 pub position: u8,
34 pub hashrate: Option<HashRate>,
36 pub expected_hashrate: Option<HashRate>,
38 #[serde(serialize_with = "serialize_temperature")]
40 #[serde(skip_serializing_if = "Option::is_none")]
41 pub board_temperature: Option<Temperature>,
42 #[serde(serialize_with = "serialize_temperature")]
44 #[serde(skip_serializing_if = "Option::is_none")]
45 pub intake_temperature: Option<Temperature>,
46 #[serde(serialize_with = "serialize_temperature")]
48 #[serde(skip_serializing_if = "Option::is_none")]
49 pub outlet_temperature: Option<Temperature>,
50 pub expected_chips: Option<u16>,
52 pub working_chips: Option<u16>,
54 pub serial_number: Option<String>,
56 pub chips: Vec<ChipData>,
59 #[serde(serialize_with = "serialize_voltage")]
61 #[serde(skip_serializing_if = "Option::is_none")]
62 pub voltage: Option<Voltage>,
63 #[serde(serialize_with = "serialize_frequency")]
65 #[serde(skip_serializing_if = "Option::is_none")]
66 pub frequency: Option<Frequency>,
67 pub tuned: Option<bool>,
69 pub active: Option<bool>,
71}