Bayley Wang
/
foc-ed_in_the_bot_compact
robot
Diff: errors.cpp
- 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