diff --git a/src/helpers/SerialBridge.cpp b/src/helpers/SerialBridge.cpp index f971e39c..eefd751a 100644 --- a/src/helpers/SerialBridge.cpp +++ b/src/helpers/SerialBridge.cpp @@ -29,13 +29,15 @@ SerialBridge::SerialBridge(Stream& serial, mesh::PacketManager* mgr, mesh::RTCCl void SerialBridge::begin() { #if defined(ESP32) - ((HardwareSerial*)_serial)->setPins(BRIDGE_OVER_SERIAL_RX, BRIDGE_OVER_SERIAL_TX); + ((HardwareSerial *)_serial)->setPins(BRIDGE_OVER_SERIAL_RX, BRIDGE_OVER_SERIAL_TX); +#elif defined(NRF52_PLATFORM) + ((HardwareSerial *)_serial)->setPins(BRIDGE_OVER_SERIAL_RX, BRIDGE_OVER_SERIAL_TX); #elif defined(RP2040_PLATFORM) - ((HardwareSerial*)_serial)->setRX(BRIDGE_OVER_SERIAL_RX); - ((HardwareSerial*)_serial)->setTX(BRIDGE_OVER_SERIAL_TX); + ((SerialUART *)_serial)->setRX(BRIDGE_OVER_SERIAL_RX); + ((SerialUART *)_serial)->setTX(BRIDGE_OVER_SERIAL_TX); #elif defined(STM32_PLATFORM) - ((HardwareSerial*)_serial)->setRx(BRIDGE_OVER_SERIAL_RX); - ((HardwareSerial*)_serial)->setTx(BRIDGE_OVER_SERIAL_TX); + ((HardwareSerial *)_serial)->setRx(BRIDGE_OVER_SERIAL_RX); + ((HardwareSerial *)_serial)->setTx(BRIDGE_OVER_SERIAL_TX); #else #error SerialBridge was not tested on the current platform #endif @@ -82,21 +84,20 @@ void SerialBridge::loop() { if (_rx_buffer_pos >= 4) { uint16_t len = (_rx_buffer[2] << 8) | _rx_buffer[3]; - if (len > MAX_PACKET_PAYLOAD) { + if (len > (MAX_TRANS_UNIT + 1)) { _rx_buffer_pos = 0; // Invalid length, reset return; } - if (_rx_buffer_pos == len + SERIAL_OVERHEAD) { // Full packet received - uint16_t checksum = (_rx_buffer[4 + len] << 8) | _rx_buffer[5 + len]; - if (checksum == fletcher16(_rx_buffer + 4, len)) { + if (_rx_buffer_pos == len + SERIAL_OVERHEAD) { // Full packet received + uint16_t checksum = (_rx_buffer[4 + len] << 8) | _rx_buffer[5 + len]; + if (checksum == fletcher16(_rx_buffer + 4, len)) { #if MESH_PACKET_LOGGING - Serial.printf("%s: BRIDGE: RX, len=%d crc=0x%04x\n", getLogDateTime(), len, checksum); + Serial.printf("%s: BRIDGE: RX, len=%d crc=0x%04x\n", getLogDateTime(), len, checksum); #endif - mesh::Packet *pkt = _mgr->allocNew(); + mesh::Packet* pkt = _mgr->allocNew(); if (pkt) { - memcpy(pkt->payload, _rx_buffer + 4, len); - pkt->payload_len = len; + pkt->readFrom(_rx_buffer + 4, len); onPacketReceived(pkt); } }