// Copyright 2023 Google LLC
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

extern crate core as rust_core;

/// Peers are identified by ids, which should be treated as opaque by service libraries.
/// Stack implementations should ensure that each PeerId identifies a single peer over a single
/// instance of the stack - a [`bt_gatt::Central::connect`] should always attempt to connect to the
/// same peer as long as the PeerId was retrieved after the `Central` was instantiated.
/// PeerIds can be valid longer than that (often if the peer is bonded)
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub struct PeerId(pub u64);

impl rust_core::fmt::Display for PeerId {
    fn fmt(&self, f: &mut rust_core::fmt::Formatter<'_>) -> std::result::Result<(), std::fmt::Error> {
        write!(f, "{:x}", self.0)
    }
}

pub mod core;
pub mod generic_audio;
pub mod packet_encoding;
pub mod uuid;
pub use crate::uuid::Uuid;
