[package]
name         = "esp-lp-hal"
version      = "0.1.0"
edition      = "2021"
rust-version = "1.76.0"
description  = "HAL for low-power RISC-V coprocessors found in ESP32 devices"
keywords     = ["embedded", "embedded-hal", "esp32", "espressif", "hal"]
categories   = ["embedded", "hardware-support", "no-std"]
repository   = "https://github.com/esp-rs/esp-hal"
license      = "MIT OR Apache-2.0"

[lib]
bench = false
test  = false

[dependencies]
cfg-if            = "1.0.0"
document-features = "0.2.10"
embedded-hal      = { version = "1.0.0",  optional = true }
embedded-hal-nb   = { version = "1.0.0",  optional = true }
embedded-io       = { version = "0.6.1",  optional = true }
esp32c6-lp        = { version = "0.3.0", features = ["critical-section"], optional = true }
esp32s2-ulp       = { version = "0.3.0", features = ["critical-section"], optional = true }
esp32s3-ulp       = { version = "0.3.0", features = ["critical-section"], optional = true }
nb                = { version = "1.1.0",  optional = true }
procmacros        = { version = "0.15.0", package = "esp-hal-procmacros", path = "../esp-hal-procmacros" }
riscv             = { version = "0.11.1", features = ["critical-section-single-hart"] }

[dev-dependencies]
panic-halt = "0.2.0"

[build-dependencies]
esp-build = { version = "0.1.0", path = "../esp-build" }

[features]
default = ["embedded-hal"]

## Enable debug features in the HAL (used for development).
debug = [
    "esp32c6-lp?/impl-register-debug",
    "esp32s2-ulp?/impl-register-debug",
    "esp32s3-ulp?/impl-register-debug",
]

# Chip Support Feature Flags
# Target the ESP32-C6.
esp32c6 = ["dep:esp32c6-lp",  "procmacros/is-lp-core", "dep:nb"]
# Target the ESP32-S2.
esp32s2 = ["dep:esp32s2-ulp", "procmacros/is-ulp-core"]
# Target the ESP32-S3.
esp32s3 = ["dep:esp32s3-ulp", "procmacros/is-ulp-core"]

#! ### Trait Implementation Feature Flags
## Implement the traits defined in the `1.0.0` releases of `embedded-hal` and
## `embedded-hal-nb` for the relevant peripherals.
embedded-hal = ["dep:embedded-hal", "dep:embedded-hal-nb"]
## Implement the traits defined in `embedded-io` for the relevant peripherals.
embedded-io = ["dep:embedded-io"]

[[example]]
name              = "blinky"
required-features = []

[[example]]
name              = "i2c"
required-features = ["esp32c6"]

[[example]]
name              = "uart"
required-features = ["esp32c6"]

[lints.rust]
unexpected_cfgs = "allow"
