cadmus_core/lightsensor/
kobo.rs1use super::LightSensor;
2use anyhow::Error;
3use std::fs::File;
4use std::io::{Read, Seek, SeekFrom};
5
6const 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}