[package]
name    = "hil-test"
version = "0.0.0"
edition = "2021"
publish = false

[lib]
name = "hil_test"

[[test]]
name    = "aes"
harness = false

[[test]]
name    = "aes_dma"
harness = false

[[test]]
name    = "clock_monitor"
harness = false

[[test]]
name    = "crc"
harness = false

[[test]]
name    = "critical_section"
harness = false

[[test]]
name    = "delay"
harness = false

[[test]]
name    = "delay_async"
harness = false

[[test]]
name    = "dma_macros"
harness = false

[[test]]
name    = "dma_mem2mem"
harness = false

[[test]]
name    = "ecc"
harness = false

[[test]]
name    = "get_time"
harness = false

[[test]]
name    = "gpio"
harness = false

[[test]]
name    = "gpio_custom_handler"
harness = false

[[test]]
name    = "interrupt"
harness = false

[[test]]
name    = "i2c"
harness = false

[[test]]
name    = "init"
harness = false

[[test]]
name    = "i2s"
harness = false

[[test]]
name    = "lcd_cam"
harness = false

[[test]]
name    = "lcd_cam_i8080"
harness = false

[[test]]
name    = "lcd_cam_i8080_async"
harness = false

[[test]]
name    = "qspi"
harness = false

[[test]]
name    = "spi_full_duplex"
harness = false

[[test]]
name    = "spi_half_duplex_read"
harness = false

[[test]]
name    = "spi_half_duplex_write"
harness = false

[[test]]
name    = "spi_half_duplex_write_psram"
harness = false

[[test]]
name    = "spi_slave"
harness = false

[[test]]
name    = "parl_io_tx"
harness = false

[[test]]
name    = "parl_io_tx_async"
harness = false

[[test]]
name    = "pcnt"
harness = false

[[test]]
name    = "rmt"
harness = false

[[test]]
name    = "rsa"
harness = false

[[test]]
name    = "rsa_async"
harness = false

[[test]]
name    = "sha"
harness = false

[[test]]
name    = "uart"
harness = false

[[test]]
name    = "usb_serial_jtag"
harness = false

[[test]]
name              = "uart_async"
harness           = false
required-features = ["embassy"]

[[test]]
name    = "uart_regression"
harness = false

[[test]]
name    = "uart_tx_rx"
harness = false

[[test]]
name    = "uart_tx_rx_async"
harness = false

[[test]]
name              = "embassy_timers_executors"
harness           = false
required-features = ["embassy"]

[[test]]
name              = "embassy_interrupt_executor"
harness           = false
required-features = ["embassy"]

[[test]]
name    = "embassy_interrupt_spi_dma"
harness = false
required-features = ["embassy"]

[[test]]
name    = "systimer"
harness = false

[[test]]
name    = "twai"
harness = false

[[test]]
name              = "esp_wifi_floats"
harness           = false
required-features = ["esp-wifi", "esp-alloc"]

[dependencies]
cfg-if             = "1.0.0"
critical-section   = "1.1.3"
defmt              = "0.3.8"
defmt-rtt          = { version = "0.4.1", optional = true }
embassy-futures    = "0.1.1"
embassy-sync       = "0.6.0"
embassy-time       = "0.3.2"
embedded-hal       = "1.0.0"
embedded-can       = "0.4.1"
embedded-hal-async = "1.0.0"
embedded-hal-nb    = "1.0.0"
esp-alloc          = { path = "../esp-alloc", optional = true }
esp-backtrace      = { path = "../esp-backtrace", default-features = false, features = ["exception-handler", "defmt", "semihosting"] }
esp-hal            = { path = "../esp-hal", features = ["digest", "unstable"], optional = true }
esp-hal-embassy    = { path = "../esp-hal-embassy", optional = true }
esp-wifi           = { path = "../esp-wifi", optional = true, features = ["wifi"] }
portable-atomic    = "1.9.0"
static_cell        = { version = "2.1.0", features = ["nightly"] }
semihosting        = { version = "0.1", features= ["stdio", "panic-handler"] }
xtensa-lx-rt       = { path = "../xtensa-lx-rt", optional = true }

[dev-dependencies]
crypto-bigint       = { version = "0.5.5", default-features = false }
digest              = { version = "0.10.7", default-features = false }
elliptic-curve      = { version = "0.13.8", default-features = false, features = ["sec1"] }
embassy-executor    = { version = "0.6.0", default-features = false }
# Add the `embedded-test/defmt` feature for more verbose testing
embedded-test       = { version = "0.5.0", git = "https://github.com/probe-rs/embedded-test.git", rev = "7109473", default-features = false }
fugit               = "0.3.7"
hex-literal         = "0.4.1"
nb                  = "1.1.0"
p192                = { version = "0.13.0", default-features = false, features = ["arithmetic"] }
p256                = { version = "0.13.2", default-features = false, features = ["arithmetic"] }
sha1                = { version = "0.10.6", default-features = false }
sha2                = { version = "0.10.8", default-features = false }

[build-dependencies]
esp-build    = { path = "../esp-build" }
esp-metadata = { path = "../esp-metadata" }

[features]
default = ["embassy"]

defmt = ["dep:defmt-rtt", "esp-hal/defmt", "embedded-test/defmt"]

# Device support (required!):
esp32 = [
    "embedded-test/xtensa-semihosting",
    "esp-backtrace/esp32",
    "esp-hal/esp32",
    "esp-hal-embassy?/esp32",
    "esp-wifi?/esp32",
]
esp32c2 = [
    "esp-backtrace/esp32c2",
    "esp-hal/esp32c2",
    "esp-hal-embassy?/esp32c2",
    "esp-wifi?/esp32c2",
]
esp32c3 = [
    "esp-backtrace/esp32c3",
    "esp-hal/esp32c3",
    "esp-hal-embassy?/esp32c3",
    "esp-wifi?/esp32c3",
]
esp32c6 = [
    "esp-backtrace/esp32c6",
    "esp-hal/esp32c6",
    "esp-hal-embassy?/esp32c6",
    "esp-wifi?/esp32c6",
]
esp32h2 = [
    "esp-backtrace/esp32h2",
    "esp-hal/esp32h2",
    "esp-hal-embassy?/esp32h2",
    "esp-wifi?/esp32h2",
]
esp32s2 = [
    "embedded-test/xtensa-semihosting",
    "esp-backtrace/esp32s2",
    "esp-hal/esp32s2",
    "esp-hal-embassy?/esp32s2",
    "esp-wifi?/esp32s2",
]
esp32s3 = [
    "embedded-test/xtensa-semihosting",
    "esp-backtrace/esp32s3",
    "esp-hal/esp32s3",
    "esp-hal-embassy?/esp32s3",
    "esp-wifi?/esp32s3",
]
# Async & Embassy:
embassy = [
    "embedded-test/embassy",
    "embedded-test/external-executor",
    "dep:esp-hal-embassy",
]
generic-queue = [
    "embassy-time/generic-queue-64"
]
integrated-timers = [
    "esp-hal-embassy/integrated-timers",
]
octal-psram = ["esp-hal/octal-psram", "esp-alloc"]

# https://doc.rust-lang.org/cargo/reference/profiles.html#test
# Test and bench profiles inherit from dev and release respectively.
[profile.dev]
codegen-units    = 1
debug            = 2
debug-assertions = true
incremental      = false
opt-level        = "z"
overflow-checks  = true

[profile.release]
codegen-units    = 1
debug            = 2
debug-assertions = true
incremental      = false
opt-level        = 3
lto              = false # LTO (thin or fat) miscompiles some tests on RISC-V
overflow-checks  = false
