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