Merge pull request #235 from alistair23/alistair/println

console: Add support for println! and print!
diff --git a/examples/hmac.rs b/examples/hmac.rs
index 548511b..fe956bb 100644
--- a/examples/hmac.rs
+++ b/examples/hmac.rs
@@ -23,7 +23,7 @@
         b"A language empowering everyone to build reliable and efficient software.";
 
     for (i, d) in data.iter().enumerate() {
-        data_buffer.buffer[i] = *d;
+        data_buffer[i] = *d;
     }
     let _data_buffer = hmac_driver.init_data_buffer(&mut data_buffer)?;
     println!("  done");
diff --git a/src/hmac.rs b/src/hmac.rs
index 5185128..1fa6b84 100644
--- a/src/hmac.rs
+++ b/src/hmac.rs
@@ -3,6 +3,8 @@
 use crate::result::TockResult;
 use crate::syscalls;
 use core::marker::PhantomData;
+use core::ops::Deref;
+use core::ops::DerefMut;
 use libtock_core::shared_memory::SharedMemory;
 
 const DRIVER_NUMBER: usize = 0x40003;
@@ -58,8 +60,22 @@
     }
 }
 
+impl Deref for HmacKeyBuffer {
+    type Target = [u8; KEY_BUFFER_SIZE];
+
+    fn deref(&self) -> &Self::Target {
+        &self.buffer
+    }
+}
+
+impl DerefMut for HmacKeyBuffer {
+    fn deref_mut(&mut self) -> &mut Self::Target {
+        &mut self.buffer
+    }
+}
+
 pub struct HmacDataBuffer {
-    pub buffer: [u8; DATA_BUFFER_SIZE],
+    buffer: [u8; DATA_BUFFER_SIZE],
 }
 
 impl Default for HmacDataBuffer {
@@ -70,6 +86,20 @@
     }
 }
 
+impl Deref for HmacDataBuffer {
+    type Target = [u8; DATA_BUFFER_SIZE];
+
+    fn deref(&self) -> &Self::Target {
+        &self.buffer
+    }
+}
+
+impl DerefMut for HmacDataBuffer {
+    fn deref_mut(&mut self) -> &mut Self::Target {
+        &mut self.buffer
+    }
+}
+
 pub struct HmacDestBuffer {
     buffer: [u8; DEST_BUFFER_SIZE],
 }
@@ -82,6 +112,20 @@
     }
 }
 
+impl Deref for HmacDestBuffer {
+    type Target = [u8; DEST_BUFFER_SIZE];
+
+    fn deref(&self) -> &Self::Target {
+        &self.buffer
+    }
+}
+
+impl DerefMut for HmacDestBuffer {
+    fn deref_mut(&mut self) -> &mut Self::Target {
+        &mut self.buffer
+    }
+}
+
 pub struct HmacDriver<'a> {
     lifetime: PhantomData<&'a ()>,
 }