Skip to content

Commit 8600e98

Browse files
bhagen55davidv1992
authored andcommitted
Add clock quality to instance config
1 parent acb88a8 commit 8600e98

File tree

10 files changed

+27
-15
lines changed

10 files changed

+27
-15
lines changed

statime-linux/src/main.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ use std::{
99
use clap::Parser;
1010
use rand::{rngs::StdRng, SeedableRng};
1111
use statime::{
12-
config::{ClockIdentity, InstanceConfig, SdoId, TimePropertiesDS, TimeSource},
12+
config::{ClockIdentity, ClockQuality, InstanceConfig, SdoId, TimePropertiesDS, TimeSource},
1313
filters::{Filter, KalmanConfiguration, KalmanFilter},
1414
port::{
1515
is_message_buffer_compatible, InBmca, Measurement, Port, PortAction, PortActionIterator,
@@ -272,6 +272,7 @@ async fn actual_main() {
272272
slave_only: config.slave_only,
273273
sdo_id: SdoId::try_from(config.sdo_id).expect("sdo-id should be between 0 and 4095"),
274274
path_trace: config.path_trace,
275+
clock_quality: ClockQuality::default(),
275276
};
276277

277278
let time_properties_ds =

statime-stm32/src/port.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ use smoltcp::{
99
use static_cell::StaticCell;
1010
use statime::{
1111
config::{
12-
AcceptAnyMaster, ClockIdentity, DelayMechanism, InstanceConfig, PortConfig,
12+
AcceptAnyMaster, ClockIdentity, ClockQuality, DelayMechanism, InstanceConfig, PortConfig,
1313
PtpMinorVersion, SdoId, TimePropertiesDS, TimeSource,
1414
},
1515
filters::BasicFilter,
@@ -287,6 +287,7 @@ pub fn setup_statime(
287287
slave_only: false,
288288
sdo_id: SdoId::default(),
289289
path_trace: false,
290+
clock_quality: ClockQuality::default(),
290291
};
291292
let time_properties_ds =
292293
TimePropertiesDS::new_arbitrary_time(false, false, TimeSource::InternalOscillator);

statime/src/bmc/bmca.rs

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -300,7 +300,7 @@ mod tests {
300300
use super::*;
301301
use crate::{
302302
bmc::acceptable_master::AcceptAnyMaster,
303-
config::{ClockIdentity, InstanceConfig},
303+
config::{ClockIdentity, ClockQuality, InstanceConfig},
304304
datastructures::messages::{Header, PtpVersion},
305305
};
306306

@@ -505,6 +505,7 @@ mod tests {
505505
slave_only,
506506
sdo_id,
507507
path_trace,
508+
clock_quality: ClockQuality::default(),
508509
})
509510
}
510511

@@ -539,20 +540,21 @@ mod tests {
539540
let slave_only = false;
540541
let sdo_id = Default::default();
541542
let path_trace = false;
543+
let mut clock_quality = ClockQuality::default();
544+
clock_quality.clock_class = 1;
545+
assert!((1..=127).contains(&clock_quality.clock_class));
542546

543-
let mut own_data = InternalDefaultDS::new(InstanceConfig {
547+
let own_data = InternalDefaultDS::new(InstanceConfig {
544548
clock_identity,
545549
priority_1,
546550
priority_2,
547551
domain_number,
548552
slave_only,
549553
sdo_id,
550554
path_trace,
555+
clock_quality,
551556
});
552557

553-
own_data.clock_quality.clock_class = 1;
554-
assert!((1..=127).contains(&own_data.clock_quality.clock_class));
555-
556558
// D0 is the same as E_rbest; this is unreachable in practice, but we return M1
557559
// in this case
558560
let d0 = ComparisonDataset::from_own_data(&own_data);

statime/src/config/instance.rs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use crate::config::{ClockIdentity, SdoId};
1+
use crate::config::{ClockIdentity, ClockQuality, SdoId};
22
#[cfg(doc)]
33
use crate::PtpInstance;
44

@@ -7,7 +7,7 @@ use crate::PtpInstance;
77
/// # Example
88
/// A configuration with common default values:
99
/// ```
10-
/// # use statime::config::{ClockIdentity, InstanceConfig, SdoId};
10+
/// # use statime::config::{ClockIdentity, InstanceConfig, SdoId, ClockQuality};
1111
/// let config = InstanceConfig {
1212
/// clock_identity: ClockIdentity::from_mac_address([1,2,3,4,5,6]),
1313
/// priority_1: 128,
@@ -16,6 +16,7 @@ use crate::PtpInstance;
1616
/// sdo_id: SdoId::default(),
1717
/// slave_only: false,
1818
/// path_trace: false,
19+
/// clock_quality: ClockQuality::default(),
1920
/// };
2021
/// ```
2122
#[derive(Copy, Clone, Debug, Eq, PartialEq, Hash)]
@@ -49,4 +50,7 @@ pub struct InstanceConfig {
4950

5051
/// Whether the path trace option is enabled
5152
pub path_trace: bool,
53+
54+
/// A description of the accuracy and type of the local clock.
55+
pub clock_quality: ClockQuality,
5256
}

statime/src/datastructures/common/clock_accuracy.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
use core::cmp::Ordering;
22

3-
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
3+
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
44
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
55
/// How accurate the underlying clock device is expected to be when not
66
/// synchronized.

statime/src/datastructures/common/clock_quality.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ use super::clock_accuracy::ClockAccuracy;
22
use crate::datastructures::{WireFormat, WireFormatError};
33

44
/// A description of the accuracy and type of a clock.
5-
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
5+
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
66
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
77
pub struct ClockQuality {
88
/// The PTP clock class.

statime/src/datastructures/datasets/default.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ impl InternalDefaultDS {
3030
Self {
3131
clock_identity: config.clock_identity,
3232
number_ports: 0,
33-
clock_quality: Default::default(),
33+
clock_quality: config.clock_quality,
3434
priority_1: config.priority_1,
3535
priority_2: config.priority_2,
3636
domain_number: config.domain_number,

statime/src/port/bmca.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -292,7 +292,7 @@ impl<A, C: Clock, F: Filter, R: Rng, S: PtpInstanceStateMutex> Port<'_, InBmca,
292292
mod tests {
293293
use super::*;
294294
use crate::{
295-
config::{ClockIdentity, InstanceConfig, SdoId},
295+
config::{ClockIdentity, ClockQuality, InstanceConfig, SdoId},
296296
datastructures::{
297297
common::{PortIdentity, Tlv, TlvSetBuilder},
298298
messages::{AnnounceMessage, Header, Message, MessageBody, PtpVersion, MAX_DATA_LEN},
@@ -402,6 +402,7 @@ mod tests {
402402
sdo_id: SdoId::default(),
403403
slave_only: false,
404404
path_trace: false,
405+
clock_quality: ClockQuality::default(),
405406
};
406407
let mut port = port.start_bmca();
407408
port.set_recommended_port_state(

statime/src/port/mod.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -712,7 +712,8 @@ mod tests {
712712
use super::*;
713713
use crate::{
714714
config::{
715-
AcceptAnyMaster, DelayMechanism, InstanceConfig, PtpMinorVersion, TimePropertiesDS,
715+
AcceptAnyMaster, ClockQuality, DelayMechanism, InstanceConfig, PtpMinorVersion,
716+
TimePropertiesDS,
716717
},
717718
datastructures::datasets::{InternalDefaultDS, InternalParentDS, PathTraceDS},
718719
filters::BasicFilter,
@@ -838,6 +839,7 @@ mod tests {
838839
slave_only: false,
839840
sdo_id: Default::default(),
840841
path_trace: false,
842+
clock_quality: ClockQuality::default(),
841843
});
842844

843845
let parent_ds = InternalParentDS::new(default_ds);

statime/src/ptp_instance.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ use crate::{
5858
/// # let rng: rand::rngs::mock::StepRng = unimplemented!();
5959
/// #
6060
/// use statime::PtpInstance;
61-
/// use statime::config::{AcceptAnyMaster, ClockIdentity, InstanceConfig, TimePropertiesDS, TimeSource};
61+
/// use statime::config::{AcceptAnyMaster, ClockIdentity, ClockQuality, InstanceConfig, TimePropertiesDS, TimeSource};
6262
/// use statime::filters::BasicFilter;
6363
///
6464
/// let instance_config = InstanceConfig {
@@ -69,6 +69,7 @@ use crate::{
6969
/// slave_only: false,
7070
/// sdo_id: Default::default(),
7171
/// path_trace: false,
72+
/// clock_quality: ClockQuality::default(),
7273
/// };
7374
/// let time_properties_ds = TimePropertiesDS::new_arbitrary_time(false, false, TimeSource::InternalOscillator);
7475
///

0 commit comments

Comments
 (0)