dis-rs 0.13.0

An implementation of the Distributed Interactive Simulation protocol (IEEE-1278.1) in Rust. This main crate contains PDU implementations and facilities to read/write PDUs from Rust data structures to the wire format and vice versa. It supports versions 6 and 7 of the protocol.
Documentation
use crate::enumerations::SignalTdlType;
use crate::model::EntityId;
use crate::signal::model::{EncodingScheme, Signal};

pub struct SignalBuilder(Signal);

impl Default for SignalBuilder {
    fn default() -> Self {
        Self::new()
    }
}

impl SignalBuilder {
    #[must_use]
    pub fn new() -> Self {
        SignalBuilder(Signal::default())
    }

    #[must_use]
    pub fn new_from_body(body: Signal) -> Self {
        SignalBuilder(body)
    }

    #[must_use]
    pub fn build(self) -> Signal {
        self.0
    }

    #[must_use]
    pub fn with_radio_reference_id(mut self, radio_reference_id: EntityId) -> Self {
        self.0.radio_reference_id = radio_reference_id;
        self
    }

    #[must_use]
    pub fn with_radio_number(mut self, radio_number: u16) -> Self {
        self.0.radio_number = radio_number;
        self
    }

    #[must_use]
    pub fn with_encoding_scheme(mut self, encoding_scheme: EncodingScheme) -> Self {
        self.0.encoding_scheme = encoding_scheme;
        self
    }

    #[must_use]
    pub fn with_tdl_type(mut self, tdl_type: SignalTdlType) -> Self {
        self.0.tdl_type = tdl_type;
        self
    }

    #[must_use]
    pub fn with_sample_rate(mut self, sample_rate: u32) -> Self {
        self.0.sample_rate = sample_rate;
        self
    }

    #[must_use]
    pub fn with_samples(mut self, samples: u16) -> Self {
        self.0.samples = samples;
        self
    }

    #[must_use]
    pub fn with_data(mut self, data: Vec<u8>) -> Self {
        self.0.data = data;
        self
    }
}