Files
MinumelArmMCU/MainLoop.cpp
T

59 lines
1.3 KiB
C++
Raw Normal View History

#include "MainLoop.hpp"
2025-12-14 18:57:28 +01:00
#include "StateMachine.hpp"
#include "CommandParser.hpp"
2025-12-14 18:57:28 +01:00
MainLoop::MainLoop() noexcept:
pwmBoard(0x40, 60),
m0(
pwmBoard,
0,
1.0,
1.0,
135.0,
-135.0,
45.0,
180.0,
0,
172,
565
)
{
2025-12-14 18:57:28 +01:00
// Initialize state machine singleton
StateMachine::getInstance();
//m0.setScaleCalibration(RangedMotor::calculateScaleCalibration(90, 95));
}
MainLoop::~MainLoop() noexcept
{
UartHandler::getInstance().close();
}
MainLoop& MainLoop::getInstance() noexcept
{
static MainLoop instance;
return instance;
}
void MainLoop::setup() noexcept
{
2025-12-14 18:57:28 +01:00
UartHandler::getInstance().init(9600);
m0.commitMoveImmediately();
}
void MainLoop::update() noexcept
{
2025-12-14 18:57:28 +01:00
UartHandler& uart = UartHandler::getInstance();
uart.poll();
while(uart.getNumAvailablePackets()) {
uint8_t packet[16];
uart.getNextPacket(packet);
CommandParser::Command command = CommandParser::getInstance().parsePacket(packet);
if (command.instruction == CommandParser::Command::TYPE::MOVE_ABSOLUTE) {
const float moveTarget = (float)command.args[1] / 10.0f;
m0.moveTo(moveTarget);
}
}
}