common\high-level Contains all high-level (abstract) structures & logic.
Examples of high-level (highly-abstract) logic includes:
- State Machines
- Communication Managers
- Anything that is a "wraps" around a driver
common\drivers Contains all device & ic drivers (software that controls physical things, but not peripherals).
Examples of drivers include:
- Driver for the RFD900X
- Driver for Barometer (MS561101)
- etc.
common\peripherals Contains all peripheral controllers/drivers (software that controls the peripherals).This exists to add further functionality & abstraction to the existing HAL Embassy provides.
Examples of drivers include:
- SPI driver
- CAN driver (using the MCU component, NOT the IC/PHY)
- USB driver (using the MCU component, NOT THE PHY)
- I2C driver
- UART driver
common\uor-utils Contains all utilities that are agnostic (they don't care who or what uses them).
Agnostic utilities include:
- Filters
- Math tools & Units
- Types/Traits unrelated to peripherals, drivers, or high-level logic
- Macros unrelated to peripherals, drivers, or high-level logic
NON-Agnostic utilities (these belong in their respective crates/modules) include:
- Types/Traits related to peripherals, drivers, or high-level logic.
- Configuration data
- Macros related to peripherals, drivers, or high-level logic.
common\uor-proc-macros Contains all procedural macros used elsewhere. This crate exists because:
- Procedural macros must be built in a Std environment, and all other crates are no_std.
- Proc macros also require their crates to only export proc macros, nothing else.