| // Copyright 2023 Google LLC | 
 | // Use of this source code is governed by a BSD-style license that can be | 
 | // found in the LICENSE file. | 
 |  | 
 | use crate::packet_encoding::{Encodable, Error as PacketError}; | 
 |  | 
 | /// Represents the Advertising Set ID which is 1 byte long. | 
 | /// Follows little endian encoding. | 
 | #[derive(Debug, Clone, Copy, PartialEq)] | 
 | pub struct AdvertisingSetId(pub u8); | 
 |  | 
 | impl AdvertisingSetId { | 
 |     // Byte size if this is to be encoded. | 
 |     pub const BYTE_SIZE: usize = 1; | 
 | } | 
 |  | 
 | /// Represents the SyncInfo Interval value which is 2 bytes long. | 
 | /// Follows little endian encoding. | 
 | #[derive(Debug, Clone, Copy, PartialEq)] | 
 | pub struct PaInterval(pub u16); | 
 |  | 
 | impl PaInterval { | 
 |     pub const BYTE_SIZE: usize = 2; | 
 |     pub const UNKNOWN_VALUE: u16 = 0xFFFF; | 
 |  | 
 |     pub const fn unknown() -> Self { | 
 |         Self(Self::UNKNOWN_VALUE) | 
 |     } | 
 | } | 
 |  | 
 | impl Encodable for PaInterval { | 
 |     type Error = PacketError; | 
 |  | 
 |     /// Encodees the PaInterval to 2 byte value using little endian encoding. | 
 |     fn encode(&self, buf: &mut [u8]) -> core::result::Result<(), Self::Error> { | 
 |         if buf.len() < Self::BYTE_SIZE { | 
 |             return Err(PacketError::BufferTooSmall); | 
 |         } | 
 |         buf[0..Self::BYTE_SIZE].copy_from_slice(&self.0.to_le_bytes()); | 
 |         Ok(()) | 
 |     } | 
 |  | 
 |     fn encoded_len(&self) -> core::primitive::usize { | 
 |         Self::BYTE_SIZE | 
 |     } | 
 | } | 
 |  | 
 | #[cfg(test)] | 
 | mod tests { | 
 |     use super::*; | 
 |  | 
 |     #[test] | 
 |     fn encode_pa_interval() { | 
 |         let mut buf = [0; PaInterval::BYTE_SIZE]; | 
 |         let interval = PaInterval(0x1004); | 
 |  | 
 |         interval.encode(&mut buf[..]).expect("should succeed"); | 
 |         assert_eq!(buf, [0x04, 0x10]); | 
 |     } | 
 |  | 
 |     #[test] | 
 |     fn encode_pa_interval_fails() { | 
 |         let mut buf = [0; 1];  // Not enough buffer space. | 
 |         let interval = PaInterval(0x1004); | 
 |  | 
 |         interval.encode(&mut buf[..]).expect_err("should fail"); | 
 |     } | 
 | } |