#pragma once #include // This class takes max-16-character packet and parses commands from it // Singleton-class class CommandParser { // 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, } instruction; uint16_t args[2]; }; public: 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(); };