use le_stream::FromLeStream;
use crate::ember::Eui64;
use crate::ember::key::{Status, TrustCenter};
use crate::frame::Parameter;
const ID: u16 = 0x009B;
#[derive(Clone, Debug, Eq, PartialEq, FromLeStream)]
pub struct Handler {
partner: Eui64,
status: u8,
}
impl Handler {
pub fn partner(&self) -> Result<Eui64, Result<Status, u8>> {
match self.status() {
Ok(
Status::AppLinkKeyEstablished
| Status::TrustCenterLinkKeyEstablished
| Status::TrustCenter(TrustCenter::RespondedToKeyRequest),
) => Ok(self.partner),
Ok(other) => Err(Ok(other)),
Err(invalid) => Err(Err(invalid)),
}
}
pub fn status(&self) -> Result<Status, u8> {
Status::try_from(self.status)
}
}
impl Parameter for Handler {
const ID: u16 = ID;
}