autosar-e2e
A Rust implementation of the AUTOSAR E2E (End-to-End) Protection Protocol.
Overview
This library implements the AUTOSAR E2E protection mechanism which provides end-to-end data protection for safety-critical automotive communication systems. The E2E protection helps detect:
- Data Corruption: Through CRC checksums
- Message Loss/Duplication: Through sequence counters
- Incorrect Addressing: Through Data ID verification
Features
- Profile 11 implementation (variants 11A and 11C)
- Support for Protect, Check operations
- Comprehensive documentation and tests
- Configurable parameters per AUTOSAR specification
Installation
Add this to your Cargo.toml:
[]
= "0.1.0"
Usage
Basic Example
use ;
use ;
Gateway/Forward Example
use ;
use ;
Profile 11 Specifications
Data Layout
Profile 11 uses a 2-byte header:
Byte 0: CRC-8
Byte 1: [DataIDNibble(4 bits) | Counter(4 bits)]
Bytes 2-n: User Data
Modes
- Both(11A): DataIDNibble field can be used for user data
- Nibble(11C): DataIDNibble field is used for protection
Configuration Parameters
| Parameter | Description | Range | Default |
|---|---|---|---|
mode |
Profile mode with Data ID | Both(Id) or Nibble(Id) | Nibble(0x0100) |
max_delta_counter |
Maximum counter delta | 1-14 | 1 |
max_data_length |
Maximum data length | ≤240 | 240 |
Architecture
The library follows a trait-based design for extensibility:
This design allows for easy addition of other E2E profiles in the future.
Testing
Run the test suite:
Run tests with coverage:
Safety and Correctness
- All CRC calculations use the standard
crccrate with AUTOSAR polynomial - Counter wrap-around is handled correctly
- Comprehensive test coverage including edge cases
- No unsafe code
Future Work
- Add Profile 1 support
- Add Profile 2 support
- Add Profile 4 support
- Add Profile 5 support
- Add Profile 6 support
- Add Profile 7 support
- Add Profile 22 support
- Performance benchmarks
- Async support
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
License
This project is dual-licensed under either:
- Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.
References
Disclaimer
This is an independent implementation and is not officially affiliated with or endorsed by AUTOSAR.