From 747ebb3d10f6dccf8e21cd1d13c8853d62153cb7 Mon Sep 17 00:00:00 2001 From: 0xFEEDC0DE64 Date: Mon, 17 May 2021 22:39:36 +0200 Subject: [PATCH 1/7] can related implementations --- bobbycar-can.h | 91 +++++++++++++++++++++++++++++++++ bobbycar-common.h | 16 ++++++ protocol.h => bobbycar-serial.h | 35 ++++--------- 3 files changed, 116 insertions(+), 26 deletions(-) create mode 100644 bobbycar-can.h create mode 100644 bobbycar-common.h rename protocol.h => bobbycar-serial.h (87%) diff --git a/bobbycar-can.h b/bobbycar-can.h new file mode 100644 index 0000000..893b810 --- /dev/null +++ b/bobbycar-can.h @@ -0,0 +1,91 @@ +#pragma once + +enum { // vv + DeviceTypeMotorController = 0b00000000000 +}; + +enum { // ..vv + MotorControllerRec = 0b00000000000, + MotorControllerSend = 0b00010000000, +}; + +enum { // ....vvvvv + MotorControllerDcLink = 0b00000000000, + MotorControllerSpeed = 0b00000000100, + MotorControllerError = 0b00000001000, + MotorControllerAngle = 0b00000001100, + MotorControllerDcPhaA = 0b00000010000, + MotorControllerDcPhaB = 0b00000010100, + MotorControllerDcPhaC = 0b00000011000, + MotorControllerChops = 0b00000011100, + MotorControllerHall = 0b00000100000, + MotorControllerVoltage = 0b00000100100, + MotorControllerTemp = 0b00000101000 +}; + +enum { // .........v + MotorControllerFront = 0b00000000000, + MotorControllerBack = 0b00000000010, +}; + +enum { // ..........v + MotorControllerLeft = 0b00000000000, + MotorControllerRight = 0b00000000001, +}; + +enum { + MotorControllerFrontLeftDcLink = DeviceTypeMotorController | MotorControllerSend | MotorControllerDcLink | MotorControllerFront | MotorControllerLeft, + MotorControllerFrontRightDcLink = DeviceTypeMotorController | MotorControllerSend | MotorControllerDcLink | MotorControllerFront | MotorControllerRight, + MotorControllerBackLeftDcLink = DeviceTypeMotorController | MotorControllerSend | MotorControllerDcLink | MotorControllerBack | MotorControllerLeft, + MotorControllerBackRightDcLink = DeviceTypeMotorController | MotorControllerSend | MotorControllerDcLink | MotorControllerBack | MotorControllerRight, + + MotorControllerFrontLeftSpeed = DeviceTypeMotorController | MotorControllerSend | MotorControllerSpeed | MotorControllerFront | MotorControllerLeft, + MotorControllerFrontRightSpeed = DeviceTypeMotorController | MotorControllerSend | MotorControllerSpeed | MotorControllerFront | MotorControllerRight, + MotorControllerBackLeftSpeed = DeviceTypeMotorController | MotorControllerSend | MotorControllerSpeed | MotorControllerBack | MotorControllerLeft, + MotorControllerBackRightSpeed = DeviceTypeMotorController | MotorControllerSend | MotorControllerSpeed | MotorControllerBack | MotorControllerRight, + + MotorControllerFrontLeftError = DeviceTypeMotorController | MotorControllerSend | MotorControllerError | MotorControllerFront | MotorControllerLeft, + MotorControllerFrontRightError = DeviceTypeMotorController | MotorControllerSend | MotorControllerError | MotorControllerFront | MotorControllerRight, + MotorControllerBackLeftError = DeviceTypeMotorController | MotorControllerSend | MotorControllerError | MotorControllerBack | MotorControllerLeft, + MotorControllerBackRightError = DeviceTypeMotorController | MotorControllerSend | MotorControllerError | MotorControllerBack | MotorControllerRight, + + MotorControllerFrontLeftAngle = DeviceTypeMotorController | MotorControllerSend | MotorControllerAngle | MotorControllerFront | MotorControllerLeft, + MotorControllerFrontRightAngle = DeviceTypeMotorController | MotorControllerSend | MotorControllerAngle | MotorControllerFront | MotorControllerRight, + MotorControllerBackLeftAngle = DeviceTypeMotorController | MotorControllerSend | MotorControllerAngle | MotorControllerBack | MotorControllerLeft, + MotorControllerBackRightAngle = DeviceTypeMotorController | MotorControllerSend | MotorControllerAngle | MotorControllerBack | MotorControllerRight, + + MotorControllerFrontLeftDcPhaA = DeviceTypeMotorController | MotorControllerSend | MotorControllerDcPhaA | MotorControllerFront | MotorControllerLeft, + MotorControllerFrontRightDcPhaA = DeviceTypeMotorController | MotorControllerSend | MotorControllerDcPhaA | MotorControllerFront | MotorControllerRight, + MotorControllerBackLeftDcPhaA = DeviceTypeMotorController | MotorControllerSend | MotorControllerDcPhaA | MotorControllerBack | MotorControllerLeft, + MotorControllerBackRightDcPhaA = DeviceTypeMotorController | MotorControllerSend | MotorControllerDcPhaA | MotorControllerBack | MotorControllerRight, + + MotorControllerFrontLeftDcPhaB = DeviceTypeMotorController | MotorControllerSend | MotorControllerDcPhaB | MotorControllerFront | MotorControllerLeft, + MotorControllerFrontRightDcPhaB = DeviceTypeMotorController | MotorControllerSend | MotorControllerDcPhaB | MotorControllerFront | MotorControllerRight, + MotorControllerBackLeftDcPhaB = DeviceTypeMotorController | MotorControllerSend | MotorControllerDcPhaB | MotorControllerBack | MotorControllerLeft, + MotorControllerBackRightDcPhaB = DeviceTypeMotorController | MotorControllerSend | MotorControllerDcPhaB | MotorControllerBack | MotorControllerRight, + + MotorControllerFrontLeftDcPhaC = DeviceTypeMotorController | MotorControllerSend | MotorControllerDcPhaC | MotorControllerFront | MotorControllerLeft, + MotorControllerFrontRightDcPhaC = DeviceTypeMotorController | MotorControllerSend | MotorControllerDcPhaC | MotorControllerFront | MotorControllerRight, + MotorControllerBackLeftDcPhaC = DeviceTypeMotorController | MotorControllerSend | MotorControllerDcPhaC | MotorControllerBack | MotorControllerLeft, + MotorControllerBackRightDcPhaC = DeviceTypeMotorController | MotorControllerSend | MotorControllerDcPhaC | MotorControllerBack | MotorControllerRight, + + MotorControllerFrontLeftChops = DeviceTypeMotorController | MotorControllerSend | MotorControllerChops | MotorControllerFront | MotorControllerLeft, + MotorControllerFrontRightChops = DeviceTypeMotorController | MotorControllerSend | MotorControllerChops | MotorControllerFront | MotorControllerRight, + MotorControllerBackLeftChops = DeviceTypeMotorController | MotorControllerSend | MotorControllerChops | MotorControllerBack | MotorControllerLeft, + MotorControllerBackRightChops = DeviceTypeMotorController | MotorControllerSend | MotorControllerChops | MotorControllerBack | MotorControllerRight, + + MotorControllerFrontLeftHall = DeviceTypeMotorController | MotorControllerSend | MotorControllerHall | MotorControllerFront | MotorControllerLeft, + MotorControllerFrontRightHall = DeviceTypeMotorController | MotorControllerSend | MotorControllerHall | MotorControllerFront | MotorControllerRight, + MotorControllerBackLeftHall = DeviceTypeMotorController | MotorControllerSend | MotorControllerHall | MotorControllerBack | MotorControllerLeft, + MotorControllerBackRightHall = DeviceTypeMotorController | MotorControllerSend | MotorControllerHall | MotorControllerBack | MotorControllerRight, + + MotorControllerFrontLeftVoltage = DeviceTypeMotorController | MotorControllerSend | MotorControllerVoltage | MotorControllerFront | MotorControllerLeft, + MotorControllerFrontRightVoltage = DeviceTypeMotorController | MotorControllerSend | MotorControllerVoltage | MotorControllerFront | MotorControllerRight, + MotorControllerBackLeftVoltage = DeviceTypeMotorController | MotorControllerSend | MotorControllerVoltage | MotorControllerBack | MotorControllerLeft, + MotorControllerBackRightVoltage = DeviceTypeMotorController | MotorControllerSend | MotorControllerVoltage | MotorControllerBack | MotorControllerRight, + + MotorControllerFrontLeftTemp = DeviceTypeMotorController | MotorControllerSend | MotorControllerTemp | MotorControllerFront | MotorControllerLeft, + MotorControllerFrontRightTemp = DeviceTypeMotorController | MotorControllerSend | MotorControllerTemp | MotorControllerFront | MotorControllerRight, + MotorControllerBackLeftTemp = DeviceTypeMotorController | MotorControllerSend | MotorControllerTemp | MotorControllerBack | MotorControllerLeft, + MotorControllerBackRightTemp = DeviceTypeMotorController | MotorControllerSend | MotorControllerTemp | MotorControllerBack | MotorControllerRight, +}; diff --git a/bobbycar-common.h b/bobbycar-common.h new file mode 100644 index 0000000..b62bfd7 --- /dev/null +++ b/bobbycar-common.h @@ -0,0 +1,16 @@ +#pragma once + +#include + +enum class ControlType : uint8_t { + Commutation, + Sinusoidal, + FieldOrientedControl +}; + +enum class ControlMode : uint8_t { + OpenMode, + Voltage, + Speed, // Only with FieldOrientedControl + Torque // Only with FieldOrientedControl +}; diff --git a/protocol.h b/bobbycar-serial.h similarity index 87% rename from protocol.h rename to bobbycar-serial.h index bd918a0..58e7a91 100644 --- a/protocol.h +++ b/bobbycar-serial.h @@ -1,21 +1,6 @@ #pragma once -#include - -namespace { - -enum class ControlType : uint8_t { - Commutation, - Sinusoidal, - FieldOrientedControl -}; - -enum class ControlMode : uint8_t { - OpenMode, - Voltage, - Speed, // Only with FieldOrientedControl - Torque // Only with FieldOrientedControl -}; +#include "bobbycar-serial.h" struct MotorState { bool enable = false; @@ -29,7 +14,7 @@ struct MotorState { uint8_t phaseAdvMax = 40; // [deg] Maximum Phase Advance angle (only for SIN). Higher angle results in higher maximum speed. }; -uint16_t calculateChecksum(MotorState state) { +inline uint16_t calculateChecksum(MotorState state) { return uint16_t(state.enable) ^ state.pwm ^ @@ -47,7 +32,7 @@ struct BuzzerState { uint8_t pattern = 0; }; -uint16_t calculateChecksum(BuzzerState state) { +inline uint16_t calculateChecksum(BuzzerState state) { return state.freq ^ state.pattern; } @@ -67,7 +52,7 @@ struct Command { uint16_t checksum; }; -uint16_t calculateChecksum(Command command) { +inline uint16_t calculateChecksum(Command command) { return command.start ^ calculateChecksum(command.left) ^ calculateChecksum(command.right) ^ @@ -83,11 +68,11 @@ struct MotorFeedback { int16_t current = 0; uint16_t chops = 0; bool hallA = false, - hallB = false, - hallC = false; + hallB = false, + hallC = false; }; -uint16_t calculateChecksum(MotorFeedback feedback) { +inline uint16_t calculateChecksum(MotorFeedback feedback) { return feedback.angle ^ feedback.speed ^ feedback.error ^ feedback.current ^ feedback.chops ^ @@ -110,7 +95,7 @@ struct Feedback { uint16_t checksum; }; -uint16_t calculateChecksum(Feedback feedback) { +inline uint16_t calculateChecksum(Feedback feedback) { return feedback.start ^ calculateChecksum(feedback.left) ^ calculateChecksum(feedback.right) ^ @@ -121,7 +106,7 @@ uint16_t calculateChecksum(Feedback feedback) { #define ASSERT_LAYOUT(st, memb, off) \ - static_assert(offsetof(st, memb) == off, "struct layout wrong"); +static_assert(offsetof(st, memb) == off, "struct layout wrong"); ASSERT_LAYOUT(Feedback, start, 0); ASSERT_LAYOUT(Feedback, left, 2); @@ -181,5 +166,3 @@ ASSERT_LAYOUT(Command, buzzer.pattern, 27); ASSERT_LAYOUT(Command, poweroff, 28); ASSERT_LAYOUT(Command, led, 29); ASSERT_LAYOUT(Command, checksum, 30); - -} -- 2.50.1 From 236d1a2d33b31443238d6490889e3b7d29ee2119 Mon Sep 17 00:00:00 2001 From: 0xFEEDC0DE64 Date: Mon, 17 May 2021 23:16:49 +0200 Subject: [PATCH 2/7] Fixed includes --- bobbycar-serial.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/bobbycar-serial.h b/bobbycar-serial.h index 58e7a91..2a6430a 100644 --- a/bobbycar-serial.h +++ b/bobbycar-serial.h @@ -1,6 +1,8 @@ #pragma once -#include "bobbycar-serial.h" +#include + +#include "bobbycar-common.h" struct MotorState { bool enable = false; -- 2.50.1 From 994d0c95a72ed8e42a6875f771c778481073d470 Mon Sep 17 00:00:00 2001 From: 0xFEEDC0DE64 Date: Mon, 17 May 2021 23:58:55 +0200 Subject: [PATCH 3/7] Added receiving can registers --- bobbycar-can.h | 83 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 83 insertions(+) diff --git a/bobbycar-can.h b/bobbycar-can.h index 893b810..37f21d8 100644 --- a/bobbycar-can.h +++ b/bobbycar-can.h @@ -23,6 +23,22 @@ enum { // ....vvvvv MotorControllerTemp = 0b00000101000 }; +enum { // ....vvvvv + MotorControllerEnable = 0b00000000000, + MotorControllerInpTgt = 0b00000000100, + MotorControllerCtrlTyp = 0b00000001000, + MotorControllerCtrlMod = 0b00000001100, + MotorControllerIMotMax = 0b00000010000, + MotorControllerIDcMax = 0b00000010100, + MotorControllerNMotMax = 0b00000011000, + MotorControllerFieldWeakMax=0b00000011100, + MotorControllerPhaseAdvMax =0b00000100000, + MotorControllerBuzzerFreq = 0b00000100100, + MotorControllerBuzzerPattern=0b00000101000, + MotorControllerLed = 0b00000101100, + MotorControllerPoweroff = 0b00000110000 +}; + enum { // .........v MotorControllerFront = 0b00000000000, MotorControllerBack = 0b00000000010, @@ -89,3 +105,70 @@ enum { MotorControllerBackLeftTemp = DeviceTypeMotorController | MotorControllerSend | MotorControllerTemp | MotorControllerBack | MotorControllerLeft, MotorControllerBackRightTemp = DeviceTypeMotorController | MotorControllerSend | MotorControllerTemp | MotorControllerBack | MotorControllerRight, }; + +enum { + MotorControllerFrontLeftEnable = DeviceTypeMotorController | MotorControllerRec | MotorControllerEnable | MotorControllerFront | MotorControllerLeft, + MotorControllerFrontRightEnable = DeviceTypeMotorController | MotorControllerRec | MotorControllerEnable | MotorControllerFront | MotorControllerRight, + MotorControllerBackLeftEnable = DeviceTypeMotorController | MotorControllerRec | MotorControllerEnable | MotorControllerBack | MotorControllerLeft, + MotorControllerBackRightEnable = DeviceTypeMotorController | MotorControllerRec | MotorControllerEnable | MotorControllerBack | MotorControllerRight, + + MotorControllerFrontLeftInpTgt = DeviceTypeMotorController | MotorControllerRec | MotorControllerInpTgt | MotorControllerFront | MotorControllerLeft, + MotorControllerFrontRightInpTgt = DeviceTypeMotorController | MotorControllerRec | MotorControllerInpTgt | MotorControllerFront | MotorControllerRight, + MotorControllerBackLeftInpTgt = DeviceTypeMotorController | MotorControllerRec | MotorControllerInpTgt | MotorControllerBack | MotorControllerLeft, + MotorControllerBackRightInpTgt = DeviceTypeMotorController | MotorControllerRec | MotorControllerInpTgt | MotorControllerBack | MotorControllerRight, + + MotorControllerFrontLeftCtrlTyp = DeviceTypeMotorController | MotorControllerRec | MotorControllerCtrlTyp | MotorControllerFront | MotorControllerLeft, + MotorControllerFrontRightCtrlTyp = DeviceTypeMotorController | MotorControllerRec | MotorControllerCtrlTyp | MotorControllerFront | MotorControllerRight, + MotorControllerBackLeftCtrlTyp = DeviceTypeMotorController | MotorControllerRec | MotorControllerCtrlTyp | MotorControllerBack | MotorControllerLeft, + MotorControllerBackRightCtrlTyp = DeviceTypeMotorController | MotorControllerRec | MotorControllerCtrlTyp | MotorControllerBack | MotorControllerRight, + + MotorControllerFrontLeftCtrlMod = DeviceTypeMotorController | MotorControllerRec | MotorControllerCtrlMod | MotorControllerFront | MotorControllerLeft, + MotorControllerFrontRightCtrlMod = DeviceTypeMotorController | MotorControllerRec | MotorControllerCtrlMod | MotorControllerFront | MotorControllerRight, + MotorControllerBackLeftCtrlMod = DeviceTypeMotorController | MotorControllerRec | MotorControllerCtrlMod | MotorControllerBack | MotorControllerLeft, + MotorControllerBackRightCtrlMod = DeviceTypeMotorController | MotorControllerRec | MotorControllerCtrlMod | MotorControllerBack | MotorControllerRight, + + MotorControllerFrontLeftIMotMax = DeviceTypeMotorController | MotorControllerRec | MotorControllerIMotMax | MotorControllerFront | MotorControllerLeft, + MotorControllerFrontRightIMotMax = DeviceTypeMotorController | MotorControllerRec | MotorControllerIMotMax | MotorControllerFront | MotorControllerRight, + MotorControllerBackLeftIMotMax = DeviceTypeMotorController | MotorControllerRec | MotorControllerIMotMax | MotorControllerBack | MotorControllerLeft, + MotorControllerBackRightIMotMax = DeviceTypeMotorController | MotorControllerRec | MotorControllerIMotMax | MotorControllerBack | MotorControllerRight, + + MotorControllerFrontLeftIDcMax = DeviceTypeMotorController | MotorControllerRec | MotorControllerIDcMax | MotorControllerFront | MotorControllerLeft, + MotorControllerFrontRightIDcMax = DeviceTypeMotorController | MotorControllerRec | MotorControllerIDcMax | MotorControllerFront | MotorControllerRight, + MotorControllerBackLeftIDcMax = DeviceTypeMotorController | MotorControllerRec | MotorControllerIDcMax | MotorControllerBack | MotorControllerLeft, + MotorControllerBackRightIDcMax = DeviceTypeMotorController | MotorControllerRec | MotorControllerIDcMax | MotorControllerBack | MotorControllerRight, + + MotorControllerFrontLeftNMotMax = DeviceTypeMotorController | MotorControllerRec | MotorControllerNMotMax | MotorControllerFront | MotorControllerLeft, + MotorControllerFrontRightNMotMax = DeviceTypeMotorController | MotorControllerRec | MotorControllerNMotMax | MotorControllerFront | MotorControllerRight, + MotorControllerBackLeftNMotMax = DeviceTypeMotorController | MotorControllerRec | MotorControllerNMotMax | MotorControllerBack | MotorControllerLeft, + MotorControllerBackRightNMotMax = DeviceTypeMotorController | MotorControllerRec | MotorControllerNMotMax | MotorControllerBack | MotorControllerRight, + + MotorControllerFrontLeftFieldWeakMax = DeviceTypeMotorController | MotorControllerRec | MotorControllerFieldWeakMax | MotorControllerFront | MotorControllerLeft, + MotorControllerFrontRightFieldWeakMax = DeviceTypeMotorController | MotorControllerRec | MotorControllerFieldWeakMax | MotorControllerFront | MotorControllerRight, + MotorControllerBackLeftFieldWeakMax = DeviceTypeMotorController | MotorControllerRec | MotorControllerFieldWeakMax | MotorControllerBack | MotorControllerLeft, + MotorControllerBackRightFieldWeakMax = DeviceTypeMotorController | MotorControllerRec | MotorControllerFieldWeakMax | MotorControllerBack | MotorControllerRight, + + MotorControllerFrontLeftPhaseAdvMax = DeviceTypeMotorController | MotorControllerRec | MotorControllerPhaseAdvMax | MotorControllerFront | MotorControllerLeft, + MotorControllerFrontRightPhaseAdvMax = DeviceTypeMotorController | MotorControllerRec | MotorControllerPhaseAdvMax | MotorControllerFront | MotorControllerRight, + MotorControllerBackLeftPhaseAdvMax = DeviceTypeMotorController | MotorControllerRec | MotorControllerPhaseAdvMax | MotorControllerBack | MotorControllerLeft, + MotorControllerBackRightPhaseAdvMax = DeviceTypeMotorController | MotorControllerRec | MotorControllerPhaseAdvMax | MotorControllerBack | MotorControllerRight, + + MotorControllerFrontLeftBuzzerFreq = DeviceTypeMotorController | MotorControllerRec | MotorControllerBuzzerFreq | MotorControllerFront | MotorControllerLeft, + MotorControllerFrontRightBuzzerFreq = DeviceTypeMotorController | MotorControllerRec | MotorControllerBuzzerFreq | MotorControllerFront | MotorControllerRight, + MotorControllerBackLeftBuzzerFreq = DeviceTypeMotorController | MotorControllerRec | MotorControllerBuzzerFreq | MotorControllerBack | MotorControllerLeft, + MotorControllerBackRightBuzzerFreq = DeviceTypeMotorController | MotorControllerRec | MotorControllerBuzzerFreq | MotorControllerBack | MotorControllerRight, + + MotorControllerFrontLeftBuzzerPattern = DeviceTypeMotorController | MotorControllerRec | MotorControllerBuzzerPattern | MotorControllerFront | MotorControllerLeft, + MotorControllerFrontRightBuzzerPattern = DeviceTypeMotorController | MotorControllerRec | MotorControllerBuzzerPattern | MotorControllerFront | MotorControllerRight, + MotorControllerBackLeftBuzzerPattern = DeviceTypeMotorController | MotorControllerRec | MotorControllerBuzzerPattern | MotorControllerBack | MotorControllerLeft, + MotorControllerBackRightBuzzerPattern = DeviceTypeMotorController | MotorControllerRec | MotorControllerBuzzerPattern | MotorControllerBack | MotorControllerRight, + + MotorControllerFrontLeftLed = DeviceTypeMotorController | MotorControllerRec | MotorControllerLed | MotorControllerFront | MotorControllerLeft, + MotorControllerFrontRightLed = DeviceTypeMotorController | MotorControllerRec | MotorControllerLed | MotorControllerFront | MotorControllerRight, + MotorControllerBackLeftLed = DeviceTypeMotorController | MotorControllerRec | MotorControllerLed | MotorControllerBack | MotorControllerLeft, + MotorControllerBackRightLed = DeviceTypeMotorController | MotorControllerRec | MotorControllerLed | MotorControllerBack | MotorControllerRight, + + MotorControllerFrontLeftPoweroff = DeviceTypeMotorController | MotorControllerRec | MotorControllerPoweroff | MotorControllerFront | MotorControllerLeft, + MotorControllerFrontRightPoweroff = DeviceTypeMotorController | MotorControllerRec | MotorControllerPoweroff | MotorControllerFront | MotorControllerRight, + MotorControllerBackLeftPoweroff = DeviceTypeMotorController | MotorControllerRec | MotorControllerPoweroff | MotorControllerBack | MotorControllerLeft, + MotorControllerBackRightPoweroff = DeviceTypeMotorController | MotorControllerRec | MotorControllerPoweroff | MotorControllerBack | MotorControllerRight, +}; -- 2.50.1 From 49fa47c90ac24de50a8f2b1eef040ac9738dd00f Mon Sep 17 00:00:00 2001 From: 0xFEEDC0DE64 Date: Thu, 20 May 2021 23:21:53 +0200 Subject: [PATCH 4/7] Added debug utility --- bobbycar-can.h | 106 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 106 insertions(+) diff --git a/bobbycar-can.h b/bobbycar-can.h index 37f21d8..d9fa171 100644 --- a/bobbycar-can.h +++ b/bobbycar-can.h @@ -1,5 +1,7 @@ #pragma once +#include + enum { // vv DeviceTypeMotorController = 0b00000000000 }; @@ -172,3 +174,107 @@ enum { MotorControllerBackLeftPoweroff = DeviceTypeMotorController | MotorControllerRec | MotorControllerPoweroff | MotorControllerBack | MotorControllerLeft, MotorControllerBackRightPoweroff = DeviceTypeMotorController | MotorControllerRec | MotorControllerPoweroff | MotorControllerBack | MotorControllerRight, }; + +inline const char *bobbycarCanIdDesc(uint16_t id) +{ + switch (id) + { + case MotorControllerFrontLeftEnable: return "MotorControllerFrontLeftEnable"; + case MotorControllerFrontRightEnable: return "MotorControllerFrontRightEnable"; + case MotorControllerBackLeftEnable: return "MotorControllerBackLeftEnable"; + case MotorControllerBackRightEnable: return "MotorControllerBackRightEnable"; + case MotorControllerFrontLeftInpTgt: return "MotorControllerFrontLeftInpTgt"; + case MotorControllerFrontRightInpTgt: return "MotorControllerFrontRightInpTgt"; + case MotorControllerBackLeftInpTgt: return "MotorControllerBackLeftInpTgt"; + case MotorControllerBackRightInpTgt: return "MotorControllerBackRightInpTgt"; + case MotorControllerFrontLeftCtrlTyp: return "MotorControllerFrontLeftCtrlTyp"; + case MotorControllerFrontRightCtrlTyp: return "MotorControllerFrontRightCtrlTyp"; + case MotorControllerBackLeftCtrlTyp: return "MotorControllerBackLeftCtrlTyp"; + case MotorControllerBackRightCtrlTyp: return "MotorControllerBackRightCtrlTyp"; + case MotorControllerFrontLeftCtrlMod: return "MotorControllerFrontLeftCtrlMod"; + case MotorControllerFrontRightCtrlMod: return "MotorControllerFrontRightCtrlMod"; + case MotorControllerBackLeftCtrlMod: return "MotorControllerBackLeftCtrlMod"; + case MotorControllerBackRightCtrlMod: return "MotorControllerBackRightCtrlMod"; + case MotorControllerFrontLeftIMotMax: return "MotorControllerFrontLeftIMotMax"; + case MotorControllerFrontRightIMotMax: return "MotorControllerFrontRightIMotMax"; + case MotorControllerBackLeftIMotMax: return "MotorControllerBackLeftIMotMax"; + case MotorControllerBackRightIMotMax: return "MotorControllerBackRightIMotMax"; + case MotorControllerFrontLeftIDcMax: return "MotorControllerFrontLeftIDcMax"; + case MotorControllerFrontRightIDcMax: return "MotorControllerFrontRightIDcMax"; + case MotorControllerBackLeftIDcMax: return "MotorControllerBackLeftIDcMax"; + case MotorControllerBackRightIDcMax: return "MotorControllerBackRightIDcMax"; + case MotorControllerFrontLeftNMotMax: return "MotorControllerFrontLeftNMotMax"; + case MotorControllerFrontRightNMotMax: return "MotorControllerFrontRightNMotMax"; + case MotorControllerBackLeftNMotMax: return "MotorControllerBackLeftNMotMax"; + case MotorControllerBackRightNMotMax: return "MotorControllerBackRightNMotMax"; + case MotorControllerFrontLeftFieldWeakMax: return "MotorControllerFrontLeftFieldWeakMax"; + case MotorControllerFrontRightFieldWeakMax: return "MotorControllerFrontRightFieldWeakMax"; + case MotorControllerBackLeftFieldWeakMax: return "MotorControllerBackLeftFieldWeakMax"; + case MotorControllerBackRightFieldWeakMax: return "MotorControllerBackRightFieldWeakMax"; + case MotorControllerFrontLeftPhaseAdvMax: return "MotorControllerFrontLeftPhaseAdvMax"; + case MotorControllerFrontRightPhaseAdvMax: return "MotorControllerFrontRightPhaseAdvMax"; + case MotorControllerBackLeftPhaseAdvMax: return "MotorControllerBackLeftPhaseAdvMax"; + case MotorControllerBackRightPhaseAdvMax: return "MotorControllerBackRightPhaseAdvMax"; + case MotorControllerFrontLeftBuzzerFreq: return "MotorControllerFrontLeftBuzzerFreq"; + case MotorControllerFrontRightBuzzerFreq: return "MotorControllerFrontRightBuzzerFreq"; + case MotorControllerBackLeftBuzzerFreq: return "MotorControllerBackLeftBuzzerFreq"; + case MotorControllerBackRightBuzzerFreq: return "MotorControllerBackRightBuzzerFreq"; + case MotorControllerFrontLeftBuzzerPattern: return "MotorControllerFrontLeftBuzzerPattern"; + case MotorControllerFrontRightBuzzerPattern: return "MotorControllerFrontRightBuzzerPattern"; + case MotorControllerBackLeftBuzzerPattern: return "MotorControllerBackLeftBuzzerPattern"; + case MotorControllerBackRightBuzzerPattern: return "MotorControllerBackRightBuzzerPattern"; + case MotorControllerFrontLeftLed: return "MotorControllerFrontLeftLed"; + case MotorControllerFrontRightLed: return "MotorControllerFrontRightLed"; + case MotorControllerBackLeftLed: return "MotorControllerBackLeftLed"; + case MotorControllerBackRightLed: return "MotorControllerBackRightLed"; + case MotorControllerFrontLeftPoweroff: return "MotorControllerFrontLeftPoweroff"; + case MotorControllerFrontRightPoweroff: return "MotorControllerFrontRightPoweroff"; + case MotorControllerBackLeftPoweroff: return "MotorControllerBackLeftPoweroff"; + case MotorControllerBackRightPoweroff: return "MotorControllerBackRightPoweroff"; + case MotorControllerFrontLeftDcLink: return "MotorControllerFrontLeftDcLink"; + case MotorControllerFrontRightDcLink: return "MotorControllerFrontRightDcLink"; + case MotorControllerBackLeftDcLink: return "MotorControllerBackLeftDcLink"; + case MotorControllerBackRightDcLink: return "MotorControllerBackRightDcLink"; + case MotorControllerFrontLeftSpeed: return "MotorControllerFrontLeftSpeed"; + case MotorControllerFrontRightSpeed: return "MotorControllerFrontRightSpeed"; + case MotorControllerBackLeftSpeed: return "MotorControllerBackLeftSpeed"; + case MotorControllerBackRightSpeed: return "MotorControllerBackRightSpeed"; + case MotorControllerFrontLeftError: return "MotorControllerFrontLeftError"; + case MotorControllerFrontRightError: return "MotorControllerFrontRightError"; + case MotorControllerBackLeftError: return "MotorControllerBackLeftError"; + case MotorControllerBackRightError: return "MotorControllerBackRightError"; + case MotorControllerFrontLeftAngle: return "MotorControllerFrontLeftAngle"; + case MotorControllerFrontRightAngle: return "MotorControllerFrontRightAngle"; + case MotorControllerBackLeftAngle: return "MotorControllerBackLeftAngle"; + case MotorControllerBackRightAngle: return "MotorControllerBackRightAngle"; + case MotorControllerFrontLeftDcPhaA: return "MotorControllerFrontLeftDcPhaA"; + case MotorControllerFrontRightDcPhaA: return "MotorControllerFrontRightDcPhaA"; + case MotorControllerBackLeftDcPhaA: return "MotorControllerBackLeftDcPhaA"; + case MotorControllerBackRightDcPhaA: return "MotorControllerBackRightDcPhaA"; + case MotorControllerFrontLeftDcPhaB: return "MotorControllerFrontLeftDcPhaB"; + case MotorControllerFrontRightDcPhaB: return "MotorControllerFrontRightDcPhaB"; + case MotorControllerBackLeftDcPhaB: return "MotorControllerBackLeftDcPhaB"; + case MotorControllerBackRightDcPhaB: return "MotorControllerBackRightDcPhaB"; + case MotorControllerFrontLeftDcPhaC: return "MotorControllerFrontLeftDcPhaC"; + case MotorControllerFrontRightDcPhaC: return "MotorControllerFrontRightDcPhaC"; + case MotorControllerBackLeftDcPhaC: return "MotorControllerBackLeftDcPhaC"; + case MotorControllerBackRightDcPhaC: return "MotorControllerBackRightDcPhaC"; + case MotorControllerFrontLeftChops: return "MotorControllerFrontLeftChops"; + case MotorControllerFrontRightChops: return "MotorControllerFrontRightChops"; + case MotorControllerBackLeftChops: return "MotorControllerBackLeftChops"; + case MotorControllerBackRightChops: return "MotorControllerBackRightChops"; + case MotorControllerFrontLeftHall: return "MotorControllerFrontLeftHall"; + case MotorControllerFrontRightHall: return "MotorControllerFrontRightHall"; + case MotorControllerBackLeftHall: return "MotorControllerBackLeftHall"; + case MotorControllerBackRightHall: return "MotorControllerBackRightHall"; + case MotorControllerFrontLeftVoltage: return "MotorControllerFrontLeftVoltage"; + case MotorControllerFrontRightVoltage: return "MotorControllerFrontRightVoltage"; + case MotorControllerBackLeftVoltage: return "MotorControllerBackLeftVoltage"; + case MotorControllerBackRightVoltage: return "MotorControllerBackRightVoltage"; + case MotorControllerFrontLeftTemp: return "MotorControllerFrontLeftTemp"; + case MotorControllerFrontRightTemp: return "MotorControllerFrontRightTemp"; + case MotorControllerBackLeftTemp: return "MotorControllerBackLeftTemp"; + case MotorControllerBackRightTemp: return "MotorControllerBackRightTemp"; + } + return "Unknown"; +} -- 2.50.1 From fee1175bf819826222086aa1e3c7fbb66d37a33c Mon Sep 17 00:00:00 2001 From: 0xFEEDC0DE64 Date: Fri, 21 May 2021 00:06:47 +0200 Subject: [PATCH 5/7] template compile time magic --- bobbycar-can.h | 430 ++++++++++++++++++++----------------------------- 1 file changed, 174 insertions(+), 256 deletions(-) diff --git a/bobbycar-can.h b/bobbycar-can.h index d9fa171..ef59fb4 100644 --- a/bobbycar-can.h +++ b/bobbycar-can.h @@ -2,279 +2,197 @@ #include -enum { // vv - DeviceTypeMotorController = 0b00000000000 -}; +namespace bobbycar { +namespace can { +template +class MotorController +{ +private: + enum { // vvv + DeviceTypeMotorController = 0b00000000000 + }; -enum { // ..vv - MotorControllerRec = 0b00000000000, - MotorControllerSend = 0b00010000000, -}; + enum { // ...v + MotorControllerCommand = 0b00000000000, + MotorControllerFeedback = 0b00010000000, + }; -enum { // ....vvvvv - MotorControllerDcLink = 0b00000000000, - MotorControllerSpeed = 0b00000000100, - MotorControllerError = 0b00000001000, - MotorControllerAngle = 0b00000001100, - MotorControllerDcPhaA = 0b00000010000, - MotorControllerDcPhaB = 0b00000010100, - MotorControllerDcPhaC = 0b00000011000, - MotorControllerChops = 0b00000011100, - MotorControllerHall = 0b00000100000, - MotorControllerVoltage = 0b00000100100, - MotorControllerTemp = 0b00000101000 -}; + enum { // .........v + MotorControllerFront = 0b00000000000, + MotorControllerBack = 0b00000000010, + }; -enum { // ....vvvvv - MotorControllerEnable = 0b00000000000, - MotorControllerInpTgt = 0b00000000100, - MotorControllerCtrlTyp = 0b00000001000, - MotorControllerCtrlMod = 0b00000001100, - MotorControllerIMotMax = 0b00000010000, - MotorControllerIDcMax = 0b00000010100, - MotorControllerNMotMax = 0b00000011000, - MotorControllerFieldWeakMax=0b00000011100, - MotorControllerPhaseAdvMax =0b00000100000, - MotorControllerBuzzerFreq = 0b00000100100, - MotorControllerBuzzerPattern=0b00000101000, - MotorControllerLed = 0b00000101100, - MotorControllerPoweroff = 0b00000110000 -}; + enum { // ..........v + MotorControllerLeft = 0b00000000000, + MotorControllerRight = 0b00000000001, + }; -enum { // .........v - MotorControllerFront = 0b00000000000, - MotorControllerBack = 0b00000000010, -}; + enum { + MotorControllerMask = + DeviceTypeMotorController | + (isBack ? MotorControllerBack : MotorControllerFront) | + (isRight ? MotorControllerRight : MotorControllerLeft) + }; -enum { // ..........v - MotorControllerLeft = 0b00000000000, - MotorControllerRight = 0b00000000001, -}; +public: + MotorController() = delete; + ~MotorController() = delete; -enum { - MotorControllerFrontLeftDcLink = DeviceTypeMotorController | MotorControllerSend | MotorControllerDcLink | MotorControllerFront | MotorControllerLeft, - MotorControllerFrontRightDcLink = DeviceTypeMotorController | MotorControllerSend | MotorControllerDcLink | MotorControllerFront | MotorControllerRight, - MotorControllerBackLeftDcLink = DeviceTypeMotorController | MotorControllerSend | MotorControllerDcLink | MotorControllerBack | MotorControllerLeft, - MotorControllerBackRightDcLink = DeviceTypeMotorController | MotorControllerSend | MotorControllerDcLink | MotorControllerBack | MotorControllerRight, + class Command { + private: + enum { + MotorControllerCommandMask = MotorControllerMask | MotorControllerCommand + }; - MotorControllerFrontLeftSpeed = DeviceTypeMotorController | MotorControllerSend | MotorControllerSpeed | MotorControllerFront | MotorControllerLeft, - MotorControllerFrontRightSpeed = DeviceTypeMotorController | MotorControllerSend | MotorControllerSpeed | MotorControllerFront | MotorControllerRight, - MotorControllerBackLeftSpeed = DeviceTypeMotorController | MotorControllerSend | MotorControllerSpeed | MotorControllerBack | MotorControllerLeft, - MotorControllerBackRightSpeed = DeviceTypeMotorController | MotorControllerSend | MotorControllerSpeed | MotorControllerBack | MotorControllerRight, + public: + Command() = delete; + ~Command() = delete; - MotorControllerFrontLeftError = DeviceTypeMotorController | MotorControllerSend | MotorControllerError | MotorControllerFront | MotorControllerLeft, - MotorControllerFrontRightError = DeviceTypeMotorController | MotorControllerSend | MotorControllerError | MotorControllerFront | MotorControllerRight, - MotorControllerBackLeftError = DeviceTypeMotorController | MotorControllerSend | MotorControllerError | MotorControllerBack | MotorControllerLeft, - MotorControllerBackRightError = DeviceTypeMotorController | MotorControllerSend | MotorControllerError | MotorControllerBack | MotorControllerRight, + enum { // ....vvvvv + Enable = 0b00000000000 | MotorControllerCommandMask, + InpTgt = 0b00000000100 | MotorControllerCommandMask, + CtrlTyp = 0b00000001000 | MotorControllerCommandMask, + CtrlMod = 0b00000001100 | MotorControllerCommandMask, + IMotMax = 0b00000010000 | MotorControllerCommandMask, + IDcMax = 0b00000010100 | MotorControllerCommandMask, + NMotMax = 0b00000011000 | MotorControllerCommandMask, + FieldWeakMax = 0b00000011100 | MotorControllerCommandMask, + PhaseAdvMax = 0b00000100000 | MotorControllerCommandMask, + BuzzerFreq = 0b00000100100 | MotorControllerCommandMask, + BuzzerPattern = 0b00000101000 | MotorControllerCommandMask, + Led = 0b00000101100 | MotorControllerCommandMask, + Poweroff = 0b00000110000 | MotorControllerCommandMask + }; + }; - MotorControllerFrontLeftAngle = DeviceTypeMotorController | MotorControllerSend | MotorControllerAngle | MotorControllerFront | MotorControllerLeft, - MotorControllerFrontRightAngle = DeviceTypeMotorController | MotorControllerSend | MotorControllerAngle | MotorControllerFront | MotorControllerRight, - MotorControllerBackLeftAngle = DeviceTypeMotorController | MotorControllerSend | MotorControllerAngle | MotorControllerBack | MotorControllerLeft, - MotorControllerBackRightAngle = DeviceTypeMotorController | MotorControllerSend | MotorControllerAngle | MotorControllerBack | MotorControllerRight, + class Feedback { + private: + enum { + MotorControllerFeedbackMask = MotorControllerMask | MotorControllerFeedback + }; - MotorControllerFrontLeftDcPhaA = DeviceTypeMotorController | MotorControllerSend | MotorControllerDcPhaA | MotorControllerFront | MotorControllerLeft, - MotorControllerFrontRightDcPhaA = DeviceTypeMotorController | MotorControllerSend | MotorControllerDcPhaA | MotorControllerFront | MotorControllerRight, - MotorControllerBackLeftDcPhaA = DeviceTypeMotorController | MotorControllerSend | MotorControllerDcPhaA | MotorControllerBack | MotorControllerLeft, - MotorControllerBackRightDcPhaA = DeviceTypeMotorController | MotorControllerSend | MotorControllerDcPhaA | MotorControllerBack | MotorControllerRight, + public: + Feedback() = delete; + ~Feedback() = delete; - MotorControllerFrontLeftDcPhaB = DeviceTypeMotorController | MotorControllerSend | MotorControllerDcPhaB | MotorControllerFront | MotorControllerLeft, - MotorControllerFrontRightDcPhaB = DeviceTypeMotorController | MotorControllerSend | MotorControllerDcPhaB | MotorControllerFront | MotorControllerRight, - MotorControllerBackLeftDcPhaB = DeviceTypeMotorController | MotorControllerSend | MotorControllerDcPhaB | MotorControllerBack | MotorControllerLeft, - MotorControllerBackRightDcPhaB = DeviceTypeMotorController | MotorControllerSend | MotorControllerDcPhaB | MotorControllerBack | MotorControllerRight, - - MotorControllerFrontLeftDcPhaC = DeviceTypeMotorController | MotorControllerSend | MotorControllerDcPhaC | MotorControllerFront | MotorControllerLeft, - MotorControllerFrontRightDcPhaC = DeviceTypeMotorController | MotorControllerSend | MotorControllerDcPhaC | MotorControllerFront | MotorControllerRight, - MotorControllerBackLeftDcPhaC = DeviceTypeMotorController | MotorControllerSend | MotorControllerDcPhaC | MotorControllerBack | MotorControllerLeft, - MotorControllerBackRightDcPhaC = DeviceTypeMotorController | MotorControllerSend | MotorControllerDcPhaC | MotorControllerBack | MotorControllerRight, - - MotorControllerFrontLeftChops = DeviceTypeMotorController | MotorControllerSend | MotorControllerChops | MotorControllerFront | MotorControllerLeft, - MotorControllerFrontRightChops = DeviceTypeMotorController | MotorControllerSend | MotorControllerChops | MotorControllerFront | MotorControllerRight, - MotorControllerBackLeftChops = DeviceTypeMotorController | MotorControllerSend | MotorControllerChops | MotorControllerBack | MotorControllerLeft, - MotorControllerBackRightChops = DeviceTypeMotorController | MotorControllerSend | MotorControllerChops | MotorControllerBack | MotorControllerRight, - - MotorControllerFrontLeftHall = DeviceTypeMotorController | MotorControllerSend | MotorControllerHall | MotorControllerFront | MotorControllerLeft, - MotorControllerFrontRightHall = DeviceTypeMotorController | MotorControllerSend | MotorControllerHall | MotorControllerFront | MotorControllerRight, - MotorControllerBackLeftHall = DeviceTypeMotorController | MotorControllerSend | MotorControllerHall | MotorControllerBack | MotorControllerLeft, - MotorControllerBackRightHall = DeviceTypeMotorController | MotorControllerSend | MotorControllerHall | MotorControllerBack | MotorControllerRight, - - MotorControllerFrontLeftVoltage = DeviceTypeMotorController | MotorControllerSend | MotorControllerVoltage | MotorControllerFront | MotorControllerLeft, - MotorControllerFrontRightVoltage = DeviceTypeMotorController | MotorControllerSend | MotorControllerVoltage | MotorControllerFront | MotorControllerRight, - MotorControllerBackLeftVoltage = DeviceTypeMotorController | MotorControllerSend | MotorControllerVoltage | MotorControllerBack | MotorControllerLeft, - MotorControllerBackRightVoltage = DeviceTypeMotorController | MotorControllerSend | MotorControllerVoltage | MotorControllerBack | MotorControllerRight, - - MotorControllerFrontLeftTemp = DeviceTypeMotorController | MotorControllerSend | MotorControllerTemp | MotorControllerFront | MotorControllerLeft, - MotorControllerFrontRightTemp = DeviceTypeMotorController | MotorControllerSend | MotorControllerTemp | MotorControllerFront | MotorControllerRight, - MotorControllerBackLeftTemp = DeviceTypeMotorController | MotorControllerSend | MotorControllerTemp | MotorControllerBack | MotorControllerLeft, - MotorControllerBackRightTemp = DeviceTypeMotorController | MotorControllerSend | MotorControllerTemp | MotorControllerBack | MotorControllerRight, -}; - -enum { - MotorControllerFrontLeftEnable = DeviceTypeMotorController | MotorControllerRec | MotorControllerEnable | MotorControllerFront | MotorControllerLeft, - MotorControllerFrontRightEnable = DeviceTypeMotorController | MotorControllerRec | MotorControllerEnable | MotorControllerFront | MotorControllerRight, - MotorControllerBackLeftEnable = DeviceTypeMotorController | MotorControllerRec | MotorControllerEnable | MotorControllerBack | MotorControllerLeft, - MotorControllerBackRightEnable = DeviceTypeMotorController | MotorControllerRec | MotorControllerEnable | MotorControllerBack | MotorControllerRight, - - MotorControllerFrontLeftInpTgt = DeviceTypeMotorController | MotorControllerRec | MotorControllerInpTgt | MotorControllerFront | MotorControllerLeft, - MotorControllerFrontRightInpTgt = DeviceTypeMotorController | MotorControllerRec | MotorControllerInpTgt | MotorControllerFront | MotorControllerRight, - MotorControllerBackLeftInpTgt = DeviceTypeMotorController | MotorControllerRec | MotorControllerInpTgt | MotorControllerBack | MotorControllerLeft, - MotorControllerBackRightInpTgt = DeviceTypeMotorController | MotorControllerRec | MotorControllerInpTgt | MotorControllerBack | MotorControllerRight, - - MotorControllerFrontLeftCtrlTyp = DeviceTypeMotorController | MotorControllerRec | MotorControllerCtrlTyp | MotorControllerFront | MotorControllerLeft, - MotorControllerFrontRightCtrlTyp = DeviceTypeMotorController | MotorControllerRec | MotorControllerCtrlTyp | MotorControllerFront | MotorControllerRight, - MotorControllerBackLeftCtrlTyp = DeviceTypeMotorController | MotorControllerRec | MotorControllerCtrlTyp | MotorControllerBack | MotorControllerLeft, - MotorControllerBackRightCtrlTyp = DeviceTypeMotorController | MotorControllerRec | MotorControllerCtrlTyp | MotorControllerBack | MotorControllerRight, - - MotorControllerFrontLeftCtrlMod = DeviceTypeMotorController | MotorControllerRec | MotorControllerCtrlMod | MotorControllerFront | MotorControllerLeft, - MotorControllerFrontRightCtrlMod = DeviceTypeMotorController | MotorControllerRec | MotorControllerCtrlMod | MotorControllerFront | MotorControllerRight, - MotorControllerBackLeftCtrlMod = DeviceTypeMotorController | MotorControllerRec | MotorControllerCtrlMod | MotorControllerBack | MotorControllerLeft, - MotorControllerBackRightCtrlMod = DeviceTypeMotorController | MotorControllerRec | MotorControllerCtrlMod | MotorControllerBack | MotorControllerRight, - - MotorControllerFrontLeftIMotMax = DeviceTypeMotorController | MotorControllerRec | MotorControllerIMotMax | MotorControllerFront | MotorControllerLeft, - MotorControllerFrontRightIMotMax = DeviceTypeMotorController | MotorControllerRec | MotorControllerIMotMax | MotorControllerFront | MotorControllerRight, - MotorControllerBackLeftIMotMax = DeviceTypeMotorController | MotorControllerRec | MotorControllerIMotMax | MotorControllerBack | MotorControllerLeft, - MotorControllerBackRightIMotMax = DeviceTypeMotorController | MotorControllerRec | MotorControllerIMotMax | MotorControllerBack | MotorControllerRight, - - MotorControllerFrontLeftIDcMax = DeviceTypeMotorController | MotorControllerRec | MotorControllerIDcMax | MotorControllerFront | MotorControllerLeft, - MotorControllerFrontRightIDcMax = DeviceTypeMotorController | MotorControllerRec | MotorControllerIDcMax | MotorControllerFront | MotorControllerRight, - MotorControllerBackLeftIDcMax = DeviceTypeMotorController | MotorControllerRec | MotorControllerIDcMax | MotorControllerBack | MotorControllerLeft, - MotorControllerBackRightIDcMax = DeviceTypeMotorController | MotorControllerRec | MotorControllerIDcMax | MotorControllerBack | MotorControllerRight, - - MotorControllerFrontLeftNMotMax = DeviceTypeMotorController | MotorControllerRec | MotorControllerNMotMax | MotorControllerFront | MotorControllerLeft, - MotorControllerFrontRightNMotMax = DeviceTypeMotorController | MotorControllerRec | MotorControllerNMotMax | MotorControllerFront | MotorControllerRight, - MotorControllerBackLeftNMotMax = DeviceTypeMotorController | MotorControllerRec | MotorControllerNMotMax | MotorControllerBack | MotorControllerLeft, - MotorControllerBackRightNMotMax = DeviceTypeMotorController | MotorControllerRec | MotorControllerNMotMax | MotorControllerBack | MotorControllerRight, - - MotorControllerFrontLeftFieldWeakMax = DeviceTypeMotorController | MotorControllerRec | MotorControllerFieldWeakMax | MotorControllerFront | MotorControllerLeft, - MotorControllerFrontRightFieldWeakMax = DeviceTypeMotorController | MotorControllerRec | MotorControllerFieldWeakMax | MotorControllerFront | MotorControllerRight, - MotorControllerBackLeftFieldWeakMax = DeviceTypeMotorController | MotorControllerRec | MotorControllerFieldWeakMax | MotorControllerBack | MotorControllerLeft, - MotorControllerBackRightFieldWeakMax = DeviceTypeMotorController | MotorControllerRec | MotorControllerFieldWeakMax | MotorControllerBack | MotorControllerRight, - - MotorControllerFrontLeftPhaseAdvMax = DeviceTypeMotorController | MotorControllerRec | MotorControllerPhaseAdvMax | MotorControllerFront | MotorControllerLeft, - MotorControllerFrontRightPhaseAdvMax = DeviceTypeMotorController | MotorControllerRec | MotorControllerPhaseAdvMax | MotorControllerFront | MotorControllerRight, - MotorControllerBackLeftPhaseAdvMax = DeviceTypeMotorController | MotorControllerRec | MotorControllerPhaseAdvMax | MotorControllerBack | MotorControllerLeft, - MotorControllerBackRightPhaseAdvMax = DeviceTypeMotorController | MotorControllerRec | MotorControllerPhaseAdvMax | MotorControllerBack | MotorControllerRight, - - MotorControllerFrontLeftBuzzerFreq = DeviceTypeMotorController | MotorControllerRec | MotorControllerBuzzerFreq | MotorControllerFront | MotorControllerLeft, - MotorControllerFrontRightBuzzerFreq = DeviceTypeMotorController | MotorControllerRec | MotorControllerBuzzerFreq | MotorControllerFront | MotorControllerRight, - MotorControllerBackLeftBuzzerFreq = DeviceTypeMotorController | MotorControllerRec | MotorControllerBuzzerFreq | MotorControllerBack | MotorControllerLeft, - MotorControllerBackRightBuzzerFreq = DeviceTypeMotorController | MotorControllerRec | MotorControllerBuzzerFreq | MotorControllerBack | MotorControllerRight, - - MotorControllerFrontLeftBuzzerPattern = DeviceTypeMotorController | MotorControllerRec | MotorControllerBuzzerPattern | MotorControllerFront | MotorControllerLeft, - MotorControllerFrontRightBuzzerPattern = DeviceTypeMotorController | MotorControllerRec | MotorControllerBuzzerPattern | MotorControllerFront | MotorControllerRight, - MotorControllerBackLeftBuzzerPattern = DeviceTypeMotorController | MotorControllerRec | MotorControllerBuzzerPattern | MotorControllerBack | MotorControllerLeft, - MotorControllerBackRightBuzzerPattern = DeviceTypeMotorController | MotorControllerRec | MotorControllerBuzzerPattern | MotorControllerBack | MotorControllerRight, - - MotorControllerFrontLeftLed = DeviceTypeMotorController | MotorControllerRec | MotorControllerLed | MotorControllerFront | MotorControllerLeft, - MotorControllerFrontRightLed = DeviceTypeMotorController | MotorControllerRec | MotorControllerLed | MotorControllerFront | MotorControllerRight, - MotorControllerBackLeftLed = DeviceTypeMotorController | MotorControllerRec | MotorControllerLed | MotorControllerBack | MotorControllerLeft, - MotorControllerBackRightLed = DeviceTypeMotorController | MotorControllerRec | MotorControllerLed | MotorControllerBack | MotorControllerRight, - - MotorControllerFrontLeftPoweroff = DeviceTypeMotorController | MotorControllerRec | MotorControllerPoweroff | MotorControllerFront | MotorControllerLeft, - MotorControllerFrontRightPoweroff = DeviceTypeMotorController | MotorControllerRec | MotorControllerPoweroff | MotorControllerFront | MotorControllerRight, - MotorControllerBackLeftPoweroff = DeviceTypeMotorController | MotorControllerRec | MotorControllerPoweroff | MotorControllerBack | MotorControllerLeft, - MotorControllerBackRightPoweroff = DeviceTypeMotorController | MotorControllerRec | MotorControllerPoweroff | MotorControllerBack | MotorControllerRight, + enum { // ....vvvvv + DcLink = 0b00000000000 | MotorControllerFeedbackMask, + Speed = 0b00000000100 | MotorControllerFeedbackMask, + Error = 0b00000001000 | MotorControllerFeedbackMask, + Angle = 0b00000001100 | MotorControllerFeedbackMask, + DcPhaA = 0b00000010000 | MotorControllerFeedbackMask, + DcPhaB = 0b00000010100 | MotorControllerFeedbackMask, + DcPhaC = 0b00000011000 | MotorControllerFeedbackMask, + Chops = 0b00000011100 | MotorControllerFeedbackMask, + Hall = 0b00000100000 | MotorControllerFeedbackMask, + Voltage = 0b00000100100 | MotorControllerFeedbackMask, + Temp = 0b00000101000 | MotorControllerFeedbackMask + }; + }; }; inline const char *bobbycarCanIdDesc(uint16_t id) { switch (id) { - case MotorControllerFrontLeftEnable: return "MotorControllerFrontLeftEnable"; - case MotorControllerFrontRightEnable: return "MotorControllerFrontRightEnable"; - case MotorControllerBackLeftEnable: return "MotorControllerBackLeftEnable"; - case MotorControllerBackRightEnable: return "MotorControllerBackRightEnable"; - case MotorControllerFrontLeftInpTgt: return "MotorControllerFrontLeftInpTgt"; - case MotorControllerFrontRightInpTgt: return "MotorControllerFrontRightInpTgt"; - case MotorControllerBackLeftInpTgt: return "MotorControllerBackLeftInpTgt"; - case MotorControllerBackRightInpTgt: return "MotorControllerBackRightInpTgt"; - case MotorControllerFrontLeftCtrlTyp: return "MotorControllerFrontLeftCtrlTyp"; - case MotorControllerFrontRightCtrlTyp: return "MotorControllerFrontRightCtrlTyp"; - case MotorControllerBackLeftCtrlTyp: return "MotorControllerBackLeftCtrlTyp"; - case MotorControllerBackRightCtrlTyp: return "MotorControllerBackRightCtrlTyp"; - case MotorControllerFrontLeftCtrlMod: return "MotorControllerFrontLeftCtrlMod"; - case MotorControllerFrontRightCtrlMod: return "MotorControllerFrontRightCtrlMod"; - case MotorControllerBackLeftCtrlMod: return "MotorControllerBackLeftCtrlMod"; - case MotorControllerBackRightCtrlMod: return "MotorControllerBackRightCtrlMod"; - case MotorControllerFrontLeftIMotMax: return "MotorControllerFrontLeftIMotMax"; - case MotorControllerFrontRightIMotMax: return "MotorControllerFrontRightIMotMax"; - case MotorControllerBackLeftIMotMax: return "MotorControllerBackLeftIMotMax"; - case MotorControllerBackRightIMotMax: return "MotorControllerBackRightIMotMax"; - case MotorControllerFrontLeftIDcMax: return "MotorControllerFrontLeftIDcMax"; - case MotorControllerFrontRightIDcMax: return "MotorControllerFrontRightIDcMax"; - case MotorControllerBackLeftIDcMax: return "MotorControllerBackLeftIDcMax"; - case MotorControllerBackRightIDcMax: return "MotorControllerBackRightIDcMax"; - case MotorControllerFrontLeftNMotMax: return "MotorControllerFrontLeftNMotMax"; - case MotorControllerFrontRightNMotMax: return "MotorControllerFrontRightNMotMax"; - case MotorControllerBackLeftNMotMax: return "MotorControllerBackLeftNMotMax"; - case MotorControllerBackRightNMotMax: return "MotorControllerBackRightNMotMax"; - case MotorControllerFrontLeftFieldWeakMax: return "MotorControllerFrontLeftFieldWeakMax"; - case MotorControllerFrontRightFieldWeakMax: return "MotorControllerFrontRightFieldWeakMax"; - case MotorControllerBackLeftFieldWeakMax: return "MotorControllerBackLeftFieldWeakMax"; - case MotorControllerBackRightFieldWeakMax: return "MotorControllerBackRightFieldWeakMax"; - case MotorControllerFrontLeftPhaseAdvMax: return "MotorControllerFrontLeftPhaseAdvMax"; - case MotorControllerFrontRightPhaseAdvMax: return "MotorControllerFrontRightPhaseAdvMax"; - case MotorControllerBackLeftPhaseAdvMax: return "MotorControllerBackLeftPhaseAdvMax"; - case MotorControllerBackRightPhaseAdvMax: return "MotorControllerBackRightPhaseAdvMax"; - case MotorControllerFrontLeftBuzzerFreq: return "MotorControllerFrontLeftBuzzerFreq"; - case MotorControllerFrontRightBuzzerFreq: return "MotorControllerFrontRightBuzzerFreq"; - case MotorControllerBackLeftBuzzerFreq: return "MotorControllerBackLeftBuzzerFreq"; - case MotorControllerBackRightBuzzerFreq: return "MotorControllerBackRightBuzzerFreq"; - case MotorControllerFrontLeftBuzzerPattern: return "MotorControllerFrontLeftBuzzerPattern"; - case MotorControllerFrontRightBuzzerPattern: return "MotorControllerFrontRightBuzzerPattern"; - case MotorControllerBackLeftBuzzerPattern: return "MotorControllerBackLeftBuzzerPattern"; - case MotorControllerBackRightBuzzerPattern: return "MotorControllerBackRightBuzzerPattern"; - case MotorControllerFrontLeftLed: return "MotorControllerFrontLeftLed"; - case MotorControllerFrontRightLed: return "MotorControllerFrontRightLed"; - case MotorControllerBackLeftLed: return "MotorControllerBackLeftLed"; - case MotorControllerBackRightLed: return "MotorControllerBackRightLed"; - case MotorControllerFrontLeftPoweroff: return "MotorControllerFrontLeftPoweroff"; - case MotorControllerFrontRightPoweroff: return "MotorControllerFrontRightPoweroff"; - case MotorControllerBackLeftPoweroff: return "MotorControllerBackLeftPoweroff"; - case MotorControllerBackRightPoweroff: return "MotorControllerBackRightPoweroff"; - case MotorControllerFrontLeftDcLink: return "MotorControllerFrontLeftDcLink"; - case MotorControllerFrontRightDcLink: return "MotorControllerFrontRightDcLink"; - case MotorControllerBackLeftDcLink: return "MotorControllerBackLeftDcLink"; - case MotorControllerBackRightDcLink: return "MotorControllerBackRightDcLink"; - case MotorControllerFrontLeftSpeed: return "MotorControllerFrontLeftSpeed"; - case MotorControllerFrontRightSpeed: return "MotorControllerFrontRightSpeed"; - case MotorControllerBackLeftSpeed: return "MotorControllerBackLeftSpeed"; - case MotorControllerBackRightSpeed: return "MotorControllerBackRightSpeed"; - case MotorControllerFrontLeftError: return "MotorControllerFrontLeftError"; - case MotorControllerFrontRightError: return "MotorControllerFrontRightError"; - case MotorControllerBackLeftError: return "MotorControllerBackLeftError"; - case MotorControllerBackRightError: return "MotorControllerBackRightError"; - case MotorControllerFrontLeftAngle: return "MotorControllerFrontLeftAngle"; - case MotorControllerFrontRightAngle: return "MotorControllerFrontRightAngle"; - case MotorControllerBackLeftAngle: return "MotorControllerBackLeftAngle"; - case MotorControllerBackRightAngle: return "MotorControllerBackRightAngle"; - case MotorControllerFrontLeftDcPhaA: return "MotorControllerFrontLeftDcPhaA"; - case MotorControllerFrontRightDcPhaA: return "MotorControllerFrontRightDcPhaA"; - case MotorControllerBackLeftDcPhaA: return "MotorControllerBackLeftDcPhaA"; - case MotorControllerBackRightDcPhaA: return "MotorControllerBackRightDcPhaA"; - case MotorControllerFrontLeftDcPhaB: return "MotorControllerFrontLeftDcPhaB"; - case MotorControllerFrontRightDcPhaB: return "MotorControllerFrontRightDcPhaB"; - case MotorControllerBackLeftDcPhaB: return "MotorControllerBackLeftDcPhaB"; - case MotorControllerBackRightDcPhaB: return "MotorControllerBackRightDcPhaB"; - case MotorControllerFrontLeftDcPhaC: return "MotorControllerFrontLeftDcPhaC"; - case MotorControllerFrontRightDcPhaC: return "MotorControllerFrontRightDcPhaC"; - case MotorControllerBackLeftDcPhaC: return "MotorControllerBackLeftDcPhaC"; - case MotorControllerBackRightDcPhaC: return "MotorControllerBackRightDcPhaC"; - case MotorControllerFrontLeftChops: return "MotorControllerFrontLeftChops"; - case MotorControllerFrontRightChops: return "MotorControllerFrontRightChops"; - case MotorControllerBackLeftChops: return "MotorControllerBackLeftChops"; - case MotorControllerBackRightChops: return "MotorControllerBackRightChops"; - case MotorControllerFrontLeftHall: return "MotorControllerFrontLeftHall"; - case MotorControllerFrontRightHall: return "MotorControllerFrontRightHall"; - case MotorControllerBackLeftHall: return "MotorControllerBackLeftHall"; - case MotorControllerBackRightHall: return "MotorControllerBackRightHall"; - case MotorControllerFrontLeftVoltage: return "MotorControllerFrontLeftVoltage"; - case MotorControllerFrontRightVoltage: return "MotorControllerFrontRightVoltage"; - case MotorControllerBackLeftVoltage: return "MotorControllerBackLeftVoltage"; - case MotorControllerBackRightVoltage: return "MotorControllerBackRightVoltage"; - case MotorControllerFrontLeftTemp: return "MotorControllerFrontLeftTemp"; - case MotorControllerFrontRightTemp: return "MotorControllerFrontRightTemp"; - case MotorControllerBackLeftTemp: return "MotorControllerBackLeftTemp"; - case MotorControllerBackRightTemp: return "MotorControllerBackRightTemp"; + case MotorController::Command::Enable: return "Enable (Command, Front, Left)"; + case MotorController::Command::Enable: return "Enable (Command, Front, Right)"; + case MotorController::Command::Enable: return "Enable (Command, Back, Left)"; + case MotorController::Command::Enable: return "Enable (Command, Back, Right)"; + case MotorController::Command::InpTgt: return "InpTgt (Command, Front, Left)"; + case MotorController::Command::InpTgt: return "InpTgt (Command, Front, Right)"; + case MotorController::Command::InpTgt: return "InpTgt (Command, Back, Left)"; + case MotorController::Command::InpTgt: return "InpTgt (Command, Back, Right)"; + case MotorController::Command::CtrlTyp: return "CtrlTyp (Command, Front, Left)"; + case MotorController::Command::CtrlTyp: return "CtrlTyp (Command, Front, Right)"; + case MotorController::Command::CtrlTyp: return "CtrlTyp (Command, Back, Left)"; + case MotorController::Command::CtrlTyp: return "CtrlTyp (Command, Back, Right)"; + case MotorController::Command::CtrlMod: return "CtrlMod (Command, Front, Left)"; + case MotorController::Command::CtrlMod: return "CtrlMod (Command, Front, Right)"; + case MotorController::Command::CtrlMod: return "CtrlMod (Command, Back, Left)"; + case MotorController::Command::CtrlMod: return "CtrlMod (Command, Back, Right)"; + case MotorController::Command::IMotMax: return "IMotMax (Command, Front, Left)"; + case MotorController::Command::IMotMax: return "IMotMax (Command, Front, Right)"; + case MotorController::Command::IMotMax: return "IMotMax (Command, Back, Left)"; + case MotorController::Command::IMotMax: return "IMotMax (Command, Back, Right)"; + case MotorController::Command::IDcMax: return "IDcMax (Command, Front, Left)"; + case MotorController::Command::IDcMax: return "IDcMax (Command, Front, Right)"; + case MotorController::Command::IDcMax: return "IDcMax (Command, Back, Left)"; + case MotorController::Command::IDcMax: return "IDcMax (Command, Back, Right)"; + case MotorController::Command::NMotMax: return "NMotMax (Command, Front, Left)"; + case MotorController::Command::NMotMax: return "NMotMax (Command, Front, Right)"; + case MotorController::Command::NMotMax: return "NMotMax (Command, Back, Left)"; + case MotorController::Command::NMotMax: return "NMotMax (Command, Back, Right)"; + case MotorController::Command::FieldWeakMax: return "FieldWeakMax (Command, Front, Left)"; + case MotorController::Command::FieldWeakMax: return "FieldWeakMax (Command, Front, Right)"; + case MotorController::Command::FieldWeakMax: return "FieldWeakMax (Command, Back, Left)"; + case MotorController::Command::FieldWeakMax: return "FieldWeakMax (Command, Back, Right)"; + case MotorController::Command::PhaseAdvMax: return "PhaseAdvMax (Command, Front, Left)"; + case MotorController::Command::PhaseAdvMax: return "PhaseAdvMax (Command, Front, Right)"; + case MotorController::Command::PhaseAdvMax: return "PhaseAdvMax (Command, Back, Left)"; + case MotorController::Command::PhaseAdvMax: return "PhaseAdvMax (Command, Back, Right)"; + case MotorController::Command::BuzzerFreq: return "BuzzerFreq (Command, Front, Left)"; + case MotorController::Command::BuzzerFreq: return "BuzzerFreq (Command, Front, Right)"; + case MotorController::Command::BuzzerFreq: return "BuzzerFreq (Command, Back, Left)"; + case MotorController::Command::BuzzerFreq: return "BuzzerFreq (Command, Back, Right)"; + case MotorController::Command::BuzzerPattern: return "BuzzerPattern (Command, Front, Left)"; + case MotorController::Command::BuzzerPattern: return "BuzzerPattern (Command, Front, Right)"; + case MotorController::Command::BuzzerPattern: return "BuzzerPattern (Command, Back, Left)"; + case MotorController::Command::BuzzerPattern: return "BuzzerPattern (Command, Back, Right)"; + case MotorController::Command::Led: return "Led (Command, Front, Left)"; + case MotorController::Command::Led: return "Led (Command, Front, Right)"; + case MotorController::Command::Led: return "Led (Command, Back, Left)"; + case MotorController::Command::Led: return "Led (Command, Back, Right)"; + case MotorController::Command::Poweroff: return "Poweroff (Command, Front, Left)"; + case MotorController::Command::Poweroff: return "Poweroff (Command, Front, Right)"; + case MotorController::Command::Poweroff: return "Poweroff (Command, Back, Left)"; + case MotorController::Command::Poweroff: return "Poweroff (Command, Back, Right)"; + case MotorController::Feedback::DcLink: return "DcLink (Feedback, Front, Left)"; + case MotorController::Feedback::DcLink: return "DcLink (Feedback, Front, Right)"; + case MotorController::Feedback::DcLink: return "DcLink (Feedback, Back, Left)"; + case MotorController::Feedback::DcLink: return "DcLink (Feedback, Back, Right)"; + case MotorController::Feedback::Speed: return "Speed (Feedback, Front, Left)"; + case MotorController::Feedback::Speed: return "Speed (Feedback, Front, Right)"; + case MotorController::Feedback::Speed: return "Speed (Feedback, Back, Left)"; + case MotorController::Feedback::Speed: return "Speed (Feedback, Back, Right)"; + case MotorController::Feedback::Error: return "Error (Feedback, Front, Left)"; + case MotorController::Feedback::Error: return "Error (Feedback, Front, Right)"; + case MotorController::Feedback::Error: return "Error (Feedback, Back, Left)"; + case MotorController::Feedback::Error: return "Error (Feedback, Back, Right)"; + case MotorController::Feedback::Angle: return "Angle (Feedback, Front, Left)"; + case MotorController::Feedback::Angle: return "Angle (Feedback, Front, Right)"; + case MotorController::Feedback::Angle: return "Angle (Feedback, Back, Left)"; + case MotorController::Feedback::Angle: return "Angle (Feedback, Back, Right)"; + case MotorController::Feedback::DcPhaA: return "DcPhaA (Feedback, Front, Left)"; + case MotorController::Feedback::DcPhaA: return "DcPhaA (Feedback, Front, Right)"; + case MotorController::Feedback::DcPhaA: return "DcPhaA (Feedback, Back, Left)"; + case MotorController::Feedback::DcPhaA: return "DcPhaA (Feedback, Back, Right)"; + case MotorController::Feedback::DcPhaB: return "DcPhaB (Feedback, Front, Left)"; + case MotorController::Feedback::DcPhaB: return "DcPhaB (Feedback, Front, Right)"; + case MotorController::Feedback::DcPhaB: return "DcPhaB (Feedback, Back, Left)"; + case MotorController::Feedback::DcPhaB: return "DcPhaB (Feedback, Back, Right)"; + case MotorController::Feedback::DcPhaC: return "DcPhaC (Feedback, Front, Left)"; + case MotorController::Feedback::DcPhaC: return "DcPhaC (Feedback, Front, Right)"; + case MotorController::Feedback::DcPhaC: return "DcPhaC (Feedback, Back, Left)"; + case MotorController::Feedback::DcPhaC: return "DcPhaC (Feedback, Back, Right)"; + case MotorController::Feedback::Chops: return "Chops (Feedback, Front, Left)"; + case MotorController::Feedback::Chops: return "Chops (Feedback, Front, Right)"; + case MotorController::Feedback::Chops: return "Chops (Feedback, Back, Left)"; + case MotorController::Feedback::Chops: return "Chops (Feedback, Back, Right)"; + case MotorController::Feedback::Hall: return "Hall (Feedback, Front, Left)"; + case MotorController::Feedback::Hall: return "Hall (Feedback, Front, Right)"; + case MotorController::Feedback::Hall: return "Hall (Feedback, Back, Left)"; + case MotorController::Feedback::Hall: return "Hall (Feedback, Back, Right)"; + case MotorController::Feedback::Voltage: return "Voltage (Feedback, Front, Left)"; + case MotorController::Feedback::Voltage: return "Voltage (Feedback, Front, Right)"; + case MotorController::Feedback::Voltage: return "Voltage (Feedback, Back, Left)"; + case MotorController::Feedback::Voltage: return "Voltage (Feedback, Back, Right)"; + case MotorController::Feedback::Temp: return "Temp (Feedback, Front, Left)"; + case MotorController::Feedback::Temp: return "Temp (Feedback, Front, Right)"; + case MotorController::Feedback::Temp: return "Temp (Feedback, Back, Left)"; + case MotorController::Feedback::Temp: return "Temp (Feedback, Back, Right)"; } return "Unknown"; } +} +} -- 2.50.1 From 059a98a1a5a6f4817184a3962eb4f46ed2ddf42b Mon Sep 17 00:00:00 2001 From: 0xFEEDC0DE64 Date: Sun, 23 May 2021 00:42:54 +0200 Subject: [PATCH 6/7] more canbus registers --- bobbycar-can.h | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/bobbycar-can.h b/bobbycar-can.h index ef59fb4..9369b6f 100644 --- a/bobbycar-can.h +++ b/bobbycar-can.h @@ -58,10 +58,12 @@ public: NMotMax = 0b00000011000 | MotorControllerCommandMask, FieldWeakMax = 0b00000011100 | MotorControllerCommandMask, PhaseAdvMax = 0b00000100000 | MotorControllerCommandMask, - BuzzerFreq = 0b00000100100 | MotorControllerCommandMask, - BuzzerPattern = 0b00000101000 | MotorControllerCommandMask, - Led = 0b00000101100 | MotorControllerCommandMask, - Poweroff = 0b00000110000 | MotorControllerCommandMask + CruiseCtrlEna = 0b00000100100 | MotorControllerCommandMask, + CruiseMotTgt = 0b00000101000 | MotorControllerCommandMask, + BuzzerFreq = 0b00000101100 | MotorControllerCommandMask, + BuzzerPattern = 0b00000110000 | MotorControllerCommandMask, + Led = 0b00000110100 | MotorControllerCommandMask, + Poweroff = 0b00000111000 | MotorControllerCommandMask }; }; -- 2.50.1 From 99484cc91d01b14b4ac77f7559dfcb063b0a4384 Mon Sep 17 00:00:00 2001 From: 0xFEEDC0DE64 Date: Sun, 23 May 2021 17:52:23 +0200 Subject: [PATCH 7/7] Indent fixes --- bobbycar-serial.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/bobbycar-serial.h b/bobbycar-serial.h index 2a6430a..58a904a 100644 --- a/bobbycar-serial.h +++ b/bobbycar-serial.h @@ -69,9 +69,9 @@ struct MotorFeedback { uint8_t error = 0; int16_t current = 0; uint16_t chops = 0; - bool hallA = false, - hallB = false, - hallC = false; + bool hallA = false; + bool hallB = false; + bool hallC = false; }; inline uint16_t calculateChecksum(MotorFeedback feedback) { @@ -92,7 +92,7 @@ struct Feedback { int16_t batVoltage = 0; int16_t boardTemp = 0; - int16_t timeoutCntSerial = 0; + int16_t timeoutCntSerial = 0; uint16_t checksum; }; -- 2.50.1