pub struct ServoClusterBuilder<'a, Cal, C1, C2, P, SM, F, const NUM_SERVOS: usize, const NUM_CHANNELS: usize>where
C1: ChannelIndex + 'static,
C2: ChannelIndex + 'static,
P: PIOExt<PinFunction = F> + 'static,
F: Function,
SM: StateMachineIndex + 'static,{ /* private fields */ }
Expand description
A builder for ServoCluster.
Implementations§
Source§impl<'a, Cal, C1, C2, P, SM, F, const NUM_SERVOS: usize, const NUM_CHANNELS: usize> ServoClusterBuilder<'a, Cal, C1, C2, P, SM, F, NUM_SERVOS, NUM_CHANNELS>where
Cal: CalibrationData + Default + Clone,
for<'i> <Cal as CalibrationData>::Iterator<'i>: Iterator<Item = (Point, Point)>,
C1: ChannelIndex,
C2: ChannelIndex,
P: PIOExt<PinFunction = F>,
F: Function,
SM: StateMachineIndex,
impl<'a, Cal, C1, C2, P, SM, F, const NUM_SERVOS: usize, const NUM_CHANNELS: usize> ServoClusterBuilder<'a, Cal, C1, C2, P, SM, F, NUM_SERVOS, NUM_CHANNELS>where
Cal: CalibrationData + Default + Clone,
for<'i> <Cal as CalibrationData>::Iterator<'i>: Iterator<Item = (Point, Point)>,
C1: ChannelIndex,
C2: ChannelIndex,
P: PIOExt<PinFunction = F>,
F: Function,
SM: StateMachineIndex,
Sourcepub fn calibrations(self, calibrations: [Calibration<Cal>; NUM_SERVOS]) -> Self
pub fn calibrations(self, calibrations: [Calibration<Cal>; NUM_SERVOS]) -> Self
Set the calibration for each servos.
Sourcepub fn auto_phase(self, auto_phase: bool) -> Self
pub fn auto_phase(self, auto_phase: bool) -> Self
Configure whether or not to enable phase shifts for the servos.
Sourcepub fn pins_and_calibration(
self,
pin_data: [ServoData<Cal, F>; NUM_SERVOS],
) -> Self
pub fn pins_and_calibration( self, pin_data: [ServoData<Cal, F>; NUM_SERVOS], ) -> Self
Set the output pins to correspond to the servos. Note that the order they are passed in here will map how the servos are accessed in ServoCluster when specifying the servo index.
Sourcepub fn pwm_frequency(self, pwm_frequency: f32) -> Self
pub fn pwm_frequency(self, pwm_frequency: f32) -> Self
Set the frequency for the pwm signal for the cluster.
Sourcepub fn build(
self,
system_clock: &SystemClock,
maybe_global_state: &'static mut Option<GlobalState<C1, C2, P, SM>>,
) -> Result<ServoCluster<NUM_SERVOS, P, SM, Cal>, ServoClusterBuilderError>
pub fn build( self, system_clock: &SystemClock, maybe_global_state: &'static mut Option<GlobalState<C1, C2, P, SM>>, ) -> Result<ServoCluster<NUM_SERVOS, P, SM, Cal>, ServoClusterBuilderError>
Build the ServoCluster. Note that the global state passed in here should not have been used to initialize another ServoCluster. If so, this function will return an error.
Auto Trait Implementations§
impl<'a, Cal, C1, C2, P, SM, F, const NUM_SERVOS: usize, const NUM_CHANNELS: usize> Freeze for ServoClusterBuilder<'a, Cal, C1, C2, P, SM, F, NUM_SERVOS, NUM_CHANNELS>
impl<'a, Cal, C1, C2, P, SM, F, const NUM_SERVOS: usize, const NUM_CHANNELS: usize> !RefUnwindSafe for ServoClusterBuilder<'a, Cal, C1, C2, P, SM, F, NUM_SERVOS, NUM_CHANNELS>
impl<'a, Cal, C1, C2, P, SM, F, const NUM_SERVOS: usize, const NUM_CHANNELS: usize> !Send for ServoClusterBuilder<'a, Cal, C1, C2, P, SM, F, NUM_SERVOS, NUM_CHANNELS>
impl<'a, Cal, C1, C2, P, SM, F, const NUM_SERVOS: usize, const NUM_CHANNELS: usize> !Sync for ServoClusterBuilder<'a, Cal, C1, C2, P, SM, F, NUM_SERVOS, NUM_CHANNELS>
impl<'a, Cal, C1, C2, P, SM, F, const NUM_SERVOS: usize, const NUM_CHANNELS: usize> Unpin for ServoClusterBuilder<'a, Cal, C1, C2, P, SM, F, NUM_SERVOS, NUM_CHANNELS>
impl<'a, Cal, C1, C2, P, SM, F, const NUM_SERVOS: usize, const NUM_CHANNELS: usize> !UnwindSafe for ServoClusterBuilder<'a, Cal, C1, C2, P, SM, F, NUM_SERVOS, NUM_CHANNELS>
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
Source§impl<Choices> CoproductSubsetter<CNil, HNil> for Choices
impl<Choices> CoproductSubsetter<CNil, HNil> for Choices
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read more