tof_control/rb_control/
rb_ph.rs1use crate::constant::*;
2use crate::helper::rb_type::{RBPh, RBError};
3use crate::device::{bme280, pca9548a};
4
5impl RBPh {
6 pub fn new() -> Self {
7 match Self::read_ph() {
8 Ok(rb_ph) => {
9 rb_ph
10 }
11 Err(_) => {
12 Self {
13 pressure: f32::MAX,
14 humidity: f32::MAX,
15 }
16 }
17 }
18 }
19 pub fn read_ph() -> Result<RBPh, RBError> {
20 let i2c_mux = pca9548a::PCA9548A::new(I2C_BUS, RB_PCA9548A_ADDRESS_1);
21
22 i2c_mux.select(RB_BME280_CHANNEL)?;
23 let bme280 = bme280::BME280::new(I2C_BUS, RB_BME280_ADDRESS);
24 bme280.configure()?;
25 let ph = bme280.read()?;
26 let pressure = ph[0];
27 let humidity = ph[1];
28
29 i2c_mux.reset()?;
30
31 Ok(
32 RBPh {
33 pressure,
34 humidity,
35 }
36 )
37 }
38}
39
40pub fn config_ph() -> Result<(), RBError> {
41 let i2c_mux = pca9548a::PCA9548A::new(I2C_BUS, RB_PCA9548A_ADDRESS_1);
42 i2c_mux.select(RB_BME280_CHANNEL)?;
43 let bme280 = bme280::BME280::new(I2C_BUS, RB_BME280_ADDRESS);
44 bme280.configure()?;
45
46 i2c_mux.reset()?;
47
48 Ok(())
49}