use std::fmt::Display;
use serde_repr::{Deserialize_repr, Serialize_repr};
#[derive(Debug, Clone, Copy)]
pub enum ArmType {
Rm65([i32; 6]),
Rm75([i32; 7]),
Rml63([i32; 6]),
Eco65([i32; 6]),
Gen72([i32; 7]),
}
impl From<ArmType> for Vec<i32> {
fn from(value: ArmType) -> Self {
match value {
ArmType::Gen72(data) => data.to_vec(),
ArmType::Rm65(data) => data.to_vec(),
ArmType::Rm75(data) => data.to_vec(),
ArmType::Rml63(data) => data.to_vec(),
ArmType::Eco65(data) => data.to_vec(),
}
}
}
#[derive(Debug, PartialEq, Eq, Clone, Copy)]
#[repr(u8)]
pub enum TrajectoryConnect {
Now = 0,
Next = 1,
}
impl From<TrajectoryConnect> for u8 {
fn from(value: TrajectoryConnect) -> Self {
value as u8
}
}
#[derive(Debug, PartialEq, Eq, Clone, Copy, Serialize_repr, Deserialize_repr)]
#[repr(u8)]
pub enum VoltageType {
Zero = 0,
One = 1,
Two = 2,
Three = 3,
}
impl From<VoltageType> for u8 {
fn from(value: VoltageType) -> Self {
value as u8
}
}
#[derive(Debug, PartialEq, Eq, Clone, Copy, Serialize_repr, Deserialize_repr)]
#[repr(u8)]
pub enum PortType {
ControlRS485RTUMain = 0,
EndRS485RTUMain = 1,
ControlRS485RTUSlave = 2,
}
impl From<PortType> for u8 {
fn from(value: PortType) -> Self {
value as u8
}
}
#[derive(Debug, PartialEq, Eq, Clone, Copy, Serialize_repr, Deserialize_repr)]
#[repr(u8)]
pub enum ModbusPortType {
ControlRS485RTUMain = 0,
EndRS485RTUMain = 1,
ControlModbusTCPConnectSlave = 3,
}
impl From<ModbusPortType> for u8 {
fn from(value: ModbusPortType) -> Self {
value as u8
}
}
#[derive(Debug, PartialEq, Eq, Clone, Copy, Serialize_repr, Deserialize_repr)]
#[repr(usize)]
pub enum BaudrateType {
Baud9600 = 9600,
Baud115200 = 115200,
Baud460800 = 460800,
}
impl From<BaudrateType> for usize {
fn from(value: BaudrateType) -> Self {
value as usize
}
}
pub enum StepType {
XStep,
YStep,
ZStep,
}
impl Display for StepType {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
write!(
f,
"{}",
match self {
Self::XStep => "x_step",
Self::YStep => "y_step",
Self::ZStep => "z_step",
}
)
}
}
pub enum RStepType {
RXStep,
RYStep,
RZStep,
}
impl Display for RStepType {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
write!(
f,
"{}",
match self {
Self::RXStep => "rx_step",
Self::RYStep => "ry_step",
Self::RZStep => "rz_step",
}
)
}
}
pub enum DirectionType {
Pos,
Neg,
}
impl Display for DirectionType {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
write!(
f,
"{}",
match self {
Self::Pos => "pos",
Self::Neg => "neg",
}
)
}
}
pub enum TeachType {
X,
Y,
Z,
}
impl Display for TeachType {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
write!(
f,
"{}",
match self {
Self::X => "x",
Self::Y => "y",
Self::Z => "z",
}
)
}
}
pub enum TeachRotateType {
Rx,
Ry,
Rz,
}
impl Display for TeachRotateType {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
write!(
f,
"{}",
match self {
Self::Rx => "rx",
Self::Ry => "ry",
Self::Rz => "rz",
}
)
}
}