pub struct KnxNetIpHeader { /* private fields */ }Expand description
The header every KNXnet/IP frame opens with: its own length, the protocol version, the service the frame is, and the length of the whole frame.
The 2 fixed octets are not held here - they are the same on every frame
this crate reads or writes, and Self::decode refuses a frame that
states either of them differently.
Implementations§
Source§impl KnxNetIpHeader
impl KnxNetIpHeader
Sourcepub const fn new(service_type: ServiceType, total_length: u16) -> Result<Self>
pub const fn new(service_type: ServiceType, total_length: u16) -> Result<Self>
Builds a header, refusing a total length that does not account for the header itself.
The length a header states covers the whole frame, this header
included, so a value below HEADER_LENGTH describes a frame shorter
than its own head.
Sourcepub const fn service_type(self) -> ServiceType
pub const fn service_type(self) -> ServiceType
The service this frame is.
Sourcepub const fn total_length(self) -> u16
pub const fn total_length(self) -> u16
The whole frame’s length in octets, this header’s own 6 included.
Sourcepub fn decode(input: &[u8]) -> Result<(Self, &[u8])>
pub fn decode(input: &[u8]) -> Result<(Self, &[u8])>
Reads a header and hands back the body that follows it, cut to the length the header states.
The length octet and the version octet are checked rather than stepped over: a frame disagreeing with either is not one this crate can read, and reading on would be reading a different structure. A buffer holding less than the stated total length is refused rather than truncated, so the body handed back is the whole one or none.
Sourcepub fn encode(self, out: &mut Vec<u8>) -> Result<()>
pub fn encode(self, out: &mut Vec<u8>) -> Result<()>
Appends the 6 header octets: the fixed length and version, then the service type and the total length, each most significant octet first.
The total length is the one this header was built with, not a count of what follows - the caller states the frame’s width before the body is appended, or measures it and builds the header afterwards.
Trait Implementations§
Source§impl Clone for KnxNetIpHeader
impl Clone for KnxNetIpHeader
Source§fn clone(&self) -> KnxNetIpHeader
fn clone(&self) -> KnxNetIpHeader
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more