mirror of
https://github.com/embassy-rs/embassy.git
synced 2024-11-28 17:52:28 +00:00
Update for rust-lorawan and lora-phy version 2.
This commit is contained in:
parent
65d36f9f99
commit
7d5e62d4a7
@ -27,8 +27,8 @@ embedded-hal-async = { version = "=1.0.0-rc.1" }
|
|||||||
embedded-hal = { version = "0.2", features = ["unproven"] }
|
embedded-hal = { version = "0.2", features = ["unproven"] }
|
||||||
|
|
||||||
futures = { version = "0.3.17", default-features = false, features = [ "async-await" ] }
|
futures = { version = "0.3.17", default-features = false, features = [ "async-await" ] }
|
||||||
lora-phy = { version = "1" }
|
lora-phy = { version = "2" }
|
||||||
lorawan-device = { version = "0.10.0", default-features = false, features = ["async"], optional = true }
|
lorawan-device = { version = "0.10.0", default-features = false, features = ["async"], optional = true }
|
||||||
|
|
||||||
[patch.crates-io]
|
[patch.crates-io]
|
||||||
lora-phy = { git = "https://github.com/embassy-rs/lora-phy", rev = "1323eccc1c470d4259f95f4f315d1be830d572a3"}
|
lorawan-device = { git = "https://github.com/ivajloip/rust-lorawan", rev = "b0502c1a802427638cc8bcd928fc632d13b778b6"}
|
||||||
|
@ -38,7 +38,7 @@ embassy-usb = { version = "0.1.0", path = "../../embassy-usb", features = ["defm
|
|||||||
embedded-io = { version = "0.5.0", features = ["defmt-03"] }
|
embedded-io = { version = "0.5.0", features = ["defmt-03"] }
|
||||||
embedded-io-async = { version = "0.5.0", optional = true, features = ["defmt-03"] }
|
embedded-io-async = { version = "0.5.0", optional = true, features = ["defmt-03"] }
|
||||||
embassy-lora = { version = "0.1.0", path = "../../embassy-lora", features = ["time", "defmt"], optional = true }
|
embassy-lora = { version = "0.1.0", path = "../../embassy-lora", features = ["time", "defmt"], optional = true }
|
||||||
lora-phy = { version = "1", optional = true }
|
lora-phy = { version = "2", optional = true }
|
||||||
lorawan-device = { version = "0.10.0", default-features = false, features = ["async", "external-lora-phy"], optional = true }
|
lorawan-device = { version = "0.10.0", default-features = false, features = ["async", "external-lora-phy"], optional = true }
|
||||||
lorawan = { version = "0.7.3", default-features = false, features = ["default-crypto"], optional = true }
|
lorawan = { version = "0.7.3", default-features = false, features = ["default-crypto"], optional = true }
|
||||||
embassy-net-esp-hosted = { version = "0.1.0", path = "../../embassy-net-esp-hosted", features = ["defmt"], optional = true }
|
embassy-net-esp-hosted = { version = "0.1.0", path = "../../embassy-net-esp-hosted", features = ["defmt"], optional = true }
|
||||||
@ -67,4 +67,5 @@ microfft = "0.5.0"
|
|||||||
debug = 2
|
debug = 2
|
||||||
|
|
||||||
[patch.crates-io]
|
[patch.crates-io]
|
||||||
lora-phy = { git = "https://github.com/embassy-rs/lora-phy", rev = "1323eccc1c470d4259f95f4f315d1be830d572a3"}
|
lorawan-device = { git = "https://github.com/ivajloip/rust-lorawan", rev = "b0502c1a802427638cc8bcd928fc632d13b778b6"}
|
||||||
|
lorawan = { git = "https://github.com/ivajloip/rust-lorawan", rev = "b0502c1a802427638cc8bcd928fc632d13b778b6"}
|
||||||
|
@ -41,10 +41,8 @@ async fn main(_spawner: Spawner) {
|
|||||||
let iv =
|
let iv =
|
||||||
GenericSx126xInterfaceVariant::new(nss, reset, dio1, busy, Some(rf_switch_rx), Some(rf_switch_tx)).unwrap();
|
GenericSx126xInterfaceVariant::new(nss, reset, dio1, busy, Some(rf_switch_rx), Some(rf_switch_tx)).unwrap();
|
||||||
|
|
||||||
let mut delay = Delay;
|
|
||||||
|
|
||||||
let mut lora = {
|
let mut lora = {
|
||||||
match LoRa::new(SX1261_2::new(BoardType::Rak4631Sx1262, spim, iv), false, &mut delay).await {
|
match LoRa::new(SX1261_2::new(BoardType::Rak4631Sx1262, spim, iv), false, Delay).await {
|
||||||
Ok(l) => l,
|
Ok(l) => l,
|
||||||
Err(err) => {
|
Err(err) => {
|
||||||
info!("Radio error = {}", err);
|
info!("Radio error = {}", err);
|
||||||
|
@ -20,6 +20,7 @@ use lora_phy::LoRa;
|
|||||||
use lorawan::default_crypto::DefaultFactory as Crypto;
|
use lorawan::default_crypto::DefaultFactory as Crypto;
|
||||||
use lorawan_device::async_device::lora_radio::LoRaRadio;
|
use lorawan_device::async_device::lora_radio::LoRaRadio;
|
||||||
use lorawan_device::async_device::{region, Device, JoinMode};
|
use lorawan_device::async_device::{region, Device, JoinMode};
|
||||||
|
use lorawan_device::{AppEui, AppKey, DevEui};
|
||||||
use {defmt_rtt as _, panic_probe as _};
|
use {defmt_rtt as _, panic_probe as _};
|
||||||
|
|
||||||
const LORAWAN_REGION: region::Region = region::Region::EU868; // warning: set this appropriately for the region
|
const LORAWAN_REGION: region::Region = region::Region::EU868; // warning: set this appropriately for the region
|
||||||
@ -47,10 +48,8 @@ async fn main(_spawner: Spawner) {
|
|||||||
let iv =
|
let iv =
|
||||||
GenericSx126xInterfaceVariant::new(nss, reset, dio1, busy, Some(rf_switch_rx), Some(rf_switch_tx)).unwrap();
|
GenericSx126xInterfaceVariant::new(nss, reset, dio1, busy, Some(rf_switch_rx), Some(rf_switch_tx)).unwrap();
|
||||||
|
|
||||||
let mut delay = Delay;
|
|
||||||
|
|
||||||
let lora = {
|
let lora = {
|
||||||
match LoRa::new(SX1261_2::new(BoardType::Rak4631Sx1262, spim, iv), true, &mut delay).await {
|
match LoRa::new(SX1261_2::new(BoardType::Rak4631Sx1262, spim, iv), true, Delay).await {
|
||||||
Ok(l) => l,
|
Ok(l) => l,
|
||||||
Err(err) => {
|
Err(err) => {
|
||||||
info!("Radio error = {}", err);
|
info!("Radio error = {}", err);
|
||||||
@ -68,9 +67,9 @@ async fn main(_spawner: Spawner) {
|
|||||||
// TODO: Adjust the EUI and Keys according to your network credentials
|
// TODO: Adjust the EUI and Keys according to your network credentials
|
||||||
match device
|
match device
|
||||||
.join(&JoinMode::OTAA {
|
.join(&JoinMode::OTAA {
|
||||||
deveui: [0, 0, 0, 0, 0, 0, 0, 0],
|
deveui: DevEui::from([0, 0, 0, 0, 0, 0, 0, 0]),
|
||||||
appeui: [0, 0, 0, 0, 0, 0, 0, 0],
|
appeui: AppEui::from([0, 0, 0, 0, 0, 0, 0, 0]),
|
||||||
appkey: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
|
appkey: AppKey::from([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]),
|
||||||
})
|
})
|
||||||
.await
|
.await
|
||||||
{
|
{
|
||||||
|
@ -41,10 +41,8 @@ async fn main(_spawner: Spawner) {
|
|||||||
let iv =
|
let iv =
|
||||||
GenericSx126xInterfaceVariant::new(nss, reset, dio1, busy, Some(rf_switch_rx), Some(rf_switch_tx)).unwrap();
|
GenericSx126xInterfaceVariant::new(nss, reset, dio1, busy, Some(rf_switch_rx), Some(rf_switch_tx)).unwrap();
|
||||||
|
|
||||||
let mut delay = Delay;
|
|
||||||
|
|
||||||
let mut lora = {
|
let mut lora = {
|
||||||
match LoRa::new(SX1261_2::new(BoardType::Rak4631Sx1262, spim, iv), false, &mut delay).await {
|
match LoRa::new(SX1261_2::new(BoardType::Rak4631Sx1262, spim, iv), false, Delay).await {
|
||||||
Ok(l) => l,
|
Ok(l) => l,
|
||||||
Err(err) => {
|
Err(err) => {
|
||||||
info!("Radio error = {}", err);
|
info!("Radio error = {}", err);
|
||||||
@ -88,7 +86,7 @@ async fn main(_spawner: Spawner) {
|
|||||||
};
|
};
|
||||||
|
|
||||||
match lora
|
match lora
|
||||||
.prepare_for_rx(&mdltn_params, &rx_pkt_params, None, true, false, 0, 0x00ffffffu32)
|
.prepare_for_rx(&mdltn_params, &rx_pkt_params, None, None, false)
|
||||||
.await
|
.await
|
||||||
{
|
{
|
||||||
Ok(()) => {}
|
Ok(()) => {}
|
||||||
|
@ -41,10 +41,8 @@ async fn main(_spawner: Spawner) {
|
|||||||
let iv =
|
let iv =
|
||||||
GenericSx126xInterfaceVariant::new(nss, reset, dio1, busy, Some(rf_switch_rx), Some(rf_switch_tx)).unwrap();
|
GenericSx126xInterfaceVariant::new(nss, reset, dio1, busy, Some(rf_switch_rx), Some(rf_switch_tx)).unwrap();
|
||||||
|
|
||||||
let mut delay = Delay;
|
|
||||||
|
|
||||||
let mut lora = {
|
let mut lora = {
|
||||||
match LoRa::new(SX1261_2::new(BoardType::Rak4631Sx1262, spim, iv), false, &mut delay).await {
|
match LoRa::new(SX1261_2::new(BoardType::Rak4631Sx1262, spim, iv), false, Delay).await {
|
||||||
Ok(l) => l,
|
Ok(l) => l,
|
||||||
Err(err) => {
|
Err(err) => {
|
||||||
info!("Radio error = {}", err);
|
info!("Radio error = {}", err);
|
||||||
@ -92,14 +90,12 @@ async fn main(_spawner: Spawner) {
|
|||||||
.prepare_for_rx(
|
.prepare_for_rx(
|
||||||
&mdltn_params,
|
&mdltn_params,
|
||||||
&rx_pkt_params,
|
&rx_pkt_params,
|
||||||
|
None,
|
||||||
Some(&DutyCycleParams {
|
Some(&DutyCycleParams {
|
||||||
rx_time: 300_000, // 300_000 units * 15.625 us/unit = 4.69 s
|
rx_time: 300_000, // 300_000 units * 15.625 us/unit = 4.69 s
|
||||||
sleep_time: 200_000, // 200_000 units * 15.625 us/unit = 3.13 s
|
sleep_time: 200_000, // 200_000 units * 15.625 us/unit = 3.13 s
|
||||||
}),
|
}),
|
||||||
false,
|
false,
|
||||||
false,
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
)
|
)
|
||||||
.await
|
.await
|
||||||
{
|
{
|
||||||
|
@ -41,10 +41,8 @@ async fn main(_spawner: Spawner) {
|
|||||||
let iv =
|
let iv =
|
||||||
GenericSx126xInterfaceVariant::new(nss, reset, dio1, busy, Some(rf_switch_rx), Some(rf_switch_tx)).unwrap();
|
GenericSx126xInterfaceVariant::new(nss, reset, dio1, busy, Some(rf_switch_rx), Some(rf_switch_tx)).unwrap();
|
||||||
|
|
||||||
let mut delay = Delay;
|
|
||||||
|
|
||||||
let mut lora = {
|
let mut lora = {
|
||||||
match LoRa::new(SX1261_2::new(BoardType::Rak4631Sx1262, spim, iv), false, &mut delay).await {
|
match LoRa::new(SX1261_2::new(BoardType::Rak4631Sx1262, spim, iv), false, Delay).await {
|
||||||
Ok(l) => l,
|
Ok(l) => l,
|
||||||
Err(err) => {
|
Err(err) => {
|
||||||
info!("Radio error = {}", err);
|
info!("Radio error = {}", err);
|
||||||
@ -97,7 +95,7 @@ async fn main(_spawner: Spawner) {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
match lora.sleep(&mut delay).await {
|
match lora.sleep(false).await {
|
||||||
Ok(()) => info!("Sleep successful"),
|
Ok(()) => info!("Sleep successful"),
|
||||||
Err(err) => info!("Sleep unsuccessful = {}", err),
|
Err(err) => info!("Sleep unsuccessful = {}", err),
|
||||||
}
|
}
|
||||||
|
@ -17,7 +17,7 @@ embassy-net-wiznet = { version = "0.1.0", path = "../../embassy-net-wiznet", fea
|
|||||||
embassy-futures = { version = "0.1.0", path = "../../embassy-futures" }
|
embassy-futures = { version = "0.1.0", path = "../../embassy-futures" }
|
||||||
embassy-usb-logger = { version = "0.1.0", path = "../../embassy-usb-logger" }
|
embassy-usb-logger = { version = "0.1.0", path = "../../embassy-usb-logger" }
|
||||||
embassy-lora = { version = "0.1.0", path = "../../embassy-lora", features = ["time", "defmt"] }
|
embassy-lora = { version = "0.1.0", path = "../../embassy-lora", features = ["time", "defmt"] }
|
||||||
lora-phy = { version = "1" }
|
lora-phy = { version = "2" }
|
||||||
lorawan-device = { version = "0.10.0", default-features = false, features = ["async", "external-lora-phy"] }
|
lorawan-device = { version = "0.10.0", default-features = false, features = ["async", "external-lora-phy"] }
|
||||||
lorawan = { version = "0.7.3", default-features = false, features = ["default-crypto"] }
|
lorawan = { version = "0.7.3", default-features = false, features = ["default-crypto"] }
|
||||||
cyw43 = { path = "../../cyw43", features = ["defmt", "firmware-logs"] }
|
cyw43 = { path = "../../cyw43", features = ["defmt", "firmware-logs"] }
|
||||||
@ -57,4 +57,5 @@ rand = { version = "0.8.5", default-features = false }
|
|||||||
debug = 2
|
debug = 2
|
||||||
|
|
||||||
[patch.crates-io]
|
[patch.crates-io]
|
||||||
lora-phy = { git = "https://github.com/embassy-rs/lora-phy", rev = "1323eccc1c470d4259f95f4f315d1be830d572a3"}
|
lorawan-device = { git = "https://github.com/ivajloip/rust-lorawan", rev = "b0502c1a802427638cc8bcd928fc632d13b778b6"}
|
||||||
|
lorawan = { git = "https://github.com/ivajloip/rust-lorawan", rev = "b0502c1a802427638cc8bcd928fc632d13b778b6"}
|
||||||
|
@ -19,6 +19,7 @@ use lora_phy::LoRa;
|
|||||||
use lorawan::default_crypto::DefaultFactory as Crypto;
|
use lorawan::default_crypto::DefaultFactory as Crypto;
|
||||||
use lorawan_device::async_device::lora_radio::LoRaRadio;
|
use lorawan_device::async_device::lora_radio::LoRaRadio;
|
||||||
use lorawan_device::async_device::{region, Device, JoinMode};
|
use lorawan_device::async_device::{region, Device, JoinMode};
|
||||||
|
use lorawan_device::{AppEui, AppKey, DevEui};
|
||||||
use {defmt_rtt as _, panic_probe as _};
|
use {defmt_rtt as _, panic_probe as _};
|
||||||
|
|
||||||
const LORAWAN_REGION: region::Region = region::Region::EU868; // warning: set this appropriately for the region
|
const LORAWAN_REGION: region::Region = region::Region::EU868; // warning: set this appropriately for the region
|
||||||
@ -39,16 +40,8 @@ async fn main(_spawner: Spawner) {
|
|||||||
|
|
||||||
let iv = GenericSx126xInterfaceVariant::new(nss, reset, dio1, busy, None, None).unwrap();
|
let iv = GenericSx126xInterfaceVariant::new(nss, reset, dio1, busy, None, None).unwrap();
|
||||||
|
|
||||||
let mut delay = Delay;
|
|
||||||
|
|
||||||
let lora = {
|
let lora = {
|
||||||
match LoRa::new(
|
match LoRa::new(SX1261_2::new(BoardType::RpPicoWaveshareSx1262, spi, iv), true, Delay).await {
|
||||||
SX1261_2::new(BoardType::RpPicoWaveshareSx1262, spi, iv),
|
|
||||||
true,
|
|
||||||
&mut delay,
|
|
||||||
)
|
|
||||||
.await
|
|
||||||
{
|
|
||||||
Ok(l) => l,
|
Ok(l) => l,
|
||||||
Err(err) => {
|
Err(err) => {
|
||||||
info!("Radio error = {}", err);
|
info!("Radio error = {}", err);
|
||||||
@ -66,9 +59,9 @@ async fn main(_spawner: Spawner) {
|
|||||||
// TODO: Adjust the EUI and Keys according to your network credentials
|
// TODO: Adjust the EUI and Keys according to your network credentials
|
||||||
match device
|
match device
|
||||||
.join(&JoinMode::OTAA {
|
.join(&JoinMode::OTAA {
|
||||||
deveui: [0, 0, 0, 0, 0, 0, 0, 0],
|
deveui: DevEui::from([0, 0, 0, 0, 0, 0, 0, 0]),
|
||||||
appeui: [0, 0, 0, 0, 0, 0, 0, 0],
|
appeui: AppEui::from([0, 0, 0, 0, 0, 0, 0, 0]),
|
||||||
appkey: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
|
appkey: AppKey::from([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]),
|
||||||
})
|
})
|
||||||
.await
|
.await
|
||||||
{
|
{
|
||||||
|
@ -35,16 +35,8 @@ async fn main(_spawner: Spawner) {
|
|||||||
|
|
||||||
let iv = GenericSx126xInterfaceVariant::new(nss, reset, dio1, busy, None, None).unwrap();
|
let iv = GenericSx126xInterfaceVariant::new(nss, reset, dio1, busy, None, None).unwrap();
|
||||||
|
|
||||||
let mut delay = Delay;
|
|
||||||
|
|
||||||
let mut lora = {
|
let mut lora = {
|
||||||
match LoRa::new(
|
match LoRa::new(SX1261_2::new(BoardType::RpPicoWaveshareSx1262, spi, iv), false, Delay).await {
|
||||||
SX1261_2::new(BoardType::RpPicoWaveshareSx1262, spi, iv),
|
|
||||||
false,
|
|
||||||
&mut delay,
|
|
||||||
)
|
|
||||||
.await
|
|
||||||
{
|
|
||||||
Ok(l) => l,
|
Ok(l) => l,
|
||||||
Err(err) => {
|
Err(err) => {
|
||||||
info!("Radio error = {}", err);
|
info!("Radio error = {}", err);
|
||||||
@ -83,7 +75,7 @@ async fn main(_spawner: Spawner) {
|
|||||||
};
|
};
|
||||||
|
|
||||||
match lora
|
match lora
|
||||||
.prepare_for_rx(&mdltn_params, &rx_pkt_params, None, true, false, 0, 0x00ffffffu32)
|
.prepare_for_rx(&mdltn_params, &rx_pkt_params, None, None, false)
|
||||||
.await
|
.await
|
||||||
{
|
{
|
||||||
Ok(()) => {}
|
Ok(()) => {}
|
||||||
|
@ -35,16 +35,8 @@ async fn main(_spawner: Spawner) {
|
|||||||
|
|
||||||
let iv = GenericSx126xInterfaceVariant::new(nss, reset, dio1, busy, None, None).unwrap();
|
let iv = GenericSx126xInterfaceVariant::new(nss, reset, dio1, busy, None, None).unwrap();
|
||||||
|
|
||||||
let mut delay = Delay;
|
|
||||||
|
|
||||||
let mut lora = {
|
let mut lora = {
|
||||||
match LoRa::new(
|
match LoRa::new(SX1261_2::new(BoardType::RpPicoWaveshareSx1262, spi, iv), false, Delay).await {
|
||||||
SX1261_2::new(BoardType::RpPicoWaveshareSx1262, spi, iv),
|
|
||||||
false,
|
|
||||||
&mut delay,
|
|
||||||
)
|
|
||||||
.await
|
|
||||||
{
|
|
||||||
Ok(l) => l,
|
Ok(l) => l,
|
||||||
Err(err) => {
|
Err(err) => {
|
||||||
info!("Radio error = {}", err);
|
info!("Radio error = {}", err);
|
||||||
@ -97,7 +89,7 @@ async fn main(_spawner: Spawner) {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
match lora.sleep(&mut delay).await {
|
match lora.sleep(false).await {
|
||||||
Ok(()) => info!("Sleep successful"),
|
Ok(()) => info!("Sleep successful"),
|
||||||
Err(err) => info!("Sleep unsuccessful = {}", err),
|
Err(err) => info!("Sleep unsuccessful = {}", err),
|
||||||
}
|
}
|
||||||
|
@ -69,16 +69,9 @@ async fn core1_task(
|
|||||||
iv: GenericSx126xInterfaceVariant<Output<'static, AnyPin>, Input<'static, AnyPin>>,
|
iv: GenericSx126xInterfaceVariant<Output<'static, AnyPin>, Input<'static, AnyPin>>,
|
||||||
) {
|
) {
|
||||||
info!("Hello from core 1");
|
info!("Hello from core 1");
|
||||||
let mut delay = Delay;
|
|
||||||
|
|
||||||
let mut lora = {
|
let mut lora = {
|
||||||
match LoRa::new(
|
match LoRa::new(SX1261_2::new(BoardType::RpPicoWaveshareSx1262, spi, iv), false, Delay).await {
|
||||||
SX1261_2::new(BoardType::RpPicoWaveshareSx1262, spi, iv),
|
|
||||||
false,
|
|
||||||
&mut delay,
|
|
||||||
)
|
|
||||||
.await
|
|
||||||
{
|
|
||||||
Ok(l) => l,
|
Ok(l) => l,
|
||||||
Err(err) => {
|
Err(err) => {
|
||||||
info!("Radio error = {}", err);
|
info!("Radio error = {}", err);
|
||||||
@ -132,7 +125,7 @@ async fn core1_task(
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
match lora.sleep(&mut delay).await {
|
match lora.sleep(false).await {
|
||||||
Ok(()) => info!("Sleep successful"),
|
Ok(()) => info!("Sleep successful"),
|
||||||
Err(err) => info!("Sleep unsuccessful = {}", err),
|
Err(err) => info!("Sleep unsuccessful = {}", err),
|
||||||
}
|
}
|
||||||
|
@ -16,7 +16,7 @@ embassy-sync = { version = "0.3.0", path = "../../embassy-sync", features = ["de
|
|||||||
embassy-executor = { version = "0.3.0", path = "../../embassy-executor", features = ["arch-cortex-m", "executor-thread", "defmt", "integrated-timers"] }
|
embassy-executor = { version = "0.3.0", path = "../../embassy-executor", features = ["arch-cortex-m", "executor-thread", "defmt", "integrated-timers"] }
|
||||||
embassy-time = { version = "0.1.3", path = "../../embassy-time", features = ["defmt", "defmt-timestamp-uptime", "tick-hz-32_768"] }
|
embassy-time = { version = "0.1.3", path = "../../embassy-time", features = ["defmt", "defmt-timestamp-uptime", "tick-hz-32_768"] }
|
||||||
embassy-lora = { version = "0.1.0", path = "../../embassy-lora", features = ["time", "defmt"], optional = true }
|
embassy-lora = { version = "0.1.0", path = "../../embassy-lora", features = ["time", "defmt"], optional = true }
|
||||||
lora-phy = { version = "1", optional = true }
|
lora-phy = { version = "2", optional = true }
|
||||||
lorawan-device = { version = "0.10.0", default-features = false, features = ["async", "external-lora-phy"], optional = true }
|
lorawan-device = { version = "0.10.0", default-features = false, features = ["async", "external-lora-phy"], optional = true }
|
||||||
lorawan = { version = "0.7.3", default-features = false, features = ["default-crypto"], optional = true }
|
lorawan = { version = "0.7.3", default-features = false, features = ["default-crypto"], optional = true }
|
||||||
|
|
||||||
@ -39,4 +39,5 @@ static_cell = "1.1"
|
|||||||
debug = 2
|
debug = 2
|
||||||
|
|
||||||
[patch.crates-io]
|
[patch.crates-io]
|
||||||
lora-phy = { git = "https://github.com/embassy-rs/lora-phy", rev = "1323eccc1c470d4259f95f4f315d1be830d572a3"}
|
lorawan-device = { git = "https://github.com/ivajloip/rust-lorawan", rev = "b0502c1a802427638cc8bcd928fc632d13b778b6"}
|
||||||
|
lorawan = { git = "https://github.com/ivajloip/rust-lorawan", rev = "b0502c1a802427638cc8bcd928fc632d13b778b6"}
|
||||||
|
@ -41,10 +41,8 @@ async fn main(_spawner: Spawner) {
|
|||||||
|
|
||||||
let iv = Stm32l0InterfaceVariant::new(nss, reset, irq, None, None).unwrap();
|
let iv = Stm32l0InterfaceVariant::new(nss, reset, irq, None, None).unwrap();
|
||||||
|
|
||||||
let mut delay = Delay;
|
|
||||||
|
|
||||||
let mut lora = {
|
let mut lora = {
|
||||||
match LoRa::new(SX1276_7_8_9::new(BoardType::Stm32l0Sx1276, spi, iv), false, &mut delay).await {
|
match LoRa::new(SX1276_7_8_9::new(BoardType::Stm32l0Sx1276, spi, iv), false, Delay).await {
|
||||||
Ok(l) => l,
|
Ok(l) => l,
|
||||||
Err(err) => {
|
Err(err) => {
|
||||||
info!("Radio error = {}", err);
|
info!("Radio error = {}", err);
|
||||||
|
@ -21,6 +21,7 @@ use lora_phy::LoRa;
|
|||||||
use lorawan::default_crypto::DefaultFactory as Crypto;
|
use lorawan::default_crypto::DefaultFactory as Crypto;
|
||||||
use lorawan_device::async_device::lora_radio::LoRaRadio;
|
use lorawan_device::async_device::lora_radio::LoRaRadio;
|
||||||
use lorawan_device::async_device::{region, Device, JoinMode};
|
use lorawan_device::async_device::{region, Device, JoinMode};
|
||||||
|
use lorawan_device::{AppEui, AppKey, DevEui};
|
||||||
use {defmt_rtt as _, panic_probe as _};
|
use {defmt_rtt as _, panic_probe as _};
|
||||||
|
|
||||||
bind_interrupts!(struct Irqs {
|
bind_interrupts!(struct Irqs {
|
||||||
@ -50,10 +51,8 @@ async fn main(_spawner: Spawner) {
|
|||||||
|
|
||||||
let iv = Stm32l0InterfaceVariant::new(nss, reset, irq, None, None).unwrap();
|
let iv = Stm32l0InterfaceVariant::new(nss, reset, irq, None, None).unwrap();
|
||||||
|
|
||||||
let mut delay = Delay;
|
|
||||||
|
|
||||||
let lora = {
|
let lora = {
|
||||||
match LoRa::new(SX1276_7_8_9::new(BoardType::Stm32l0Sx1276, spi, iv), true, &mut delay).await {
|
match LoRa::new(SX1276_7_8_9::new(BoardType::Stm32l0Sx1276, spi, iv), true, Delay).await {
|
||||||
Ok(l) => l,
|
Ok(l) => l,
|
||||||
Err(err) => {
|
Err(err) => {
|
||||||
info!("Radio error = {}", err);
|
info!("Radio error = {}", err);
|
||||||
@ -71,9 +70,9 @@ async fn main(_spawner: Spawner) {
|
|||||||
// TODO: Adjust the EUI and Keys according to your network credentials
|
// TODO: Adjust the EUI and Keys according to your network credentials
|
||||||
match device
|
match device
|
||||||
.join(&JoinMode::OTAA {
|
.join(&JoinMode::OTAA {
|
||||||
deveui: [0, 0, 0, 0, 0, 0, 0, 0],
|
deveui: DevEui::from([0, 0, 0, 0, 0, 0, 0, 0]),
|
||||||
appeui: [0, 0, 0, 0, 0, 0, 0, 0],
|
appeui: AppEui::from([0, 0, 0, 0, 0, 0, 0, 0]),
|
||||||
appkey: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
|
appkey: AppKey::from([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]),
|
||||||
})
|
})
|
||||||
.await
|
.await
|
||||||
{
|
{
|
||||||
|
@ -41,10 +41,8 @@ async fn main(_spawner: Spawner) {
|
|||||||
|
|
||||||
let iv = Stm32l0InterfaceVariant::new(nss, reset, irq, None, None).unwrap();
|
let iv = Stm32l0InterfaceVariant::new(nss, reset, irq, None, None).unwrap();
|
||||||
|
|
||||||
let mut delay = Delay;
|
|
||||||
|
|
||||||
let mut lora = {
|
let mut lora = {
|
||||||
match LoRa::new(SX1276_7_8_9::new(BoardType::Stm32l0Sx1276, spi, iv), false, &mut delay).await {
|
match LoRa::new(SX1276_7_8_9::new(BoardType::Stm32l0Sx1276, spi, iv), false, Delay).await {
|
||||||
Ok(l) => l,
|
Ok(l) => l,
|
||||||
Err(err) => {
|
Err(err) => {
|
||||||
info!("Radio error = {}", err);
|
info!("Radio error = {}", err);
|
||||||
@ -88,7 +86,7 @@ async fn main(_spawner: Spawner) {
|
|||||||
};
|
};
|
||||||
|
|
||||||
match lora
|
match lora
|
||||||
.prepare_for_rx(&mdltn_params, &rx_pkt_params, None, true, false, 0, 0x00ffffffu32)
|
.prepare_for_rx(&mdltn_params, &rx_pkt_params, None, None, false)
|
||||||
.await
|
.await
|
||||||
{
|
{
|
||||||
Ok(()) => {}
|
Ok(()) => {}
|
||||||
|
@ -41,10 +41,8 @@ async fn main(_spawner: Spawner) {
|
|||||||
|
|
||||||
let iv = Stm32l0InterfaceVariant::new(nss, reset, irq, None, None).unwrap();
|
let iv = Stm32l0InterfaceVariant::new(nss, reset, irq, None, None).unwrap();
|
||||||
|
|
||||||
let mut delay = Delay;
|
|
||||||
|
|
||||||
let mut lora = {
|
let mut lora = {
|
||||||
match LoRa::new(SX1276_7_8_9::new(BoardType::Stm32l0Sx1276, spi, iv), false, &mut delay).await {
|
match LoRa::new(SX1276_7_8_9::new(BoardType::Stm32l0Sx1276, spi, iv), false, Delay).await {
|
||||||
Ok(l) => l,
|
Ok(l) => l,
|
||||||
Err(err) => {
|
Err(err) => {
|
||||||
info!("Radio error = {}", err);
|
info!("Radio error = {}", err);
|
||||||
@ -97,7 +95,7 @@ async fn main(_spawner: Spawner) {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
match lora.sleep(&mut delay).await {
|
match lora.sleep(false).await {
|
||||||
Ok(()) => info!("Sleep successful"),
|
Ok(()) => info!("Sleep successful"),
|
||||||
Err(err) => info!("Sleep unsuccessful = {}", err),
|
Err(err) => info!("Sleep unsuccessful = {}", err),
|
||||||
}
|
}
|
||||||
|
@ -12,7 +12,7 @@ embassy-executor = { version = "0.3.0", path = "../../embassy-executor", feature
|
|||||||
embassy-time = { version = "0.1.3", path = "../../embassy-time", features = ["nightly", "unstable-traits", "defmt", "defmt-timestamp-uptime", "tick-hz-32_768"] }
|
embassy-time = { version = "0.1.3", path = "../../embassy-time", features = ["nightly", "unstable-traits", "defmt", "defmt-timestamp-uptime", "tick-hz-32_768"] }
|
||||||
embassy-embedded-hal = { version = "0.1.0", path = "../../embassy-embedded-hal" }
|
embassy-embedded-hal = { version = "0.1.0", path = "../../embassy-embedded-hal" }
|
||||||
embassy-lora = { version = "0.1.0", path = "../../embassy-lora", features = ["stm32wl", "time", "defmt"] }
|
embassy-lora = { version = "0.1.0", path = "../../embassy-lora", features = ["stm32wl", "time", "defmt"] }
|
||||||
lora-phy = { version = "1" }
|
lora-phy = { version = "2" }
|
||||||
lorawan-device = { version = "0.10.0", default-features = false, features = ["async", "external-lora-phy"] }
|
lorawan-device = { version = "0.10.0", default-features = false, features = ["async", "external-lora-phy"] }
|
||||||
lorawan = { version = "0.7.3", default-features = false, features = ["default-crypto"] }
|
lorawan = { version = "0.7.3", default-features = false, features = ["default-crypto"] }
|
||||||
|
|
||||||
@ -32,4 +32,5 @@ chrono = { version = "^0.4", default-features = false }
|
|||||||
debug = 2
|
debug = 2
|
||||||
|
|
||||||
[patch.crates-io]
|
[patch.crates-io]
|
||||||
lora-phy = { git = "https://github.com/embassy-rs/lora-phy", rev = "1323eccc1c470d4259f95f4f315d1be830d572a3"}
|
lorawan-device = { git = "https://github.com/ivajloip/rust-lorawan", rev = "b0502c1a802427638cc8bcd928fc632d13b778b6"}
|
||||||
|
lorawan = { git = "https://github.com/ivajloip/rust-lorawan", rev = "b0502c1a802427638cc8bcd928fc632d13b778b6"}
|
||||||
|
@ -20,6 +20,7 @@ use lora_phy::LoRa;
|
|||||||
use lorawan::default_crypto::DefaultFactory as Crypto;
|
use lorawan::default_crypto::DefaultFactory as Crypto;
|
||||||
use lorawan_device::async_device::lora_radio::LoRaRadio;
|
use lorawan_device::async_device::lora_radio::LoRaRadio;
|
||||||
use lorawan_device::async_device::{region, Device, JoinMode};
|
use lorawan_device::async_device::{region, Device, JoinMode};
|
||||||
|
use lorawan_device::{AppEui, AppKey, DevEui};
|
||||||
use {defmt_rtt as _, panic_probe as _};
|
use {defmt_rtt as _, panic_probe as _};
|
||||||
|
|
||||||
const LORAWAN_REGION: region::Region = region::Region::EU868; // warning: set this appropriately for the region
|
const LORAWAN_REGION: region::Region = region::Region::EU868; // warning: set this appropriately for the region
|
||||||
@ -46,10 +47,8 @@ async fn main(_spawner: Spawner) {
|
|||||||
let _ctrl3 = Output::new(p.PC3.degrade(), Level::High, Speed::High);
|
let _ctrl3 = Output::new(p.PC3.degrade(), Level::High, Speed::High);
|
||||||
let iv = Stm32wlInterfaceVariant::new(Irqs, None, Some(ctrl2)).unwrap();
|
let iv = Stm32wlInterfaceVariant::new(Irqs, None, Some(ctrl2)).unwrap();
|
||||||
|
|
||||||
let mut delay = Delay;
|
|
||||||
|
|
||||||
let lora = {
|
let lora = {
|
||||||
match LoRa::new(SX1261_2::new(BoardType::Stm32wlSx1262, spi, iv), true, &mut delay).await {
|
match LoRa::new(SX1261_2::new(BoardType::Stm32wlSx1262, spi, iv), true, Delay).await {
|
||||||
Ok(l) => l,
|
Ok(l) => l,
|
||||||
Err(err) => {
|
Err(err) => {
|
||||||
info!("Radio error = {}", err);
|
info!("Radio error = {}", err);
|
||||||
@ -66,9 +65,9 @@ async fn main(_spawner: Spawner) {
|
|||||||
// TODO: Adjust the EUI and Keys according to your network credentials
|
// TODO: Adjust the EUI and Keys according to your network credentials
|
||||||
match device
|
match device
|
||||||
.join(&JoinMode::OTAA {
|
.join(&JoinMode::OTAA {
|
||||||
deveui: [0, 0, 0, 0, 0, 0, 0, 0],
|
deveui: DevEui::from([0, 0, 0, 0, 0, 0, 0, 0]),
|
||||||
appeui: [0, 0, 0, 0, 0, 0, 0, 0],
|
appeui: AppEui::from([0, 0, 0, 0, 0, 0, 0, 0]),
|
||||||
appkey: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
|
appkey: AppKey::from([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]),
|
||||||
})
|
})
|
||||||
.await
|
.await
|
||||||
{
|
{
|
||||||
|
@ -37,10 +37,8 @@ async fn main(_spawner: Spawner) {
|
|||||||
let _ctrl3 = Output::new(p.PC3.degrade(), Level::High, Speed::High);
|
let _ctrl3 = Output::new(p.PC3.degrade(), Level::High, Speed::High);
|
||||||
let iv = Stm32wlInterfaceVariant::new(Irqs, None, Some(ctrl2)).unwrap();
|
let iv = Stm32wlInterfaceVariant::new(Irqs, None, Some(ctrl2)).unwrap();
|
||||||
|
|
||||||
let mut delay = Delay;
|
|
||||||
|
|
||||||
let mut lora = {
|
let mut lora = {
|
||||||
match LoRa::new(SX1261_2::new(BoardType::Stm32wlSx1262, spi, iv), false, &mut delay).await {
|
match LoRa::new(SX1261_2::new(BoardType::Stm32wlSx1262, spi, iv), false, Delay).await {
|
||||||
Ok(l) => l,
|
Ok(l) => l,
|
||||||
Err(err) => {
|
Err(err) => {
|
||||||
info!("Radio error = {}", err);
|
info!("Radio error = {}", err);
|
||||||
@ -84,7 +82,7 @@ async fn main(_spawner: Spawner) {
|
|||||||
};
|
};
|
||||||
|
|
||||||
match lora
|
match lora
|
||||||
.prepare_for_rx(&mdltn_params, &rx_pkt_params, None, true, false, 0, 0x00ffffffu32)
|
.prepare_for_rx(&mdltn_params, &rx_pkt_params, None, None, false)
|
||||||
.await
|
.await
|
||||||
{
|
{
|
||||||
Ok(()) => {}
|
Ok(()) => {}
|
||||||
|
@ -37,10 +37,8 @@ async fn main(_spawner: Spawner) {
|
|||||||
let _ctrl3 = Output::new(p.PC3.degrade(), Level::High, Speed::High);
|
let _ctrl3 = Output::new(p.PC3.degrade(), Level::High, Speed::High);
|
||||||
let iv = Stm32wlInterfaceVariant::new(Irqs, None, Some(ctrl2)).unwrap();
|
let iv = Stm32wlInterfaceVariant::new(Irqs, None, Some(ctrl2)).unwrap();
|
||||||
|
|
||||||
let mut delay = Delay;
|
|
||||||
|
|
||||||
let mut lora = {
|
let mut lora = {
|
||||||
match LoRa::new(SX1261_2::new(BoardType::Stm32wlSx1262, spi, iv), false, &mut delay).await {
|
match LoRa::new(SX1261_2::new(BoardType::Stm32wlSx1262, spi, iv), false, Delay).await {
|
||||||
Ok(l) => l,
|
Ok(l) => l,
|
||||||
Err(err) => {
|
Err(err) => {
|
||||||
info!("Radio error = {}", err);
|
info!("Radio error = {}", err);
|
||||||
@ -93,7 +91,7 @@ async fn main(_spawner: Spawner) {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
match lora.sleep(&mut delay).await {
|
match lora.sleep(false).await {
|
||||||
Ok(()) => info!("Sleep successful"),
|
Ok(()) => info!("Sleep successful"),
|
||||||
Err(err) => info!("Sleep unsuccessful = {}", err),
|
Err(err) => info!("Sleep unsuccessful = {}", err),
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user