Crate doip_codec

Source
Expand description

§Diagnostics over Internet Protocol Codec Crate

The purpose of this crate is to provide an easy way to encode and decode DoIP Messages defined in the doip-definitions crate.

§Example Usage

use futures::{SinkExt, StreamExt};
use tokio::net::TcpStream;
use tokio_util::codec::Framed;
use doip_definitions::{
    header::DoipVersion,
    message::{DoipMessage, VehicleIdentificationRequest},
};
use doip_codec::DoipCodec;

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
  // Connect to a DoIP server
  let stream = TcpStream::connect("127.0.0.1:13400").await?;

  // Wrap the stream with the DoipCodec
  let mut framed = Framed::new(stream, DoipCodec);

  // Send a DoIP message
  let request = DoipMessage::new(
      DoipVersion::Iso13400_2012,
      Box::new(VehicleIdentificationRequest {}),
  ); // Example payload

  framed.send(request).await?;

  // Receive a DoIP message
  if let Some(response) = framed.next().await {
      match response {
          Ok(msg) => println!("Received message: {:?}", msg),
          Err(e) => eprintln!("Failed to decode message: {}", e),
      }
  }

  Ok(())
}

Structs§

DoipCodec
A simple Decoder and Encoder implementation for Diagnostics over Internet Protocol.

Enums§

DecodeError
A wrapper to encapsulate Parser and IO errors which can occur
EncodeError
A wrapper to encapsulate IO errors which can occur