pub struct TlpPacket { /* private fields */ }Expand description
TLP Packet structure is high level abstraction for entire TLP packet Contains Header and Data
§Examples
use rtlp_lib::TlpPacket;
use rtlp_lib::TlpFmt;
use rtlp_lib::TlpType;
use rtlp_lib::new_msg_req;
use rtlp_lib::new_conf_req;
use rtlp_lib::new_mem_req;
use rtlp_lib::new_cmpl_req;
// Bytes for full TLP Packet
// <------- DW1 --------> <------- DW2 --------> <------- DW3 --------> <------- DW4 -------->
let bytes = vec![0x00, 0x00, 0x20, 0x01, 0x04, 0x00, 0x00, 0x01, 0x20, 0x01, 0xFF, 0x00, 0xC2, 0x81, 0xFF, 0x10];
let packet = TlpPacket::new(bytes);
let header = packet.get_header();
// TLP Type tells us what is this packet
let tlp_type = header.get_tlp_type().unwrap();
let tlp_format = packet.get_tlp_format();
let requester_id;
match (tlp_type) {
TlpType::MemReadReq |
TlpType::MemReadLockReq |
TlpType::MemWriteReq |
TlpType::IOReadReq |
TlpType::IOWriteReq |
TlpType::FetchAddAtomicOpReq |
TlpType::SwapAtomicOpReq |
TlpType::CompareSwapAtomicOpReq => requester_id = new_mem_req(packet.get_data(), &tlp_format).req_id(),
TlpType::ConfType0ReadReq |
TlpType::ConfType0WriteReq |
TlpType::ConfType1ReadReq |
TlpType::ConfType1WriteReq => requester_id = new_conf_req(packet.get_data(), &tlp_format).req_id(),
TlpType::MsgReq |
TlpType::MsgReqData => requester_id = new_msg_req(packet.get_data(), &tlp_format).req_id(),
TlpType::Cpl |
TlpType::CplData |
TlpType::CplLocked |
TlpType::CplDataLocked => requester_id = new_cmpl_req(packet.get_data(), &tlp_format).req_id(),
TlpType::LocalTlpPrefix |
TlpType::EndToEndTlpPrefix => println!("I need to implement TLP Type: {:?}", tlp_type),
}Implementations§
Auto Trait Implementations§
impl Freeze for TlpPacket
impl RefUnwindSafe for TlpPacket
impl Send for TlpPacket
impl Sync for TlpPacket
impl Unpin for TlpPacket
impl UnsafeUnpin for TlpPacket
impl UnwindSafe for TlpPacket
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more