working-est copy with class-based code. still open loop

Dependencies:   mbed

Fork of analoghalls6 by N K

Revision:
1:1f58bdcf2956
Child:
4:fdadf4a3577a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/statusupdater.cpp	Sun Mar 01 10:51:28 2015 +0000
@@ -0,0 +1,48 @@
+#include "includes.h"
+#include "core.h"
+#include "sensors.h"
+#include "meta.h"
+
+unsigned long StatusUpdater::_time;
+
+StatusUpdater::StatusUpdater(Inverter *inverter, Motor *motor, User *user) {
+    _inverter = inverter;
+    _motor = _motor;
+    _user = user;
+    _fast_sample_rate = 5000;
+    _slow_sample_rate = 10;
+    
+    _time_ticker.attach_us(&time_upd_isr, 50);
+}
+
+void StatusUpdater::Config(int fast_sample_rate, int slow_sample_rate) {
+    _fast_sample_rate = fast_sample_rate;
+    _slow_sample_rate = slow_sample_rate;
+}
+
+void StatusUpdater::time_upd_isr() {
+    _time++;
+}
+
+void StatusUpdater::Start() {
+    _time = 0;
+    int fast_us = 1000000 / _fast_sample_rate;
+    int slow_us = 1000000 / _slow_sample_rate;
+    
+    int last_fast = 0;
+    int last_slow = 0;
+    
+    for (;;) {
+        if (_time - last_fast > fast_us) {
+            _motor->UpdateState();
+            _inverter->UpdateVbus();
+            last_fast = _time;
+        }
+        if (_time - last_slow > slow_us) {
+            _user->UpdateState();
+            _motor->UpdateTemp();
+            _inverter->UpdateTemp();
+            last_slow = _time;
+        }
+    }
+}
\ No newline at end of file