libosdp

Crates.iolibosdp
lib.rslibosdp
version0.1.9
sourcesrc
created_at2023-11-04 12:49:45.991712
updated_at2024-03-15 17:29:33.193583
descriptionLibrary implementation of IEC 60839-11-5 OSDP (Open Supervised Device Protocol)
homepagehttps://libosdp.sidcha.dev/
repositoryhttps://github.com/goToMain/libosdp
max_upload_size
id1025132
size139,387
Siddharth Chandrasekaran (sidcha)

documentation

https://docs.rs/libosdp

README

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.

Commit count: 925

cargo fmt