52 lines
1.5 KiB
C++
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();
|
|
}
|