Crates.io | ebyte-e32 |
lib.rs | ebyte-e32 |
version | 0.9.0 |
source | src |
created_at | 2022-02-28 20:04:33.893026 |
updated_at | 2022-11-18 18:24:52.097872 |
description | Platform-agnostic driver for Ebyte E32 LoRa modules |
homepage | |
repository | https://github.com/barafael/ebyte-e32-rs |
max_upload_size | |
id | 541135 |
size | 1,075,211 |
Platform-agnostic driver for Ebyte E32 LoRa modules.
Uses embedded-hal for interfacing with a serial port, an input pin (AUX), and two output pins(M0, M1).
use ebyte_e32::{
mode::Normal,
parameters::{AirBaudRate, Persistence},
Ebyte,
};
use embedded_hal::{
blocking::delay,
digital::v2::{InputPin, OutputPin},
serial,
};
use embedded_hal::digital::v2::ToggleableOutputPin;
use std::fmt::Debug;
pub fn simple_test_ebyte<S, AUX, M0, M1, D, LED>(
mut ebyte: Ebyte<S, AUX, M0, M1, D, Normal>,
mut led: LED,
mut delay: impl delay::DelayMs<u32>,
) where
S: serial::Read<u8> + serial::Write<u8>,
<S as serial::Read<u8>>::Error: Debug,
<S as serial::Write<u8>>::Error: Debug,
AUX: InputPin,
M0: OutputPin,
M1: OutputPin,
D: delay::DelayMs<u32>,
LED: ToggleableOutputPin,
LED::Error: Debug,
{
let model_data = ebyte.model_data().unwrap();
let mut params = ebyte.parameters().unwrap();
println!("{model_data:#?}");
println!("{params:#?}");
params.air_rate = AirBaudRate::Bps300;
params.channel = 23;
ebyte
.set_parameters(¶ms, Persistence::Temporary)
.unwrap();
let params = ebyte.parameters().unwrap();
println!("{:#?}", params);
loop {
delay.delay_ms(5000u32);
println!("Sending it!");
ebyte.write_buffer(b"it").unwrap();
led.toggle().unwrap();
}
}
I tested so far with an E32-433T30D
and an E32-868T20D
. According to the datasheet, the differences between the modules are minor, but do check: chapter 11 "E32 series" lists some differences. For example, E32-170T30D
only supports baud rates up to 9.6k. Please report or PR if you find something that doesn't work.
value_enum
: enable deriving clap::ValueEnum
for the enums inside ebyte_e32::parameters::Parameters
. This disables no_std
, but one can make nice CLIs and GUIs with this: ebyte-e32-ui(Note this doesn't include the optional feature value_enum
)