#[cfg(feature = "urdf")]
use crate::to_rdf::to_urdf::ToURDF;
#[cfg(feature = "xml")]
use quick_xml::events::BytesText;
#[non_exhaustive]
#[derive(Debug, PartialEq, Eq, Clone, Copy)]
pub enum TransmissionType {
SimpleTransmission,
DifferentialTransmission,
FourBarLinkageTransmission,
}
impl TransmissionType {
#[cfg(feature = "urdf")]
fn as_urdf_transmission_type(&self) -> String {
let mut result = String::from(match true {
true => "transmission_interface/",
false => "",
});
match self {
Self::SimpleTransmission => result.push_str("SimpleTransmission"),
Self::DifferentialTransmission => result.push_str("DifferentialTransmission"),
Self::FourBarLinkageTransmission => result.push_str("FourBarLinkageTransmission"),
}
result
}
}
#[cfg(feature = "urdf")]
impl ToURDF for TransmissionType {
fn to_urdf(
&self,
writer: &mut quick_xml::Writer<std::io::Cursor<Vec<u8>>>,
_urdf_config: &crate::to_rdf::to_urdf::URDFConfig,
) -> Result<(), quick_xml::Error> {
writer
.create_element("type")
.write_text_content(BytesText::new(self.as_urdf_transmission_type().as_str()))?;
Ok(())
}
}