Add full Companion OTA source builds
This commit is contained in:
1 parent
1bceda54a6
commit
88ba5b26cb
19 files changed
+1212
-86
No files matched your search
+1
-1
@@ -43,7 +43,7 @@ does not reflect the GoogleTest count -- run the built binary directly
|
||||
| `test_logical_message_cache` | `src/helpers/LogicalMessageCache.h` | bounded logical-message mapping; stable retry timestamps; exact older retries after newer messages; stale and same-timestamp mismatch rejection |
|
||||
| `test_remote_cli_reply_cache` | `src/helpers/RemoteCliReplyCache.h`, `src/helpers/RemoteCliRequest.h` | authenticated logical-request matching; bounded recent-reply history; backward-compatible retry identity; empty-response completion; on-air truncation and clearing |
|
||||
| `test_companion_frame_queue` | `src/helpers/CompanionFrameQueue.h` | response/required/best-effort classification; reserved capacity; stable priority; safe eviction; message-waiting coalescing |
|
||||
| `test_serial_mode_switch` | `src/helpers/ArduinoSerialInterface.cpp` | exact terminal control-sequence recognition across reads and binary-frame boundaries; passthrough ownership of USB input and suppression of binary output |
|
||||
| `test_serial_mode_switch` | `src/helpers/ArduinoSerialInterface.cpp` | independent terminal/seeder control-sequence recognition across reads and binary-frame boundaries; passthrough ownership of USB input and suppression of binary output |
|
||||
| `test_ble_tx_stall_watchdog` | `src/helpers/BleTxStallWatchdog.h` | exact BLE fragment progress; blocked-reply timeout; rollover-safe elapsed time; disconnect recovery retry and completion |
|
||||
| `test_utils` | `src/Utils.cpp` | `Utils::toHex` (upstream) |
|
||||
|
||||
|
||||
@@ -39,6 +39,7 @@ public:
|
||||
};
|
||||
|
||||
static const char START_TOKEN[] = "+++MESHCORE-TERM-START";
|
||||
static const char SEEDER_TOKEN[] = "ota folder on";
|
||||
|
||||
TEST(SerialModeSwitch, RecognizesControlSequenceAcrossReads) {
|
||||
BufferStream stream;
|
||||
@@ -75,6 +76,44 @@ TEST(SerialModeSwitch, DoesNotScanInsideBinaryFrame) {
|
||||
EXPECT_FALSE(interface.takeControlSequence());
|
||||
}
|
||||
|
||||
TEST(SerialModeSwitch, RecognizesSecondaryControlSequenceSeparately) {
|
||||
BufferStream stream;
|
||||
ArduinoSerialInterface interface;
|
||||
interface.begin(stream, START_TOKEN, SEEDER_TOKEN);
|
||||
interface.enable();
|
||||
uint8_t frame[MAX_FRAME_SIZE] = {};
|
||||
|
||||
stream.push("ota folder ");
|
||||
EXPECT_EQ(interface.checkRecvFrame(frame), 0u);
|
||||
EXPECT_FALSE(interface.takeControlSequence());
|
||||
EXPECT_FALSE(interface.takeSecondaryControlSequence());
|
||||
|
||||
stream.push("on\r\n");
|
||||
EXPECT_EQ(interface.checkRecvFrame(frame), 0u);
|
||||
EXPECT_FALSE(interface.takeControlSequence());
|
||||
EXPECT_TRUE(interface.takeSecondaryControlSequence());
|
||||
EXPECT_FALSE(interface.takeSecondaryControlSequence());
|
||||
EXPECT_EQ(stream.available(), 2); // trailing CRLF belongs to the seeder
|
||||
}
|
||||
|
||||
TEST(SerialModeSwitch, DoesNotScanSecondarySequenceInsideBinaryFrame) {
|
||||
BufferStream stream;
|
||||
ArduinoSerialInterface interface;
|
||||
interface.begin(stream, START_TOKEN, SEEDER_TOKEN);
|
||||
interface.enable();
|
||||
uint8_t frame[MAX_FRAME_SIZE] = {};
|
||||
|
||||
const size_t token_len = strlen(SEEDER_TOKEN);
|
||||
uint8_t header[] = {'<', (uint8_t)token_len, 0};
|
||||
stream.push(header, sizeof(header));
|
||||
stream.push(SEEDER_TOKEN);
|
||||
|
||||
EXPECT_EQ(interface.checkRecvFrame(frame), token_len);
|
||||
EXPECT_EQ(memcmp(frame, SEEDER_TOKEN, token_len), 0);
|
||||
EXPECT_FALSE(interface.takeControlSequence());
|
||||
EXPECT_FALSE(interface.takeSecondaryControlSequence());
|
||||
}
|
||||
|
||||
TEST(SerialModeSwitch, RecognizesControlSequenceAfterBinaryFrame) {
|
||||
BufferStream stream;
|
||||
ArduinoSerialInterface interface;
|
||||
|
||||
Reference in new issue
Block a user