diff --git a/components/cobs/example/main/cobs_example.cpp b/components/cobs/example/main/cobs_example.cpp index acf8c0391f..e370173272 100644 --- a/components/cobs/example/main/cobs_example.cpp +++ b/components/cobs/example/main/cobs_example.cpp @@ -682,6 +682,24 @@ void test_edge_cases(espp::Logger &logger) { decoded.size(), large_packet.size(), encoded.size()); } } + + // Test 5: Packet of exactly 255 bytes with no zeros in the data + { + std::vector block_len_packet(255, 0x42); + + std::vector encoded = Cobs::encode_packet(block_len_packet); + std::vector decoded = Cobs::decode_packet(encoded); + + bool success = (decoded.size() == block_len_packet.size()) && + (std::memcmp(decoded.data(), block_len_packet.data(), block_len_packet.size()) == 0); + if (success) { + logger.info("Test 5: PASS - Packet of exactly 255 bytes with no zeros"); + } else { + logger.error( + "Test 5: FAIL - Packet of exactly 255 bytes with no zeros (decoded: {}, expected: {}, encoded: {})", + decoded.size(), block_len_packet.size(), encoded.size()); + } + } } extern "C" void app_main(void) { diff --git a/components/cobs/src/cobs.cpp b/components/cobs/src/cobs.cpp index 4eb848061a..9ae8ac33b2 100644 --- a/components/cobs/src/cobs.cpp +++ b/components/cobs/src/cobs.cpp @@ -44,8 +44,7 @@ size_t Cobs::encode_packet(std::span data, std::span out *codep = code; code = 1; codep = encode; - if (!byte) - ++encode; + ++encode; } } *codep = code; // Write final code value