Macro device_driver::create_low_level_device [−][src]
macro_rules! create_low_level_device { ( $(#[$device_doc:meta])* $device_name:ident { errors: [$($error_type:ident),*], hardware_interface_requirements: {$($hardware_interface_bound_type:tt)*}, hardware_interface_capabilities: $hardware_interface_capabilities:tt $(,)? } ) => { ... }; }
The base macro for low level. Creates the struct and implements the right traits for it.
Example
ⓘ
// Create our low level device. This holds all the hardware communication definitions create_low_level_device!( /// Our test device MyDevice { // The types of errors our low level error enum must contain errors: [InterfaceError], // Any hardware interface must implement the HardwareInterface trait that is created by this macro. // This option allows us to specify which traits that new trait inherits. In this case that is RegisterInterface and Debug. hardware_interface_requirements: { RegisterInterface + Debug }, // This specifies the contents of the HardwareInterface trait. hardware_interface_capabilities: { /// Resets the device fn reset(&mut self) -> Result<(), InterfaceError>; }, } );