Main protocol implementation.
This crate provides the basic components in order to be able to send and receive commands and events from a device.
It is meant to be as lean as possible in order to run in restricted environments. For this reason, it doesn't include any transport implementations.