Restore timer_subscribe and delete hello example
diff --git a/examples/hello.rs b/examples/hello.rs
deleted file mode 100644
index 3cbaf2f..0000000
--- a/examples/hello.rs
+++ /dev/null
@@ -1,25 +0,0 @@
-#![no_std]
-
-use core::fmt::Write;
-use libtock::result::TockResult;
-use libtock::timer::Duration;
-use libtock::Drivers;
-
-#[libtock::main]
-async fn main() -> TockResult<()> {
-    let Drivers {
-        console_driver,
-        timer_context,
-        ..
-    } = libtock::retrieve_drivers()?;
-    let mut console = console_driver.create_console();
-    let mut driver = timer_context.create_timer_driver();
-    let timer_driver = driver.activate()?;
-
-    for i in 0.. {
-        writeln!(console, "Hello world! {}", i)?;
-        timer_driver.sleep(Duration::from_ms(500)).await?;
-    }
-
-    Ok(())
-}
diff --git a/examples/timer_subscribe.rs b/examples/timer_subscribe.rs
new file mode 100644
index 0000000..f7e158c
--- /dev/null
+++ b/examples/timer_subscribe.rs
@@ -0,0 +1,29 @@
+#![no_std]
+
+use core::fmt::Write;
+use futures::future;
+use libtock::result::TockResult;
+use libtock::timer::Duration;
+use libtock::Drivers;
+
+#[libtock::main]
+async fn main() -> TockResult<()> {
+    let Drivers {
+        console_driver,
+        mut timer_context,
+        ..
+    } = libtock::retrieve_drivers()?;
+    let mut console = console_driver.create_console();
+    let mut with_callback = timer_context.with_callback(|_, _| {
+        writeln!(
+            console,
+            "This line is printed 2 seconds after the start of the program.",
+        )
+        .unwrap();
+    });
+
+    let mut timer = with_callback.init()?;
+    timer.set_alarm(Duration::from_ms(2000))?;
+
+    future::pending().await
+}