Merge pull request #328 from bobbycar-graz/remote-fixes
This commit is contained in:
@ -127,6 +127,7 @@ set(headers
|
|||||||
displays/menus/networksettingsmenu.h
|
displays/menus/networksettingsmenu.h
|
||||||
displays/menus/otamenu.h
|
displays/menus/otamenu.h
|
||||||
displays/menus/profilesmenu.h
|
displays/menus/profilesmenu.h
|
||||||
|
displays/menus/remotecontrolmodesettingsmenu.h
|
||||||
displays/menus/selectbuildserverbranch.h
|
displays/menus/selectbuildserverbranch.h
|
||||||
displays/menus/selectbuildservermenu.h
|
displays/menus/selectbuildservermenu.h
|
||||||
displays/menus/selectmodemenu.h
|
displays/menus/selectmodemenu.h
|
||||||
@ -368,6 +369,7 @@ set(sources
|
|||||||
displays/menus/networksettingsmenu.cpp
|
displays/menus/networksettingsmenu.cpp
|
||||||
displays/menus/otamenu.cpp
|
displays/menus/otamenu.cpp
|
||||||
displays/menus/profilesmenu.cpp
|
displays/menus/profilesmenu.cpp
|
||||||
|
displays/menus/remotecontrolmodesettingsmenu.cpp
|
||||||
displays/menus/selectbuildserverbranch.cpp
|
displays/menus/selectbuildserverbranch.cpp
|
||||||
displays/menus/selectbuildservermenu.cpp
|
displays/menus/selectbuildservermenu.cpp
|
||||||
displays/menus/selectmodemenu.cpp
|
displays/menus/selectmodemenu.cpp
|
||||||
|
@ -160,9 +160,13 @@ struct LarsmModeIterationsAccessor : public RefAccessorSaveSettings<uint8_t> { u
|
|||||||
struct MotortestModeMultiplikatorAccessor : public RefAccessorSaveSettings<uint8_t> { uint8_t &getRef() const override { return profileSettings.motortestMode.multiplikator; } };
|
struct MotortestModeMultiplikatorAccessor : public RefAccessorSaveSettings<uint8_t> { uint8_t &getRef() const override { return profileSettings.motortestMode.multiplikator; } };
|
||||||
struct MotortestMaxPwmAccessor : public RefAccessorSaveSettings<uint16_t> { uint16_t &getRef() const override { return profileSettings.motortestMode.maxPwm; } };
|
struct MotortestMaxPwmAccessor : public RefAccessorSaveSettings<uint16_t> { uint16_t &getRef() const override { return profileSettings.motortestMode.maxPwm; } };
|
||||||
|
|
||||||
|
// MickMode
|
||||||
struct MickModeModelModeAccessor : public RefAccessorSaveSettings<UnifiedModelMode> { UnifiedModelMode &getRef() const override { return profileSettings.mickMode.modelMode; } };
|
struct MickModeModelModeAccessor : public RefAccessorSaveSettings<UnifiedModelMode> { UnifiedModelMode &getRef() const override { return profileSettings.mickMode.modelMode; } };
|
||||||
struct MickModeSmoothingAccessor : public RefAccessorSaveSettings<uint16_t> { uint16_t &getRef() const override { return profileSettings.mickMode.smoothing; } };
|
struct MickModeSmoothingAccessor : public RefAccessorSaveSettings<uint16_t> { uint16_t &getRef() const override { return profileSettings.mickMode.smoothing; } };
|
||||||
|
|
||||||
|
// Remote Control Mode
|
||||||
|
struct RemoteControlModeModelModeAccessor : public RefAccessorSaveSettings<UnifiedModelMode> { UnifiedModelMode &getRef() const override { return profileSettings.remoteControlMode.modelMode; } };
|
||||||
|
|
||||||
// Ledstrip
|
// Ledstrip
|
||||||
struct EnableLedAnimationAccessor : public NewSettingsAccessor<bool> { ConfigWrapper<bool> &getConfig() const override { return configs.ledstrip.enableLedAnimation; } };
|
struct EnableLedAnimationAccessor : public NewSettingsAccessor<bool> { ConfigWrapper<bool> &getConfig() const override { return configs.ledstrip.enableLedAnimation; } };
|
||||||
struct EnableBrakeLightsAccessor : public NewSettingsAccessor<bool> { ConfigWrapper<bool> &getConfig() const override { return configs.ledstrip.enableBrakeLights; } };
|
struct EnableBrakeLightsAccessor : public NewSettingsAccessor<bool> { ConfigWrapper<bool> &getConfig() const override { return configs.ledstrip.enableBrakeLights; } };
|
||||||
|
@ -0,0 +1,56 @@
|
|||||||
|
#include "modesettingsaction.h"
|
||||||
|
|
||||||
|
// 3rdparty lib includes
|
||||||
|
#include <screenmanager.h>
|
||||||
|
|
||||||
|
// local includes
|
||||||
|
#include "globals.h"
|
||||||
|
#include "modes/defaultmode.h"
|
||||||
|
#include "modes/mickmode.h"
|
||||||
|
#include "modes/tempomatmode.h"
|
||||||
|
#include "modes/larsmmode.h"
|
||||||
|
#ifdef FEATURE_GAMETRAK
|
||||||
|
#include "modes/gametrakmode.h"
|
||||||
|
#endif
|
||||||
|
#include "modes/motortestmode.h"
|
||||||
|
#ifdef FEATURE_JOYSTICK
|
||||||
|
#include "modes/wheelchairmode.h"
|
||||||
|
#endif
|
||||||
|
#include "modes/remotecontrolmode.h"
|
||||||
|
#include "displays/menus/defaultmodesettingsmenu.h"
|
||||||
|
#include "displays/menus/tempomatmodesettingsmenu.h"
|
||||||
|
#include "displays/menus/larsmmodesettingsmenu.h"
|
||||||
|
#ifdef FEATURE_GAMETRAK
|
||||||
|
#include "displays/menus/gametrakmodesettingsmenu.h"
|
||||||
|
#endif
|
||||||
|
#include "displays/menus/mickmodesettingsmenu.h"
|
||||||
|
#include "displays/menus/motortestmodesettingsmenu.h"
|
||||||
|
#include "displays/menus/remotecontrolmodesettingsmenu.h"
|
||||||
|
|
||||||
|
void ModeSettingsAction::triggered()
|
||||||
|
{
|
||||||
|
if (currentMode == &modes::defaultMode
|
||||||
|
#ifdef FEATURE_JOYSTICK
|
||||||
|
|| currentMode == &modes::wheelchairMode
|
||||||
|
#endif
|
||||||
|
)
|
||||||
|
pushScreen<DefaultModeSettingsMenu>();
|
||||||
|
else if (currentMode == &modes::tempomatMode)
|
||||||
|
pushScreen<TempomatModeSettingsMenu>();
|
||||||
|
else if (currentMode == &modes::larsmMode)
|
||||||
|
pushScreen<LarsmModeSettingsMenu>();
|
||||||
|
else if (currentMode == &modes::mickMode)
|
||||||
|
pushScreen<MickModeSettingsMenu>();
|
||||||
|
else if (currentMode == &modes::motortestMode)
|
||||||
|
pushScreen<MotortestModeSettingsMenu>();
|
||||||
|
else if (currentMode == &modes::remoteControlMode)
|
||||||
|
pushScreen<RemoteControlModeSettingsMenu>();
|
||||||
|
#ifdef FEATURE_GAMETRAK
|
||||||
|
else if (currentMode == &modes::gametrakMode)
|
||||||
|
pushScreen<GametrakModeSettingsMenu>();
|
||||||
|
#endif
|
||||||
|
else
|
||||||
|
{
|
||||||
|
//Serial.println("Unknown mode, cannot open settings for it");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -1,56 +1,11 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include "actioninterface.h"
|
#include "actioninterface.h"
|
||||||
#include "globals.h"
|
|
||||||
#include "modes/defaultmode.h"
|
|
||||||
#include "modes/mickmode.h"
|
|
||||||
#include "modes/tempomatmode.h"
|
|
||||||
#include "modes/larsmmode.h"
|
|
||||||
#include "modes/gametrakmode.h"
|
|
||||||
#include "modes/motortestmode.h"
|
|
||||||
#ifdef FEATURE_JOYSTICK
|
|
||||||
#include "modes/wheelchairmode.h"
|
|
||||||
#endif
|
|
||||||
#include "displays/menus/defaultmodesettingsmenu.h"
|
|
||||||
#include "displays/menus/tempomatmodesettingsmenu.h"
|
|
||||||
#include "displays/menus/larsmmodesettingsmenu.h"
|
|
||||||
#include "displays/menus/gametrakmodesettingsmenu.h"
|
|
||||||
#include "displays/menus/mickmodesettingsmenu.h"
|
|
||||||
#include "displays/menus/motortestmodesettingsmenu.h"
|
|
||||||
#include "screenmanager.h"
|
|
||||||
|
|
||||||
using namespace espgui;
|
using namespace espgui;
|
||||||
|
|
||||||
namespace {
|
|
||||||
class ModeSettingsAction : public virtual ActionInterface
|
class ModeSettingsAction : public virtual ActionInterface
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
void triggered() override;
|
void triggered() override;
|
||||||
};
|
};
|
||||||
|
|
||||||
void ModeSettingsAction::triggered()
|
|
||||||
{
|
|
||||||
if (currentMode == &modes::defaultMode
|
|
||||||
#ifdef FEATURE_JOYSTICK
|
|
||||||
|| currentMode == &modes::wheelchairMode
|
|
||||||
#endif
|
|
||||||
)
|
|
||||||
pushScreen<DefaultModeSettingsMenu>();
|
|
||||||
else if (currentMode == &modes::tempomatMode)
|
|
||||||
pushScreen<TempomatModeSettingsMenu>();
|
|
||||||
else if (currentMode == &modes::larsmMode)
|
|
||||||
pushScreen<LarsmModeSettingsMenu>();
|
|
||||||
else if (currentMode == &modes::mickMode)
|
|
||||||
pushScreen<MickModeSettingsMenu>();
|
|
||||||
else if (currentMode == &modes::motortestMode)
|
|
||||||
pushScreen<MotortestModeSettingsMenu>();
|
|
||||||
#ifdef FEATURE_GAMETRAK
|
|
||||||
else if (currentMode == &modes::gametrakMode)
|
|
||||||
pushScreen<GametrakModeSettingsMenu>();
|
|
||||||
#endif
|
|
||||||
else
|
|
||||||
{
|
|
||||||
//Serial.println("Unknown mode, cannot open settings for it");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
@ -19,9 +19,7 @@
|
|||||||
|
|
||||||
namespace {
|
namespace {
|
||||||
constexpr char TEXT_DEFAULTMODESETTIGNS[] = "Default mode settings";
|
constexpr char TEXT_DEFAULTMODESETTIGNS[] = "Default mode settings";
|
||||||
constexpr char TEXT_DEFAULTMODESETTINGS[] = "Default mode settings";
|
|
||||||
constexpr char TEXT_MODELMODE[] = "Model mode";
|
constexpr char TEXT_MODELMODE[] = "Model mode";
|
||||||
constexpr char TEXT_HYBRIDMODE[] = "Hybrid mode";
|
|
||||||
constexpr char TEXT_SQUAREGAS[] = "Square gas";
|
constexpr char TEXT_SQUAREGAS[] = "Square gas";
|
||||||
constexpr char TEXT_SQUAREBREMS[] = "Square brems";
|
constexpr char TEXT_SQUAREBREMS[] = "Square brems";
|
||||||
constexpr char TEXT_ENABLESMOOTHINGUP[] = "Enable up smoothing";
|
constexpr char TEXT_ENABLESMOOTHINGUP[] = "Enable up smoothing";
|
||||||
|
@ -9,6 +9,7 @@
|
|||||||
#include "displays/menus/defaultmodesettingsmenu.h"
|
#include "displays/menus/defaultmodesettingsmenu.h"
|
||||||
#include "displays/menus/gametrakmodesettingsmenu.h"
|
#include "displays/menus/gametrakmodesettingsmenu.h"
|
||||||
#include "displays/menus/larsmmodesettingsmenu.h"
|
#include "displays/menus/larsmmodesettingsmenu.h"
|
||||||
|
#include "displays/menus/remotecontrolmodesettingsmenu.h"
|
||||||
#include "displays/menus/tempomatmodesettingsmenu.h"
|
#include "displays/menus/tempomatmodesettingsmenu.h"
|
||||||
|
|
||||||
namespace {
|
namespace {
|
||||||
@ -16,6 +17,7 @@ constexpr char TEXT_MODESSETTINGS[] = "Modes settings";
|
|||||||
constexpr char TEXT_DEFAULTMODESETTIGNS[] = "Default mode settings";
|
constexpr char TEXT_DEFAULTMODESETTIGNS[] = "Default mode settings";
|
||||||
constexpr char TEXT_TEMPOMATMODESETTINGS[] = "Tempomat mode settings";
|
constexpr char TEXT_TEMPOMATMODESETTINGS[] = "Tempomat mode settings";
|
||||||
constexpr char TEXT_LARSMMODESETTINGS[] = "Larsm mode settings";
|
constexpr char TEXT_LARSMMODESETTINGS[] = "Larsm mode settings";
|
||||||
|
constexpr char TEXT_REMOTECONTROLMODESETTINGS[] = "Remote mode settings";
|
||||||
constexpr char TEXT_GAMETRAKMODESETTINGS[] = "Gametrak mode settings";
|
constexpr char TEXT_GAMETRAKMODESETTINGS[] = "Gametrak mode settings";
|
||||||
constexpr char TEXT_BACK[] = "Back";
|
constexpr char TEXT_BACK[] = "Back";
|
||||||
} // namespace
|
} // namespace
|
||||||
@ -26,6 +28,7 @@ ModesSettingsMenu::ModesSettingsMenu()
|
|||||||
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_DEFAULTMODESETTIGNS>, PushScreenAction<DefaultModeSettingsMenu>>>();
|
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_DEFAULTMODESETTIGNS>, PushScreenAction<DefaultModeSettingsMenu>>>();
|
||||||
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_TEMPOMATMODESETTINGS>, PushScreenAction<TempomatModeSettingsMenu>>>();
|
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_TEMPOMATMODESETTINGS>, PushScreenAction<TempomatModeSettingsMenu>>>();
|
||||||
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_LARSMMODESETTINGS>, PushScreenAction<LarsmModeSettingsMenu>>>();
|
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_LARSMMODESETTINGS>, PushScreenAction<LarsmModeSettingsMenu>>>();
|
||||||
|
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_REMOTECONTROLMODESETTINGS>, PushScreenAction<RemoteControlModeSettingsMenu>>>();
|
||||||
#ifdef FEATURE_GAMETRAK
|
#ifdef FEATURE_GAMETRAK
|
||||||
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_GAMETRAKMODESETTINGS>, SwitchScreenAction<GametrakModeSettingsMenu>>>();
|
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_GAMETRAKMODESETTINGS>, SwitchScreenAction<GametrakModeSettingsMenu>>>();
|
||||||
#endif
|
#endif
|
||||||
|
45
main/displays/menus/remotecontrolmodesettingsmenu.cpp
Normal file
45
main/displays/menus/remotecontrolmodesettingsmenu.cpp
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
#include "remotecontrolmodesettingsmenu.h"
|
||||||
|
|
||||||
|
// 3rdparty lib includes
|
||||||
|
#include <actions/popscreenaction.h>
|
||||||
|
#include <actions/pushscreenaction.h>
|
||||||
|
#include <changevaluedisplay.h>
|
||||||
|
#include <icons/back.h>
|
||||||
|
#include <menuitem.h>
|
||||||
|
|
||||||
|
// local includes
|
||||||
|
#include "accessors/settingsaccessors.h"
|
||||||
|
#include "changevaluedisplay_unifiedmodelmode.h"
|
||||||
|
#include "displays/bobbychangevaluedisplay.h"
|
||||||
|
|
||||||
|
namespace {
|
||||||
|
constexpr char TEXT_REMOTEMODESETTINGS[] = "Remote mode settings";
|
||||||
|
constexpr char TEXT_MODELMODE[] = "Model mode";
|
||||||
|
constexpr char TEXT_BACK[] = "Back";
|
||||||
|
|
||||||
|
using RemoteControlModeModelModeChangeDisplay = espgui::makeComponent<
|
||||||
|
BobbyChangeValueDisplay<UnifiedModelMode>,
|
||||||
|
espgui::StaticText<TEXT_MODELMODE>,
|
||||||
|
RemoteControlModeModelModeAccessor,
|
||||||
|
espgui::ConfirmActionInterface<espgui::PopScreenAction>,
|
||||||
|
espgui::BackActionInterface<espgui::PopScreenAction>
|
||||||
|
>;
|
||||||
|
} // namespace
|
||||||
|
|
||||||
|
RemoteControlModeSettingsMenu::RemoteControlModeSettingsMenu()
|
||||||
|
{
|
||||||
|
using namespace espgui;
|
||||||
|
|
||||||
|
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_MODELMODE>, PushScreenAction<RemoteControlModeModelModeChangeDisplay>>>();
|
||||||
|
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, PopScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>();
|
||||||
|
}
|
||||||
|
|
||||||
|
std::string RemoteControlModeSettingsMenu::text() const
|
||||||
|
{
|
||||||
|
return TEXT_REMOTEMODESETTINGS;
|
||||||
|
}
|
||||||
|
|
||||||
|
void RemoteControlModeSettingsMenu::back()
|
||||||
|
{
|
||||||
|
espgui::popScreen();
|
||||||
|
}
|
14
main/displays/menus/remotecontrolmodesettingsmenu.h
Normal file
14
main/displays/menus/remotecontrolmodesettingsmenu.h
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
// local includes
|
||||||
|
#include "displays/bobbymenudisplay.h"
|
||||||
|
|
||||||
|
class RemoteControlModeSettingsMenu : public BobbyMenuDisplay
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
RemoteControlModeSettingsMenu();
|
||||||
|
|
||||||
|
std::string text() const override;
|
||||||
|
|
||||||
|
void back() override;
|
||||||
|
};
|
@ -13,6 +13,7 @@ RemoteControlMode remoteControlMode;
|
|||||||
|
|
||||||
void RemoteControlMode::update()
|
void RemoteControlMode::update()
|
||||||
{
|
{
|
||||||
|
auto pair = split(profileSettings.defaultMode.modelMode);
|
||||||
if (!m_remoteCommand || espchrono::ago(m_timestamp) > 500ms)
|
if (!m_remoteCommand || espchrono::ago(m_timestamp) > 500ms)
|
||||||
{
|
{
|
||||||
start();
|
start();
|
||||||
@ -30,8 +31,8 @@ void RemoteControlMode::update()
|
|||||||
{
|
{
|
||||||
for (bobbycar::protocol::serial::MotorState &motor : motors())
|
for (bobbycar::protocol::serial::MotorState &motor : motors())
|
||||||
{
|
{
|
||||||
motor.ctrlTyp = bobbycar::protocol::ControlType::FieldOrientedControl;
|
motor.ctrlTyp = pair.first;
|
||||||
motor.ctrlMod = bobbycar::protocol::ControlMode::Torque;
|
motor.ctrlMod = pair.second;
|
||||||
motor.cruiseCtrlEna = false;
|
motor.cruiseCtrlEna = false;
|
||||||
motor.nCruiseMotTgt = 0;
|
motor.nCruiseMotTgt = 0;
|
||||||
}
|
}
|
||||||
|
@ -121,6 +121,10 @@ constexpr ProfileSettings::WheelchairMode defaultWheelChairMode {
|
|||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
constexpr ProfileSettings::RemoteControlMode defaultRemoteControlMode {
|
||||||
|
.modelMode = UnifiedModelMode::FocTorque,
|
||||||
|
};
|
||||||
|
|
||||||
constexpr ProfileSettings defaultProfileSettings {
|
constexpr ProfileSettings defaultProfileSettings {
|
||||||
.limits = defaultLimits,
|
.limits = defaultLimits,
|
||||||
.controllerHardware = defaultControllerHardware,
|
.controllerHardware = defaultControllerHardware,
|
||||||
@ -129,6 +133,7 @@ constexpr ProfileSettings defaultProfileSettings {
|
|||||||
.larsmMode = defaultLarsmMode,
|
.larsmMode = defaultLarsmMode,
|
||||||
.mickMode = defaultMickMode,
|
.mickMode = defaultMickMode,
|
||||||
.motortestMode = defaultMotortestMode,
|
.motortestMode = defaultMotortestMode,
|
||||||
|
.remoteControlMode = defaultRemoteControlMode,
|
||||||
#ifdef FEATURE_JOYSTICK
|
#ifdef FEATURE_JOYSTICK
|
||||||
.wheelchairMode = defaultWheelChairMode
|
.wheelchairMode = defaultWheelChairMode
|
||||||
#endif
|
#endif
|
||||||
|
@ -61,6 +61,10 @@ struct ProfileSettings
|
|||||||
uint16_t maxPwm;
|
uint16_t maxPwm;
|
||||||
} motortestMode;
|
} motortestMode;
|
||||||
|
|
||||||
|
struct RemoteControlMode {
|
||||||
|
UnifiedModelMode modelMode;
|
||||||
|
} remoteControlMode;
|
||||||
|
|
||||||
#ifdef FEATURE_JOYSTICK
|
#ifdef FEATURE_JOYSTICK
|
||||||
struct WheelchairMode {
|
struct WheelchairMode {
|
||||||
uint16_t sensitivity0Kmh;
|
uint16_t sensitivity0Kmh;
|
||||||
@ -117,6 +121,8 @@ void ProfileSettings::executeForEveryProfileSetting(T &&callable)
|
|||||||
callable("mick.modelMode", mickMode.modelMode);
|
callable("mick.modelMode", mickMode.modelMode);
|
||||||
callable("mick.smoothing", mickMode.smoothing);
|
callable("mick.smoothing", mickMode.smoothing);
|
||||||
|
|
||||||
|
callable("rc.modelMode", remoteControlMode.modelMode);
|
||||||
|
|
||||||
#ifdef FEATURE_JOYSTICK
|
#ifdef FEATURE_JOYSTICK
|
||||||
callable("wc.ses0", wheelchairMode.sensitivity0Kmh);
|
callable("wc.ses0", wheelchairMode.sensitivity0Kmh);
|
||||||
callable("wc.ses50", wheelchairMode.sensitivity50Kmh);
|
callable("wc.ses50", wheelchairMode.sensitivity50Kmh);
|
||||||
|
Reference in New Issue
Block a user