Skip to main content

Crate mabi_knx

Crate mabi_knx 

Source
Expand description

§mabi-knx

KNXnet/IP simulator for the industrial protocol simulator.

This crate provides a complete KNXnet/IP implementation including:

  • Address System: Individual and Group address handling
  • DPT System: Extensible Datapoint Type encoding/decoding
  • cEMI Frames: Common EMI frame handling
  • KNXnet/IP Protocol: Full protocol stack with tunneling support
  • Device Abstraction: Integration with mabi-core

§Quick Start

use mabi_knx::{
    KnxServer, KnxServerConfig, KnxDevice, KnxDeviceBuilder,
    GroupAddress, IndividualAddress, DptId,
};

// Create a KNX device
let device = KnxDeviceBuilder::new("knx-1", "Living Room Controller")
    .individual_address(IndividualAddress::new(1, 1, 1))
    .group_object("1/0/1".parse()?, "Light Switch", "1.001".parse()?)
    .build()?;

// Create a server
let config = KnxServerConfig::default();
let server = KnxServer::new(config).await?;
server.start().await?;

§Module Overview

  • error: Error types and result definitions
  • config: Configuration structures for server and devices
  • address: Individual and Group address types
  • dpt: Datapoint Type system with extensible codec support
  • cemi: Common EMI frame handling
  • frame: KNXnet/IP frame and service types
  • group: Group object table and event system
  • tunnel: Tunneling connection management
  • server: KNXnet/IP server implementation
  • device: KNX device implementing core Device trait
  • factory: Device factory for creating KNX devices

Re-exports§

pub use error::KnxError;
pub use error::KnxResult;
pub use config::KnxServerConfig;
pub use config::KnxDeviceConfig;
pub use config::GroupObjectConfig;
pub use config::GroupObjectFlagsConfig;
pub use config::TunnelConfig;
pub use address::GroupAddress;
pub use address::IndividualAddress;
pub use address::AddressType;
pub use address::GroupAddressRange;
pub use dpt::DptId;
pub use dpt::DptValue;
pub use dpt::DptCodec;
pub use dpt::DptRegistry;
pub use dpt::BoxedDptCodec;
pub use dpt::encode_dpt9;
pub use dpt::decode_dpt9;
pub use cemi::CemiFrame;
pub use cemi::MessageCode;
pub use cemi::Priority;
pub use cemi::Apci;
pub use cemi::AdditionalInfo;
pub use cemi::AdditionalInfoType;
pub use frame::KnxFrame;
pub use frame::FrameBuilder;
pub use frame::KnxNetIpHeader;
pub use frame::ServiceType;
pub use frame::Hpai;
pub use frame::DibDeviceInfo;
pub use frame::SupportedServiceFamilies;
pub use frame::ServiceFamily;
pub use group::GroupObject;
pub use group::GroupObjectTable;
pub use group::GroupObjectFlags;
pub use group::GroupEvent;
pub use tunnel::TunnelConnection;
pub use tunnel::ConnectRequest;
pub use tunnel::ConnectResponse;
pub use tunnel::ConnectionType;
pub use tunnel::TunnellingRequest;
pub use tunnel::TunnellingAck;
pub use tunnel::ConnectionStateRequest;
pub use tunnel::ConnectionStateResponse;
pub use tunnel::DisconnectRequest;
pub use tunnel::DisconnectResponse;
pub use tunnel::SequenceTracker;
pub use tunnel::ReceivedValidation;
pub use tunnel::AckValidation;
pub use tunnel::SequenceStatsSnapshot;
pub use tunnel::AckWaiter;
pub use tunnel::AckResult;
pub use tunnel::AckMessage;
pub use tunnel::AckWaiterStatsSnapshot;
pub use tunnel::TunnelFsm;
pub use tunnel::TunnelState;
pub use tunnel::TunnelErrorReason;
pub use tunnel::FsmStatsSnapshot;
pub use config::TunnelBehaviorConfig;
pub use filter::FilterChain;
pub use filter::FilterChainConfig;
pub use filter::FilterChainStats;
pub use filter::FilterChainStatsSnapshot;
pub use filter::FilterDirection;
pub use filter::FilterResult;
pub use filter::FrameEnvelope;
pub use filter::PaceFilter;
pub use filter::PaceFilterConfig;
pub use filter::PaceState;
pub use filter::PaceFilterStats;
pub use filter::PaceFilterStatsSnapshot;
pub use filter::QueueFilter;
pub use filter::QueueFilterConfig;
pub use filter::QueuePriority;
pub use filter::QueueFilterStats;
pub use filter::QueueFilterStatsSnapshot;
pub use filter::RetryFilter;
pub use filter::RetryFilterConfig;
pub use filter::CircuitBreakerState;
pub use filter::RetryFilterStats;
pub use filter::RetryFilterStatsSnapshot;
pub use heartbeat::HeartbeatAction;
pub use heartbeat::HeartbeatSchedule;
pub use heartbeat::HeartbeatScheduler;
pub use heartbeat::HeartbeatSchedulerConfig;
pub use heartbeat::HeartbeatStatsSnapshot;
pub use group_cache::GroupValueCache;
pub use group_cache::GroupValueCacheConfig;
pub use group_cache::CacheEntry;
pub use group_cache::CacheEntryInfo;
pub use group_cache::CacheStatsSnapshot;
pub use group_cache::UpdateSource;
pub use error_tracker::SendErrorTracker;
pub use error_tracker::SendErrorTrackerConfig;
pub use error_tracker::ErrorCategory;
pub use error_tracker::TrackingResult;
pub use error_tracker::ChannelErrorSummary;
pub use error_tracker::TrackerStatsSnapshot;
pub use metrics::KnxMetricsSnapshot;
pub use metrics::KnxMetricsCollector;
pub use metrics::ConnectionMetricsSnapshot;
pub use diagnostics::KnxDiagnostics;
pub use diagnostics::DiagnosticResult;
pub use diagnostics::DiagnosticSeverity;
pub use diagnostics::DiagnosticRule;
pub use diagnostics::DiagnosticConfig;
pub use server::KnxServer;
pub use server::ServerState;
pub use server::ServerEvent;
pub use server::ConnectionManager;
pub use device::KnxDevice;
pub use device::KnxDeviceBuilder;
pub use factory::KnxDeviceFactory;
pub use factory::register_knx_factory;

Modules§

address
KNX address types.
cemi
Common EMI (cEMI) frame handling.
config
KNX configuration types.
device
KNX Device implementation.
diagnostics
Automatic diagnostic analysis for KNXnet/IP simulator health.
dpt
KNX Datapoint Types (DPT).
error
KNX error types.
error_tracker
Send Error Tracker with consecutive and sliding window error rate monitoring.
factory
KNX Device Factory.
filter
Flow control filter chain for KNXnet/IP bus timing simulation.
frame
KNXnet/IP frame handling.
group
KNX Group Object management.
group_cache
Group Value Cache with TTL/LRU eviction and auto-update on L_Data.ind.
heartbeat
Heartbeat action system for KNXnet/IP connection state simulation.
metrics
KNXnet/IP server metrics collection and Prometheus exposition.
prelude
Prelude module for convenient imports
server
KNXnet/IP Server with production-grade tunnel FSM, sequence validation, and L_Data.con.
tunnel
KNXnet/IP tunnelling protocol with production-grade FSM and sequence validation.

Macros§

impl_simple_dpt
Helper macro for implementing simple DPT codecs.

Constants§

DEFAULT_MULTICAST_ADDR
Default multicast address for KNX discovery
DEFAULT_PORT
Default KNXnet/IP port
KNXNETIP_VERSION
Protocol version for KNXnet/IP