EPON Manager – System Architecture

Created on March 13, 2026

High-Level Architecture

System Context

graph TB
    subgraph RDK
        User[RDK Components/Users]
        WM[WanManager]
        T2[Telemetry System ]
    end
    
    subgraph RdkEponManager
        EPM[EPON Manager]
    end
    
    HAL[EPON HAL]
    HW[EPON ONU Hardware]
    
    User <-->|TR-181 Get/Set| EPM
    WM <-->|PHY Status Updates| EPM
    T2 <-->|Statistics/Events| EPM
    EPM <-->|HAL API Calls| HAL
    HAL <-->|Hardware Control| HW
    
    style EPM fill:#4A90E2,stroke:#2E5C8A,color:#fff
    style HAL fill:#50C878,stroke:#2E7D4E,color:#fff
    style HW fill:#FF6B6B,stroke:#C92A2A,color:#fff

Component Architecture

Block Diagram

graph TB
    subgraph RdkEponManager
        subgraph Support["Support Modules"]
            Logger[Logger<br/>Module]
            Telemetry[Telemetry<br/>Module]
            RBus[RBus/DBus<br/>Thread]
        end
        
        Controller[EPON Controller<br/>Main Thread]
        
        subgraph Workers["Worker Threads & Storage"]
            EventListener[HAL Event<br/>Listener Thread]
            StatsPoller[Stats Polling<br/>Thread]
            HALWrapper[HAL Wrapper<br/>with Cache]
            EventQ[Events<br/>Queue]
        end
        
        Support --- Controller
        Controller --- Workers
    end
    
    subgraph EPONHAL["EPON HAL"]
        StatsAPI[Stats<br/>API]
        CallbackReg[Callback<br/>Registration]
        InterfaceAPI[Interface<br/>List API]
    end
    
    HW[Hardware<br/>EPON ONU]
    WanMgr[WanManager<br/>EPON PHY Status<br/>Virtual Interface List]
    
    Controller <--> EPONHAL
    Controller -->|Register Callbacks| CallbackReg
    CallbackReg -->|ONU Status Events| EventQ
    CallbackReg -->|Interface Status Events| EventQ
    CallbackReg -->|Interface Alarm Events| EventQ
    EventListener -->|Poll Events| EventQ
    StatsPoller -->|Query Stats| HALWrapper
    HALWrapper -->|HAL Calls| StatsAPI
    EPONHAL <--> HW
    RBus -.->|Updates via RBus| WanMgr
    
    style RdkEponManager fill:#E3F2FD,stroke:#1976D2,stroke-width:3px
    style Support fill:#FFF3E0,stroke:#F57C00
    style Workers fill:#F3E5F5,stroke:#7B1FA2
    style EPONHAL fill:#E8F5E9,stroke:#388E3C
    style Controller fill:#4A90E2,stroke:#2E5C8A,color:#fff
    style HW fill:#FFEBEE,stroke:#C62828
    style HALWrapper fill:#FFD700,stroke:#B8860B

C4 Model Diagrams

Level 1: System Context

graph TB
    subgraph External Systems
        User[RDK Components<br/>Web UI, CLI, Other Services]
        WanMgr[WanManager]
        T2[T2 Telemetry]
    end
    
    EPONMgr[EPON Manager<br/>Manages EPON Configuration<br/>and Status]
    
    subgraph Hardware Layer
        HAL[EPON HAL]
        ONU[EPON ONU<br/>Hardware]
    end
    
    User -->|TR-181 Get/Set<br/>via RBus| EPONMgr
    EPONMgr -->|Link Status<br/>Interface Updates| WanMgr
    EPONMgr -->|Metrics & Events| T2
    EPONMgr <-->|HAL API| HAL
    HAL <-->|Driver Calls| ONU
    
    style EPONMgr fill:#1168bd,stroke:#0b4884,color:#ffffff
    style HAL fill:#438dd5,stroke:#2e6295,color:#ffffff
    style ONU fill:#85bbf0,stroke:#5d8ab8,color:#000000

Level 2: Container Diagram

graph TB
    subgraph RDK
        User[RDK Components]
        WanMgr[WanManager]
        T2[T2 System]
    end
    HAL[EPON HAL]
    
    subgraph RdkEponManager Process
        RBusThread[RBus Thread<br/>TR-181 Handler]
        Logger[Logger Module<br/>RDK Logger Wrapper]
        Controller[EPON Controller<br/>Main Thread]
        EventListener[Event Listener<br/>HAL Event Handler]
        StatsPoller[Stats Poller<br/>Harvester]
        Telemetry[Telemetry Module<br/>T2 Wrapper]
        HALWrapper[HAL Wrapper + Cache]
    end
    
    User -->|RBus Messages| RBusThread
    RBusThread -->|Get/Set Requests| Controller
    RBusThread -->|Read Cache| HALWrapper
    WanMgr <-->|Notify| RBusThread
    
    Controller -->|Init/Control| EventListener
    Controller -->|Init/Control| StatsPoller
    Controller -->|HAL Calls| HAL
    
    EventListener <-->|Receive Events| HAL
    EventListener -->|Update Status| RBusThread
    
    StatsPoller -->|Poll Stats| HALWrapper
    Telemetry -->|Report| StatsPoller
    
    T2 -->|Send Events| Telemetry
    
    HALWrapper -->|Forward Calls| HAL
    
    Controller -.->|Log| Logger
    RBusThread -.->|Log| Logger
    EventListener -.->|Log| Logger
    StatsPoller -.->|Log| Logger
    
    style Controller fill:#1168bd,stroke:#0b4884,color:#ffffff
    style RBusThread fill:#438dd5,stroke:#2e6295,color:#ffffff
    style EventListener fill:#438dd5,stroke:#2e6295,color:#ffffff
    style StatsPoller fill:#438dd5,stroke:#2e6295,color:#ffffff
    style HALWrapper fill:#FFD700,stroke:#B8860B,color:#000000
    style Telemetry fill:#438dd5,stroke:#2e6295,color:#ffffff
    style Logger fill:#F5F5F5,stroke:#999999,stroke-dasharray: 1 1

  
Controller State Machine

stateDiagram-v2
    [*] --> Uninitialized
    Uninitialized --> Initializing: Start
    Initializing --> Ready: Init Success
    Initializing --> Error: Init Failed
    Ready --> Running: All Threads Started
    Running --> Ready: Pause
    Running --> Shutdown: Stop Request
    Error --> Uninitialized: Reset
    Shutdown --> [*]

TR-181 Data Model

The EPON Manager implements TR-181 Device.Optical.Interface data model parameters via RBus/DBus. See the HAL Proposal document for detailed parameter mappings.

Key Objects:

  • Device.Optical.Interface.{i}.Status – Mapped from ONU status callback
  • Device.Optical.Interface.{i}.Name – Mapped from interface status callback
  • Device.Optical.Interface.{i}.Stats – Queried via HAL stats APIs
  • Device.Optical.Interface.{i}.X_RDK_* – Extended EPON-specific parameters

System Layers

LayerComponentsResponsibility
Application LayerRDK Components, WebUI, CLIUser interaction and high-level control
Service LayerWanManager, Telemetry (T2)System services and coordination
Manager LayerRdkEponManagerEPON-specific management and orchestration
Abstraction LayerEPON HALHardware abstraction and driver interface
Hardware LayerEPON ONUPhysical EPON hardware

Communication Patterns

Bus Communication (RBus)

  • Pattern: Request-Response, Publish-Subscribe
  • Protocol: RBus/DBus
  • Usage: TR-181 GET/SET, Event notifications

Event Queue

  • Pattern: Producer-Consumer
  • Implementation: Thread-safe queue
  • Usage: HAL events to Event Listener

Shared Memory

  • Pattern: Cache with TTL
  • Synchronization: Mutex-protected
  • Usage: Statistics caching
Go To Top