embedded_bacnet/application_protocol/services/
time_synchronization.rs

1use crate::{
2    application_protocol::{
3        primitives::data_value::{Date, Time},
4        unconfirmed::UnconfirmedServiceChoice,
5    },
6    common::{
7        io::Writer,
8        tag::{ApplicationTagNumber, Tag, TagNumber},
9    },
10};
11
12#[derive(Debug, Clone)]
13#[cfg_attr(feature = "defmt", derive(defmt::Format))]
14pub struct TimeSynchronization {
15    pub date: Date,
16    pub time: Time,
17}
18
19impl TimeSynchronization {
20    pub fn encode(&self, writer: &mut Writer) {
21        writer.push(UnconfirmedServiceChoice::TimeSynchronization as u8);
22
23        // date
24        let tag = Tag::new(TagNumber::Application(ApplicationTagNumber::Date), 4);
25        tag.encode(writer);
26        self.date.encode(writer);
27
28        // time
29        let tag = Tag::new(TagNumber::Application(ApplicationTagNumber::Time), 4);
30        tag.encode(writer);
31        self.time.encode(writer);
32    }
33}