autd3-protobuf 32.0.0

gRPC protobuf for autd3
Documentation
use crate::{FromMessage, pb::*};

impl From<Segment> for autd3_driver::firmware::fpga::Segment {
    fn from(value: Segment) -> Self {
        match value {
            Segment::S0 => autd3_driver::firmware::fpga::Segment::S0,
            Segment::S1 => autd3_driver::firmware::fpga::Segment::S1,
        }
    }
}

impl From<autd3_driver::firmware::fpga::Segment> for Segment {
    fn from(value: autd3_driver::firmware::fpga::Segment) -> Self {
        match value {
            autd3_driver::firmware::fpga::Segment::S0 => Self::S0,
            autd3_driver::firmware::fpga::Segment::S1 => Self::S1,
        }
    }
}

impl FromMessage<i32> for autd3_driver::firmware::fpga::Segment {
    fn from_msg(msg: i32) -> Result<Self, crate::AUTDProtoBufError> {
        Ok(Segment::try_from(msg)?.into())
    }
}

#[cfg(test)]
mod tests {
    use super::*;

    #[test]
    fn test_segment() {
        {
            let v = autd3_driver::firmware::fpga::Segment::S0;
            let msg: Segment = v.into();
            let v2: autd3_driver::firmware::fpga::Segment = msg.into();
            assert_eq!(v, v2);
        }

        {
            let v = autd3_driver::firmware::fpga::Segment::S1;
            let msg: Segment = v.into();
            let v2: autd3_driver::firmware::fpga::Segment = msg.into();
            assert_eq!(v, v2);
        }
    }
}