stm32builder/types/
temperature_range.rs1use crate::api::Error;
4use serde_derive::Serialize;
5
6#[derive(Debug, Clone, PartialEq, Serialize)]
9pub struct TemperatureRange {
10 pub min: i16,
11 pub max: i16,
12}
13
14impl TemperatureRange {
15 pub fn from_temperature_range_str(code: &str) -> Result<Self, Error> {
18 match code {
20 "6" => Ok(Self { min: -40, max: 85 }),
21 "7" => Ok(Self { min: -40, max: 105 }),
22 code => Err(Error::UnknownTemperatureRange(code.to_string())),
23 }
24 }
25}
26
27#[cfg(test)]
28mod tests {
29 use super::*;
30
31 macro_rules! decode { (
32 $name:ident: $code:tt as $sign:tt$min:tt to $max:tt
33 ) => {
34 #[test]
35 fn $name() {
36 let temperature = TemperatureRange::from_temperature_range_str($code).unwrap();
37 assert_eq!(temperature.min, $sign$min);
38 assert_eq!(temperature.max, $max);
39 }
40 };
41 }
42
43 decode!(decode_6_as_m40_to_85: "6" as -40 to 85 );
44 decode!(decode_7_as_m40_to_105: "7" as -40 to 105 );
45
46 #[test]
47 fn error_on_unknown_code() {
48 assert!(TemperatureRange::from_temperature_range_str("_").is_err());
49 }
50}