indi 0.1.0

Client library for interfacing with the Instrument Neutral Distributed Interface (INDI) protocol.
Documentation
# indi

This crate provides support for the Instrument Neutral Distributed Interface (INDI) network protocol used to provide a network interface into controlling astronomical equipment.  See; https://www.indilib.org/index.html for more details on INDI.

## Quickstart
Add the crate to your cargo.toml
```bash
$ cargo add indi
```

An example program that creates an indi::Connection struct that represents a connect to a localhost indi server, and processes commands into a client object that keeps track of active devices and properties.
```rust
use indi;

fn main() {
    let mut connection = indi::Connection::new("localhost:7624").unwrap();
    connection
        .send(&indi::GetProperties {
            version: indi::INDI_PROTOCOL_VERSION.to_string(),
            device: None,
            name: None,
        })
        .unwrap();

    let mut client = indi::Client::new();

    for command in connection.command_iter().unwrap() {
        match command {
            Ok(command) => {
                if let Err(e) = client.update(command) {
                    println!("error: {:?}", e)
                }
            }
            Err(e) => match e {
                e => println!("error: {:?}", e),
            },
        }
    }
}
```

## Contributing
Contributions are welcome.  

In general, we follow the "fork-and-pull" Git workflow.

 1. **Fork** the repo on GitHub
 2. **Clone** the project to your own machine
 3. **Commit** changes to your own branch
 4. **Push** your work back up to your fork
 5. Submit a **Pull request** so that we can review your changes

NOTE: Be sure to merge the latest from "upstream" before making a pull request!