Files
bobbycar-boardcomputer-firm…/main/modes/remotecontrolmode.cpp
T

52 lines
1.5 KiB
C++

#include "remotecontrolmode.h"
// local includes
#include "globals.h"
#include "utils.h"
#include "defaultmode.h"
using namespace std::chrono_literals;
namespace modes {
RemoteControlMode remoteControlMode;
} // namespace modes
void RemoteControlMode::update()
{
auto pair = split(profileSettings.remoteControlMode.modelMode);
if (!m_remoteCommand || espchrono::ago(m_timestamp) > 500ms)
{
start();
for (bobbycar::protocol::serial::MotorState &motor : motors())
{
motor.ctrlTyp = bobbycar::protocol::ControlType::FieldOrientedControl;
motor.ctrlMod = bobbycar::protocol::ControlMode::OpenMode;
motor.pwm = 0;
motor.cruiseCtrlEna = false;
motor.nCruiseMotTgt = 0;
}
}
else
{
for (bobbycar::protocol::serial::MotorState &motor : motors())
{
motor.ctrlTyp = pair.first;
motor.ctrlMod = pair.second;
motor.cruiseCtrlEna = false;
motor.nCruiseMotTgt = 0;
}
controllers.front.command.left.pwm = m_remoteCommand->frontLeft;
controllers.front.command.right.pwm = m_remoteCommand->frontRight;
controllers.back.command.left.pwm = m_remoteCommand->backLeft;
controllers.back.command.right.pwm = m_remoteCommand->backRight;
}
}
void RemoteControlMode::setRemoteCommand(const RemoteCommand &command)
{
m_remoteCommand = command;
m_timestamp = espchrono::millis_clock::now();
}