pub mod apdu;
pub mod config;
pub mod device;
pub mod error;
pub mod network;
pub mod object;
pub mod runtime;
pub mod server;
pub mod service;
pub mod prelude {
pub use crate::apdu::encoding::{ApduDecoder, ApduEncoder};
pub use crate::apdu::types::{
AbortReason, ApduType, ConfirmedService, ErrorClass, ErrorCode, RejectReason,
UnconfirmedService,
};
pub use crate::config::BacnetServerConfig;
pub use crate::device::BacnetDevice;
pub use crate::error::{BacnetError, BacnetResult};
pub use crate::network::bvlc::{BvlcFunction, BvlcMessage};
pub use crate::network::npdu::{Npdu, NpduControl, Priority};
pub use crate::network::udp::{BACnetNetwork, NetworkConfig, NetworkHandle};
pub use crate::object::device::{
BACnetDateTime, CommunicationControlState, DeviceObject, DeviceObjectConfig,
DeviceSystemStatus,
};
pub use crate::object::property::{
BACnetValue, PropertyId, PropertyStore, SegmentationSupport, StatusFlags,
};
pub use crate::object::registry::{
default_object_descriptors, ObjectRegistry, ObjectTypeDescriptor, RegistryError,
};
pub use crate::object::standard::{
AnalogInput, AnalogOutput, AnalogValue, BinaryInput, BinaryOutput, BinaryValue,
MultiStateInput, MultiStateOutput, MultiStateValue,
};
pub use crate::object::traits::{
ArcObject, BACnetObject, CovSupport, ObjectBuilder, WritableObject,
};
pub use crate::object::types::{ObjectId, ObjectType};
pub use crate::server::{BACnetServer, ServerConfig, ServerEvent, ServerMetrics};
pub use crate::service::cov::{CovManager, CovNotification, CovSubscription};
pub use crate::service::discovery::{DiscoveryService, IAmResponse, WhoIsRequest};
pub use crate::service::handler::{
ConfirmedServiceHandler, ServiceContext, ServiceRegistry, ServiceResult,
UnconfirmedServiceHandler,
};
pub use crate::service::property::{
PropertyService, ReadPropertyRequest, WritePropertyRequest,
};
pub use crate::service::property_multiple::{
PropertyAccessResult, PropertyReference, ReadPropertyMultipleHandler,
ReadPropertyMultipleRequest, WritePropertyMultipleHandler, WritePropertyMultipleRequest,
};
pub use crate::service::read_range::{RangeType, ReadRangeHandler, ReadRangeRequest};
pub use crate::service::tsm::{ServerTsm, TransactionKey, TsmConfig, TsmStatistics};
pub use crate::service::file_access::{
AtomicReadFileHandler, AtomicReadFileRequest, AtomicWriteFileHandler,
AtomicWriteFileRequest,
};
pub use crate::object::file::{FileAccessMethod, FileObject};
pub use crate::object::event_enrollment::{
EventEnrollment, EventNotification, EventTransitionBits, EventType, NotificationClass,
NotificationRecipient, NotifyType,
};
pub use crate::service::alarm::{
AcknowledgeAlarmHandler, ConfirmedEventNotificationHandler, GetAlarmSummaryHandler,
GetEnrollmentSummaryHandler, GetEventInformationHandler,
};
pub use crate::service::create_delete::{
default_object_factory, CreateObjectHandler, CreateObjectRequest, DeleteObjectHandler,
DeleteObjectRequest, ObjectFactory,
};
pub use crate::service::subscribe_cov::{SubscribeCovHandler, SubscribeCovPropertyHandler};
pub use crate::service::device_control::{
DeviceCommunicationControlHandler, EnableDisable, ReinitializeDeviceHandler,
ReinitializedState, TimeSynchronizationHandler, UtcTimeSynchronizationHandler,
};
pub use crate::object::schedule::{
Calendar, CalendarEntry, DateRange, ObjectPropertyReference, Schedule, SpecialEvent,
SpecialEventPeriod, TimeValue,
};
pub use crate::object::trend_log::{
DeviceObjectPropertyReference, LogDatum, LogRecord, LogStatus, LogTimestamp, TrendLog,
};
pub use crate::network::bbmd::{
Bbmd, BbmdConfig, BroadcastDistributionTable, ForeignDeviceTable,
};
pub use crate::apdu::segmentation::{SegmentAssembler, SegmentTransmitter};
}
pub use config::BacnetServerConfig;
pub use device::BacnetDevice;
pub use error::{BacnetError, BacnetResult};
pub use runtime::{descriptor, driver};
pub use server::{BACnetServer, ServerConfig, ServerEvent, ServerMetrics, ServerMetricsSnapshot};
pub type Config = ServerConfig;
pub type Server = BACnetServer;
pub type Device = BacnetDevice;
pub type Factory = crate::service::create_delete::ObjectFactory;
pub type Stats = ServerMetrics;
pub type Error = BacnetError;
pub type Result<T> = BacnetResult<T>;
pub struct Builder {
config: Config,
objects: crate::object::registry::ObjectRegistry,
}
impl Default for Builder {
fn default() -> Self {
Self {
config: Config::default(),
objects: crate::object::registry::ObjectRegistry::new(),
}
}
}
impl Builder {
pub fn new() -> Self {
Self::default()
}
pub fn config(mut self, config: Config) -> Self {
self.config = config;
self
}
pub fn objects(mut self, objects: crate::object::registry::ObjectRegistry) -> Self {
self.objects = objects;
self
}
pub fn build(self) -> Server {
Server::new(self.config, self.objects)
}
}