use crate::Result;
mod packetserial;
mod plaintext;
pub use packetserial::{PacketSerial, PacketType, DEFAULT_ADDRESS, DEFAULT_PACKET_TYPE};
pub use plaintext::PlainText;
pub trait Sabertooth2x32 {
fn startup(&mut self, channel: usize) -> Result<()>;
fn shutdown(&mut self, channel: usize) -> Result<()>;
fn set_speed(&mut self, channel: usize, ratio: f32) -> Result<()>;
fn get_speed(&mut self, channel: usize) -> Result<f32>;
fn stop_motors(&mut self) -> Result<()> {
self.set_speed(1, 0.0)?;
self.set_speed(2, 0.0)?;
Ok(())
}
fn set_drive(&mut self, ratio: f32) -> Result<()>;
fn set_turn(&mut self, ratio: f32) -> Result<()>;
fn set_power(&mut self, channel: usize, ratio: f32) -> Result<()>;
fn get_power(&mut self, channel: usize) -> Result<f32>;
fn set_ramp(&mut self, channel: usize, ratio: f32) -> Result<()>;
fn set_aux(&mut self, channel: usize, ratio: f32) -> Result<()>;
fn get_voltage(&mut self, channel: usize) -> Result<f32>;
fn get_current(&mut self, channel: usize) -> Result<f32>;
fn get_temperature(&mut self, channel: usize) -> Result<f32>;
}