From 28293fd87ade21d16fdb7c7043e9c1aa4a89e295 Mon Sep 17 00:00:00 2001 From: Jascha Wilcox Date: Thu, 29 Jul 2021 09:20:44 -0700 Subject: [PATCH] added trajectory_done flag to heartbeat --- Firmware/communication/can/can_simple.cpp | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/Firmware/communication/can/can_simple.cpp b/Firmware/communication/can/can_simple.cpp index a4cece39..fa847f58 100644 --- a/Firmware/communication/can/can_simple.cpp +++ b/Firmware/communication/can/can_simple.cpp @@ -307,7 +307,7 @@ bool CANSimple::get_iq_callback(const Axis& axis) { if (!Idq_setpoint.has_value()) { Idq_setpoint = {0.0f, 0.0f}; } - + static_assert(sizeof(float) == sizeof(Idq_setpoint->first)); static_assert(sizeof(float) == sizeof(Idq_setpoint->second)); can_setSignal(txmsg, Idq_setpoint->first, 0, 32, true); @@ -383,7 +383,25 @@ bool CANSimple::send_heartbeat(const Axis& axis) { txmsg.len = 8; can_setSignal(txmsg, axis.error_, 0, 32, true); - can_setSignal(txmsg, axis.current_state_, 32, 32, true); + can_setSignal(txmsg, uint8_t(axis.current_state_), 32, 8, true); + + // Motor flags + // bit 0 = pre_calibrated + uint8_t motorFlags = 0; + + // Encoder flags + uint8_t encoderFlags = 0; + + // Controller flags + // bit 7 = traj_done flag + uint8_t controllerFlags = 0; + uint8_t trajDone = uint8_t(axis.controller_.trajectory_done_) << 7; + controllerFlags |= trajDone; + + can_setSignal(txmsg, motorFlags, 40, 8, true); + can_setSignal(txmsg, encoderFlags, 48, 8, true); + can_setSignal(txmsg, controllerFlags, 56, 8, true); + // can_setSignal(txmsg, axis.current_state_, 32, 32, true); return canbus_->send_message(txmsg); }