Struct capsules_extra::pwm::Pwm
source · pub struct Pwm<'a, const NUM_PINS: usize> { /* private fields */ }
Implementations§
source§impl<'a, const NUM_PINS: usize> Pwm<'a, NUM_PINS>
impl<'a, const NUM_PINS: usize> Pwm<'a, NUM_PINS>
pub fn new( pwm_pins: &'a [&'a dyn PwmPin; NUM_PINS], grant: Grant<App, UpcallCount<1>, AllowRoCount<0>, AllowRwCount<0>>, ) -> Pwm<'a, NUM_PINS>
pub fn claim_pin(&self, processid: ProcessId, pin: usize) -> bool
pub fn release_pin(&self, pin: usize)
Trait Implementations§
source§impl<'a, const NUM_PINS: usize> SyscallDriver for Pwm<'a, NUM_PINS>
impl<'a, const NUM_PINS: usize> SyscallDriver for Pwm<'a, NUM_PINS>
Provide an interface for userland.
source§fn command(
&self,
command_num: usize,
data1: usize,
data2: usize,
processid: ProcessId,
) -> CommandReturn
fn command( &self, command_num: usize, data1: usize, data2: usize, processid: ProcessId, ) -> CommandReturn
Command interface.
§command_num
0
: Driver existence check.1
: Start the PWM pin output. First 16 bits ofdata1
are used for the duty cycle, as a percentage with 2 decimals, and the last 16 bits ofdata1
are used for the PWM channel to be controlled.data2
is used for the frequency in hertz. For the duty cycle, 100% is the max duty cycle for this pin.2
: Stop the PWM output.3
: Return the maximum possible frequency for this pin.4
: Return number of PWM pins if this driver is included on the platform.
source§fn allocate_grant(&self, processid: ProcessId) -> Result<(), Error>
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)>
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 moreAuto Trait Implementations§
impl<'a, const NUM_PINS: usize> !Freeze for Pwm<'a, NUM_PINS>
impl<'a, const NUM_PINS: usize> !RefUnwindSafe for Pwm<'a, NUM_PINS>
impl<'a, const NUM_PINS: usize> !Send for Pwm<'a, NUM_PINS>
impl<'a, const NUM_PINS: usize> !Sync for Pwm<'a, NUM_PINS>
impl<'a, const NUM_PINS: usize> Unpin for Pwm<'a, NUM_PINS>
impl<'a, const NUM_PINS: usize> !UnwindSafe for Pwm<'a, NUM_PINS>
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more