From 5168dbe68f76e72caa06ed25c2893d88bd22ead3 Mon Sep 17 00:00:00 2001 From: Diego Barrios Romero Date: Wed, 31 Oct 2018 06:53:28 +0100 Subject: [PATCH] Add function to enable/disable the square wave generation --- src/ds323x/configuration.rs | 11 +++++++++++ src/lib.rs | 1 + tests/common/mod.rs | 1 + tests/configuration.rs | 3 +++ 4 files changed, 16 insertions(+) diff --git a/src/ds323x/configuration.rs b/src/ds323x/configuration.rs index 3951195..6d61dbc 100644 --- a/src/ds323x/configuration.rs +++ b/src/ds323x/configuration.rs @@ -77,6 +77,17 @@ where self.write_control(control & !BitFlags::INTCN) } + /// Enable battery-backed square wave generation. + pub fn enable_square_wave(&mut self) -> Result<(), Error> { + let control = self.control; + self.write_control(control | BitFlags::BBSQW) + } + + /// Disable battery-backed square wave generation. + pub fn disable_square_wave(&mut self) -> Result<(), Error> { + let control = self.control; + self.write_control(control & !BitFlags::BBSQW) + } fn write_control(&mut self, control: u8) -> Result<(), Error> { self.iface.write_register(Register::CONTROL, control)?; self.control = control; diff --git a/src/lib.rs b/src/lib.rs index fcf77fa..2991421 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -356,6 +356,7 @@ impl BitFlags { const AM_PM : u8 = 0b0010_0000; const CENTURY : u8 = 0b1000_0000; const EOSC : u8 = 0b1000_0000; + const BBSQW : u8 = 0b0100_0000; const TEMP_CONV : u8 = 0b0010_0000; const INTCN : u8 = 0b0000_0100; const BUSY : u8 = 0b0000_0100; diff --git a/tests/common/mod.rs b/tests/common/mod.rs index 199fa30..5bd1da2 100644 --- a/tests/common/mod.rs +++ b/tests/common/mod.rs @@ -29,6 +29,7 @@ pub struct BitFlags; #[allow(unused)] impl BitFlags { pub const EOSC : u8 = 0b1000_0000; + pub const BBSQW : u8 = 0b0100_0000; pub const TEMP_CONV : u8 = 0b0010_0000; pub const INTCN : u8 = 0b0000_0100; pub const BUSY : u8 = 0b0000_0100; diff --git a/tests/configuration.rs b/tests/configuration.rs index 04cd333..cb0f9f4 100644 --- a/tests/configuration.rs +++ b/tests/configuration.rs @@ -62,3 +62,6 @@ get_param_test!(get_aging_offset_max, get_aging_offset, AGING_OFFSET, 127, 127) call_method_test!(int_sqw_out_int, use_int_sqw_output_as_interrupt, CONTROL, CONTROL_POR_VALUE | BF::INTCN); call_method_test!(int_sqw_out_sqw, use_int_sqw_output_as_square_wave, CONTROL, CONTROL_POR_VALUE & !BF::INTCN); +call_method_test!(enable_sqw, enable_square_wave, CONTROL, CONTROL_POR_VALUE | BF::BBSQW); +call_method_test!(disable_sqw, disable_square_wave, CONTROL, CONTROL_POR_VALUE & !BF::BBSQW); +