bacnet_plugin 0.0.3
bacnet_plugin: ^0.0.3 copied to clipboard
A Flutter FFI plugin for BACnet protocol communication, supporting client and server operations with isolate-based architecture.
Changelog #
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
0.0.1 - 2026-01-07 #
Added #
Core Features
- BACnet Client - Full client implementation with support for:
- Device discovery (Who-Is/I-Am)
- Read Property / Read Property Multiple
- Write Property / Write Property Multiple
- Change of Value (COV) subscriptions
- Foreign Device Registration
- Device scanning and object enumeration
- BACnet Server - Server implementation for hosting objects:
- Device initialization
- Object hosting (Analog, Binary, Multi-state)
- Write notification events
- Read/Write property handling
Developer Experience
-
Named Constants - Complete set of BACnet protocol constants:
BacnetObjectType- 25+ object types with human-readable namesBacnetPropertyId- 80+ property identifiersBacnetErrorClassandBacnetErrorCode- Comprehensive error constants
-
Modern Logging:
DeveloperBacnetLogger- Dart DevTools integrationConsoleBacnetLogger- Simple console output- Pluggable logger interface for custom implementations
-
Type Safety:
- Strict type checking throughout
- Named constants replace magic numbers
- Comprehensive parameter documentation
-
JSON Serialization:
- All models support
toJson()/fromJson() - Generated with
json_serializable - Easy API integration
- All models support
Data Models
-
Immutable Models:
BacnetObject- Object representation with propertiesBacnetPropertyReference- Property references for RPMBacnetReadAccessSpecification- RPM request specificationBacnetWriteAccessSpecification- WPM request specificationBacnetPropertyValue- Property values for WPM
-
Model Features:
@immutableannotationscopyWith()methods for updates- Equality operators (
==,hashCode) - Helper getters (name, presentValue, etc.)
- Full dartdoc documentation
Configuration
- BacnetConfig - Centralized configuration:
- Interface binding
- Port configuration
- Timeout settings
- Retry configuration
- Logger selection
Error Handling
- Exception Hierarchy:
BacnetException- Base exceptionBacnetTimeoutException- Request timeoutsBacnetNotInitializedException- Uninitialized operationsBacnetProtocolException- Protocol errors with error codes
Documentation
-
Complete API Documentation:
- Every public API has dartdoc comments
- Usage examples for all major features
- Parameter explanations with constant references
- Return value documentation
-
Project Documentation:
- Comprehensive README.md with examples
- CONTRIBUTING.md guide
- Architecture diagrams
- Quick start guides
Code Quality
-
Linting:
- 100+ lint rules configured
- Strict type checking enabled
- Code style enforcement (single quotes, const, etc.)
- Documentation requirements
-
Code Generation:
build_runnerintegration- JSON serialization generation
- FFI bindings generation
Architecture #
- Isolate-Based Design:
- Non-blocking network operations
- Smooth UI performance
- Background processing
- Worker isolate for native BACnet stack
Platforms #
- ✅ Windows
- ✅ Linux
- ✅ macOS
- ✅ Android
- ✅ iOS
Dependencies #
ffi: ^2.1.4- Foreign Function Interfacejson_annotation: ^4.9.0- JSON annotationsmeta: ^1.15.0- Metadata annotationsplugin_platform_interface: ^2.1.8- Platform interface
Dev Dependencies #
build_runner: ^2.4.0- Code generationjson_serializable: ^6.8.0- JSON serializationmocktail: ^1.0.0- Mocking for testsflutter_lints: ^6.0.0- Linting rules
Known Limitations #
- Trend log reading returns dummy data (planned for future release)
- Device scanning limited to first 10 objects
- Some native worker code lacks public documentation
- WritePropertyMultiple native binding pending implementation