spaceapi/sensors/
power_consumption.rs1use super::{FromSensorTemplate, SensorMetadataWithLocation, SensorTemplate, SensorTemplateError, Sensors};
4use serde::{Deserialize, Serialize};
5
6#[derive(Serialize, Deserialize, Default, Debug, Clone, PartialEq)]
7pub struct PowerConsumptionSensor {
8 #[serde(flatten)]
9 pub metadata: SensorMetadataWithLocation,
10 pub unit: String,
11 pub value: f64,
12}
13
14#[derive(Debug, Clone)]
15pub struct PowerConsumptionSensorTemplate {
16 pub metadata: SensorMetadataWithLocation,
17 pub unit: String,
18}
19
20impl FromSensorTemplate<PowerConsumptionSensorTemplate> for PowerConsumptionSensor {
21 fn try_from_template(
22 template: &PowerConsumptionSensorTemplate,
23 value: &str,
24 ) -> Result<Self, SensorTemplateError> {
25 Ok(Self {
26 metadata: template.metadata.clone(),
27 unit: template.unit.clone(),
28 value: value.parse()?,
29 })
30 }
31}
32
33impl SensorTemplate for PowerConsumptionSensorTemplate {
34 fn try_to_sensor(&self, value_str: &str, sensors: &mut Sensors) -> Result<(), SensorTemplateError> {
35 sensors
36 .power_consumption
37 .push(PowerConsumptionSensor::try_from_template(self, value_str)?);
38 Ok(())
39 }
40}