pub trait AxisView {
fn control_word(&self) -> u16;
fn set_control_word(&mut self, word: u16);
fn set_target_position(&mut self, pos: i32);
fn set_profile_velocity(&mut self, vel: u32);
fn set_profile_acceleration(&mut self, accel: u32);
fn set_profile_deceleration(&mut self, decel: u32);
fn set_modes_of_operation(&mut self, mode: i8);
fn modes_of_operation_display(&self) -> i8;
fn status_word(&self) -> u16;
fn position_actual(&self) -> i32;
fn velocity_actual(&self) -> i32;
fn error_code(&self) -> u16 { 0 }
fn positive_limit_active(&self) -> bool { false }
fn negative_limit_active(&self) -> bool { false }
fn home_sensor_active(&self) -> bool { false }
fn dynamic_max_position_limit(&self) -> Option<f64> { None }
fn dynamic_min_position_limit(&self) -> Option<f64> { None }
}
pub trait AxisHandle {
fn position(&self) -> f64;
fn config(&self) -> &super::axis_config::AxisConfig;
fn move_relative(&mut self, distance: f64, vel: f64, accel: f64, decel: f64);
fn move_absolute(&mut self, position: f64, vel: f64, accel: f64, decel: f64);
fn halt(&mut self);
fn is_busy(&self) -> bool;
fn is_error(&self) -> bool;
fn motor_on(&self) -> bool;
}