mirror of
https://github.com/esp-rs/esp-idf-hal.git
synced 2025-09-27 12:21:02 +00:00

* Add first version of temp sensor driver Code is very rudimentary and still suspect to change. Notably, error handling is not implemented yet. * Change cfg attribute to not any * Rename TemperatureSensor to TemperatureSensorDriver * Switch to `core::ptr` * Add error handling * Build the internal temperature sensor only on supported targets * Fix the derives in TemperatureSensorConfig, TemperatureSensorClockSource * Implement From<TemperatureSensorConfig> for temperature_sensor_config_t * Use right clocks for temperature sensor depending on target * Rename config and move it into own module * Provide const new constructor for temperature sensor config * Change config argument to be a reference * Rename TemperatureSensor to TempSensor * Avoid cloning config in temp driver constructor * Add back derived Copy trait for TempSensorClockSource * Add non_exhaustive option to TempSensorConfig * Add temp sensor peripheral * Cause panic if uninstalling the temp driver fails * Implement Send for TempSensorDriver * Make use of esp_idf_soc_temp_sensor_supported * Add an example for temperature_sensor --------- Co-authored-by: Luca Barbato <lu_zero@gentoo.org>
29 lines
869 B
Rust
29 lines
869 B
Rust
use esp_idf_hal::delay::FreeRtos;
|
|
use esp_idf_hal::peripherals::Peripherals;
|
|
|
|
#[cfg(all(esp_idf_soc_temp_sensor_supported, esp_idf_version_major = "5"))]
|
|
fn main() -> anyhow::Result<()> {
|
|
use esp_idf_hal::temp_sensor::*;
|
|
esp_idf_hal::sys::link_patches();
|
|
|
|
let peripherals = Peripherals::take()?;
|
|
let cfg = TempSensorConfig::default();
|
|
let mut temp = TempSensorDriver::new(&cfg, peripherals.temp_sensor)?;
|
|
temp.enable()?;
|
|
|
|
loop {
|
|
let t = temp.get_celsius()?;
|
|
println!("Temperature {t}C");
|
|
FreeRtos::delay_ms(1000);
|
|
}
|
|
}
|
|
|
|
#[cfg(not(all(esp_idf_soc_temp_sensor_supported, esp_idf_version_major = "5")))]
|
|
fn main() -> anyhow::Result<()> {
|
|
println!("This example requires feature `esp_idf_soc_temp_sensor_supported` enabled");
|
|
|
|
loop {
|
|
std::thread::sleep(std::time::Duration::from_millis(1000));
|
|
}
|
|
}
|