Livt packages
Livt.Usb
Version 0.0.5
USB 2.0 low/full-speed PHY, host transfers, device discovery, HID keyboard, and read-only mass storage for Livt.
Changelog
All notable changes to this package are documented here.
0.0.5
Changed
- Prepare package discovery metadata and publish the README, changelog and license alongside the existing USB components.
- Update dependencies to Livt.IO 1.8.1 and Livt.Utils 1.1.1.
0.0.4
Added
PIPELINE_LINK: bool = trueonTransactionEngineandHostControllerfor configurable receive sampling, ACK decisions, frame admission and transmit feedback. The host forwards this choice to its packet transmitter.PIPELINE_OUTPUT: bool = falseonPacketTransmitterfor byte/valid publication one clock edge after phase advancement. Direct packet users retain the default unpipelined behavior.- Transaction tests against the physical transmit serializer for both settings, covering IN/OUT bytes, CRCs, retained payloads, duplicate acknowledgement, cancellation, frame admission and bounded ACK handoff.
Changed
- The default host separates PHY observation, receive processing and transmit
preparation with pipeline stages. Set
PIPELINE_LINKtofalsefor the direct path with lower latency. - Receive completion uses the byte count and checksum before EOP, avoiding the active-byte update path without changing packet publication timing.
Compatibility and dependencies
- New generics are appended, preserving existing positional arguments. Default host wire timing gains pipeline cycles; scheduled transfer ownership and retained-completion semantics remain unchanged.
- Packet storage providers retain their synchronous read-response contract, and PHY byte acceptance must remain at least 64 clocks apart. Pipeline selection does not permit arbitrary memory latency.
- Continue to use published
Livt.IO 1.7.0andLivt.Utils 1.1.0. No filesystem, UART, CLI or board dependency is introduced.
0.0.3
Added
MassStorageHost,BulkOnlyTransportand read-only SCSI command encoding for direct full-speed, LUN-zero, 512-byte block devices throughLivt.IO.IReadOnlyBlockDevice.- Validated command status, bounded readiness retries, retained sense information, stall handling and BOT reset recovery.
IHostController.ClearToggleexposes endpoint toggle reset after successful halt clearing. Custom controller implementations must implement this member.
Changed
- Exposed endpoint-table providers through
DeviceEnumerator,BootKeyboardHostandMassStorageHost, retaining BRAM defaults and scheduled storage contracts. - Forwarded
HostControllerpacket storage andSTYLEto the transaction engine; custom packet memory retains the synchronous port timing contract. - Reduced retained BOT validation temporaries and grouped independent metadata updates into shared states without changing retained-block ownership.
Compatibility and dependencies
IHostControllerimplementations must provideClearTogglefor endpoint-halt recovery. Existing consumers retain default storage configurations.- Depend on published
Livt.IO 1.7.0for memory providers and theIReadOnlyBlockDevicecontract; replace the development path dependency with this registry version. - Continue to use
Livt.Utils 1.1.0. UART/CLI integration, filesystems and board support remain outside this package.
0.0.2
Changed
- Replaced sibling path dependencies with published registry versions:
Livt.IO 1.6.0andLivt.Utils 1.1.0. - Updated package usage documentation for installation without sibling library checkouts.
0.0.1
Added
- Low/full-speed
Usb2PhyandIUsb2Physignal contract, with context-derived sampling, NRZI, bit stuffing, SYNC/EOP, reset signaling and low-speed keep-alive. - Context-derived bit periods, host delays, frame timing and counter widths; configurable root-port durations use microseconds. The sampled PHY accepts exact multiples of 12 MHz with at least eight samples per full-speed bit.
- Token, data and handshake packet processing, PID/length/CRC checks, full-speed SOF, bounded payload retention and explicit cancellation.
IHostControllerand a direct host implementation with root-port timing, control/interrupt transfers, full-speed bulk transfers, endpoint data toggles, deadline-bounded retries and retained completion.- Standard device/configuration discovery and bounded interface/endpoint parsing.
- HID boot-keyboard initialization, polling, report validation, usage transitions and a bounded event queue. Repeated reports and duplicate usages do not repeat key presses; disconnect and queue overflow are observable.
- Scoped keyboard-interface selection for Rapoo
24AE:2010and24AE:2013, plus cached device identity and binding observations. - Configurable capacities and storage providers with BRAM defaults, including scheduled packet buffers, transfer storage, descriptor metadata and event queues.
TestHostControllerfor deterministic scheduled-interface tests, plus library regressions including root-port timing across clock contexts.- Architecture, API, timing, ownership and storage documentation.
Dependencies
Livt.IO 1.6.0supplies memory contracts and storage implementations.Livt.Utils 1.1.0supplies protocol-independent CRC helpers; USB CRC profiles and wire serialization remain inLivt.Usb.Packets.- The initial manifest resolved both dependencies through sibling checkout paths. UART transport, CLI commands and platform integration remain application choices.
Scope
- One directly attached low/full-speed device and one active or retained request.
- Boot-keyboard HID; layout, text conversion, LEDs and repeat policy are application-owned.
- No hubs, high-speed or isochronous transfers, arbitrary HID report parsing, mass-storage class driver, USB device role, Type-C management or Power Delivery.