use serde::{Deserialize, Serialize};
use crate::{
ArmType, DirectionType, RStepType, Result, StepType, TeachRotateType, TeachType,
TrajectoryConnect,
};
use super::{
ArmContinueResponse, ArmJointTeachResponse, ArmOrtTeachResponse, ArmPauseResponse,
ArmPosTeachResponse, ArmSlowStopResponse, ArmStopResponse, ArmStopTeachResponse,
ReceiveStateResponse,
};
#[derive(Debug, Serialize, Deserialize)]
pub struct MotionData {
command: String,
receive_state: bool,
}
pub trait MotionTrait {
fn movej(
&mut self,
arm_type: ArmType,
v: u8,
r: u8,
trajectory_connect: TrajectoryConnect,
) -> Result<MotionData>;
fn set_joint_step(&mut self, joint_step: &[i32; 2], v: u8) -> Result<ReceiveStateResponse>;
fn set_pos_step(
&mut self,
step_type: StepType,
step: isize,
v: u8,
) -> Result<ReceiveStateResponse>;
fn set_ort_step(
&mut self,
step_type: RStepType,
step: isize,
v: u8,
) -> Result<ReceiveStateResponse>;
fn set_arm_stop(&mut self) -> Result<ArmStopResponse>;
fn set_arm_slow_stop(&mut self) -> Result<ArmSlowStopResponse>;
fn set_arm_pause(&mut self) -> Result<ArmPauseResponse>;
fn set_arm_continue(&mut self) -> Result<ArmContinueResponse>;
fn set_joint_teach(
&mut self,
teach_joint: u8,
direction: DirectionType,
v: u8,
) -> Result<ArmJointTeachResponse>;
fn set_pos_teach(
&mut self,
teach_type: TeachType,
direction: DirectionType,
v: u8,
) -> Result<ArmPosTeachResponse>;
fn set_ort_teach(
&mut self,
teach_rotate_joint: TeachRotateType,
direction: DirectionType,
v: u8,
) -> Result<ArmOrtTeachResponse>;
fn set_stop_teach(&mut self) -> Result<ArmStopTeachResponse>;
}