Commit 007e4ca
Fix C++ wrapper reliability issues, add 19 unit tests
Bug fixes:
- Light::write(IPacket): return actual byte count instead of bool (was
converting result > 0, destroying error info and always returning 0 or 1)
- IFd::run_tx(write_func): break on write returning 0 to prevent infinite
loop when device is busy (was spinning forever on len -= 0)
- IFd::run_rx/run_tx: increase internal buffer from 4 to 64 bytes for
better throughput on high-speed serial connections
- IHdlcLinkLayer::getData(): protect m_flushFlag read with m_sendMutex
to fix race condition with flushTx() from another thread
- ISerialLinkLayer::runTx(): break on write returning 0 (same infinite
loop fix as IFd::run_tx)
- FdD destructor: store original uintptr_t* pointer to fix undefined
behavior from delete[] on mismatched type (was allocating uintptr_t[]
but deleting as uint8_t[])
- Proto::end(): add null check for m_link before calling m_link->end()
- Proto::getLostRxFrames(): protect counter access with mutex
New tests (19 added, 101 total):
- CPP_LIGHT (3): WriteReturnsByteCount, WritePacketReturnsByteCount,
SendAndReceive
- CPP_HDLC (3): WriteAndGenerateTxData, SendAndReceiveFrame,
WritePacketInterface
- CPP_FD (10): BeginAndEnd, StaticBufferVariant, DynamicAllocationCleanup,
WriteReturnsProperValues, RunRxWithDirectData, RunTxGeneratesData,
RunTxCallbackBreaksOnZeroWrite, ReceiveCallback, ConnectEventCallback,
CrcModes
- CPP_PACKET (3): PutAndRead, CopyConstructor, Clear
Co-authored-by: Copilot <[email protected]>1 parent a26fd79 commit 007e4ca
File tree
8 files changed
+485
-12
lines changed- src
- link
- unittest
8 files changed
+485
-12
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
22 | 22 | | |
23 | 23 | | |
24 | 24 | | |
| 25 | + | |
25 | 26 | | |
26 | 27 | | |
27 | 28 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
64 | 64 | | |
65 | 65 | | |
66 | 66 | | |
67 | | - | |
| 67 | + | |
68 | 68 | | |
69 | 69 | | |
70 | 70 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
194 | 194 | | |
195 | 195 | | |
196 | 196 | | |
197 | | - | |
| 197 | + | |
| 198 | + | |
| 199 | + | |
| 200 | + | |
198 | 201 | | |
199 | 202 | | |
200 | 203 | | |
| |||
314 | 317 | | |
315 | 318 | | |
316 | 319 | | |
| 320 | + | |
317 | 321 | | |
318 | 322 | | |
| 323 | + | |
319 | 324 | | |
320 | 325 | | |
321 | 326 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
99 | 99 | | |
100 | 100 | | |
101 | 101 | | |
102 | | - | |
| 102 | + | |
103 | 103 | | |
104 | 104 | | |
105 | 105 | | |
| |||
115 | 115 | | |
116 | 116 | | |
117 | 117 | | |
118 | | - | |
| 118 | + | |
119 | 119 | | |
120 | 120 | | |
121 | 121 | | |
| |||
125 | 125 | | |
126 | 126 | | |
127 | 127 | | |
128 | | - | |
| 128 | + | |
129 | 129 | | |
130 | | - | |
| 130 | + | |
131 | 131 | | |
132 | 132 | | |
133 | 133 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
371 | 371 | | |
372 | 372 | | |
373 | 373 | | |
| 374 | + | |
374 | 375 | | |
375 | 376 | | |
376 | 377 | | |
377 | 378 | | |
378 | 379 | | |
379 | | - | |
| 380 | + | |
| 381 | + | |
380 | 382 | | |
381 | 383 | | |
382 | 384 | | |
| 385 | + | |
383 | 386 | | |
384 | 387 | | |
385 | 388 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
124 | 124 | | |
125 | 125 | | |
126 | 126 | | |
127 | | - | |
| 127 | + | |
| 128 | + | |
| 129 | + | |
128 | 130 | | |
129 | | - | |
130 | 131 | | |
131 | 132 | | |
132 | 133 | | |
133 | 134 | | |
134 | | - | |
135 | | - | |
| 135 | + | |
| 136 | + | |
| 137 | + | |
| 138 | + | |
| 139 | + | |
136 | 140 | | |
137 | 141 | | |
138 | 142 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
88 | 88 | | |
89 | 89 | | |
90 | 90 | | |
91 | | - | |
| 91 | + | |
92 | 92 | | |
93 | 93 | | |
94 | 94 | | |
| |||
0 commit comments