You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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