From 7f90b2b8825c21bc9a50bd546d478b5f24d2b8cc Mon Sep 17 00:00:00 2001 From: 0xFEEDC0DE64 Date: Mon, 28 Jun 2021 10:23:39 +0200 Subject: [PATCH] fixed layout assertions and added namespaces --- bobbycar-can.h | 8 ++++++-- bobbycar-common.h | 6 ++++++ bobbycar-serial.h | 48 +++++++++++++++++++++++++++-------------------- 3 files changed, 40 insertions(+), 22 deletions(-) diff --git a/bobbycar-can.h b/bobbycar-can.h index 9369b6f..7f1abc5 100644 --- a/bobbycar-can.h +++ b/bobbycar-can.h @@ -3,7 +3,9 @@ #include namespace bobbycar { +namespace protocol { namespace can { + template class MotorController { @@ -196,5 +198,7 @@ inline const char *bobbycarCanIdDesc(uint16_t id) } return "Unknown"; } -} -} + +} // namespace can +} // namespace protocol +} // namespace bobbycar diff --git a/bobbycar-common.h b/bobbycar-common.h index b62bfd7..a89079d 100644 --- a/bobbycar-common.h +++ b/bobbycar-common.h @@ -2,6 +2,9 @@ #include +namespace bobbycar { +namespace protocol { + enum class ControlType : uint8_t { Commutation, Sinusoidal, @@ -14,3 +17,6 @@ enum class ControlMode : uint8_t { Speed, // Only with FieldOrientedControl Torque // Only with FieldOrientedControl }; + +} // namespace protocol +} // namespace bobbycar diff --git a/bobbycar-serial.h b/bobbycar-serial.h index 9ae5a20..b5abe2d 100644 --- a/bobbycar-serial.h +++ b/bobbycar-serial.h @@ -4,6 +4,10 @@ #include "bobbycar-common.h" +namespace bobbycar { +namespace protocol { +namespace serial { + struct MotorState { bool enable = false; int16_t pwm = 0; @@ -111,8 +115,8 @@ inline uint16_t calculateChecksum(Feedback feedback) { } -#define ASSERT_LAYOUT(st, memb, off) //\ -//static_assert(offsetof(st, memb) == off, "struct layout wrong"); +#define ASSERT_LAYOUT(st, memb, off) \ + static_assert(offsetof(st, memb) == off, "struct layout wrong"); ASSERT_LAYOUT(Feedback, start, 0); ASSERT_LAYOUT(Feedback, left, 2); @@ -125,26 +129,26 @@ ASSERT_LAYOUT(Feedback, left.dcPhaB, 12); ASSERT_LAYOUT(Feedback, left.dcPhaC, 14); ASSERT_LAYOUT(Feedback, left.chops, 16); ASSERT_LAYOUT(Feedback, left.hallA, 18); -ASSERT_LAYOUT(Feedback, left.hallB, 20); -ASSERT_LAYOUT(Feedback, left.hallC, 22); +ASSERT_LAYOUT(Feedback, left.hallB, 19); +ASSERT_LAYOUT(Feedback, left.hallC, 20); -ASSERT_LAYOUT(Feedback, right, 24); -ASSERT_LAYOUT(Feedback, right.angle, 26); -ASSERT_LAYOUT(Feedback, right.speed, 28); -ASSERT_LAYOUT(Feedback, right.error, 30); -ASSERT_LAYOUT(Feedback, right.dcLink, 32); -ASSERT_LAYOUT(Feedback, right.dcPhaA, 34); -ASSERT_LAYOUT(Feedback, right.dcPhaB, 36); -ASSERT_LAYOUT(Feedback, right.dcPhaC, 38); -ASSERT_LAYOUT(Feedback, right.chops, 40); -ASSERT_LAYOUT(Feedback, right.hallA, 42); -ASSERT_LAYOUT(Feedback, right.hallB, 44); -ASSERT_LAYOUT(Feedback, right.hallC, 48); +ASSERT_LAYOUT(Feedback, right, 22); +ASSERT_LAYOUT(Feedback, right.angle, 22); +ASSERT_LAYOUT(Feedback, right.speed, 24); +ASSERT_LAYOUT(Feedback, right.error, 26); +ASSERT_LAYOUT(Feedback, right.dcLink, 28); +ASSERT_LAYOUT(Feedback, right.dcPhaA, 30); +ASSERT_LAYOUT(Feedback, right.dcPhaB, 32); +ASSERT_LAYOUT(Feedback, right.dcPhaC, 34); +ASSERT_LAYOUT(Feedback, right.chops, 36); +ASSERT_LAYOUT(Feedback, right.hallA, 38); +ASSERT_LAYOUT(Feedback, right.hallB, 39); +ASSERT_LAYOUT(Feedback, right.hallC, 40); -ASSERT_LAYOUT(Feedback, batVoltage, 30); -ASSERT_LAYOUT(Feedback, boardTemp, 32); -ASSERT_LAYOUT(Feedback, timeoutCntSerial, 34); -ASSERT_LAYOUT(Feedback, checksum, 36); +ASSERT_LAYOUT(Feedback, batVoltage, 42); +ASSERT_LAYOUT(Feedback, boardTemp, 44); +ASSERT_LAYOUT(Feedback, timeoutCntSerial, 46); +ASSERT_LAYOUT(Feedback, checksum, 48); static_assert(sizeof(Command) == 32, "sizeof(Command) wrong"); @@ -178,3 +182,7 @@ ASSERT_LAYOUT(Command, buzzer.pattern, 27); ASSERT_LAYOUT(Command, poweroff, 28); ASSERT_LAYOUT(Command, led, 29); ASSERT_LAYOUT(Command, checksum, 30); + +} // namespace serial +} // namespace protocol +} // namespace bobbycar