28#include <PacketSerial.h>
36 constexpr uint8_t FW_VERSION_MAJ = 0U;
37 constexpr uint8_t FW_VERSION_MIN = 0U;
38 constexpr uint8_t FW_VERSION_PATCH = 0U;
39 constexpr char FW_VERSION_SUFFIX[] =
"";
42constexpr uint8_t API_VERSION = 6U;
44constexpr uint32_t SERIAL_BAUDRATE = 115200U;
46constexpr uint8_t MAX_LINE_BUFFER_LEN = 25U;
47constexpr uint8_t MAX_MSG_BUFFER_LEN = 64U;
49enum class AYAB_API :
unsigned char {
64 readEOLsensorsCmd = 0x2A,
65 readEncodersCmd = 0x2B,
75using AYAB_API_t =
enum AYAB_API;
78constexpr uint8_t INDSTATE_LEN = 10U;
79constexpr uint8_t REQLINE_LEN = 3U;
86 virtual void init() = 0;
87 virtual void update() = 0;
88 virtual void send(uint8_t *payload,
size_t length)
const = 0;
89 virtual void sendMsg(AYAB_API_t
id,
const char *msg) = 0;
90 virtual void send_reqLine(
const uint8_t lineNumber,
91 Err_t error = ErrorCode::success)
const = 0;
92 virtual void send_indState(Carriage_t carriage, uint8_t position,
93 Err_t error = ErrorCode::success)
const = 0;
94 virtual void onPacketReceived(
const uint8_t *buffer,
size_t size) = 0;
112 static void update();
113 static void send(uint8_t *payload,
size_t length);
114 static void sendMsg(AYAB_API_t
id,
const char *msg);
115 static void send_reqLine(
const uint8_t lineNumber, Err_t error = ErrorCode::success);
116 static void send_indState(Carriage_t carriage, uint8_t position,
117 Err_t error = ErrorCode::success);
118 static void onPacketReceived(
const uint8_t *buffer,
size_t size);
128 void send(uint8_t *payload,
size_t length)
const final;
129 void sendMsg(AYAB_API_t
id,
const char *msg)
final;
130 void send_reqLine(
const uint8_t lineNumber, Err_t error = ErrorCode::success)
const final;
132 Err_t error = ErrorCode::success)
const final;
137 uint8_t lineBuffer[MAX_LINE_BUFFER_LEN] = {0};
138 uint8_t msgBuffer[MAX_MSG_BUFFER_LEN] = {0};
140 void h_reqInit(
const uint8_t *buffer,
size_t size);
141 void h_reqStart(
const uint8_t *buffer,
size_t size);
142 void h_cnfLine(
const uint8_t *buffer,
size_t size);
151 uint8_t
CRC8(
const uint8_t *buffer,
size_t len)
const;
void send_indState(Carriage_t carriage, uint8_t position, Err_t error=ErrorCode::success) const final
Send indState message.
Definition com.cpp:96
void send_cnfInit(Err_t error) const
Send cnfInit message.
Definition com.cpp:360
void h_reqTest() const
Handle reqTest (request hardware test) command.
Definition com.cpp:321
uint8_t CRC8(const uint8_t *buffer, size_t len) const
Calculate CRC8 of a buffer.
Definition com.cpp:406
void send(uint8_t *payload, size_t length) const final
Send a packet of data.
Definition com.cpp:51
void onPacketReceived(const uint8_t *buffer, size_t size) final
Callback for PacketSerial.
Definition com.cpp:121
void h_unrecognized() const
Handle unrecognized command.
Definition com.cpp:335
void send_cnfStart(Err_t error) const
Send cnfStart message.
Definition com.cpp:373
void init() final
Initialize serial communication.
Definition com.cpp:32
void send_cnfInfo() const
Send cnfInfo message.
Definition com.cpp:343
void sendMsg(AYAB_API_t id, const char *msg) final
send initial msgid followed by null-terminated string
Definition com.cpp:70
void send_reqLine(const uint8_t lineNumber, Err_t error=ErrorCode::success) const final
Send reqLine message.
Definition com.cpp:84
void h_reqStart(const uint8_t *buffer, size_t size)
Handle reqStart (start request) command.
Definition com.cpp:232
void update() final
Service the serial connection.
Definition com.cpp:42
void h_reqInfo() const
Handle reqInfo (request information) command.
Definition com.cpp:312
void h_cnfLine(const uint8_t *buffer, size_t size)
Handle cnfLine (configure line) command.
Definition com.cpp:271
void h_reqInit(const uint8_t *buffer, size_t size)
Handle reqInit (request initialization) command.
Definition com.cpp:205
void send_cnfTest(Err_t error) const
Send cnfTest message.
Definition com.cpp:385
A template class enabling packet-based Serial communication.
Definition PacketSerial.h:29