Files
MinumelArmMCU/CommandParser.hpp

30 lines
918 B
C++
Executable File

#pragma once
#include <Arduino.h>
// This class takes max-16-character packet and parses commands from it
// Singleton-class
class CommandParser
{
public:
// Each command is 5 bytes long (assuming no padding)
struct Command {
enum class TYPE : uint8_t {
MOVE_ABSOLUTE = 0x00,
MOVE_RELATIVE = 0x01,
RESET_POSITIONS = 0x02, // Sends all to virtual 0
} instruction;
int16_t args[2];
};
static CommandParser& getInstance() noexcept;
// Expecting command to be a packet of max size UartHandler::PACKET_SIZE
Command parsePacket(const uint8_t* packet) noexcept;
private:
CommandParser() noexcept {};
CommandParser(const CommandParser&) = delete;
CommandParser(CommandParser&&) = delete;
~CommandParser();
};