SEDSnet 4.0.0

A memory safe, no_std-capable networking stack with routing, discovery, reliability, and Rust/C/Python bindings.
Documentation
use sedsnet::config::{
    register_data_type_id_with_description_and_e2e_encryption,
    register_endpoint_id_with_description,
};
use sedsnet::router::{Router, RouterConfig, RouterE2eEncryptionMode};
use sedsnet::{
    DataEndpoint, DataType, E2eEncryptionPolicy, MessageClass, MessageDataType, MessageElement,
    ReliableMode, TelemetryResult,
};

fn main() -> TelemetryResult<()> {
    let radio = register_endpoint_id_with_description(
        DataEndpoint(101),
        "RADIO",
        "packed radio link",
        false,
    )?;
    let flight_state = register_data_type_id_with_description_and_e2e_encryption(
        DataType(3100),
        "FLIGHT_STATE",
        "network-managed flight state",
        MessageElement::Static(1, MessageDataType::UInt8, MessageClass::Data),
        &[radio],
        ReliableMode::None,
        90,
        E2eEncryptionPolicy::RequireOn,
    )?;

    let router = Router::new(
        RouterConfig::default()
            .with_sender("FLIGHT_COMPUTER")
            .with_e2e_encryption(RouterE2eEncryptionMode::RequiredOnly)
            .with_e2e_key_id(7),
    );

    router.enable_managed_variable(flight_state)?;
    router.add_side_packed("RADIO", |_bytes| Ok(()));

    let state = [3_u8];
    router.log(flight_state, &state)?;
    router.request_managed_variable(flight_state)?;
    router.process_all_queues()?;
    Ok(())
}