diff rust/src/main.rs @ 591:4a944663fa8d rust

more skeleton
author Matt Johnston <matt@ucc.asn.au>
date Fri, 23 Dec 2016 00:33:19 +0800
parents dccd8504aa38
children 03b48ec0bb03
line wrap: on
line diff
--- a/rust/src/main.rs	Wed Dec 21 21:40:32 2016 +0800
+++ b/rust/src/main.rs	Fri Dec 23 00:33:19 2016 +0800
@@ -1,24 +1,91 @@
 extern crate tokio_core;
 extern crate futures;
+extern crate rustc_serialize;
 
 use tokio_core::reactor::Core;
-use futures::Stream;
+use futures::{Future,Stream};
+use rustc_serialize::json;
 
 mod sensor;
 
+#[derive(RustcDecodable, RustcEncodable)]
+struct Params {
+    fridge_setpoint: f32,
+    fridge_difference: f32,
+    overshoot_delay: u32,
+    overshoot_factor: f32,
+    disabled: bool,
+    nowort: bool,
+    fridge_range_lower: f32,
+    fridge_range_upper: f32,
+}
+
+struct ParamHolder {
+    p: Params,
+    epoch: String, // XXX or a byte array?
+}
+
+impl ParamHolder {
+    fn new() -> ParamHolder {
+        ParamHolder {
+            p: Params {
+                fridge_setpoint: 16.0,
+                fridge_difference: 0.2,
+                overshoot_delay: 720, // 12 minutes
+                overshoot_factor: 1.0,
+                disabled: false,
+                nowort: false,
+                fridge_range_lower: 3.0,
+                fridge_range_upper: 3.0,
+            },
+            epoch: String::new(),
+        }
+    }
+}
+
+struct Readings {
+    temps: Vec<Vec<sensor::Reading>>,
+}
+
+impl Readings {
+    fn new() -> Readings {
+        Readings {
+            temps: Vec::new(),
+        }
+    }
+    fn fridge() -> Option<f32> {
+        unimplemented!();
+    }
+
+    fn wort() -> Option<f32> {
+        unimplemented!();
+    }
+}
+
 fn main() {
     println!("Wort Templog");
 
+    let param = ParamHolder::new();
+    let mut readings = Readings::new();
+
     let mut core = Core::new().unwrap();
     let handle = core.handle();
 
-    let s = sensor::Sensor::run(&handle);
+    let s = sensor::Sensor::run(&handle, 400, "sens1".to_string());
+    let t = sensor::Sensor::run(&handle, 747, "frid".to_string());
 
     let h = s.for_each(|r| {
         println!("readings {:?}", r);
         Ok(())
     });
 
-    core.run(h);
+    let i = t.for_each(|r| {
+        println!("fridgereadings {:?}", r);
+        Ok(())
+    });
+
+    let all = h.select(i);
+
+    core.run(all);
 }