use crate::event::Event;
use crate::types::{ThirdPartyMessage, ThirdPartyVendor};
use super::Rx;
const VENDOR_LEN: usize = 4;
pub(super) fn third_party(rx: &Rx<'_>, ev: &mut Vec<Event>) {
let payload = rx.frame.payload();
let (Some(vendor), Some(rest)) = (
payload
.get(..VENDOR_LEN)
.and_then(|b| <[u8; VENDOR_LEN]>::try_from(b).ok()),
payload.get(VENDOR_LEN..),
) else {
return;
};
ev.push(Event::ThirdPartyMessage {
device: rx.sender(),
message: ThirdPartyMessage {
vendor: ThirdPartyVendor::from_wire(vendor),
payload: rest.to_vec(),
address: rx.address,
},
});
}