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}