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
     $(,) ?
 }) => { ... };
}
Expand description

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>;
        },
    }
);