Skip to main content

simple_someip/e2e/
config.rs

1//! Configuration structures for E2E profiles.
2
3/// Configuration for E2E Profile 4.
4#[derive(Debug, Clone)]
5pub struct Profile4Config {
6    /// Unique identifier for this data element (included in CRC calculation).
7    pub data_id: u32,
8    /// Maximum allowed counter delta before reporting `WrongSequence`.
9    /// A delta of 1 means consecutive messages, delta > 1 means some lost.
10    pub max_delta_counter: u16,
11}
12
13impl Profile4Config {
14    /// Create a new Profile 4 configuration.
15    ///
16    /// # Arguments
17    /// * `data_id` - Unique identifier for this data element
18    /// * `max_delta_counter` - Maximum allowed gap in counter sequence
19    #[must_use]
20    pub fn new(data_id: u32, max_delta_counter: u16) -> Self {
21        Self {
22            data_id,
23            max_delta_counter,
24        }
25    }
26}
27
28/// Configuration for E2E Profile 5.
29#[derive(Debug, Clone)]
30pub struct Profile5Config {
31    /// Unique identifier for this data element (included in CRC calculation).
32    /// Profile 5 uses a 16-bit `DataID`.
33    pub data_id: u16,
34    /// Expected data length (used in CRC calculation).
35    pub data_length: u16,
36    /// Maximum allowed counter delta before reporting `WrongSequence`.
37    pub max_delta_counter: u8,
38}
39
40impl Profile5Config {
41    /// Create a new Profile 5 configuration.
42    ///
43    /// # Arguments
44    /// * `data_id` - Unique identifier for this data element
45    /// * `data_length` - Expected length of protected data
46    /// * `max_delta_counter` - Maximum allowed gap in counter sequence
47    #[must_use]
48    pub fn new(data_id: u16, data_length: u16, max_delta_counter: u8) -> Self {
49        Self {
50            data_id,
51            data_length,
52            max_delta_counter,
53        }
54    }
55}