Struct capsules_core::led::LedDriver

source ·
pub struct LedDriver<'a, L: Led, const NUM_LEDS: usize> {
    leds: &'a [&'a L; NUM_LEDS],
}
Expand description

Holds the array of LEDs and implements a Driver interface to control them.

Fields§

§leds: &'a [&'a L; NUM_LEDS]

Implementations§

source§

impl<'a, L: Led, const NUM_LEDS: usize> LedDriver<'a, L, NUM_LEDS>

source

pub fn new(leds: &'a [&'a L; NUM_LEDS]) -> Self

Trait Implementations§

source§

impl<L: Led, const NUM_LEDS: usize> SyscallDriver for LedDriver<'_, L, NUM_LEDS>

source§

fn command( &self, command_num: usize, data: usize, _: usize, _: ProcessId, ) -> CommandReturn

Control the LEDs.

§command_num
  • 0: Returns the number of LEDs on the board. This will always be 0 or greater, and therefore also allows for checking for this driver.
  • 1: Turn the LED at index specified by data on. Returns INVAL if the LED index is not valid.
  • 2: Turn the LED at index specified by data off. Returns INVAL if the LED index is not valid.
  • 3: Toggle the LED at index specified by data on or off. Returns INVAL if the LED index is not valid.
source§

fn allocate_grant(&self, _processid: ProcessId) -> Result<(), Error>

Request to allocate a capsule’s grant for a specific process. Read more
source§

fn allow_userspace_readable( &self, app: ProcessId, which: usize, slice: ReadWriteProcessBuffer, ) -> Result<ReadWriteProcessBuffer, (ReadWriteProcessBuffer, ErrorCode)>

System call for a process to pass a buffer (a UserspaceReadableProcessBuffer) to the kernel that the kernel can either read or write. The kernel calls this method only after it checks that the entire buffer is within memory the process can both read and write. Read more

Auto Trait Implementations§

§

impl<'a, L, const NUM_LEDS: usize> Freeze for LedDriver<'a, L, NUM_LEDS>

§

impl<'a, L, const NUM_LEDS: usize> RefUnwindSafe for LedDriver<'a, L, NUM_LEDS>
where L: RefUnwindSafe,

§

impl<'a, L, const NUM_LEDS: usize> Send for LedDriver<'a, L, NUM_LEDS>
where L: Sync,

§

impl<'a, L, const NUM_LEDS: usize> Sync for LedDriver<'a, L, NUM_LEDS>
where L: Sync,

§

impl<'a, L, const NUM_LEDS: usize> Unpin for LedDriver<'a, L, NUM_LEDS>

§

impl<'a, L, const NUM_LEDS: usize> UnwindSafe for LedDriver<'a, L, NUM_LEDS>
where L: RefUnwindSafe,

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.