Skip to main content

Crate ember_plus

Crate ember_plus 

Source
Expand description

§Ember+ Protocol Implementation for Rust

A complete implementation of Lawo’s Ember+ control protocol.

Ember+ is a control protocol used in broadcast and professional audio equipment, providing a tree-based data structure for parameters, nodes, functions, and matrices.

§Features

  • S101 Framing: Transport layer protocol for message framing
  • BER Codec: ASN.1 Basic Encoding Rules implementation
  • Glow DTD: Complete Ember+ schema type definitions
  • Client (Consumer): Connect to Ember+ providers
  • Server (Provider): Host an Ember+ tree for consumers
  • Async/Await: Built on Tokio for async networking

§Quick Start

§Client Example

use ember_plus::{EmberClient, Result};

#[tokio::main]
async fn main() -> Result<()> {
    let mut client = EmberClient::connect("192.168.1.100:9000").await?;
     
    // Get the root directory
    let tree = client.get_directory().await?;
     
    // Get element by path
    let node = client.get_element_by_path("0.1.2").await?;
     
    Ok(())
}

§Server Example

use ember_plus::{EmberServer, EmberValue, Result};
use ember_plus::tree::TreeNode;

#[tokio::main]
async fn main() -> Result<()> {
    let mut server = EmberServer::bind("0.0.0.0:9000").await?;
     
    // Build your tree
    let root = TreeNode::new_node(0);
    server.init(root).await;
     
    // Run the server
    server.run().await?;
     
    Ok(())
}

Re-exports§

pub use error::Error;
pub use error::Result;
pub use client::EmberClient;
pub use server::EmberServer;
pub use types::*;
pub use tree::*;

Modules§

ber
BER (Basic Encoding Rules) codec for ASN.1.
client
Ember+ client (consumer) implementation.
codec
Glow codec for encoding and decoding Ember+ messages.
error
Error types for the Ember+ library.
glow
Glow DTD (Document Type Definition) types for Ember+.
s101
S101 framing protocol implementation.
server
Ember+ server (provider) implementation.
tree
Ember+ tree data structures.
types
Common types re-exported for convenience.