FEATURE_CAN vs FEATURE_SERIAL
This commit is contained in:
@ -63,6 +63,7 @@ build_flags =
|
|||||||
-DTFT_RST=2
|
-DTFT_RST=2
|
||||||
-DSPI_FREQUENCY=27000000
|
-DSPI_FREQUENCY=27000000
|
||||||
-DDEFAULT_SWAPSCREENBYTES=false
|
-DDEFAULT_SWAPSCREENBYTES=false
|
||||||
|
-DFEATURE_SERIAL
|
||||||
-DPINS_RX1=4
|
-DPINS_RX1=4
|
||||||
-DPINS_TX1=5
|
-DPINS_TX1=5
|
||||||
-DPINS_RX2=25
|
-DPINS_RX2=25
|
||||||
@ -115,6 +116,8 @@ build_flags =
|
|||||||
-DTFT_RST=2
|
-DTFT_RST=2
|
||||||
-DSPI_FREQUENCY=27000000
|
-DSPI_FREQUENCY=27000000
|
||||||
-DDEFAULT_SWAPSCREENBYTES=false
|
-DDEFAULT_SWAPSCREENBYTES=false
|
||||||
|
-DFEATURE_CAN
|
||||||
|
; -DFEATURE_SERIAL
|
||||||
; -DPINS_RX1=4
|
; -DPINS_RX1=4
|
||||||
; -DPINS_TX1=5
|
; -DPINS_TX1=5
|
||||||
; -DPINS_RX2=22
|
; -DPINS_RX2=22
|
||||||
@ -163,7 +166,6 @@ build_flags =
|
|||||||
; -DDEFAULT_GAMETRAKDISTMIN=0
|
; -DDEFAULT_GAMETRAKDISTMIN=0
|
||||||
; -DDEFAULT_GAMETRAKDISTMAX=4095
|
; -DDEFAULT_GAMETRAKDISTMAX=4095
|
||||||
; -DFEATURE_CLOUD
|
; -DFEATURE_CLOUD
|
||||||
-DFEATURE_CAN
|
|
||||||
|
|
||||||
[env:feedc0de_usb]
|
[env:feedc0de_usb]
|
||||||
platform = ${feedc0de.platform}
|
platform = ${feedc0de.platform}
|
||||||
@ -332,6 +334,7 @@ build_flags =
|
|||||||
${default_wheels_inverted.build_flags}
|
${default_wheels_inverted.build_flags}
|
||||||
-DDEFAULT_WHEELDIAMETER=165
|
-DDEFAULT_WHEELDIAMETER=165
|
||||||
; TODO: actually assign pins
|
; TODO: actually assign pins
|
||||||
|
-DFEATURE_SERIAL
|
||||||
-DPINS_RX1=22
|
-DPINS_RX1=22
|
||||||
-DPINS_TX1=25
|
-DPINS_TX1=25
|
||||||
-DPINS_RX2=23
|
-DPINS_RX2=23
|
||||||
@ -421,6 +424,7 @@ build_flags =
|
|||||||
-DTFT_RST=2
|
-DTFT_RST=2
|
||||||
-DSPI_FREQUENCY=27000000
|
-DSPI_FREQUENCY=27000000
|
||||||
-DDEFAULT_SWAPSCREENBYTES=false
|
-DDEFAULT_SWAPSCREENBYTES=false
|
||||||
|
-DFEATURE_SERIAL
|
||||||
-DPINS_RX1=4
|
-DPINS_RX1=4
|
||||||
-DPINS_TX1=5
|
-DPINS_TX1=5
|
||||||
-DPINS_RX2=25
|
-DPINS_RX2=25
|
||||||
|
@ -7,22 +7,22 @@
|
|||||||
|
|
||||||
#include "types.h"
|
#include "types.h"
|
||||||
|
|
||||||
#ifndef FEATURE_CAN
|
#ifdef FEATURE_SERIAL
|
||||||
#include "feedbackparser.h"
|
#include "feedbackparser.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef FEATURE_CAN
|
#ifdef FEATURE_SERIAL
|
||||||
class HardwareSerial;
|
class HardwareSerial;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
namespace {
|
namespace {
|
||||||
struct Controller {
|
struct Controller {
|
||||||
Controller(
|
Controller(
|
||||||
#ifndef FEATURE_CAN
|
#ifdef FEATURE_SERIAL
|
||||||
HardwareSerial &serial,
|
HardwareSerial &serial,
|
||||||
#endif
|
#endif
|
||||||
bool &enableLeft, bool &enableRight, bool &invertLeft, bool &invertRight) :
|
bool &enableLeft, bool &enableRight, bool &invertLeft, bool &invertRight) :
|
||||||
#ifndef FEATURE_CAN
|
#ifdef FEATURE_SERIAL
|
||||||
serial{serial},
|
serial{serial},
|
||||||
#endif
|
#endif
|
||||||
enableLeft{enableLeft}, enableRight{enableRight}, invertLeft{invertLeft}, invertRight{invertRight}
|
enableLeft{enableLeft}, enableRight{enableRight}, invertLeft{invertLeft}, invertRight{invertRight}
|
||||||
@ -31,7 +31,7 @@ struct Controller {
|
|||||||
// Controller(const Controller &) = delete;
|
// Controller(const Controller &) = delete;
|
||||||
// Controller &operator=(const Controller &) = delete;
|
// Controller &operator=(const Controller &) = delete;
|
||||||
|
|
||||||
#ifndef FEATURE_CAN
|
#ifdef FEATURE_SERIAL
|
||||||
std::reference_wrapper<HardwareSerial> serial;
|
std::reference_wrapper<HardwareSerial> serial;
|
||||||
#endif
|
#endif
|
||||||
bool &enableLeft, &enableRight, &invertLeft, &invertRight;
|
bool &enableLeft, &enableRight, &invertLeft, &invertRight;
|
||||||
@ -44,7 +44,7 @@ struct Controller {
|
|||||||
bool feedbackValid{};
|
bool feedbackValid{};
|
||||||
bobbycar::protocol::serial::Feedback feedback{};
|
bobbycar::protocol::serial::Feedback feedback{};
|
||||||
|
|
||||||
#ifndef FEATURE_CAN
|
#ifdef FEATURE_SERIAL
|
||||||
FeedbackParser parser{serial, feedbackValid, feedback};
|
FeedbackParser parser{serial, feedbackValid, feedback};
|
||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
|
@ -60,7 +60,7 @@ public:
|
|||||||
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_WHEELDIAMETERMM>, SwitchScreenAction<WheelDiameterMmChangeScreen>>>();
|
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_WHEELDIAMETERMM>, SwitchScreenAction<WheelDiameterMmChangeScreen>>>();
|
||||||
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_WHEELDIAMETERINCH>, SwitchScreenAction<WheelDiameterInchChangeScreen>>>();
|
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_WHEELDIAMETERINCH>, SwitchScreenAction<WheelDiameterInchChangeScreen>>>();
|
||||||
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_NUMMAGNETPOLES>, SwitchScreenAction<NumMagnetPolesChangeScreen>>>();
|
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_NUMMAGNETPOLES>, SwitchScreenAction<NumMagnetPolesChangeScreen>>>();
|
||||||
#ifndef FEATURE_CAN
|
#ifdef FEATURE_SERIAL
|
||||||
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_SWAPFRONTBACK>, ToggleBoolAction, CheckboxIcon, SwapFrontBackAccessor>>();
|
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_SWAPFRONTBACK>, ToggleBoolAction, CheckboxIcon, SwapFrontBackAccessor>>();
|
||||||
#endif
|
#endif
|
||||||
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, SwitchScreenAction<SettingsMenu>, StaticMenuItemIcon<&icons::back>>>();
|
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, SwitchScreenAction<SettingsMenu>, StaticMenuItemIcon<&icons::back>>>();
|
||||||
|
@ -42,13 +42,13 @@ public:
|
|||||||
explicit Controllers() :
|
explicit Controllers() :
|
||||||
std::array<Controller, 2>{{
|
std::array<Controller, 2>{{
|
||||||
Controller {
|
Controller {
|
||||||
#ifndef FEATURE_CAN
|
#ifdef FEATURE_SERIAL
|
||||||
Serial1,
|
Serial1,
|
||||||
#endif
|
#endif
|
||||||
settings.controllerHardware.enableFrontLeft, settings.controllerHardware.enableFrontRight, settings.controllerHardware.invertFrontLeft, settings.controllerHardware.invertFrontRight
|
settings.controllerHardware.enableFrontLeft, settings.controllerHardware.enableFrontRight, settings.controllerHardware.invertFrontLeft, settings.controllerHardware.invertFrontRight
|
||||||
},
|
},
|
||||||
Controller {
|
Controller {
|
||||||
#ifndef FEATURE_CAN
|
#ifdef FEATURE_SERIAL
|
||||||
Serial2,
|
Serial2,
|
||||||
#endif
|
#endif
|
||||||
settings.controllerHardware.enableBackLeft, settings.controllerHardware.enableBackRight, settings.controllerHardware.invertBackLeft, settings.controllerHardware.invertBackRight
|
settings.controllerHardware.enableBackLeft, settings.controllerHardware.enableBackRight, settings.controllerHardware.invertBackLeft, settings.controllerHardware.invertBackRight
|
||||||
|
10
src/main.cpp
10
src/main.cpp
@ -243,7 +243,7 @@ void setup()
|
|||||||
}
|
}
|
||||||
printMemoryStats("loadSettings()");
|
printMemoryStats("loadSettings()");
|
||||||
|
|
||||||
#ifndef FEATURE_CAN
|
#ifdef FEATURE_SERIAL
|
||||||
bootLabel.redraw("swap front back");
|
bootLabel.redraw("swap front back");
|
||||||
updateSwapFrontBack();
|
updateSwapFrontBack();
|
||||||
printMemoryStats("swapFronBack()");
|
printMemoryStats("swapFronBack()");
|
||||||
@ -309,7 +309,9 @@ void setup()
|
|||||||
|
|
||||||
#ifdef FEATURE_CAN
|
#ifdef FEATURE_CAN
|
||||||
initCan();
|
initCan();
|
||||||
#else
|
#endif
|
||||||
|
|
||||||
|
#ifdef FEATURE_SERIAL
|
||||||
bootLabel.redraw("front Serial begin");
|
bootLabel.redraw("front Serial begin");
|
||||||
controllers.front.serial.get().begin(38400, SERIAL_8N1, PINS_RX1, PINS_TX1);
|
controllers.front.serial.get().begin(38400, SERIAL_8N1, PINS_RX1, PINS_TX1);
|
||||||
|
|
||||||
@ -440,7 +442,9 @@ void loop()
|
|||||||
for (int i = 0; i < 4; i++)
|
for (int i = 0; i < 4; i++)
|
||||||
if (!parseCanInput())
|
if (!parseCanInput())
|
||||||
break;
|
break;
|
||||||
#else
|
#endif
|
||||||
|
|
||||||
|
#ifdef FEATURE_SERIAL
|
||||||
for (Controller &controller : controllers)
|
for (Controller &controller : controllers)
|
||||||
controller.parser.update();
|
controller.parser.update();
|
||||||
#endif
|
#endif
|
||||||
|
@ -32,7 +32,7 @@ constexpr Settings::ControllerHardware defaultControllerHardware {
|
|||||||
|
|
||||||
.wheelDiameter = DEFAULT_WHEELDIAMETER,
|
.wheelDiameter = DEFAULT_WHEELDIAMETER,
|
||||||
.numMagnetPoles = 15,
|
.numMagnetPoles = 15,
|
||||||
#ifndef FEATURE_CAN
|
#ifdef FEATURE_SERIAL
|
||||||
.swapFrontBack = false
|
.swapFrontBack = false
|
||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
@ -50,7 +50,7 @@ constexpr Settings::ControllerHardware mosfetsOffControllerHardware {
|
|||||||
|
|
||||||
.wheelDiameter = 165,
|
.wheelDiameter = 165,
|
||||||
.numMagnetPoles = 15,
|
.numMagnetPoles = 15,
|
||||||
#ifndef FEATURE_CAN
|
#ifdef FEATURE_SERIAL
|
||||||
.swapFrontBack = false
|
.swapFrontBack = false
|
||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
@ -79,7 +79,7 @@ constexpr Settings::ControllerHardware spinnerControllerHardware {
|
|||||||
|
|
||||||
.wheelDiameter = 165,
|
.wheelDiameter = 165,
|
||||||
.numMagnetPoles = 15,
|
.numMagnetPoles = 15,
|
||||||
#ifndef FEATURE_CAN
|
#ifdef FEATURE_SERIAL
|
||||||
.swapFrontBack = false
|
.swapFrontBack = false
|
||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
|
@ -51,7 +51,7 @@ struct Settings
|
|||||||
|
|
||||||
int16_t wheelDiameter; // in mm
|
int16_t wheelDiameter; // in mm
|
||||||
int16_t numMagnetPoles; // virtual RPM per one real RPM
|
int16_t numMagnetPoles; // virtual RPM per one real RPM
|
||||||
#ifndef FEATURE_CAN
|
#ifdef FEATURE_SERIAL
|
||||||
bool swapFrontBack;
|
bool swapFrontBack;
|
||||||
#endif
|
#endif
|
||||||
} controllerHardware;
|
} controllerHardware;
|
||||||
@ -144,7 +144,7 @@ void Settings::executeForEverySetting(T &&callable)
|
|||||||
|
|
||||||
callable("wheelDiameter", controllerHardware.wheelDiameter);
|
callable("wheelDiameter", controllerHardware.wheelDiameter);
|
||||||
callable("numMagnetPoles", controllerHardware.numMagnetPoles);
|
callable("numMagnetPoles", controllerHardware.numMagnetPoles);
|
||||||
#ifndef FEATURE_CAN
|
#ifdef FEATURE_SERIAL
|
||||||
callable("swapFrontBack", controllerHardware.swapFrontBack);
|
callable("swapFrontBack", controllerHardware.swapFrontBack);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -56,7 +56,7 @@ struct WheelDiameterInchAccessor : public virtual AccessorInterface<float>
|
|||||||
void setValue(float value) override { settings.controllerHardware.wheelDiameter = convertFromInch(value); saveSettings(); }
|
void setValue(float value) override { settings.controllerHardware.wheelDiameter = convertFromInch(value); saveSettings(); }
|
||||||
};
|
};
|
||||||
struct NumMagnetPolesAccessor : public RefAccessorSaveSettings<int16_t> { int16_t &getRef() const override { return settings.controllerHardware.numMagnetPoles; } };
|
struct NumMagnetPolesAccessor : public RefAccessorSaveSettings<int16_t> { int16_t &getRef() const override { return settings.controllerHardware.numMagnetPoles; } };
|
||||||
#ifndef FEATURE_CAN
|
#ifdef FEATURE_SERIAL
|
||||||
struct SwapFrontBackAccessor : public RefAccessorSaveSettings<bool> {
|
struct SwapFrontBackAccessor : public RefAccessorSaveSettings<bool> {
|
||||||
bool &getRef() const override { return settings.controllerHardware.swapFrontBack; }
|
bool &getRef() const override { return settings.controllerHardware.swapFrontBack; }
|
||||||
void setValue(bool value) override { RefAccessorSaveSettings<bool>::setValue(value); updateSwapFrontBack(); };
|
void setValue(bool value) override { RefAccessorSaveSettings<bool>::setValue(value); updateSwapFrontBack(); };
|
||||||
|
@ -256,14 +256,15 @@ void fixCommonParams()
|
|||||||
|
|
||||||
void sendCommands()
|
void sendCommands()
|
||||||
{
|
{
|
||||||
#ifndef FEATURE_CAN
|
#ifdef FEATURE_SERIAL
|
||||||
for (Controller &controller : controllers)
|
for (Controller &controller : controllers)
|
||||||
{
|
{
|
||||||
controller.command.start = Command::VALID_HEADER;
|
controller.command.start = Command::VALID_HEADER;
|
||||||
controller.command.checksum = calculateChecksum(controller.command);
|
controller.command.checksum = calculateChecksum(controller.command);
|
||||||
controller.serial.get().write((uint8_t *) &controller.command, sizeof(controller.command));
|
controller.serial.get().write((uint8_t *) &controller.command, sizeof(controller.command));
|
||||||
}
|
}
|
||||||
#else
|
#endif
|
||||||
|
#ifdef FEATURE_CAN
|
||||||
sendCanCommands();
|
sendCanCommands();
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
@ -271,7 +272,7 @@ void sendCommands()
|
|||||||
template<typename T, typename... Args>
|
template<typename T, typename... Args>
|
||||||
void switchScreen(Args&&... args);
|
void switchScreen(Args&&... args);
|
||||||
|
|
||||||
#ifndef FEATURE_CAN
|
#ifdef FEATURE_SERIAL
|
||||||
void updateSwapFrontBack()
|
void updateSwapFrontBack()
|
||||||
{
|
{
|
||||||
controllers.front.serial = settings.controllerHardware.swapFrontBack ? Serial2 : Serial1;
|
controllers.front.serial = settings.controllerHardware.swapFrontBack ? Serial2 : Serial1;
|
||||||
|
Reference in New Issue
Block a user