1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#[macro_use]
mod dc_motor_macro;
#[macro_use]
mod servo_motor_macro;
#[macro_use]
mod tacho_motor_macro;
mod large_motor;
pub use self::large_motor::LargeMotor;
mod medium_motor;
pub use self::medium_motor::MediumMotor;
mod tacho_motor;
pub use self::tacho_motor::TachoMotor;
use crate::Port;
#[derive(Debug, Copy, Clone)]
pub enum MotorPort {
    
    OutA,
    
    OutB,
    
    OutC,
    
    OutD,
}
impl MotorPort {
    
    pub fn format_name(name: &str) -> String {
        match name {
            "motor0" => MotorPort::OutA.address(),
            "motor1" => MotorPort::OutB.address(),
            "motor2" => MotorPort::OutC.address(),
            "motor3" => MotorPort::OutD.address(),
            _ => name.to_owned(),
        }
    }
}
impl Port for MotorPort {
    fn address(&self) -> String {
        match self {
            MotorPort::OutA => "outA".to_owned(),
            MotorPort::OutB => "outB".to_owned(),
            MotorPort::OutC => "outC".to_owned(),
            MotorPort::OutD => "outD".to_owned(),
        }
    }
}