# Bluetooth Shared Libraries

## What is this?

This is a repository for shared source libraries that can be useful for
multiple Bluetooth stacks.  Many of these are meant to be stack-agnostic and
platform-agnostic and implement a useful part of a published Bluetooth
specification.

It has been started as a repository for developing Rust crates but can be
easily expanded to include libraries for other languages.

## Structure

 - rust - Rust Crates
