fixes to make the new sensor stuff work
diff --git a/aos/common/sensors/sensor_receiver-tmpl.h b/aos/common/sensors/sensor_receiver-tmpl.h
index 9d37b8c..9cd0b3b 100644
--- a/aos/common/sensors/sensor_receiver-tmpl.h
+++ b/aos/common/sensors/sensor_receiver-tmpl.h
@@ -108,6 +108,7 @@
 bool SensorReceiver<Values>::ReceiveData() {
   int old_count = data_.count;
   DoReceiveData();
+  data_.NetworkToHost();
   if (data_.count < 0) {
     LOG(FATAL, "data count overflowed. currently %"PRId32"\n", data_.count);
   }
diff --git a/aos/common/sensors/sensor_sink.h b/aos/common/sensors/sensor_sink.h
index 81bc491..760f90e 100644
--- a/aos/common/sensors/sensor_sink.h
+++ b/aos/common/sensors/sensor_sink.h
@@ -12,7 +12,7 @@
  public:
   virtual ~SensorSinkInterface() {}
 
-  void Process(SensorData<Values> *data);
+  virtual void Process(SensorData<Values> *data) = 0;
 };
 
 }  // namespace sensors
diff --git a/aos/common/sensors/sensors.h b/aos/common/sensors/sensors.h
index 06f5253..6d533b4 100644
--- a/aos/common/sensors/sensors.h
+++ b/aos/common/sensors/sensors.h
@@ -2,6 +2,7 @@
 #define AOS_COMMON_SENSORS_SENSORS_H_
 
 #include "aos/common/time.h"
+#include "aos/common/byteorder.h"
 
 #include "aos/common/control_loop/ControlLoop.h"
 
@@ -40,6 +41,10 @@
   Values values;
   // Starts at 0 and goes up.
   int32_t count;
+
+  void NetworkToHost() {
+    count = ntoh(count);
+  }
 } __attribute__((packed));
 
 }  // namespace sensors
diff --git a/aos/common/time.h b/aos/common/time.h
index c081e09..418d087 100644
--- a/aos/common/time.h
+++ b/aos/common/time.h
@@ -115,8 +115,9 @@
     return ToNSec() / static_cast<int64_t>(kNSecInSec / sysClkRateGet());
   }
   // Constructs a Time representing ticks.
+  // TODO(brians): test this one too
   static Time InTicks(int ticks) {
-    return Time::InSeconds(ticks * sysClkRateGet());
+    return Time::InSeconds(static_cast<double>(ticks) / sysClkRateGet());
   }
 #endif