mirror of
https://github.com/lights0123/n-link.git
synced 2026-08-08 02:33:28 +00:00
Long CX II operations — listing a folder with many entries, downloading a file of any size — failed with a reported `Busy`. readPacket checksummed `transferred`, the byte count libusb returned, rather than `completeLength`, the length the packet declares. The calculator can hand back more bytes than the packet occupies (a 64-byte packet arriving as 65 was what showed up in tracing), and the stray byte failed the checksum. The packet was dropped and so never acked, the calculator retransmitted the same sequence number indefinitely, and the receive loop gave up after 40 reads. `transferred` was also wrong after the multi-chunk continuation loop, where it holds only the final chunk's size — the reason large stream transfers were unreliable. Also add NNSE retransmission to packet_send_cx2. A lost packet or lost ack was previously fatal, since the packet was written exactly once. Retries now carry the "not the first try" bit (reqAck bit 3) that TI's own stack sets, keeping the same seqno so the calculator can drop a duplicate. This path did not trigger in testing — every packet acked on the first attempt once the checksum was fixed — so its timeouts are deliberately generous to avoid retransmitting during slow flash writes. While here, zero `misc` and `unknown` instead of sending malloc garbage inside a checksummed header, and handle allocation failure. Verified against CX II firmware (0451:e022): `ls /` returns all 51 entries across 8 runs, a 193 KB download is byte-identical across two runs, and mkdir/rmdir round-trips. Note the error was never actually Busy. The libnspire crate (0.2.3) matches its positive NSPIRE_ERR_* constants against libnspire's negative return codes, so every error falls through to the libusb table and is mislabelled; -NSPIRE_ERR_INVALPKT and LIBUSB_ERROR_BUSY are both -6. That mismapping is upstream in the crate and is not addressed here. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| libnspire | ||
| src | ||
| .cargo-ok | ||
| .cargo_vcs_info.json | ||
| build.rs | ||
| Cargo.toml | ||
| Cargo.toml.orig | ||
| README.md | ||