From 60c9bbfee439fa9370d4b94435362bccfbf549fb Mon Sep 17 00:00:00 2001 From: Zachary Sunforge Date: Tue, 22 Oct 2024 20:56:59 -0700 Subject: [PATCH] Change DegreesCelsius to Celsius Version bump --- Cargo.toml | 4 +- rust-toolchain.toml | 2 +- src/quantity/temperature.rs | 46 +++++++++++----------- src/transducer/part/lm35.rs | 6 +-- src/transducer/part/thermocouple/type_k.rs | 26 ++++++------ 5 files changed, 42 insertions(+), 42 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 4274e6b..755917c 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -11,7 +11,7 @@ members = [ ] [workspace.package] -version = "0.3.7" +version = "0.3.8" edition = "2021" repository = "https://git.bfpower.io/BFPOWER/physical" readme = "README.md" @@ -154,4 +154,4 @@ overflow-checks = true lto = true panic = "abort" incremental = false -codegen-units = 1 \ No newline at end of file +codegen-units = 1 diff --git a/rust-toolchain.toml b/rust-toolchain.toml index 941c636..6a73224 100644 --- a/rust-toolchain.toml +++ b/rust-toolchain.toml @@ -1,7 +1,7 @@ # Before upgrading check that everything is available on all tier1 targets here: # https://rust-lang.github.io/rustup-components-history [toolchain] -channel = "1.75" +channel = "1.81" components = [ "rust-src", "rustfmt", "llvm-tools" ] targets = [ "thumbv7em-none-eabi", diff --git a/src/quantity/temperature.rs b/src/quantity/temperature.rs index 57dfd98..df21a86 100644 --- a/src/quantity/temperature.rs +++ b/src/quantity/temperature.rs @@ -9,12 +9,12 @@ quantity_type! {Kelvins, "K"} impl Kelvins { #[inline] - pub fn to_degrees_celsius(self) -> DegreesCelsius { + pub fn to_celsius(self) -> Celsius { //TODO: Make const let offset = V::from_f64(KELVIN_CELSIUS_OFFSET).unwrap(); - DegreesCelsius(self.0 - offset) + Celsius(self.0 - offset) } - + #[inline] pub fn to_deci_kelvins(self) -> DeciKelvins { let multiplier = V::from_u8(DECI).unwrap(); @@ -34,31 +34,31 @@ impl DeciKelvins { } //----- Degrees Celsius ---------------------------------- -quantity_type! {DegreesCelsius, "ā„ƒ"} +quantity_type! {Celsius, "ā„ƒ"} -impl DegreesCelsius { +impl Celsius { #[inline] pub fn to_kelvins(self) -> Kelvins { //TODO: Make const let offset = V::from_f64(KELVIN_CELSIUS_OFFSET).unwrap(); Kelvins(self.0 + offset) } - + #[inline] - pub fn to_deci_degrees_celsius(self) -> DeciDegreesCelsius { + pub fn to_deci_celsius(self) -> DeciCelsius { let multiplier = V::from_u8(DECI).unwrap(); - DeciDegreesCelsius(self.0 * multiplier) + DeciCelsius(self.0 * multiplier) } } //----- Deci Degrees Celsius ---------------------------------- -quantity_type! {DeciDegreesCelsius, "dā„ƒ"} +quantity_type! {DeciCelsius, "dā„ƒ"} -impl DeciDegreesCelsius { +impl DeciCelsius { #[inline] - pub fn to_degrees_celsius(self) -> DegreesCelsius { + pub fn to_celsius(self) -> Celsius { let divisor = V::from_u8(DECI).unwrap(); - DegreesCelsius(self.0 / divisor) + Celsius(self.0 / divisor) } } @@ -74,24 +74,24 @@ mod tests { fn convert_f32() { let kelvins: Kelvins = 298.15.kelvins(); let deci_kelvins: DeciKelvins = 2_981.5.deci_kelvins(); - let celsius: DegreesCelsius = 25.0.degrees_celsius(); - let deci_celsius: DeciDegreesCelsius = 250.0.deci_degrees_celsius(); - - assert_approx_eq!(f32, kelvins.to_degrees_celsius().0, celsius.0); + let celsius: Celsius = 25.0.celsius(); + let deci_celsius: DeciCelsius = 250.0.deci_celsius(); + + assert_approx_eq!(f32, kelvins.to_celsius().0, celsius.0); assert_approx_eq!(f32, celsius.to_kelvins().0, kelvins.0); assert_approx_eq!(f32, deci_kelvins.to_kelvins().0, kelvins.0); assert_approx_eq!(f32, kelvins.to_deci_kelvins().0, deci_kelvins.0); - - assert_approx_eq!(f32, deci_celsius.to_degrees_celsius().0, celsius.0); - assert_approx_eq!(f32, celsius.to_deci_degrees_celsius().0, deci_celsius.0); + + assert_approx_eq!(f32, deci_celsius.to_celsius().0, celsius.0); + assert_approx_eq!(f32, celsius.to_deci_celsius().0, deci_celsius.0); } - + #[test] fn convert_u16() { let kelvins: Kelvins = 298.kelvins(); - let degrees_celsius: DegreesCelsius = 25.degrees_celsius(); - - assert_eq!(degrees_celsius.0, kelvins.to_degrees_celsius().0); + let celsius: Celsius = 25.celsius(); + + assert_eq!(celsius.0, kelvins.to_celsius().0); } } diff --git a/src/transducer/part/lm35.rs b/src/transducer/part/lm35.rs index eac7039..631543e 100644 --- a/src/transducer/part/lm35.rs +++ b/src/transducer/part/lm35.rs @@ -1,15 +1,15 @@ use crate::error::InvalidValue; -use crate::quantity::{DeciDegreesCelsius, MilliVolts, Quantity}; +use crate::quantity::{DeciCelsius, MilliVolts, Quantity}; #[inline] pub fn convert( voltage: MilliVolts, -) -> Result, InvalidValue> { +) -> Result, InvalidValue> { const MIN_VOLTAGE: MilliVolts = MilliVolts(-550); const MAX_VOLTAGE: MilliVolts = MilliVolts(1_500); if voltage >= MIN_VOLTAGE && voltage <= MAX_VOLTAGE { - Ok(DeciDegreesCelsius(voltage.value())) + Ok(DeciCelsius(voltage.value())) } else { Err(InvalidValue) } diff --git a/src/transducer/part/thermocouple/type_k.rs b/src/transducer/part/thermocouple/type_k.rs index 9dbfec4..778c377 100644 --- a/src/transducer/part/thermocouple/type_k.rs +++ b/src/transducer/part/thermocouple/type_k.rs @@ -2,11 +2,11 @@ use libm::pow; use crate::error::InvalidValue; -use crate::quantity::{DegreesCelsius, MilliVolts, Quantity}; +use crate::quantity::{Celsius, MilliVolts, Quantity}; fn _convert( voltage: MilliVolts, -) -> Result, InvalidValue> { +) -> Result, InvalidValue> { let mv = voltage.value(); let mv_pow2 = mv * mv; let mv_pow3 = mv_pow2 * mv; @@ -27,7 +27,7 @@ fn _convert( + -1.0450598E-2 * mv_pow7 + -5.1920577E-4 * mv_pow8; - Ok(DegreesCelsius(celsius as f32)) + Ok(Celsius(celsius as f32)) } else if mv > 0.0 && mv < 20.644 { let mv_pow7 = mv_pow6 * mv; let mv_pow8 = mv_pow7 * mv; @@ -43,7 +43,7 @@ fn _convert( + 1.057734E-6 * mv_pow8 + -1.052755E-8 * mv_pow9; - Ok(DegreesCelsius(celsius as f32)) + Ok(Celsius(celsius as f32)) } else if mv >= 20.644 && mv <= 54.886 { let celsius = 1.318058e2 + 4.830222E+1 * mv @@ -53,7 +53,7 @@ fn _convert( + 8.802193E-6 * mv_pow5 + -3.110810E-8 * mv_pow6; - Ok(DegreesCelsius(celsius as f32)) + Ok(Celsius(celsius as f32)) } else { Err(InvalidValue) } @@ -69,8 +69,8 @@ fn _convert( #[inline] pub fn convert_direct( voltage: MilliVolts, - r_junction: DegreesCelsius, -) -> Result, InvalidValue> { + r_junction: Celsius, +) -> Result, InvalidValue> { let base_temp = _convert(voltage)?; Ok(base_temp + r_junction) @@ -85,8 +85,8 @@ pub fn convert_direct( #[inline] pub fn convert_seebeck( voltage: MilliVolts, - r_junction: DegreesCelsius, -) -> Result, InvalidValue> { + r_junction: Celsius, +) -> Result, InvalidValue> { let voltage_correction = temp_to_voltage_seebeck(r_junction)?; _convert(MilliVolts(voltage.0 + voltage_correction.0 as f64)) } @@ -100,14 +100,14 @@ pub fn convert_seebeck( #[inline] pub fn convert_polynomial( voltage: MilliVolts, - r_junction: DegreesCelsius, -) -> Result, InvalidValue> { + r_junction: Celsius, +) -> Result, InvalidValue> { let voltage_correction = temp_to_voltage_poly(r_junction)?; _convert(MilliVolts(voltage.0 + voltage_correction.0 as f64)) } pub fn temp_to_voltage_poly( - temperature: DegreesCelsius, + temperature: Celsius, ) -> Result, InvalidValue> { let celsius = temperature.value(); let cel_pow2 = celsius * celsius; @@ -159,7 +159,7 @@ pub fn temp_to_voltage_poly( #[inline] pub fn temp_to_voltage_seebeck( - temperature: DegreesCelsius, + temperature: Celsius, ) -> Result, InvalidValue> { if temperature.value() >= -2.0 && temperature.value() <= 800.0 { Ok(MilliVolts(0.041 * temperature.value()))