rusmpp_core/values/
broadcast_frequency_interval.rs1use 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#[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}