10 releases
0.1.9 | Mar 15, 2024 |
---|---|
0.1.8 | Feb 14, 2024 |
0.1.7 | Jan 28, 2024 |
0.1.6 | Dec 10, 2023 |
0.1.3 | Nov 30, 2023 |
#334 in Development tools
383 downloads per month
Used in osdpctl
96KB
2K
SLoC
LibOSDP for Rust
This crate provides safe wrappers for accessing the C library LibOSDP. LibOSDP the most popular open source library for creating Open Supervised Device Protocol (OSDP) devices. For more information about the library or OSDP in general, see libosdp.sidcha.dev.
The documentation for this crate can be found here.
Features
- Production ready implementation with active users and contributors
- Supports secure channel communication (AES-128)
- Can be used to setup a PD or CP mode of operation
- Most OSDP specified commands and replies are supported (see doc)
Usage
To add libosdp to your rust project, do:
cargo add libosdp
Control Panel:
A simplified CP implementation:
let pd_info = vec! [ PdInfo::new(...), ... ];
let mut cp = ControlPanel::new(&mut pd_info)?;
cp.set_event_callback(|pd, event| {
println!("Received event from {pd}: {:?}", event);
});
loop {
cp.refresh();
cp.send_command(0, OsdpCommand::new(...));
}
See examples for a working implementation.
Peripheral Device:
A simplified PD implementation:
let pd_info = PdInfo::new(...);
let mut pd = PeripheralDevice::new(&mut pd_info)?;
pd.set_command_callback(|cmd| {
println!("Received command {:?}", cmd);
});
loop {
pd.refresh();
cp.notify_event(OsdpEvent::new(...));
}
See examples for a working implementation.
Dependencies
~2.7–5.5MB
~82K SLoC