rusmpp_core/values/
broadcast_frequency_interval.rs

1use rusmpp_macros::Rusmpp;
2
3#[repr(u8)]
4#[derive(Debug, Copy, Clone, PartialEq, Eq, Hash, PartialOrd, Ord, Default, Rusmpp)]
5#[cfg_attr(feature = "arbitrary", derive(::arbitrary::Arbitrary))]
6#[cfg_attr(feature = "serde", derive(::serde::Serialize))]
7#[cfg_attr(feature = "serde-deserialize-unchecked", derive(::serde::Deserialize))]
8pub enum UnitOfTime {
9    #[default]
10    AsFrequentlyAsPossible = 0x00,
11    Seconds = 0x08,
12    Minutes = 0x09,
13    Hours = 0x0A,
14    Days = 0x0B,
15    Weeks = 0x0C,
16    Months = 0x0D,
17    Years = 0x0E,
18    Other(u8),
19}
20
21/// This field indicates the frequency interval at which
22/// the broadcasts of a message should be repeated.
23#[derive(Debug, Copy, Clone, PartialEq, Eq, Hash, PartialOrd, Ord, Default, Rusmpp)]
24#[cfg_attr(feature = "arbitrary", derive(::arbitrary::Arbitrary))]
25#[cfg_attr(feature = "serde", derive(::serde::Serialize))]
26#[cfg_attr(feature = "serde-deserialize-unchecked", derive(::serde::Deserialize))]
27pub struct BroadcastFrequencyInterval {
28    pub unit: UnitOfTime,
29    pub value: u16,
30}
31
32impl BroadcastFrequencyInterval {
33    pub fn new(unit: UnitOfTime, value: u16) -> Self {
34        Self { unit, value }
35    }
36}
37
38#[cfg(test)]
39mod tests {
40    use super::*;
41
42    #[test]
43    fn encode_decode() {
44        #[cfg(feature = "alloc")]
45        crate::tests::owned::encode_decode_test_instances::<UnitOfTime>();
46        crate::tests::borrowed::encode_decode_test_instances::<UnitOfTime>();
47        #[cfg(feature = "alloc")]
48        crate::tests::owned::encode_decode_test_instances::<BroadcastFrequencyInterval>();
49        crate::tests::borrowed::encode_decode_test_instances::<BroadcastFrequencyInterval>();
50    }
51}