# Diagnostics over Internet Protocol (DoIP) Definitions

An open-source implementation of Diagnostics over Internet Protocol (DoIP) standards, focused on data structures, types, and constants for vehicle Electronic Control Unit (ECU) diagnostics.

## Features

- **DoIP Protocol Compliance**: Provides data structures and types in alignment with ISO 13400 standards.
- **Extensive Utility Functions**: Includes helpers for encoding/decoding DoIP messages and managing diagnostic data.
- **Lightweight and Modular**: Designed as a foundational library for integrating DoIP capabilities into larger projects.
- **Customizable and Extensible**: Easily extendable to support additional diagnostic services or integrate with networking layers.

## Getting Started

### Prerequisites

- Rust programming language (latest stable version). Install Rust from [rust-lang.org](https://www.rust-lang.org/).

### Installation

To use this library, add it as a dependency in your `Cargo.toml` file:

```toml
[dependencies]
doip-definitions = "1.0.0"
```

### Documentation

Comprehensive documentation is available [here](#) (link to hosted docs).

## Development

### Building the Project

Clone the repository and build the project using Cargo:

```sh
git clone https://github.com/samp-reston/doip-definitions.git
cd doip-definitions
cargo build
```

### Running Tests

Run unit tests to ensure functionality:

```sh
cargo test
```

### Contributing

We welcome contributions! Please read the [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines on submitting issues and pull requests.

## License

This project is licensed under the MIT License. See the [LICENSE](LICENSE) file for details.

## Contact

For support, questions, or feature requests, please open an issue on the [GitHub repository](https://github.com/samp-reston/doip-definitions).

