diff options
Diffstat (limited to 'robot')
-rw-r--r-- | robot/errcatch.c | 13 | ||||
-rw-r--r-- | robot/hypervisor.c | 8 | ||||
-rw-r--r-- | robot/hypervisor.h | 1 | ||||
-rw-r--r-- | robot/mode_dirc.c | 17 | ||||
-rw-r--r-- | robot/sercomm.c | 20 |
5 files changed, 31 insertions, 28 deletions
diff --git a/robot/errcatch.c b/robot/errcatch.c index 77fcfd3..17c96fa 100644 --- a/robot/errcatch.c +++ b/robot/errcatch.c @@ -20,17 +20,20 @@ void w2_errcatch_handle_error(w2_s_error *error) { g_w2_error_uncaught = true; #ifdef W2_SIM simwarn("Uncaught/unhandled error found with code 0x%02x", error->code); - if (error->message_length > 0) fprintf(stderr, " and message \"%.*s\"", error->message_length, error->message); + if (error->message_length > 0) + fprintf(stderr, " and message \"%.*s\"", error->message_length, error->message); fprintf(stderr, "\n"); #endif } } // forward error to sercomm - W2_CREATE_MSG_SIZE_BIN(w2_s_cmd_expt_tx, sizeof(w2_s_cmd_expt_tx) + sizeof(uint8_t) * error->message_length, msg, msg_bin); - msg->opcode = W2_CMD_EXPT | W2_CMDDIR_TX; - msg->error = error->code; - msg->length = error->message_length; + W2_CREATE_MSG_SIZE_BIN(w2_s_cmd_expt_tx, + sizeof(w2_s_cmd_expt_tx) + sizeof(uint8_t) * error->message_length, msg, + msg_bin); + msg->opcode = W2_CMD_EXPT | W2_CMDDIR_TX; + msg->error = error->code; + msg->length = error->message_length; memcpy(msg->message, error->message, error->message_length); w2_sercomm_append_msg(msg_bin); diff --git a/robot/hypervisor.c b/robot/hypervisor.c index efdceec..2a6120b 100644 --- a/robot/hypervisor.c +++ b/robot/hypervisor.c @@ -15,10 +15,10 @@ unsigned long g_w2_hypervisor_ema_mode_ms = 0; uint64_t g_w2_hypervisor_timers[W2_HYPERVISOR_TIMER_COUNT] = {0}; unsigned int g_w2_ping_ms = 0; -uint8_t g_w2_ping_id = 0; -bool g_w2_ping_received = true; -bool g_w2_ping_timeout = false; -bool g_w2_connected = false; +uint8_t g_w2_ping_id = 0; +bool g_w2_ping_received = true; +bool g_w2_ping_timeout = false; +bool g_w2_connected = false; void w2_hypervisor_main() { #ifdef W2_SIM diff --git a/robot/hypervisor.h b/robot/hypervisor.h index 59398c6..4b1ed9b 100644 --- a/robot/hypervisor.h +++ b/robot/hypervisor.h @@ -36,4 +36,3 @@ void w2_hypervisor_main(); void w2_hypervisor_time_start(uint8_t label); /** stop timer with label `label` */ uint64_t w2_hypervisor_time_end(uint8_t label); - diff --git a/robot/mode_dirc.c b/robot/mode_dirc.c index b7df974..7021721 100644 --- a/robot/mode_dirc.c +++ b/robot/mode_dirc.c @@ -1,22 +1,25 @@ #include "mode_dirc.h" -#include "io.h" +#include "../shared/util.h" #include "hypervisor.h" +#include "io.h" #include "modes.h" -#include "../shared/util.h" #include "orangutan_shim.h" -#include <string.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; +uint8_t g_w2_mode_dirc_power = 100; void w2_mode_dirc() { - 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_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); + 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); } diff --git a/robot/sercomm.c b/robot/sercomm.c index f14832a..c50dd15 100644 --- a/robot/sercomm.c +++ b/robot/sercomm.c @@ -34,14 +34,15 @@ void w2_sercomm_main() { // check time-out if (!g_w2_ping_received && w2_hypervisor_time_end(W2_TIMER_PING) > W2_PING_TIMEOUT) { g_w2_ping_timeout = true; - g_w2_connected = false; + g_w2_connected = false; w2_errcatch_throw(W2_E_WARN_PING_TIMEOUT); } // send ping every W2_TIMER_PING ms - if ((g_w2_ping_received && w2_hypervisor_time_end(W2_TIMER_PING) > W2_PING_FREQUENCY) || g_w2_ping_timeout) { - g_w2_ping_timeout = false; + if ((g_w2_ping_received && w2_hypervisor_time_end(W2_TIMER_PING) > W2_PING_FREQUENCY) || + g_w2_ping_timeout) { + g_w2_ping_timeout = false; g_w2_ping_received = false; - g_w2_ping_id = (uint8_t) rand(); + g_w2_ping_id = (uint8_t)rand(); W2_CREATE_MSG_BIN(w2_s_cmd_ping_tx, msg, bin); msg->opcode = W2_CMD_PING | W2_CMDDIR_TX; @@ -87,17 +88,14 @@ void w2_sercomm_append_msg(w2_s_bin *data) { #include <stdlib.h> #include <string.h> - void w2_cmd_ping_tx(w2_s_bin *data) { - g_w2_ping_ms = w2_hypervisor_time_end(W2_TIMER_PING); + g_w2_ping_ms = w2_hypervisor_time_end(W2_TIMER_PING); g_w2_ping_received = true; - g_w2_ping_timeout = false; - g_w2_connected = true; + g_w2_ping_timeout = false; + g_w2_connected = true; } -void w2_cmd_ping_rx(w2_s_bin *data) { - w2_sercomm_append_msg(data); -} +void w2_cmd_ping_rx(w2_s_bin *data) { w2_sercomm_append_msg(data); } void w2_cmd_mode_rx(w2_s_bin *data) { W2_CAST_BIN(w2_s_cmd_mode_rx, data, req); |