diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 248df124..f1752b77 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -40,10 +40,10 @@ jobs: - name: check-fmt run: cargo fmt --check - checks-xtensa: + builds: strategy: matrix: - chip: ["esp32", "esp32s2", "esp32s3"] + chip: ["esp32", "esp32s2", "esp32s3", "esp32c2", "esp32c3", "esp32c6"] runs-on: ubuntu-latest steps: @@ -51,91 +51,42 @@ jobs: - uses: esp-rs/xtensa-toolchain@v1.5 with: default: true - buildtargets: ${{ matrix.chip }} ldproxy: false - uses: Swatinem/rust-cache@v1 - - name: check - run: cd examples-${{ matrix.chip }} && cargo check - - name: check (common features) - run: cd examples-${{ matrix.chip }} && cargo check --features=async,wifi,esp-now,embassy-net,log - - name: check (common features + defmt) - run: cd examples-${{ matrix.chip }} && cargo check --no-default-features --features=${{ matrix.chip }},async,wifi,esp-now,embassy-net,defmt - - name: check (dhcp) - run: cd examples-${{ matrix.chip }} && cargo build --release --example=dhcp --features=wifi - - name: check (static_ip) - run: cd examples-${{ matrix.chip }} && cargo build --release --example=static_ip --features=wifi - - name: check (esp_now) - run: cd examples-${{ matrix.chip }} && cargo build --release --example=esp_now --features=esp-now - - name: check (embassy_esp_now) - run: cd examples-${{ matrix.chip }} && cargo build --release --example=embassy_esp_now --features=async,esp-now - - name: check (embassy_esp_now_duplex) - run: cd examples-${{ matrix.chip }} && cargo build --release --example=embassy_esp_now_duplex --features=async,esp-now - - name: check (embassy_dhcp) - run: cd examples-${{ matrix.chip }} && cargo build --release --example=embassy_dhcp --features=async,wifi,embassy-net - - name: check (embassy_access_point) - run: cd examples-${{ matrix.chip }} && cargo build --release --example=embassy_access_point --features=async,wifi,embassy-net + - name: build + run: cd esp-wifi && cargo b${{ matrix.chip }} + - name: build (common features) + run: cd esp-wifi && cargo b${{ matrix.chip }} --features=async,wifi,esp-now,embassy-net,log,${{ matrix.chip }}-hal/embassy-time-timg0 + - name: build (common features + defmt) + run: cd esp-wifi && cargo b${{ matrix.chip }} --no-default-features --features=async,wifi,esp-now,embassy-net,defmt,${{ matrix.chip }}-hal/embassy-time-timg0 + - name: build (dhcp) + run: cd esp-wifi && cargo b${{ matrix.chip }} --release --example=dhcp --features=wifi + - name: build (static_ip) + run: cd esp-wifi && cargo b${{ matrix.chip }} --release --example=static_ip --features=wifi + - name: build (esp_now) + run: cd esp-wifi && cargo b${{ matrix.chip }} --release --example=esp_now --features=esp-now + - name: build (embassy_esp_now) + run: cd esp-wifi && cargo b${{ matrix.chip }} --release --example=embassy_esp_now --features=async,esp-now,${{ matrix.chip }}-hal/embassy-time-timg0 + - name: build (embassy_esp_now_duplex) + run: cd esp-wifi && cargo b${{ matrix.chip }} --release --example=embassy_esp_now_duplex --features=async,esp-now,${{ matrix.chip }}-hal/embassy-time-timg0 + - name: build (embassy_dhcp) + run: cd esp-wifi && cargo b${{ matrix.chip }} --release --example=embassy_dhcp --features=async,wifi,embassy-net,${{ matrix.chip }}-hal/embassy-time-timg0 + - name: build (embassy_access_point) + run: cd esp-wifi && cargo b${{ matrix.chip }} --release --example=embassy_access_point --features=async,wifi,embassy-net,${{ matrix.chip }}-hal/embassy-time-timg0 - - name: check (common features + ble) - if: ${{ matrix.chip == 'esp32' || matrix.chip == 'esp32s3' }} - run: cd examples-${{ matrix.chip }} && cargo check --features=async,wifi,ble,esp-now,embassy-net,log - - name: check (common features + ble + defmt) - if: ${{ matrix.chip == 'esp32' || matrix.chip == 'esp32s3' }} - run: cd examples-${{ matrix.chip }} && cargo check --no-default-features --features=${{ matrix.chip }},async,wifi,ble,esp-now,embassy-net,defmt - - name: check (ble) - if: ${{ matrix.chip == 'esp32' || matrix.chip == 'esp32s3' }} - run: cd examples-${{ matrix.chip }} && cargo build --release --example=ble --features=ble - - name: check (async_ble) - if: ${{ matrix.chip == 'esp32' || matrix.chip == 'esp32s3' }} - run: cd examples-${{ matrix.chip }} && cargo build --release --example=async_ble --features=async,ble - - name: check (coex) - if: ${{ matrix.chip == 'esp32' || matrix.chip == 'esp32s3' }} - run: cd examples-${{ matrix.chip }} && cargo build --release --example=coex --features=wifi,ble,coex - - checks-riscv: - strategy: - matrix: - chip: ["esp32c2", "esp32c3", "esp32c6"] - - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - - uses: dtolnay/rust-toolchain@v1 - with: - target: riscv32imc-unknown-none-elf - toolchain: nightly-2023-05-16 - components: rust-src,rustfmt - - uses: Swatinem/rust-cache@v1 - - - name: check - run: cd examples-${{ matrix.chip }} && cargo +nightly-2023-05-16 check - - name: check (common features) - run: cd examples-${{ matrix.chip }} && cargo +nightly-2023-05-16 check --features=async,wifi,esp-now,embassy-net,log - - name: check (common features + defmt) - run: cd examples-${{ matrix.chip }} && cargo +nightly-2023-05-16 check --no-default-features --features=${{ matrix.chip }},async,wifi,esp-now,embassy-net,defmt - - name: check (dhcp) - run: cd examples-${{ matrix.chip }} && cargo +nightly-2023-05-16 build --release --example=dhcp --features=wifi - - name: check (static_ip) - run: cd examples-${{ matrix.chip }} && cargo +nightly-2023-05-16 build --release --example=static_ip --features=wifi - - name: check (esp_now) - run: cd examples-${{ matrix.chip }} && cargo +nightly-2023-05-16 build --release --example=esp_now --features=esp-now - - name: check (embassy_esp_now) - run: cd examples-${{ matrix.chip }} && cargo +nightly-2023-05-16 build --release --example=embassy_esp_now --features=async,esp-now - - name: check (embassy_esp_now_duplex) - run: cd examples-${{ matrix.chip }} && cargo +nightly-2023-05-16 build --release --example=embassy_esp_now_duplex --features=async,esp-now - - name: check (embassy_dhcp) - run: cd examples-${{ matrix.chip }} && cargo +nightly-2023-05-16 build --release --example=embassy_dhcp --features=async,wifi,embassy-net - - name: check (embassy_access_point) - run: cd examples-${{ matrix.chip }} && cargo +nightly-2023-05-16 build --release --example=embassy_access_point --features=async,wifi,embassy-net - - - name: check (common features + ble) - run: cd examples-${{ matrix.chip }} && cargo +nightly-2023-05-16 check --features=async,wifi,ble,esp-now,embassy-net,log - - name: check (common features + ble + defmt) - run: cd examples-${{ matrix.chip }} && cargo +nightly-2023-05-16 check --no-default-features --features=${{ matrix.chip }},async,wifi,ble,esp-now,embassy-net,defmt - - name: check (ble) - run: cd examples-${{ matrix.chip }} && cargo +nightly-2023-05-16 build --release --example=ble --features=ble - - name: check (async_ble) - run: cd examples-${{ matrix.chip }} && cargo +nightly-2023-05-16 build --release --example=async_ble --features=async,ble - - name: check (coex) - if: ${{ matrix.chip == 'esp32c3' }} - run: cd examples-${{ matrix.chip }} && cargo +nightly-2023-05-16 build --release --example=coex --features=wifi,ble,coex + - name: build (common features + ble) + if: ${{ matrix.chip != 'esp32s2' }} + run: cd esp-wifi && cargo b${{ matrix.chip }} --features=async,wifi,ble,esp-now,embassy-net,log,${{ matrix.chip }}-hal/embassy-time-timg0 + - name: build (common features + ble + defmt) + if: ${{ matrix.chip != 'esp32s2' }} + run: cd esp-wifi && cargo b${{ matrix.chip }} --no-default-features --features=async,wifi,ble,esp-now,embassy-net,defmt,${{ matrix.chip }}-hal/embassy-time-timg0 + - name: build (ble) + if: ${{ matrix.chip != 'esp32s2' }} + run: cd esp-wifi && cargo b${{ matrix.chip }} --release --example=ble --features=ble + - name: build (async_ble) + if: ${{ matrix.chip != 'esp32s2' }} + run: cd esp-wifi && cargo b${{ matrix.chip }} --release --example=async_ble --features=async,ble,${{ matrix.chip }}-hal/embassy-time-timg0 + - name: build (coex) + if: ${{ matrix.chip == 'esp32' || matrix.chip == 'esp32s3' || matrix.chip == 'esp32c3' }} + run: cd esp-wifi && cargo b${{ matrix.chip }} --release --example=coex --features=wifi,ble,coex diff --git a/esp-wifi/.cargo/config.toml b/esp-wifi/.cargo/config.toml index 240c651a..48b036f1 100644 --- a/esp-wifi/.cargo/config.toml +++ b/esp-wifi/.cargo/config.toml @@ -6,6 +6,13 @@ esp32c2 = "run --features esp32c2 --target riscv32imc-unknown-none-elf" esp32c3 = "run --features esp32c3 --target riscv32imc-unknown-none-elf" esp32c6 = "run --features esp32c6 --target riscv32imac-unknown-none-elf" +besp32 = "build --features esp32 --target xtensa-esp32-none-elf" +besp32s2 = "build --features esp32s2 --target xtensa-esp32s2-none-elf" +besp32s3 = "build --features esp32s3 --target xtensa-esp32s3-none-elf" +besp32c2 = "build --features esp32c2 --target riscv32imc-unknown-none-elf" +besp32c3 = "build --features esp32c3 --target riscv32imc-unknown-none-elf" +besp32c6 = "build --features esp32c6 --target riscv32imac-unknown-none-elf" + [target.riscv32imc-unknown-none-elf] runner = "espflash flash --monitor" rustflags = [ diff --git a/esp-wifi/Cargo.toml b/esp-wifi/Cargo.toml index 17dfd1a2..60517b26 100644 --- a/esp-wifi/Cargo.toml +++ b/esp-wifi/Cargo.toml @@ -43,6 +43,11 @@ embassy-futures.workspace = true futures-util.workspace = true embassy-net = { workspace = true } embassy-sync.workspace = true +bleps.workspace = true +embedded-io.workspace = true +embedded-hal-async = { workspace = true } +log = { workspace = true } +smoltcp.workspace = true [features] default = [ "utils", "log" ] diff --git a/esp-wifi/examples/async_ble.rs b/esp-wifi/examples/async_ble.rs index 4e23c773..ebaeb62a 100644 --- a/esp-wifi/examples/async_ble.rs +++ b/esp-wifi/examples/async_ble.rs @@ -148,7 +148,10 @@ fn main() -> ! { .unwrap(); let io = IO::new(peripherals.GPIO, peripherals.IO_MUX); + #[cfg(any(feature = "esp32", feature = "esp32s2", feature = "esp32s3"))] let button = io.pins.gpio0.into_pull_down_input(); + #[cfg(any(feature = "esp32c2", feature = "esp32c3", feature = "esp32c6"))] + let button = io.pins.gpio9.into_pull_down_input(); // Async requires the GPIO interrupt to wake futures hal::interrupt::enable( diff --git a/esp-wifi/examples/ble.rs b/esp-wifi/examples/ble.rs index 6fb9d350..783ee674 100644 --- a/esp-wifi/examples/ble.rs +++ b/esp-wifi/examples/ble.rs @@ -40,7 +40,10 @@ fn main() -> ! { .unwrap(); let io = IO::new(peripherals.GPIO, peripherals.IO_MUX); + #[cfg(any(feature = "esp32", feature = "esp32s2", feature = "esp32s3"))] let button = io.pins.gpio0.into_pull_down_input(); + #[cfg(any(feature = "esp32c2", feature = "esp32c3", feature = "esp32c6"))] + let button = io.pins.gpio9.into_pull_down_input(); let mut debounce_cnt = 500; diff --git a/esp-wifi/examples/embassy_dhcp.rs b/esp-wifi/examples/embassy_dhcp.rs index 40208060..e34eadb9 100644 --- a/esp-wifi/examples/embassy_dhcp.rs +++ b/esp-wifi/examples/embassy_dhcp.rs @@ -90,11 +90,7 @@ async fn connection(mut controller: WifiController<'static>) { println!("Device capabilities: {:?}", controller.get_capabilities()); loop { match esp_wifi::wifi::get_wifi_state() { -<<<<<<< HEAD:examples-esp32c6/examples/embassy_access_point.rs - WifiState::ApStarted => { -======= WifiState::StaConnected => { ->>>>>>> 9f0c5a5 (Unify examples):esp-wifi/examples/embassy_dhcp.rs // wait until we're no longer connected controller.wait_for_event(WifiEvent::StaDisconnected).await; Timer::after(Duration::from_millis(5000)).await