[][src]Struct lss_driver::LSSDriver

pub struct LSSDriver { /* fields omitted */ }

Driver for the LSS servo

Implementations

impl LSSDriver[src]

pub fn new(port: &str) -> Result<LSSDriver, LssDriverError>[src]

Create new driver on a serial port with default settings

Default baud_rate is 115200

Arguments

  • post - Port to use. e.g. COM1 or /dev/ttyACM0

Example

use lss_driver::LSSDriver;
let mut driver = LSSDriver::new("COM1").unwrap();

pub fn with_baud_rate(
    port: &str,
    baud_rate: u32
) -> Result<LSSDriver, LssDriverError>
[src]

Create new driver on a serial port with custom baud rate

Arguments

  • post - Port to use. e.g. COM1 or /dev/ttyACM0
  • baud_rate - Baudrate. e.g. 115200

Example

use lss_driver::LSSDriver;
let mut driver = LSSDriver::with_baud_rate("COM1", 115200).unwrap();

pub fn with_driver(driver: Box<dyn FramedDriver + Send + Sync>) -> LSSDriver[src]

Creates new LSS driver with a custom implementation of the transport

This is used for tests and can be used if you want to reimplement the driver over network

pub async fn reset(&mut self, id: u8) -> Result<(), LssDriverError>[src]

Soft reset This command does a "soft reset" and reverts all commands to those stored in EEPROM

wiki

Arguments

  • id - ID of servo you want to reset

pub async fn query_id(&mut self, id: u8) -> Result<u8, LssDriverError>[src]

Query value of ID Especially useful with BROADCAST_ID

wiki

Arguments

  • id - ID of servo you want to control

Example

use lss_driver::LSSDriver;
async fn async_main(){
    let mut driver = LSSDriver::with_baud_rate("COM1", 115200).unwrap();
    let id = driver.query_id(lss_driver::BROADCAST_ID).await.unwrap();
}

pub async fn set_id(&mut self, id: u8, new_id: u8) -> Result<(), LssDriverError>[src]

Set value of ID Saved to EEPROM Only takes effect after restart

wiki

Arguments

  • id - ID of servo you want to control
  • new_id - ID You want that servo to have

pub async fn set_color(
    &mut self,
    id: u8,
    color: LedColor
) -> Result<(), LssDriverError>
[src]

set color for driver with id

Arguments

  • id - ID of servo you want to control
  • color - Color to set

pub async fn query_color(&mut self, id: u8) -> Result<LedColor, LssDriverError>[src]

Query color of servo LED

Arguments

  • id - ID of servo you want to query

pub async fn move_to_position(
    &mut self,
    id: u8,
    position: f32
) -> Result<(), LssDriverError>
[src]

Move to absolute position in degrees

Supports virtual positions that are more than 360 degrees

Arguments

  • id - ID of servo you want to control
  • position - Absolute position in degrees

Example

use lss_driver::LSSDriver;
async fn async_main(){
    let mut driver = LSSDriver::with_baud_rate("COM1", 115200).unwrap();
    driver.move_to_position(5, 180.0).await;
    driver.move_to_position(5, 480.0).await;
}

pub async fn set_target_position(
    &mut self,
    id: u8,
    position: f32
) -> Result<(), LssDriverError>
[src]

Move to absolute position in degrees

Same as move_to_position

Arguments

  • id - ID of servo you want to control
  • position - Absolute position in degrees

Example

use lss_driver::LSSDriver;
async fn async_main(){
    let mut driver = LSSDriver::with_baud_rate("COM1", 115200).unwrap();
    driver.set_target_position(5, 180.0).await;
    driver.set_target_position(5, 480.0).await;
}

pub async fn query_position(&mut self, id: u8) -> Result<f32, LssDriverError>[src]

Query absolute current position in degrees

Supports virtual positions that are more than 360 degrees

Arguments

  • id - ID of servo you want to query

pub async fn query_target_position(
    &mut self,
    id: u8
) -> Result<f32, LssDriverError>
[src]

Query absolute target position in degrees

Supports virtual positions that are more than 360 degrees

Arguments

  • id - ID of servo you want to query

pub async fn set_rotation_speed(
    &mut self,
    id: u8,
    speed: f32
) -> Result<(), LssDriverError>
[src]

Set continuous rotation speed in °/s

Arguments

  • id - ID of servo you want to control
  • speed - Speed in °/s

pub async fn query_rotation_speed(
    &mut self,
    id: u8
) -> Result<f32, LssDriverError>
[src]

Query absolute rotation speed in °/s

Arguments

  • id - ID of servo you want to query

pub async fn query_status(
    &mut self,
    id: u8
) -> Result<MotorStatus, LssDriverError>
[src]

Query status of a motor

View more on wiki

Arguments

  • id - ID of servo you want to query

pub async fn query_safety_status(
    &mut self,
    id: u8
) -> Result<SafeModeStatus, LssDriverError>
[src]

Query safety status of a motor

View more on wiki

Arguments

  • id - ID of servo you want to query

pub async fn set_motion_profile(
    &mut self,
    id: u8,
    motion_profile: bool
) -> Result<(), LssDriverError>
[src]

Set motion profile enabled or disabled. If the motion profile is enabled, angular acceleration (AA) and angular deceleration(AD) will have an effect on the motion. Also, SD/S and T modifiers can be used.

With motion profile enabled servos will follow a motion curve With motion profile disabled servos move towards target location at full speed

Arguments

  • id - ID of servo you want to control
  • motion_profile - set motion profile on/off

pub async fn query_motion_profile(
    &mut self,
    id: u8
) -> Result<bool, LssDriverError>
[src]

query motion profile enabled or disabled. If the motion profile is enabled, angular acceleration (AA) and angular deceleration(AD) will have an effect on the motion. Also, SD/S and T modifiers can be used.

With motion profile enabled servos will follow a motion curve With motion profile disabled servos move towards target location at full speed

Arguments

  • id - ID of servo you want to query

pub async fn set_filter_position_count(
    &mut self,
    id: u8,
    filter_position_count: u8
) -> Result<(), LssDriverError>
[src]

Set filter position count

Change the Filter Position Count value for this session. Affects motion only when motion profile is disabled (EM0)

more info at the wiki

Arguments

  • id - ID of servo you want to control
  • filter_position_count - default if 5

pub async fn query_filter_position_count(
    &mut self,
    id: u8
) -> Result<u8, LssDriverError>
[src]

Query filter position count

Query the Filter Position Count value. Affects motion only when motion profile is disabled (EM0)

more info at the wiki

Arguments

  • id - ID of servo you want to query

pub async fn set_angular_stiffness(
    &mut self,
    id: u8,
    angular_stiffness: i32
) -> Result<(), LssDriverError>
[src]

Set angular stiffness

Read more about Angular stiffness

Arguments

  • id - ID of servo you want to control
  • angular_stiffness - value for angular stiffness (-10 to 10) (recommended -4 to 4)

pub async fn query_angular_stiffness(
    &mut self,
    id: u8
) -> Result<i32, LssDriverError>
[src]

Query angular stiffness

Read more about Angular stiffness

Arguments

  • id - ID of servo you want to query

pub async fn set_angular_holding_stiffness(
    &mut self,
    id: u8,
    angular_holding: i32
) -> Result<(), LssDriverError>
[src]

Set angular holding stiffness

Read more about Angular holding stiffness

Arguments

  • id - ID of servo you want to control
  • angular_holding - value for angular holding stiffness (-10 to 10)

pub async fn query_angular_holding_stiffness(
    &mut self,
    id: u8
) -> Result<i32, LssDriverError>
[src]

Query angular holding stiffness

Read more about Angular holding stiffness

Arguments

  • id - ID of servo you want to control

pub async fn set_angular_acceleration(
    &mut self,
    id: u8,
    angular_acceleration: i32
) -> Result<(), LssDriverError>
[src]

Set angular acceleration in degrees per second squared (°/s2)

Accepts values between 1 and 100. Increments of 10 Only used when motion profile is enabled

Read more on the wiki

Arguments

  • id - ID of servo you want to control
  • angular_acceleration - value for angular acceleration (1 to 100, Increments 10)

pub async fn query_angular_acceleration(
    &mut self,
    id: u8
) -> Result<i32, LssDriverError>
[src]

Query angular acceleration in degrees per second squared (°/s2)

Accepts values between 1 and 100. Increments of 10 Only used when motion profile is enabled

Read more on the wiki

Arguments

  • id - ID of servo you want to query

pub async fn set_angular_deceleration(
    &mut self,
    id: u8,
    angular_deceleration: i32
) -> Result<(), LssDriverError>
[src]

Set angular deceleration in degrees per second squared (°/s2)

Accepts values between 1 and 100. Increments of 10 Only used when motion profile is enabled

Read more on the wiki

Arguments

  • id - ID of servo you want to control
  • angular_deceleration - value for angular deceleration (1 to 100, Increments 10)

pub async fn query_angular_deceleration(
    &mut self,
    id: u8
) -> Result<i32, LssDriverError>
[src]

Query angular deceleration in degrees per second squared (°/s2)

Accepts values between 1 and 100. Increments of 10 Only used when motion profile is enabled

Read more on the wiki

Arguments

  • id - ID of servo you want to query

pub async fn set_maximum_motor_duty(
    &mut self,
    id: u8,
    maximum_motor_duty: i32
) -> Result<(), LssDriverError>
[src]

Set maximum motor duty

Accepts values between 255 and 1023 Only used when motion profile is disabled

Read more on the wiki

Arguments

  • id - ID of servo you want to control
  • maximum_motor_duty - value for maximum motor duty (255 to 1023)

pub async fn query_maximum_motor_duty(
    &mut self,
    id: u8
) -> Result<i32, LssDriverError>
[src]

Query maximum motor duty

Accepts values between 255 and 1023 Only used when motion profile is disabled

Read more on the wiki

Arguments

  • id - ID of servo you want to query

pub async fn set_maximum_speed(
    &mut self,
    id: u8,
    maximum_speed: f32
) -> Result<(), LssDriverError>
[src]

Set maximum speed in degrees per second

Accepts values up to 180.0

Read more on the wiki

Arguments

  • id - ID of servo you want to control
  • maximum_speed - value for maximum speed

pub async fn query_maximum_speed(
    &mut self,
    id: u8
) -> Result<f32, LssDriverError>
[src]

Query maximum speed in degrees per second

Accepts values up to 180.0

Read more on the wiki

Arguments

  • id - ID of servo you want to query

pub async fn limp(&mut self, id: u8) -> Result<(), LssDriverError>[src]

Disables power to motor allowing it to be back driven

Arguments

  • id - ID of servo you want to control

pub async fn halt_hold(&mut self, id: u8) -> Result<(), LssDriverError>[src]

Stops any ongoing motor motion and actively holds position

Arguments

  • id - ID of servo you want to control

pub async fn query_voltage(&mut self, id: u8) -> Result<f32, LssDriverError>[src]

Query voltage of motor in volts

Arguments

  • id - ID of servo you want to Query

pub async fn query_temperature(&mut self, id: u8) -> Result<f32, LssDriverError>[src]

Query temperature of motor in celsius

Arguments

  • id - ID of servo you want to Query

pub async fn query_current(&mut self, id: u8) -> Result<f32, LssDriverError>[src]

Query current of motor in Amps

Arguments

  • id - ID of servo you want to Query

pub async fn query_model(&mut self, id: u8) -> Result<Model, LssDriverError>[src]

Query model string

Arguments

  • id - ID of servo you want to query

pub async fn query_firmware_version(
    &mut self,
    id: u8
) -> Result<String, LssDriverError>
[src]

Query firmware version

Arguments

  • id - ID of servo you want to query

pub async fn query_serial_number(
    &mut self,
    id: u8
) -> Result<String, LssDriverError>
[src]

Query serial number

Arguments

  • id - ID of servo you want to query

pub async fn set_led_blinking(
    &mut self,
    id: u8,
    blinking_mode: Vec<LedBlinking>
) -> Result<(), LssDriverError>
[src]

Set LED blinking mode

Read more on the wiki

Arguments

  • id - ID of servo you want to control
  • blinking_mode - Blinking mode desired. Can be combination to make motor blink during multiple modes

Auto Trait Implementations

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

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

The type returned in the event of a conversion error.