From 03b7012ec3fd4256b04e533c629dd93147248963 Mon Sep 17 00:00:00 2001
From: Diego Barrios Romero <eldruin@gmail.com>
Date: Mon, 29 Oct 2018 18:26:03 +0100
Subject: [PATCH] Add function to set the aging offset

---
 src/ds323x/configuration.rs |  5 +++++
 src/lib.rs                  | 17 +++++++++--------
 tests/common/mod.rs         | 15 ++++++++-------
 tests/configuration.rs      |  2 ++
 4 files changed, 24 insertions(+), 15 deletions(-)

diff --git a/src/ds323x/configuration.rs b/src/ds323x/configuration.rs
index e60e6e1..0d07f9a 100644
--- a/src/ds323x/configuration.rs
+++ b/src/ds323x/configuration.rs
@@ -62,4 +62,9 @@ where
         }
         Ok(())
     }
+
+    /// Set the aging offset.
+    pub fn set_aging_offset(&mut self, offset: i8) -> Result<(), Error<E>> {
+        self.iface.write_register(Register::AGING_OFFSET, offset as u8)
+    }
 }
diff --git a/src/lib.rs b/src/lib.rs
index 7cabac3..8df20a2 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -277,15 +277,16 @@ pub enum Error<E> {
 struct Register;
 
 impl Register {
-    const SECONDS   : u8 = 0x00;
-    const MINUTES   : u8 = 0x01;
-    const HOURS     : u8 = 0x02;
-    const DOW       : u8 = 0x03;
-    const DOM       : u8 = 0x04;
-    const MONTH     : u8 = 0x05;
-    const YEAR      : u8 = 0x06;
-    const CONTROL   : u8 = 0x0E;
+    const SECONDS      : u8 = 0x00;
+    const MINUTES      : u8 = 0x01;
+    const HOURS        : u8 = 0x02;
+    const DOW          : u8 = 0x03;
+    const DOM          : u8 = 0x04;
+    const MONTH        : u8 = 0x05;
+    const YEAR         : u8 = 0x06;
+    const CONTROL      : u8 = 0x0E;
     const STATUS       : u8 = 0x0F;
+    const AGING_OFFSET : u8 = 0x10;
 }
 
 struct BitFlags;
diff --git a/tests/common/mod.rs b/tests/common/mod.rs
index 906d066..a0203a9 100644
--- a/tests/common/mod.rs
+++ b/tests/common/mod.rs
@@ -10,14 +10,15 @@ pub struct Register;
 
 #[allow(unused)]
 impl Register {
-    pub const SECONDS   : u8 = 0x00;
-    pub const MINUTES   : u8 = 0x01;
-    pub const HOURS     : u8 = 0x02;
-    pub const DOW       : u8 = 0x03;
-    pub const DOM       : u8 = 0x04;
-    pub const MONTH     : u8 = 0x05;
-    pub const CONTROL   : u8 = 0x0E;
+    pub const SECONDS      : u8 = 0x00;
+    pub const MINUTES      : u8 = 0x01;
+    pub const HOURS        : u8 = 0x02;
+    pub const DOW          : u8 = 0x03;
+    pub const DOM          : u8 = 0x04;
+    pub const MONTH        : u8 = 0x05;
+    pub const CONTROL      : u8 = 0x0E;
     pub const STATUS       : u8 = 0x0F;
+    pub const AGING_OFFSET : u8 = 0x10;
 }
 
 pub struct BitFlags;
diff --git a/tests/configuration.rs b/tests/configuration.rs
index fca25d1..2f88b8a 100644
--- a/tests/configuration.rs
+++ b/tests/configuration.rs
@@ -44,3 +44,5 @@ change_if_necessary_test!(en_32khz_out,  enable_32khz_output,  STATUS, 0xFF, 0xF
 change_if_necessary_test!(dis_32khz_out, disable_32khz_output, STATUS, 0xFF & !BF::EN32KHZ, 0xFF);
 change_if_necessary_test!(clr_stop, clear_has_been_stopped_flag, STATUS, 0xFF & !BF::OSC_STOP, 0xFF);
 
+set_param_test!(aging_offset_min, set_aging_offset, AGING_OFFSET, -128, 128);
+set_param_test!(aging_offset_max, set_aging_offset, AGING_OFFSET,  127, 127);