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
//! Touch Sensor

use super::SensorPort;
use crate::{Attribute, Device, Driver, Ev3Error, Ev3Result};

/// Touch Sensor
#[derive(Debug, Clone, Device)]
pub struct TouchSensor {
    driver: Driver,
}

impl TouchSensor {

    fn new(driver: Driver) -> Self {
        Self {
            driver,
        }
    }

    findable!(
        "lego-sensor",
        "lego-ev3-touch",
        SensorPort,
        "TouchSensor",
        "in"
    );

    /// Button state
    pub const MODE_TOUCH: &'static str = "TOUCH";

    sensor!();

    /// A boolean indicating whether the current touch sensor is being pressed.
    pub fn get_pressed_state(&self) -> Ev3Result<bool> {
        Ok(self.get_value0()? != 0)
    }
}