diff options
| author | unitexe <unitexe70@gmail.com> | 2026-04-08 23:53:17 -0500 |
|---|---|---|
| committer | unitexe <unitexe70@gmail.com> | 2026-04-08 23:54:28 -0500 |
| commit | de3f7ed45185f3a678ba0de04d98cc9ac92de0c8 (patch) | |
| tree | 3db0159c1370f240d42c1e8b89a67247538f43d1 /tmp117/src/reg.rs | |
Initial commit
Diffstat (limited to 'tmp117/src/reg.rs')
| -rw-r--r-- | tmp117/src/reg.rs | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/tmp117/src/reg.rs b/tmp117/src/reg.rs new file mode 100644 index 0000000..20ac429 --- /dev/null +++ b/tmp117/src/reg.rs @@ -0,0 +1,74 @@ +#[repr(u8)] +pub enum Registers { + Temperature = 0x00, + Configuration = 0x01, + HighLimit = 0x02, + LowLimit = 0x03, + Eeprom1 = 0x05, + Eeprom2 = 0x06, + TemperatureOffset = 0x07, + Eeprom3 = 0x08, + DeviceId = 0x0F, +} + +impl Registers { + pub const TEMPERATURE_RESET: u16 = 0x8000; + pub const CONFIGURATION_RESET: u16 = 0x0220; + pub const HIGH_LIMIT_RESET: u16 = 0x6000; + pub const LOW_LIMIT_RESET: u16 = 0x8000; + pub const TEMPERATURE_OFFSET_RESET: u16 = 0x0000; + pub const DEVICE_ID_RESET: u16 = 0x0117; + + pub fn factory_default_reset(&self) -> Option<u16> { + match self { + Registers::Temperature => Some(Registers::TEMPERATURE_RESET), + Registers::Configuration => Some(Registers::CONFIGURATION_RESET), + Registers::HighLimit => Some(Registers::HIGH_LIMIT_RESET), + Registers::LowLimit => Some(Registers::LOW_LIMIT_RESET), + Registers::TemperatureOffset => Some(Registers::TEMPERATURE_OFFSET_RESET), + Registers::DeviceId => Some(Registers::DEVICE_ID_RESET), + _ => None, + } + } +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn test_register_addresses() { + assert_eq!(Registers::Temperature as u8, 0x00); + assert_eq!(Registers::Configuration as u8, 0x01); + assert_eq!(Registers::HighLimit as u8, 0x02); + assert_eq!(Registers::LowLimit as u8, 0x03); + assert_eq!(Registers::Eeprom1 as u8, 0x05); + assert_eq!(Registers::Eeprom2 as u8, 0x06); + assert_eq!(Registers::TemperatureOffset as u8, 0x07); + assert_eq!(Registers::Eeprom3 as u8, 0x08); + assert_eq!(Registers::DeviceId as u8, 0x0F); + } + + #[test] + fn test_factory_default_reset_known() { + assert_eq!(Registers::Temperature.factory_default_reset(), Some(0x8000)); + assert_eq!( + Registers::Configuration.factory_default_reset(), + Some(0x0220) + ); + assert_eq!(Registers::HighLimit.factory_default_reset(), Some(0x6000)); + assert_eq!(Registers::LowLimit.factory_default_reset(), Some(0x8000)); + assert_eq!( + Registers::TemperatureOffset.factory_default_reset(), + Some(0x0000) + ); + assert_eq!(Registers::DeviceId.factory_default_reset(), Some(0x0117)); + } + + #[test] + fn test_factory_default_reset_unknown() { + assert_eq!(Registers::Eeprom1.factory_default_reset(), None); + assert_eq!(Registers::Eeprom2.factory_default_reset(), None); + assert_eq!(Registers::Eeprom3.factory_default_reset(), None); + } +} |
