radio 0.8.0

Generic traits for embedded packet radio devices
# Rust IoT Radio Abstraction(s)

An [embedded-hal](https://github.com/rust-embedded/embedded-hal) like abstraction for digital radio devices, this is intended to provide a common basis for implementing packet radio drivers, and for extension to support 802.15.4 / BLE etc. in the hope that we can construct embedded network stacks using this common abstraction.

Radio devices should implement the [core traits](https://docs.rs/radio/), and then gain automatic [blocking](https://docs.rs/radio/latest/radio/blocking/index.html) helper functions. Experimental [async/await](https://docs.rs/radio/latest/radio/nonblocking/index.html) helpers are available behind the `nonblocking` feature flag, this uses [dtolnay/async-trait](https://github.com/dtolnay/async-trait), imports `std` and `async-std`, and requires a nightly compiler, and a `MockRadio` implementation for testing is available behind the `mock` feature flag (also requiring nightly).


## Status

**Work In Progress, expect major API changes**

[![GitHub tag](https://img.shields.io/github/tag/ryankurte/rust-radio.svg)](https://github.com/ryankurte/rust-radio)
[![Build Status](https://travis-ci.com/ryankurte/rust-radio.svg?token=s4CML2iJ2hd54vvqz5FP&branch=master)](https://travis-ci.com/ryankurte/rust-radio)
[![Crates.io](https://img.shields.io/crates/v/radio.svg)](https://crates.io/crates/radio)
[![Docs.rs](https://docs.rs/radio/badge.svg)](https://docs.rs/radio)

[Open Issues](https://github.com/ryankurte/rust-radio/issues)


### Features:

- [ ] Generic Traits
  - [x] Transmit
  - [x] Receive
  - [x] Set Channel
  - [x] Fetch RSSI
  - [x] Register Access
  - [ ] Configuration (?)
- [ ] Mode Specific Traits (and definitions)
  - [ ] 802.15.4
  - [ ] BLE
  - [ ] LoRa
- [x] Helpers
  - [x] Blocking
  - [x] Async


### Examples

- [ryankurte/rust-radio-sx127x](https://github.com/ryankurte/rust-radio-sx127x)
- [ryankurte/rust-radio-sx128x](https://github.com/ryankurte/rust-radio-sx128x)
- [ryankurte/rust-radio-at86rf212](https://github.com/ryankurte/rust-radio-at86rf212)
- [ryankurte/rust-radio-s2lp](https://github.com/ryankurte/rust-radio-s2lp)


**For similar interfaces, check out:**
- Riot-OS 
  - [netdev.h](https://github.com/RIOT-OS/RIOT/blob/master/drivers/include/net/netdev.h)
  - [ieee802154.h](https://github.com/RIOT-OS/RIOT/blob/master/drivers/include/net/netdev/ieee802154.h)
    [netdev_ieee802154.c](https://github.com/RIOT-OS/RIOT/blob/master/drivers/netdev_ieee802154/netdev_ieee802154.c)
- Contiki-OS
  - [core/dev/radio.h](https://github.com/contiki-os/contiki/blob/master/core/dev/radio.h)
- Tock-PS
  - [ieee802154/device.rs](https://github.com/tock/tock/blob/master/capsules/src/ieee802154/device.rs)