use crate::{bindings, error::{PROSErr, PROSResult}, port::SmartPort};
pub fn reset(port: SmartPort) -> Result<(), PROSErr> {
unsafe {
bindings::rotation_reset(port as u8)
}.check().map(|_| ())
}
pub fn set_data_rate(port: SmartPort, rate: u32) -> Result<(), PROSErr> {
unsafe {
bindings::rotation_set_data_rate(port as u8, rate)
}.check().map(|_| ())
}
pub fn set_position(port: SmartPort, position: u32) -> Result<(), PROSErr> {
unsafe {
bindings::rotation_set_position(port as u8, position)
}.check().map(|_| ())
}
pub fn reset_position(port: SmartPort) -> Result<(), PROSErr> {
unsafe {
bindings::rotation_reset_position(port as u8)
}.check().map(|_| ())
}
pub fn get_position(port: SmartPort) -> Result<i32, PROSErr> {
unsafe {
bindings::rotation_get_position(port as u8)
}.check()
}
pub fn get_velocity(port: SmartPort) -> Result<i32, PROSErr> {
unsafe {
bindings::rotation_get_velocity(port as u8)
}.check()
}
pub fn get_angle(port: SmartPort) -> Result<i32, PROSErr> {
unsafe {
bindings::rotation_get_angle(port as u8)
}.check()
}
pub fn set_reversed(port: SmartPort, is_reversed: bool) -> Result<(), PROSErr> {
unsafe {
bindings::rotation_set_reversed(port as u8, is_reversed)
}.check().map(|_| ())
}
pub fn get_reversed(port: SmartPort) -> Result<bool, PROSErr> {
unsafe {
bindings::rotation_get_reversed(port as u8)
}.check().map(|x| x != 0)
}