mirror of
https://github.com/esp-rs/esp-hal.git
synced 2025-09-28 04:40:52 +00:00

* Clean up and re-organize `lib.rs` a bit (sorry) * Add configuration validation, some other refactoring/improvements * Add a built-in range validator, re-document the `generate_config` function * Update build scripts to reflect new configuration API
55 lines
1.7 KiB
Rust
55 lines
1.7 KiB
Rust
use std::{error::Error, str::FromStr};
|
|
|
|
use esp_build::assert_unique_used_features;
|
|
use esp_config::{generate_config, Value};
|
|
use esp_metadata::{Chip, Config};
|
|
|
|
fn main() -> Result<(), Box<dyn Error>> {
|
|
// NOTE: update when adding new device support!
|
|
// Ensure that exactly one chip has been specified:
|
|
assert_unique_used_features!(
|
|
"esp32", "esp32c2", "esp32c3", "esp32c6", "esp32h2", "esp32s2", "esp32s3"
|
|
);
|
|
|
|
// NOTE: update when adding new device support!
|
|
// Determine the name of the configured device:
|
|
let device_name = if cfg!(feature = "esp32") {
|
|
"esp32"
|
|
} else if cfg!(feature = "esp32c2") {
|
|
"esp32c2"
|
|
} else if cfg!(feature = "esp32c3") {
|
|
"esp32c3"
|
|
} else if cfg!(feature = "esp32c6") {
|
|
"esp32c6"
|
|
} else if cfg!(feature = "esp32h2") {
|
|
"esp32h2"
|
|
} else if cfg!(feature = "esp32s2") {
|
|
"esp32s2"
|
|
} else if cfg!(feature = "esp32s3") {
|
|
"esp32s3"
|
|
} else {
|
|
unreachable!() // We've confirmed exactly one known device was selected
|
|
};
|
|
|
|
// Load the configuration file for the configured device:
|
|
let chip = Chip::from_str(device_name)?;
|
|
let config = Config::for_chip(&chip);
|
|
|
|
// Define all necessary configuration symbols for the configured device:
|
|
config.define_symbols();
|
|
|
|
// emit config
|
|
generate_config(
|
|
"esp_hal_embassy",
|
|
&[(
|
|
"low-power-wait",
|
|
"Enables the lower-power wait if no tasks are ready to run on the thread-mode executor. This allows the MCU to use less power if the workload allows. Recommended for battery-powered systems. May impact analog performance.",
|
|
Value::Bool(true),
|
|
None
|
|
)],
|
|
true,
|
|
);
|
|
|
|
Ok(())
|
|
}
|