Skip to content

v0.6.2

Choose a tag to compare

@sergiogallegos sergiogallegos released this 25 Jan 03:09
· 13 commits to main since this release
Release v0.6.2: Stream injection API and nested UDT fixes

✨ Added:
- Stream Injection API: connect_with_stream() for custom TCP transport
  - Enables wrapping streams for metrics/observability (bytes in/out)
  - Supports custom socket options (keepalive, timeouts, bind local address)
  - Allows reusing pre-established tunnels/connections
  - Supports in-memory streams for deterministic testing
  - New EtherNetIpStream trait for stream type requirements
- Test Configuration: Environment variable support for PLC testing
  - TEST_PLC_ADDRESS - Set PLC IP address for tests (default: 192.168.0.1:44818)
  - TEST_PLC_SLOT - Set CPU slot number (default: 0)
  - SKIP_PLC_TESTS - Skip all PLC-dependent tests when set
  - Comprehensive test helper functions and documentation

🐛 Fixed:
- Nested UDT Member Access: Fixed reading nested UDT members from array elements
  - Correctly handles complex paths like Cell_NestData[90].PartData.Member
  - Fixed array element detection to use TagPath::parse() for paths with member access
  - Changed from rfind(']') to find('[') + find(']') to use first bracket pair
  - Now correctly builds full CIP paths instead of incorrectly using array workaround
  - Fixes issue where PLC returned entire UDT instead of specific member value

📚 Documentation:
- Added comprehensive documentation for stream injection API
- Added test configuration guides (tests/README.md, tests/TEST_CONFIG.md)
- Updated all version references from v0.6.1 to v0.6.2
- Added examples for stream injection and nested UDT access
- Updated CHANGELOG.md with detailed v0.6.2 changes

🔧 Examples:
- Added stream_injection_example.rs demonstrating custom stream usage
- Updated all example version references to v0.6.2