cadmus_core/lightsensor/
kobo.rs

1use super::LightSensor;
2use anyhow::Error;
3use std::fs::File;
4use std::io::{Read, Seek, SeekFrom};
5
6// The Aura ONE uses a Silicon Graphics light sensor,
7// the model code is si114x (where x is 5, 6, or 7).
8const VISIBLE_PHOTODIODE: &str = "/sys/devices/virtual/input/input3/als_vis_data";
9
10pub struct KoboLightSensor(File);
11
12impl KoboLightSensor {
13    pub fn new() -> Result<Self, Error> {
14        let file = File::open(VISIBLE_PHOTODIODE)?;
15        Ok(KoboLightSensor(file))
16    }
17}
18
19impl LightSensor for KoboLightSensor {
20    fn level(&mut self) -> Result<u16, Error> {
21        let mut buf = String::new();
22        self.0.seek(SeekFrom::Start(0))?;
23        self.0.read_to_string(&mut buf)?;
24        let value = buf.trim_end().parse()?;
25        Ok(value)
26    }
27}