firmware-base/docs/Bridge.md

3.0 KiB

title description keywords
Bridge Component A communication bridge component for handling inter-component messaging and registering method calls
bridge
communication
messaging
inter-component
method registry
ESP-32
industrial

BRIDGE

Path: src/Bridge.cpp

Revision History: Initial documentation

A communication bridge component that facilitates inter-component messaging and method registration. The Bridge acts as a central hub for communication between different system components and provides services for Modbus management.

REQUIREMENTS

  • No specific hardware pins required
  • Component base class
  • String manipulation capabilities
  • Vector container support

FEATURES

  • Component method registration and management
  • Inter-component message handling
  • Component instance tracking and retrieval
  • Debugging and listing capabilities
  • Method delimiter-based parsing
  • Integration with Modbus Manager

DEPENDENCIES

  • Component
  • WString
  • Vector
  • Streaming
  • xtypes
  • enums
  • macros
graph TD;
    Bridge["Bridge"] -->|extends| Component["Component"];
    Bridge -->|uses| WString["WString"];
    Bridge -->|uses| Vector["Vector"];
    Bridge -->|uses| Streaming["Streaming"];
    Bridge -->|uses| xtypes["xtypes"];
    Bridge -->|uses| enums["enums"];

BEHAVIOUR

stateDiagram-v2
    [*] --> INITIALIZATION
    INITIALIZATION --> REGISTRATION : setup()
    REGISTRATION --> READY : register components
    READY --> MESSAGE_HANDLING : onMessage()
    MESSAGE_HANDLING --> DEBUGGING : debug()
    MESSAGE_HANDLING --> READY : return status
    DEBUGGING --> READY
    READY --> LISTING : getComponentList()
    LISTING --> READY

TODOS

PERFORMANCE

  • Implement component method caching for faster lookups
  • Optimize memory usage by pre-allocating component storage
  • Add method call frequency monitoring
  • Consider asynchronous message processing

SECURITY

  • Implement access control for component method registration
  • Implement message authentication and encryption
  • Add signed message data integrity checks
  • Enable inter-component communication logging

COMPLIANCE

  • Ensure error handling complies with industrial standards
  • Implement message logging for audit requirements
  • Validate time-critical communication performance
  • Consider system failover and redundancy in communication

RECOMMENDATIONS

  • Use structured error codes for consistent message handling
  • Maintain component hierarchies to maintain clear dependencies
  • Implement event driven architecture for inter-component synchronization
  • Add component lifecycle tracking

EXAMPLE

Based on the available header file:

#defdef ENABLE_BRIDGE_COMMUNICATION
  bridge = new Bridge(
      this                  // owner
  );
  if (bridge)
  {
    components.push_back(bridge);
    Log.infoln(F("Bridge initialized."));
  }
  else
  {
     Log.errorln(F("Bridge initialization failed."));
  }
#endif

References

${DOXYGEN_PLACEHOLDER}

${VENDOR_PLACEHOLDER}