robot

Dependencies:   FastPWM3 mbed

Revision:
193:3abadeecf908
Parent:
187:523cf8c962e4
Child:
194:05e119bc5a78
--- a/errors.cpp	Sat Feb 10 03:58:36 2018 +0000
+++ b/errors.cpp	Sat Feb 10 05:35:49 2018 +0000
@@ -1,6 +1,6 @@
 #include "errors.h"
 #include "globals.h"
-#include "defaults.h"
+#include "prefs.h"
 
 int errors = 0, moded_errors = 0;
 int masks[32];
@@ -32,5 +32,32 @@
 }
 
 bool is_driving() {
-    return control.torque_percent > 0.01f || fabsf(read.w) > W_SAFE;
+    return control.torque_percent > 0.01f || fabsf(read.w) > _W_SAFE;
+}
+
+#define _seterr(x) errors |= (1 << x)
+#define _unseterr(x) errors &= ~(1 << x)
+#define _upderr(x) _unseterr(x) : _seterr(x)
+void check_errors_modeless() {
+    io.throttle_in->get_enabled() ? _upderr(ERR_THROTTLE_DISABLED);
+    io.pos->IsValid() ? _upderr(ERR_POS_INVALID);
+    is_driving() ? _upderr(ERR_NOT_DRIVING);
+}
+
+bool checks_passed() {
+    check_errors_modeless();
+    for (int k = 0; k < NUM_ERRORS; k++) {
+        int mask_mode = masks[k] & _mask_mode(BREMS_mode);
+        int mask_op = masks[k] & _mask_op(BREMS_op);
+        int mask_src = masks[k] & _mask_src(BREMS_src);
+        if ((errors & (1 << k)) != 0 && mask_mode != 0 && mask_op != 0 && mask_src != 0) {
+            moded_errors |= 1 << k;
+        } else {
+            moded_errors &= ~(1 << k);
+        }
+    }
+    
+    if (moded_errors != 0) {
+        return false;
+    } return true;
 }
\ No newline at end of file