From 71d8c5f26949827dc6504dd365ff0567a98634a9 Mon Sep 17 00:00:00 2001 From: Chris Osborn Date: Wed, 12 Nov 2025 08:23:40 -0800 Subject: [PATCH] Use sendReplyPacket in rs232_complete(), decoded bytes are unsigned --- lib/bus/rs232/FujiBusPacket.cpp | 6 +++++- lib/bus/rs232/rs232.cpp | 4 ++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/lib/bus/rs232/FujiBusPacket.cpp b/lib/bus/rs232/FujiBusPacket.cpp index 11834ea07..5c977940c 100644 --- a/lib/bus/rs232/FujiBusPacket.cpp +++ b/lib/bus/rs232/FujiBusPacket.cpp @@ -108,12 +108,16 @@ bool FujiBusPacket::parse(const std::string &input) unsigned int idx, jdx; uint32_t val, bt; + Debug_printv("Incoming:\n%s\n", util_hexdump(input.data(), input.size()).c_str()); + if (input.size() < sizeof(fujibus_header) + 2) return false; if (((uint8_t) input[0]) != SLIP_END || ((uint8_t) input.back()) != SLIP_END) return false; decoded = decodeSLIP(input); + Debug_printv("Decoded:\n%s\n", util_hexdump(decoded.data(), decoded.size()).c_str()); + if (decoded.size() < sizeof(fujibus_header)) return false; hdr = (fujibus_header *) &decoded[0]; @@ -139,7 +143,7 @@ bool FujiBusPacket::parse(const std::string &input) { for (val = jdx = 0; jdx < _fieldSize; jdx++) { - bt = decoded[offset + idx * _fieldSize + jdx]; + bt = (uint8_t) decoded[offset + idx * _fieldSize + jdx]; val |= bt << (8 * jdx); } _params.push_back(val); diff --git a/lib/bus/rs232/rs232.cpp b/lib/bus/rs232/rs232.cpp index 91ce150cc..547db6d77 100755 --- a/lib/bus/rs232/rs232.cpp +++ b/lib/bus/rs232/rs232.cpp @@ -153,9 +153,13 @@ void virtualDevice::rs232_ack() // RS232 COMPLETE void virtualDevice::rs232_complete() { +#ifdef OBSOLETE fnSystem.delay_microseconds(DELAY_T5); SYSTEM_BUS.write('C'); Debug_println("COMPLETE!"); +#else + SYSTEM_BUS.sendReplyPacket(_devnum, true, nullptr, 0); +#endif /* OBSOLETE */ } // RS232 ERROR