aboutsummaryrefslogtreecommitdiff
path: root/robot/mode_dirc.c
diff options
context:
space:
mode:
Diffstat (limited to 'robot/mode_dirc.c')
-rw-r--r--robot/mode_dirc.c19
1 files changed, 17 insertions, 2 deletions
diff --git a/robot/mode_dirc.c b/robot/mode_dirc.c
index 9ed9fef..7021721 100644
--- a/robot/mode_dirc.c
+++ b/robot/mode_dirc.c
@@ -1,10 +1,25 @@
#include "mode_dirc.h"
+#include "../shared/util.h"
+#include "hypervisor.h"
#include "io.h"
+#include "modes.h"
+#include "orangutan_shim.h"
+
+#include "../shared/errcatch.h"
+#include <string.h>
int16_t g_w2_mode_dirc_motor_l = 0;
int16_t g_w2_mode_dirc_motor_r = 0;
+uint8_t g_w2_mode_dirc_power = 100;
void w2_mode_dirc() {
- g_w2_io.motor_left.speed = g_w2_mode_dirc_motor_l;
- g_w2_io.motor_right.speed = g_w2_mode_dirc_motor_r;
+ if (g_w2_connected == 1)
+ g_w2_mode_dirc_power = 100;
+ else
+ g_w2_mode_dirc_power = W2_MAX(0, g_w2_mode_dirc_power - 1);
+
+ if (g_w2_mode_dirc_power == 0) w2_modes_call(W2_M_HALT);
+
+ set_motors(g_w2_mode_dirc_motor_l * g_w2_mode_dirc_power / 100,
+ g_w2_mode_dirc_motor_r * g_w2_mode_dirc_power / 100);
}