error message transmission now happens via uarthandler

This commit is contained in:
Leonetienne
2025-12-15 20:22:28 +01:00
parent ace1b9ef66
commit f1e45d886e
3 changed files with 40 additions and 11 deletions
+29 -5
View File
@@ -14,7 +14,7 @@ UartHandler::~UartHandler()
}
}
UartHandler &UartHandler::getInstance()
UartHandler &UartHandler::getInstance() noexcept
{
static UartHandler instance;
return instance;
@@ -46,8 +46,13 @@ bool UartHandler::isOpen() const noexcept
return (bool)Serial;
}
void UartHandler::poll()
void UartHandler::poll() noexcept
{
if (!isOpen()) {
StateMachine::getInstance().raiseError("Serial closed!");
return;
}
size_t bytesAvail = Serial.available();
if (bytesAvail) {
// Consume at max one byte at a time to give consumers a chance to consume packets
@@ -67,7 +72,7 @@ void UartHandler::poll()
}
}
void UartHandler::pushPacket()
void UartHandler::pushPacket() noexcept
{
memset(packetRingBuf + packetRingBufWritePos * PACKET_SIZE, 0x00, PACKET_SIZE);
memcpy(packetRingBuf + packetRingBufWritePos * PACKET_SIZE, inBuf, inBufPos);
@@ -80,7 +85,7 @@ void UartHandler::pushPacket()
}
}
bool UartHandler::getNextPacket(char* dest)
bool UartHandler::getNextPacket(char* dest) noexcept
{
if (!numPacketsAvailable) {
return false;
@@ -92,8 +97,27 @@ bool UartHandler::getNextPacket(char* dest)
return true;
}
size_t UartHandler::send(const char *buf, size_t nbytes)
{
if (!isOpen()) {
StateMachine::getInstance().raiseError("Serial closed!");
return;
}
uint8_t UartHandler::getNumAvailablePackets() const
return Serial.write(buf, nbytes);
}
size_t UartHandler::send(const String& str)
{
if (!isOpen()) {
StateMachine::getInstance().raiseError("Serial closed!");
return;
}
return Serial.write(str.c_str(), str.length());
}
uint8_t UartHandler::getNumAvailablePackets() const noexcept
{
return numPacketsAvailable;
}