diff options
author | Ulf Lilleengen <lulf@redhat.com> | 2022-08-23 08:48:14 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-08-23 08:48:14 +0200 |
commit | e6dbc368d2e75d5442f5f52fb8343ed04e7a6c7d (patch) | |
tree | 67c1824e23c96b7ddb4440ce895b37646618e6d4 /examples/src/bin/ble_bas_central.rs | |
parent | e1e4e2a2c2e9a8243368214fac02532e79c127a8 (diff) | |
parent | 36d14808e2019556d502105081bd36f80aba06c0 (diff) | |
download | nrf-softdevice-e6dbc368d2e75d5442f5f52fb8343ed04e7a6c7d.zip |
Merge pull request #132 from embassy-rs/update-embassy
Update Embassy.
Diffstat (limited to 'examples/src/bin/ble_bas_central.rs')
-rw-r--r-- | examples/src/bin/ble_bas_central.rs | 68 |
1 files changed, 28 insertions, 40 deletions
diff --git a/examples/src/bin/ble_bas_central.rs b/examples/src/bin/ble_bas_central.rs index 3594f55..2d307c1 100644 --- a/examples/src/bin/ble_bas_central.rs +++ b/examples/src/bin/ble_bas_central.rs @@ -7,18 +7,14 @@ mod example_common; use core::mem; -use cortex_m_rt::entry; use defmt::{info, *}; -use embassy_executor::executor::Executor; -use embassy_util::Forever; +use embassy_executor::Spawner; use nrf_softdevice::ble::{central, gatt_client, Address, AddressType}; use nrf_softdevice::{raw, Softdevice}; -static EXECUTOR: Forever<Executor> = Forever::new(); - #[embassy_executor::task] -async fn softdevice_task(sd: &'static Softdevice) { - sd.run().await; +async fn softdevice_task(sd: &'static Softdevice) -> ! { + sd.run().await } #[nrf_softdevice::gatt_client(uuid = "180f")] @@ -27,34 +23,8 @@ struct BatteryServiceClient { battery_level: u8, } -#[embassy_executor::task] -async fn ble_central_task(sd: &'static Softdevice) { - let addrs = &[&Address::new( - AddressType::RandomStatic, - [0x06, 0x6b, 0x71, 0x2c, 0xf5, 0xc0], - )]; - let mut config = central::ConnectConfig::default(); - config.scan_config.whitelist = Some(addrs); - let conn = unwrap!(central::connect(sd, &config).await); - info!("connected"); - - let client: BatteryServiceClient = unwrap!(gatt_client::discover(&conn).await); - - // Read - let val = unwrap!(client.battery_level_read().await); - info!("read battery level: {}", val); - - // Write, set it to 42 - unwrap!(client.battery_level_write(42).await); - info!("Wrote battery level!"); - - // Read to check it's changed - let val = unwrap!(client.battery_level_read().await); - info!("read battery level: {}", val); -} - -#[entry] -fn main() -> ! { +#[embassy_executor::main] +async fn main(spawner: Spawner) { info!("Hello World!"); let config = nrf_softdevice::Config { @@ -88,10 +58,28 @@ fn main() -> ! { }; let sd = Softdevice::enable(&config); + unwrap!(spawner.spawn(softdevice_task(sd))); + + let addrs = &[&Address::new( + AddressType::RandomStatic, + [0x06, 0x6b, 0x71, 0x2c, 0xf5, 0xc0], + )]; + let mut config = central::ConnectConfig::default(); + config.scan_config.whitelist = Some(addrs); + let conn = unwrap!(central::connect(sd, &config).await); + info!("connected"); + + let client: BatteryServiceClient = unwrap!(gatt_client::discover(&conn).await); + + // Read + let val = unwrap!(client.battery_level_read().await); + info!("read battery level: {}", val); + + // Write, set it to 42 + unwrap!(client.battery_level_write(42).await); + info!("Wrote battery level!"); - let executor = EXECUTOR.put(Executor::new()); - executor.run(move |spawner| { - unwrap!(spawner.spawn(softdevice_task(sd))); - unwrap!(spawner.spawn(ble_central_task(sd))); - }); + // Read to check it's changed + let val = unwrap!(client.battery_level_read().await); + info!("read battery level: {}", val); } |