use crate::flags::*;
#[derive(Debug, Clone)]
pub struct PositionFields {
pub val: f64,
pub rbv: f64,
pub rlv: f64,
pub off: f64,
pub diff: f64,
pub rdif: i32,
pub dval: f64,
pub drbv: f64,
pub rval: i32,
pub rrbv: i32,
pub rmp: i32,
pub rep: i32,
}
impl Default for PositionFields {
fn default() -> Self {
Self {
val: 0.0,
rbv: 0.0,
rlv: 0.0,
off: 0.0,
diff: 0.0,
rdif: 0,
dval: 0.0,
drbv: 0.0,
rval: 0,
rrbv: 0,
rmp: 0,
rep: 0,
}
}
}
#[derive(Debug, Clone)]
pub struct ConversionFields {
pub dir: MotorDir,
pub foff: FreezeOffset,
pub set: bool,
pub igset: bool,
pub mres: f64,
pub eres: f64,
pub srev: i32,
pub urev: f64,
pub ueip: bool,
pub urip: bool,
pub rres: f64,
pub rdbl_value: Option<f64>,
}
impl Default for ConversionFields {
fn default() -> Self {
Self {
dir: MotorDir::Pos,
foff: FreezeOffset::Variable,
set: false,
igset: false,
mres: 1.0,
eres: 0.0,
srev: 200,
urev: 1.0,
ueip: false,
urip: false,
rres: 0.0,
rdbl_value: None,
}
}
}
#[derive(Debug, Clone)]
pub struct VelocityFields {
pub velo: f64,
pub vbas: f64,
pub vmax: f64,
pub s: f64,
pub sbas: f64,
pub smax: f64,
pub accl: f64,
pub bvel: f64,
pub bacc: f64,
pub hvel: f64,
pub jvel: f64,
pub jar: f64,
pub sbak: f64,
}
impl Default for VelocityFields {
fn default() -> Self {
Self {
velo: 1.0,
vbas: 0.0,
vmax: 0.0,
s: 0.0,
sbas: 0.0,
smax: 0.0,
accl: 0.2,
bvel: 1.0,
bacc: 0.5,
hvel: 1.0,
jvel: 1.0,
jar: 0.0,
sbak: 0.0,
}
}
}
#[derive(Debug, Clone)]
pub struct RetryFields {
pub bdst: f64,
pub frac: f64,
pub rdbd: f64,
pub spdb: f64,
pub rtry: i16,
pub rmod: RetryMode,
pub rcnt: i16,
pub miss: bool,
}
impl Default for RetryFields {
fn default() -> Self {
Self {
bdst: 0.0,
frac: 1.0,
rdbd: 0.0,
spdb: 0.0,
rtry: 10,
rmod: RetryMode::Default,
rcnt: 0,
miss: false,
}
}
}
#[derive(Debug, Clone)]
pub struct LimitFields {
pub hlm: f64,
pub llm: f64,
pub dhlm: f64,
pub dllm: f64,
pub rhlm: f64,
pub rllm: f64,
pub lvio: bool,
pub hls: bool,
pub lls: bool,
pub hlsv: i16,
}
impl Default for LimitFields {
fn default() -> Self {
Self {
hlm: 0.0,
llm: 0.0,
dhlm: 0.0,
dllm: 0.0,
rhlm: 0.0,
rllm: 0.0,
lvio: true,
hls: false,
lls: false,
hlsv: 0,
}
}
}
#[derive(Debug, Clone)]
pub struct ControlFields {
pub spmg: SpmgMode,
pub stop: bool,
pub homf: bool,
pub homr: bool,
pub jogf: bool,
pub jogr: bool,
pub twf: bool,
pub twr: bool,
pub twv: f64,
pub cnen: bool,
}
impl Default for ControlFields {
fn default() -> Self {
Self {
spmg: SpmgMode::Go,
stop: false,
homf: false,
homr: false,
jogf: false,
jogr: false,
twf: false,
twr: false,
twv: 1.0,
cnen: false,
}
}
}
#[derive(Debug, Clone)]
pub struct StatusFields {
pub dmov: bool,
pub movn: bool,
pub msta: MstaFlags,
pub mip: MipFlags,
pub phase: MotionPhase,
pub cdir: bool,
pub tdir: bool,
pub athm: bool,
pub stup: i16,
}
impl Default for StatusFields {
fn default() -> Self {
Self {
dmov: true,
movn: false,
msta: MstaFlags::empty(),
mip: MipFlags::empty(),
phase: MotionPhase::Idle,
cdir: false,
tdir: false,
athm: false,
stup: 0,
}
}
}
#[derive(Debug, Clone, Default)]
pub struct PidFields {
pub pcof: f64,
pub icof: f64,
pub dcof: f64,
}
#[derive(Debug, Clone)]
pub struct DisplayFields {
pub egu: String,
pub prec: i16,
pub adel: f64,
pub mdel: f64,
pub alst: f64,
pub mlst: f64,
}
impl Default for DisplayFields {
fn default() -> Self {
Self {
egu: String::new(),
prec: 0,
adel: 0.0,
mdel: 0.0,
alst: 0.0,
mlst: 0.0,
}
}
}
#[derive(Debug, Clone)]
pub struct TimingFields {
pub dly: f64,
pub ntm: bool,
pub ntmf: f64,
}
impl Default for TimingFields {
fn default() -> Self {
Self {
dly: 0.0,
ntm: true,
ntmf: 2.0,
}
}
}
#[derive(Debug, Clone, Default)]
pub struct InternalFields {
pub lval: f64,
pub ldvl: f64,
pub lrvl: i32,
pub lspg: SpmgMode,
pub pp: bool,
pub sync: bool,
pub backlash_pending: bool,
pub pending_retarget: Option<f64>,
pub jog_was_forward: bool,
pub dmov_notified: bool,
pub verify_retarget_on_completion: bool,
}