use crate::secure::{Uuid, expand_uuid16};
pub const SECURITY_SERVICE: Uuid = security_uuid(0x0000);
pub const COMMISSIONING_SERVICE_16: u16 = 0xFFF7;
pub const COMMISSIONING_SERVICE: Uuid = expand_uuid16(COMMISSIONING_SERVICE_16);
pub const TUNNEL_SERVICE: Uuid = tunnel_uuid(0x0000);
pub const fn security_uuid(group: u16) -> Uuid {
[
0x29,
0x14,
0x4A,
0xF4,
(group >> 8) as u8,
(group & 0xff) as u8,
0x44,
0x81,
0xBF,
0xE9,
0x6D,
0x02,
0x99,
0xB4,
0x29,
0xE3,
]
}
pub const fn commissioning_uuid(group: u16) -> Uuid {
[
0x70,
0x72,
0x37,
0x7D,
(group >> 8) as u8,
(group & 0xff) as u8,
0x42,
0x1C,
0xB1,
0x63,
0x49,
0x1C,
0x27,
0x33,
0x3A,
0x61,
]
}
pub const fn tunnel_uuid(group: u16) -> Uuid {
[
0x8B,
0xD1,
0x78,
0xFD,
(group >> 8) as u8,
(group & 0xff) as u8,
0x45,
0xF4,
0x81,
0x20,
0xB2,
0x37,
0x8B,
0xD5,
0x31,
0x3F,
]
}
pub mod security {
use super::{Uuid, security_uuid};
pub const AUTHENTICATE_CURVE25519_AES_MMO: Uuid = security_uuid(0x0001);
pub const AUTHENTICATE_CURVE25519_SHA256: Uuid = security_uuid(0x0002);
pub const AUTHENTICATE_P256_SHA256: Uuid = security_uuid(0x0003);
}
pub mod commissioning {
use super::{Uuid, commissioning_uuid};
pub const FORM_NETWORK: Uuid = commissioning_uuid(0x0001);
pub const JOIN_NETWORK: Uuid = commissioning_uuid(0x0002);
pub const PERMIT_JOINING: Uuid = commissioning_uuid(0x0003);
pub const LEAVE_NETWORK: Uuid = commissioning_uuid(0x0004);
pub const COMMISSIONING_STATUS: Uuid = commissioning_uuid(0x0005);
pub const MANAGE_JOINERS: Uuid = commissioning_uuid(0x0006);
pub const IDENTIFY: Uuid = commissioning_uuid(0x0007);
pub const FINDING_AND_BINDING: Uuid = commissioning_uuid(0x0008);
}
pub mod tunnel {
use super::{Uuid, tunnel_uuid};
pub const NPDU: Uuid = tunnel_uuid(0x0001);
}
pub const ATT_ERROR_ZIGBEE_DIRECT: u8 = 0x80;