
{"id":9705,"date":"2022-06-21T13:53:03","date_gmt":"2022-06-21T13:53:03","guid":{"rendered":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/documentation\/rdk_broadband_documentation\/components\/notify_component\/"},"modified":"2026-03-04T11:51:39","modified_gmt":"2026-03-04T11:51:39","slug":"notify_component","status":"publish","type":"page","link":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_broadband_documentation\/components\/notify_component\/","title":{"rendered":"Notify Component"},"content":{"rendered":"\n<p>The NotifyComponent is a centralized notification service in the RDK-B middleware that manages parameter change notifications between different RDK-B components and protocol agents. It acts as a notification broker that allows components to register interest in specific TR-181 parameter changes and distributes notifications when those parameters are modified. This component ensures efficient and reliable communication across the RDK-B stack by providing a unified notification mechanism for parameter value changes, reducing direct inter-component dependencies and enabling scalable event-driven architecture.<\/p>\n\n\n\n<p>The NotifyComponent provides essential services to the RDK-B ecosystem by maintaining a dynamic registry of parameter interests from various protocol agents (WebPA, TR-069, DMCLI, SNMP, Wi-Fi, and Mesh), processing notification requests through a message queue system, and distributing parameter change notifications to all registered subscribers. At the module level, it implements a thread-safe notification engine with persistent parameter registration, message queue-based asynchronous communication, and flexible notification masks that allow fine-grained control over which protocol agents receive specific notifications.<\/p>\n\n\n\n<div class=\"wp-block-merpress-mermaidjs diagram-source-mermaid\"><pre class=\"mermaid\">graph LR\n    subgraph \"External Systems\"\n        RemoteMgmt[\"Remote Management\"]\n        LocalUI[\"Local Web UI\"]\n        SNMPNMS[\"SNMP Network Management\"]\n    end\n\n    subgraph \"RDK-B Platform\"\n        subgraph \"Remote Management Agents\"\n            ProtocolAgents[\"Protocol Agents\"]\n            TR069PA[\"TR-069 PA\"]\n            WebPA[\"WebPA\"]\n            SNMPAgent[\"SNMP Agent\"]\n            WiFiAgent[\"WiFi Agent\"]\n            MeshAgent[\"Mesh Agent\"]\n        end\n        \n        subgraph \"Notification Framework\"\n            NotifyComp[\"NotifyComponent\"]\n        end\n        \n        subgraph \"RDK-B Core Components\"\n            PAMComp[\"P&amp;M Component\"]\n            CcspCr[\"Component Registry\"]\n            OtherComps[\"Other RDK-B Components\"]\n        end\n    end\n    \n    subgraph \"System Layer\"\n        MessageQueue[\"POSIX Message Queue\"]\n        FileSystem[\"Persistent Storage\"]\n        Linux[\"Linux Kernel\"]\n    end\n\n    %% External connections\n    RemoteMgmt -->|TR-069\/WebPA| ProtocolAgents\n    LocalUI -->|HTTP\/HTTPS| WebPA\n    SNMPNMS -->|SNMP Protocol| SNMPAgent\n\n    %% Protocol Agents to NotifyComponent\n    ProtocolAgents -->|IPC| NotifyComp\n    TR069PA -->|Register Parameters| NotifyComp\n    WebPA -->|Register Parameters| NotifyComp\n    SNMPAgent -->|Register Parameters| NotifyComp\n    WiFiAgent -->|Register Parameters| NotifyComp\n    MeshAgent -->|Register Parameters| NotifyComp\n\n    %% NotifyComponent to Other RDK-B Components\n    NotifyComp -->|IPC| PAMComp\n    NotifyComp -->|IPC| CcspCr\n    NotifyComp -->|IPC| OtherComps\n\n    %% System Layer Integration\n    NotifyComp &lt;-->|Message Queue I\/O| MessageQueue\n    NotifyComp &lt;-->|Registration Cache| FileSystem\n    PAMComp -->|Parameter Changes| MessageQueue\n    OtherComps -->|Parameter Changes| MessageQueue\n\n    %% System integration\n    MessageQueue &lt;-->|System Calls| Linux\n    FileSystem &lt;-->|File Operations| Linux\n\n    classDef external fill:#fff3e0,stroke:#ef6c00,stroke-width:2px;\n    classDef notifyComponent fill:#e3f2fd,stroke:#1976d2,stroke-width:3px;\n    classDef rdkbComponent fill:#e8f5e8,stroke:#2e7d32,stroke-width:2px;\n    classDef system fill:#fce4ec,stroke:#c2185b,stroke-width:2px;\n\n    class RemoteMgmt,LocalUI,SNMPNMS external;\n    class NotifyComp notifyComponent;\n    class ProtocolAgents,TR069PA,WebPA,SNMPAgent,WiFiAgent,MeshAgent,PAMComp,CcspCr,OtherComps rdkbComponent;\n    class MessageQueue,FileSystem,Linux system;<\/pre><\/div>\n\n\n\n<p><strong>Key Features &amp; Responsibilities<\/strong>:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Centralized Notification Management<\/strong>: Acts as a broker for all TR-181 parameter change notifications across RDK-B components, eliminating the need for point-to-point notification connections<\/li>\n\n\n\n<li><strong>Dynamic Parameter Registration<\/strong>: Allows protocol agents to dynamically register and unregister interest in specific TR-181 parameters using flexible notification masks<\/li>\n\n\n\n<li><strong>Multi-Protocol Support<\/strong>: Supports notifications for WebPA, TR-069, DMCLI, SNMP, Wi-Fi, and Mesh protocol agents with individual notification mask management<\/li>\n\n\n\n<li><strong>Asynchronous Message Processing<\/strong>: Implements a message queue-based system for handling parameter change notifications without blocking the sender components<\/li>\n\n\n\n<li><strong>Persistent Registration Storage<\/strong>: Maintains parameter registration information in persistent storage to survive component restarts and crashes<\/li>\n\n\n\n<li><strong>Thread-Safe Operations<\/strong>: Uses dynamic linked list management and thread-safe operations to handle concurrent registration and notification requests<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"design\"><a href=\"https:\/\/wiki.rdkcentral.com\/spaces\/RDK\/pages\/83560821\/Notify+Component#design\">Design<\/a><\/h2>\n\n\n\n<p>The NotifyComponent follows a broker-based design pattern that centralizes notification management while maintaining loose coupling between RDK-B components and protocol agents. The design implements a hub-and-spoke topology where the NotifyComponent serves as the central hub that receives parameter change notifications from any RDK-B component and distributes them to all registered protocol agents based on their subscription masks. This approach significantly reduces the complexity of inter-component communication by eliminating the need for each component to maintain direct connections with multiple protocol agents.<\/p>\n\n\n\n<p>The design integrates seamlessly with the RDK-B messaging infrastructure through both synchronous and asynchronous communication patterns. For northbound interactions with protocol agents, the component uses RBus\/DBUS for parameter registration and notification delivery, ensuring reliable and standardized communication. For southbound interactions, it employs POSIX message queues to receive parameter change notifications from other RDK-B components, enabling asynchronous and non-blocking communication that doesn&#8217;t impact the performance of notifying components.<\/p>\n\n\n\n<p>The IPC mechanisms are carefully chosen based on communication requirements &#8211; RBus\/DBUS provides reliable synchronous communication for registration operations and notification delivery, while POSIX message queues enable high-performance asynchronous communication for parameter change events. The component also implements persistent data storage through file-based caching of registration information, allowing it to recover quickly after restarts without requiring re-registration from all protocol agents. This hybrid approach optimizes both performance and reliability across different communication scenarios.<\/p>\n\n\n\n<div class=\"wp-block-merpress-mermaidjs diagram-source-mermaid\"><pre class=\"mermaid\">flowchart TD\n    subgraph \"NotifyComponent Internal Architecture\"\n        subgraph \"Interface Layer\"\n            TR181API[TR-181 API Handler&lt;br\/>cosa_apis_NotifyComponent.h]\n            SSPFramework[SSP Framework&lt;br\/>ssp_main.c, plugin_main.c]\n        end\n        \n        subgraph \"Core Processing\"\n            RegMgr[Registration Manager&lt;br\/>AddNotifyParam\/DelNotifyParam]\n            EventEngine[Event Processing Engine&lt;br\/>Event_HandlerThread]\n            NotifyDispatcher[Notification Dispatcher&lt;br\/>Notify_To_PAs\/Find_Param]\n            MaskMgr[Notification Mask Manager&lt;br\/>PA_to_Mask]\n        end\n        \n        subgraph \"Data Management\" \n            ParamRegistry[Parameter Registry&lt;br\/>Dynamic Linked List]\n            PersistLayer[Persistence Layer&lt;br\/>UpdateNotifyParamFile\/ReloadNotifyParam]\n        end\n        \n        subgraph \"Communication\"\n            IPCInterface[IPC Interface&lt;br\/>RBus\/DBUS Handling]\n            MsgQueueHandler[Message Queue Handler&lt;br\/>MsgPosttoQueue]\n        end\n    end\n\n    %% Interface connections\n    TR181API --> RegMgr\n    SSPFramework --> IPCInterface\n    \n    %% Core processing flow\n    RegMgr --> ParamRegistry\n    RegMgr --> PersistLayer\n    EventEngine --> NotifyDispatcher\n    NotifyDispatcher --> MaskMgr\n    NotifyDispatcher --> ParamRegistry\n    MaskMgr --> IPCInterface\n    \n    %% Data flow\n    ParamRegistry --> PersistLayer\n    EventEngine --> MsgQueueHandler\n    \n    %% External interfaces\n    IPCInterface -.->|Protocol Agents| TR181API\n    MsgQueueHandler -.->|RDK-B Components| EventEngine\n\n    classDef interface fill:#e3f2fd,stroke:#1976d2,stroke-width:2px;\n    classDef core fill:#e8f5e8,stroke:#2e7d32,stroke-width:2px;\n    classDef data fill:#fff3e0,stroke:#ef6c00,stroke-width:2px;\n    classDef comm fill:#fce4ec,stroke:#c2185b,stroke-width:2px;\n\n    class TR181API,SSPFramework interface;\n    class RegMgr,EventEngine,NotifyDispatcher,MaskMgr core;\n    class ParamRegistry,PersistLayer data;\n    class IPCInterface,MsgQueueHandler comm;<\/pre><\/div>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"prerequisites-and-dependencies\"><a href=\"https:\/\/wiki.rdkcentral.com\/spaces\/RDK\/pages\/83560821\/Notify+Component#prerequisites-and-dependencies\">Prerequisites and Dependencies<\/a><\/h3>\n\n\n\n<p><strong>Build-Time Flags and Configuration:<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td><strong>Configure Option<\/strong><\/td><td><strong>DISTRO Feature<\/strong><\/td><td><strong>Build Flag<\/strong><\/td><td><strong>Purpose<\/strong><\/td><td><strong>Default<\/strong><\/td><\/tr><tr><td><code>--enable-unitTestDockerSupport<\/code><\/td><td>N\/A<\/td><td><code>UNIT_TEST_DOCKER_SUPPORT<\/code><\/td><td>Enable Docker support for unit testing with specialized test harness<\/td><td>Disabled<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p><strong>RDK-B Platform and Integration Requirements:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>RDK-B Components<\/strong>:&nbsp;<code>CcspCommonLibrary<\/code>,&nbsp;<code>CcspCr<\/code>,&nbsp;<code>utopia<\/code>,&nbsp;<code>rdk-logger<\/code><\/li>\n\n\n\n<li><strong>HAL Dependencies<\/strong>: No direct HAL dependencies &#8211; operates at middleware layer only<\/li>\n\n\n\n<li><strong>Systemd Services<\/strong>:&nbsp;<code><strong>CcspCrSsp<\/strong>.service<\/code>&nbsp;must be active before&nbsp;<code><strong>NotifyComponent<\/strong>.service<\/code>&nbsp;starts<\/li>\n\n\n\n<li><strong>Message Bus<\/strong>: RBus registration under component-specific namespace for IPC communication<\/li>\n\n\n\n<li><strong>TR-181 Data Model<\/strong>:&nbsp;<code><strong>Device<\/strong>.NotifyComponent.*<\/code>&nbsp;namespace for configuration parameters<\/li>\n\n\n\n<li><strong>Configuration Files<\/strong>:<code><strong>NotifyComponent<\/strong>.xml<\/code>&nbsp;for TR-181 parameter definitions with dm_pack_code_gen.py code generation,&nbsp;<code><strong>msg_daemon<\/strong>.cfg<\/code>&nbsp;for message bus configuration,&nbsp;<code>\/tmp\/.NotifyParamListCache<\/code>&nbsp;for persistent registration storage.<\/li>\n\n\n\n<li><strong>Startup Order<\/strong>: Initialize after Component Registry and message bus daemon are running<\/li>\n<\/ul>\n\n\n\n<p><strong>Threading Model:<\/strong><\/p>\n\n\n\n<p>The NotifyComponent implements a minimal multi-threaded architecture designed for efficient notification processing while maintaining thread-safe operations and minimal resource utilization.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td><strong>Thread &amp; Function<\/strong><\/td><td><strong>Purpose<\/strong><\/td><td><strong>Cycle\/Timeout<\/strong><\/td><td><strong>Synchronization<\/strong><\/td><\/tr><tr><td><strong>Main Thread<\/strong>&lt;br&gt;<code><strong>main<\/strong>()<\/code>&nbsp;\/&nbsp;<code><strong>ssp_main<\/strong>()<\/code><\/td><td>Component initialization, TR-181 parameter processing, RBus message handling<\/td><td>Event-driven message loop, RBus callbacks, SSP lifecycle management<\/td><td>RBus async callbacks, component lifecycle mutexes<\/td><\/tr><tr><td><strong>Event Handler Thread<\/strong>&lt;br&gt;<code>Event_HandlerThread()<\/code>&nbsp;\/&nbsp;<code>CreateEventHandlerThread()<\/code><\/td><td>Primary notification processing thread that monitors POSIX message queue for parameter change notifications and coordinates notification distribution to registered protocol agents<\/td><td>Continuous monitoring loop with&nbsp;<code><strong>mq_receive<\/strong>()<\/code>, processes incoming messages from&nbsp;<code>\/Notify_queue<\/code>&nbsp;and triggers notification distribution<\/td><td>POSIX message queue synchronization, AnscAllocateMemory\/AnscFreeMemory for thread-safe memory operations<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"component-state-flow\"><a href=\"https:\/\/wiki.rdkcentral.com\/spaces\/RDK\/pages\/83560821\/Notify+Component#component-state-flow\">Component State Flow<\/a><\/h3>\n\n\n\n<p><strong>Initialization to Active State<\/strong><\/p>\n\n\n\n<p>The NotifyComponent follows a structured initialization sequence that establishes all necessary IPC connections, recovers persistent state, and activates the notification processing system before becoming fully operational.<\/p>\n\n\n\n<div class=\"wp-block-merpress-mermaidjs diagram-source-mermaid\"><pre class=\"mermaid\">sequenceDiagram\n    participant System as System Startup\n    participant NotifyComp as NotifyComponent\n    participant MsgBus as Message Bus (RBus\/DBUS)\n    participant MsgQueue as POSIX Message Queue\n    participant FileSystem as File System\n    participant EventThread as Event Handler Thread\n\n    System->>NotifyComp: Initialize Component\n    Note over NotifyComp: State: Initializing&lt;br\/>Setup logging, memory pools\n    \n    NotifyComp->>MsgBus: Connect to Message Bus\n    MsgBus-->>NotifyComp: Connection Established\n    Note over NotifyComp: State: Initializing \u2192 ConnectingBus\n    \n    NotifyComp->>MsgBus: Register TR-181 Parameters\n    MsgBus-->>NotifyComp: Parameter Registration Complete\n    Note over NotifyComp: State: ConnectingBus \u2192 RegisteringParams\n    \n    NotifyComp->>MsgQueue: Create\/Open Message Queue\n    MsgQueue-->>NotifyComp: Queue Ready (\/Notify_queue)\n    Note over NotifyComp: State: RegisteringParams \u2192 InitializingQueue\n    \n    NotifyComp->>FileSystem: Load Persistent Registrations\n    FileSystem-->>NotifyComp: Registration Cache Loaded\n    Note over NotifyComp: State: InitializingQueue \u2192 LoadingCache\n    \n    NotifyComp->>EventThread: Create Event Handler Thread\n    EventThread-->>NotifyComp: Thread Started\n    Note over NotifyComp: State: LoadingCache \u2192 Active\n    \n    NotifyComp->>System: Initialization Complete (Active State)\n    \n    loop Runtime Operations\n        Note over NotifyComp: State: Active&lt;br\/>Process registrations &amp; notifications\n        EventThread->>MsgQueue: Monitor for Parameter Changes\n        NotifyComp->>MsgBus: Send Notifications to Protocol Agents\n    end\n    \n    System->>NotifyComp: Stop Request\n    Note over NotifyComp: State: Active \u2192 Shutdown\n    NotifyComp->>FileSystem: Save Registration Cache\n    NotifyComp->>EventThread: Stop Event Handler Thread\n    NotifyComp->>MsgQueue: Close Message Queue\n    NotifyComp->>MsgBus: Disconnect from Message Bus\n    NotifyComp->>System: Shutdown Complete<\/pre><\/div>\n\n\n\n<p><strong>Runtime State Changes and Context Switching<\/strong><\/p>\n\n\n\n<p>The NotifyComponent maintains operational state primarily through its dynamic parameter registry and does not implement complex state machines, focusing instead on event-driven processing with minimal state transitions.<\/p>\n\n\n\n<p><strong>State Change Triggers:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Registration Events<\/strong>: Protocol agents registering\/unregistering parameter interests trigger registry updates and persistent storage operations<\/li>\n\n\n\n<li><strong>Parameter Change Notifications<\/strong>: Incoming messages via POSIX queue trigger notification processing and distribution to registered subscribers<\/li>\n\n\n\n<li><strong>Component Recovery<\/strong>: After crashes or restarts, loading persistent cache triggers registry reconstruction without requiring re-registration<\/li>\n<\/ul>\n\n\n\n<p><strong>Context Switching Scenarios:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Protocol Agent Registration<\/strong>: Component switches from idle monitoring to active registration processing when receiving registration requests<\/li>\n\n\n\n<li><strong>Notification Processing<\/strong>: Upon receiving parameter change messages, component switches context to notification distribution mode<\/li>\n\n\n\n<li><strong>Persistence Operations<\/strong>: During registry updates, component temporarily switches to file I\/O context to maintain registration cache consistency<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"call-flow\"><a href=\"https:\/\/wiki.rdkcentral.com\/spaces\/RDK\/pages\/83560821\/Notify+Component#call-flow\">Call Flow<\/a><\/h3>\n\n\n\n<p><strong>Initialization Call Flow:<\/strong><\/p>\n\n\n\n<div class=\"wp-block-merpress-mermaidjs diagram-source-mermaid\"><pre class=\"mermaid\">sequenceDiagram\n    participant Init as Initialization Process\n    participant NotifyComp as NotifyComponent\n    participant MsgBus as Message Bus\n    participant Storage as File System\n\n    Init->>NotifyComp: Start Component\n    NotifyComp->>NotifyComp: Initialize Global Variables &amp; Memory\n    NotifyComp->>MsgBus: Connect to RBus\/DBUS\n    MsgBus-->>NotifyComp: Connection Established\n    NotifyComp->>MsgBus: Register TR-181 Parameters\n    MsgBus-->>NotifyComp: Registration Complete\n    NotifyComp->>Storage: Load Parameter Registry Cache\n    Storage-->>NotifyComp: Registry Loaded\n    NotifyComp->>NotifyComp: Create Event Handler Thread\n    NotifyComp->>Init: Initialization Complete (Active State)<\/pre><\/div>\n\n\n\n<p><strong>Parameter Registration Call Flow:<\/strong><\/p>\n\n\n\n<div class=\"wp-block-merpress-mermaidjs diagram-source-mermaid\"><pre class=\"mermaid\">sequenceDiagram\n    participant ProtocolAgent as Protocol Agent&lt;br\/>(WebPA\/TR-069\/etc.)\n    participant NotifyComp as NotifyComponent\n    participant Registry as Parameter Registry\n    participant Storage as Persistent Storage\n\n    ProtocolAgent->>NotifyComp: SetNotifi_ParamName&lt;br\/>\"AgentName,ParamName,true\"\n    Note over NotifyComp: Parse registration string&lt;br\/>Extract PA name, parameter, action\n    NotifyComp->>NotifyComp: PA_to_Mask(AgentName)\n    Note over NotifyComp: Convert agent name to notification mask\n    \n    alt Add Parameter Registration\n        NotifyComp->>Registry: AddNotifyParam(PA_Name, param_name)\n        Registry->>Registry: Search existing registrations\n        alt Parameter exists\n            Registry->>Registry: Update notification mask\n        else New parameter\n            Registry->>Registry: Create new registration entry\n        end\n        Registry-->>NotifyComp: Registration Updated\n        NotifyComp->>Storage: UpdateNotifyParamFile()\n        Storage-->>NotifyComp: Cache Updated\n    else Remove Parameter Registration  \n        NotifyComp->>Registry: DelNotifyParam(PA_Name, param_name)\n        Registry->>Registry: Remove PA from parameter mask\n        Registry-->>NotifyComp: Registration Removed\n        NotifyComp->>Storage: UpdateNotifyParamFile()\n        Storage-->>NotifyComp: Cache Updated\n    end\n    \n    NotifyComp-->>ProtocolAgent: Registration Complete<\/pre><\/div>\n\n\n\n<p><strong>Notification Processing Call Flow:<\/strong><\/p>\n\n\n\n<div class=\"wp-block-merpress-mermaidjs diagram-source-mermaid\"><pre class=\"mermaid\">sequenceDiagram\n    participant RDKBComponent as RDK-B Component\n    participant MsgQueue as Message Queue&lt;br\/>\/Notify_queue\n    participant EventHandler as Event Handler Thread\n    participant Registry as Parameter Registry\n    participant Dispatcher as Notification Dispatcher\n    participant ProtocolAgent as Protocol Agent\n\n    RDKBComponent->>MsgQueue: Post Parameter Change&lt;br\/>\"ParamName,NewValue\"\n    MsgQueue->>EventHandler: mq_receive()\n    Note over EventHandler: Parse parameter name from message\n    EventHandler->>Registry: Find_Param(param_name, message)\n    Registry->>Registry: Search registration list\n    \n    alt Parameter Found in Registry\n        Registry-->>EventHandler: Return notification mask\n        EventHandler->>Dispatcher: Notify_To_PAs(PA_Bits, message)\n        \n        loop For each registered PA\n            alt WebPA Agent registered\n                Dispatcher->>ProtocolAgent: RBus notification to WebPA\n            end\n            alt TR-069 Agent registered  \n                Dispatcher->>ProtocolAgent: RBus notification to TR-069\n            end\n            alt SNMP Agent registered\n                Dispatcher->>ProtocolAgent: RBus notification to SNMP\n            end\n            alt Wi-Fi Agent registered\n                Dispatcher->>ProtocolAgent: RBus notification to Wi-Fi\n            end\n            alt Mesh Agent registered\n                Dispatcher->>ProtocolAgent: RBus notification to Mesh\n            end\n        end\n        \n    else Parameter Not Found\n        Registry-->>EventHandler: No registrations found\n        Note over EventHandler: Log message and continue\n    end\n    \n    EventHandler->>MsgQueue: Continue monitoring queue<\/pre><\/div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"tr181-data-models\"><a href=\"https:\/\/wiki.rdkcentral.com\/spaces\/RDK\/pages\/83560821\/Notify+Component#tr181-data-models\">TR\u2011181 Data Models<\/a><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"supported-tr-181-parameters\"><a href=\"https:\/\/wiki.rdkcentral.com\/spaces\/RDK\/pages\/83560821\/Notify+Component#supported-tr-181-parameters\">Supported TR-181 Parameters<\/a><\/h3>\n\n\n\n<p>The NotifyComponent implements a minimal TR-181 interface focused specifically on managing parameter notification registrations. It follows the BBF TR-181 specification for parameter access patterns while providing custom extensions for notification management functionality.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"object-hierarchy\"><a href=\"https:\/\/wiki.rdkcentral.com\/spaces\/RDK\/pages\/83560821\/Notify+Component#object-hierarchy\">Object Hierarchy<\/a><\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">Device.\n\u2514\u2500\u2500 NotifyComponent.\n    \u251c\u2500\u2500 Notifi_ParamName (string, R\/W)\n    \u251c\u2500\u2500 SetNotifi_ParamName (string, R\/W)\n    \u251c\u2500\u2500 X_RDKCENTRAL-COM_Connected-Client (string, R)\n    \u2514\u2500\u2500 X_RDKCENTRAL-COM_PresenceNotification (string, R)\n<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"parameter-definitions\"><a href=\"https:\/\/wiki.rdkcentral.com\/spaces\/RDK\/pages\/83560821\/Notify+Component#parameter-definitions\">Parameter Definitions<\/a><\/h3>\n\n\n\n<p><strong>Core Parameters:<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td><strong>Parameter Path<\/strong><\/td><td><strong>Data Type<\/strong><\/td><td><strong>Access<\/strong><\/td><td><strong>Default Value<\/strong><\/td><td><strong>Description<\/strong><\/td><td><strong>BBF Compliance<\/strong><\/td><\/tr><tr><td><code><strong>Device<\/strong>.NotifyComponent.Notifi_ParamName<\/code><\/td><td>string<\/td><td>R\/W<\/td><td><code>\"\"<\/code><\/td><td>Read-only parameter for querying current notification registrations. Returns comma-separated list of registered parameter names for diagnostics.<\/td><td>Custom Extension<\/td><\/tr><tr><td><code><strong>Device<\/strong>.NotifyComponent.SetNotifi_ParamName<\/code><\/td><td>string<\/td><td>R\/W<\/td><td><code>\"\"<\/code><\/td><td>Primary interface for managing parameter notification registrations. Format: &#8220;AgentName,ParameterName,Action&#8221; where Action is &#8220;true&#8221; for add or &#8220;false&#8221; for remove.<\/td><td>Custom Extension<\/td><\/tr><tr><td><code><strong>Device<\/strong>.NotifyComponent.X_RDKCENTRAL-COM_Connected-Client<\/code><\/td><td>string<\/td><td>R<\/td><td><code>\"\"<\/code><\/td><td>Special notification parameter for TR-069 connected client notifications. Provides information about client connection status changes.<\/td><td>Custom Extension<\/td><\/tr><tr><td><code><strong>Device<\/strong>.NotifyComponent.X_RDKCENTRAL-COM_PresenceNotification<\/code><\/td><td>string<\/td><td>R<\/td><td><code>\"\"<\/code><\/td><td>Special notification parameter for presence detection events. Used for device presence and connectivity state notifications.<\/td><td>Custom Extension<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"internal-modules\"><a href=\"https:\/\/wiki.rdkcentral.com\/spaces\/RDK\/pages\/83560821\/Notify+Component#internal-modules\">Internal Modules<\/a><\/h2>\n\n\n\n<p>The NotifyComponent is organized into several key modules that handle different aspects of notification management, from parameter registration to message processing and notification distribution.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td><strong>Module\/Class<\/strong><\/td><td><strong>Description<\/strong><\/td><td><strong>Key Files<\/strong><\/td><\/tr><tr><td><strong>Registration Manager<\/strong><\/td><td>Handles protocol agent registration requests, maintains dynamic parameter registry using linked list, and manages persistent storage of registrations<\/td><td><code>cosa_apis_NotifyComponent.c<\/code>&nbsp;(AddNotifyParam, DelNotifyParam, NotifyParam functions)<\/td><\/tr><tr><td><strong>Event Processing Engine<\/strong><\/td><td>Implements the core event handler thread that monitors POSIX message queue for parameter change notifications and coordinates notification distribution<\/td><td><code>cosa_apis_NotifyComponent.c<\/code>&nbsp;(Event_HandlerThread, CreateEventHandlerThread)<\/td><\/tr><tr><td><strong>Notification Dispatcher<\/strong><\/td><td>Processes notification requests, applies notification masks to determine target protocol agents, and delivers notifications via RBus\/DBUS<\/td><td><code>cosa_apis_NotifyComponent.c<\/code>&nbsp;(Notify_To_PAs, Find_Param, PA_to_Mask)<\/td><\/tr><tr><td><strong>Persistence Layer<\/strong><\/td><td>Manages file-based caching of parameter registrations to survive component restarts and provides recovery mechanisms<\/td><td><code>cosa_apis_NotifyComponent.c<\/code>&nbsp;(UpdateNotifyParamFile, ReloadNotifyParam)<\/td><\/tr><tr><td><strong>IPC Interface<\/strong><\/td><td>Handles communication with protocol agents through TR-181 parameter interface and manages message queue operations<\/td><td><code>cosa_apis_NotifyComponent.c<\/code>&nbsp;(NotifyComponent_SetParamStringValue, MsgPosttoQueue)<\/td><\/tr><tr><td><strong>SSP Framework<\/strong><\/td><td>Provides CCSP integration layer including component lifecycle management, message bus registration, and system service integration<\/td><td><code>ssp_main.c<\/code>,&nbsp;<code>plugin_main.c<\/code><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"component-interactions\"><a href=\"https:\/\/wiki.rdkcentral.com\/spaces\/RDK\/pages\/83560821\/Notify+Component#component-interactions\">Component Interactions<\/a><\/h2>\n\n\n\n<p>The NotifyComponent serves as a central hub for notification management across the RDK-B middleware, maintaining connections with protocol agents, other RDK-B components, and system services through multiple IPC mechanisms optimized for different communication patterns.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"interaction-matrix\"><a href=\"https:\/\/wiki.rdkcentral.com\/spaces\/RDK\/pages\/83560821\/Notify+Component#interaction-matrix\">Interaction Matrix<\/a><\/h3>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td><strong>Target Component\/Layer<\/strong><\/td><td><strong>Interaction Purpose<\/strong><\/td><td><strong>Key APIs\/Endpoints<\/strong><\/td><\/tr><tr><td><strong>Protocol Agents<\/strong><\/td><td><\/td><td><\/td><\/tr><tr><td>TR-069 Protocol Agent<\/td><td>Parameter change notifications for ACS synchronization<\/td><td><code><strong>Device<\/strong>.TR069Notify.X_RDKCENTRAL-COM_Connected-Client<\/code>,&nbsp;<code><strong>Device<\/strong>.TR069Notify.X_RDKCENTRAL-COM_TR069_Notification<\/code><\/td><\/tr><tr><td>WebPA Agent<\/td><td>Real-time parameter notifications for cloud management<\/td><td><code><strong>eRT<\/strong>.com.cisco.spvtg.ccsp.webpaagent<\/code>&nbsp;RBus interface<\/td><\/tr><tr><td>SNMP Protocol Agent<\/td><td>SNMP trap generation for parameter changes<\/td><td><code>SNMP<\/code>&nbsp;mask notifications via RBus<\/td><\/tr><tr><td>Wi-Fi Agent<\/td><td>Wi-Fi specific parameter change notifications<\/td><td><code><strong>eRT<\/strong>.com.cisco.spvtg.ccsp.wifi<\/code>&nbsp;RBus interface<\/td><\/tr><tr><td>Mesh Agent<\/td><td>Mesh network topology and status notifications<\/td><td><code><strong>eRT<\/strong>.com.cisco.spvtg.ccsp.meshagent<\/code>&nbsp;RBus interface<\/td><\/tr><tr><td>DMCLI Agent<\/td><td>Command-line interface parameter notifications<\/td><td><code><strong>ccsp<\/strong>.busclient<\/code>&nbsp;RBus interface<\/td><\/tr><tr><td><strong>RDK-B Middleware Components<\/strong><\/td><td><\/td><td><\/td><\/tr><tr><td>P&amp;M Agent<\/td><td>Device management parameter changes, system status updates<\/td><td>POSIX message queue&nbsp;<code>\/Notify_queue<\/code><\/td><\/tr><tr><td>Component Registry<\/td><td>Component discovery and lifecycle management<\/td><td>RBus component registration and discovery<\/td><\/tr><tr><td>Wi-Fi Manager<\/td><td>Wi-Fi configuration and status parameter changes<\/td><td>POSIX message queue&nbsp;<code>\/Notify_queue<\/code><\/td><\/tr><tr><td>WAN Manager<\/td><td>WAN connectivity and configuration notifications<\/td><td>POSIX message queue&nbsp;<code>\/Notify_queue<\/code><\/td><\/tr><tr><td><strong>System &amp; Storage<\/strong><\/td><td><\/td><td><\/td><\/tr><tr><td>POSIX Message Queue<\/td><td>Asynchronous parameter change notification delivery<\/td><td><code><strong>mq_open<\/strong>()<\/code>,&nbsp;<code><strong>mq_send<\/strong>()<\/code>,&nbsp;<code><strong>mq_receive<\/strong>()<\/code>&nbsp;for&nbsp;<code>\/Notify_queue<\/code><\/td><\/tr><tr><td>File System<\/td><td>Persistent registration storage and crash recovery<\/td><td><code><strong>fopen<\/strong>()<\/code>,&nbsp;<code><strong>fwrite<\/strong>()<\/code>,&nbsp;<code><strong>fread<\/strong>()<\/code>&nbsp;for&nbsp;<code>\/tmp\/.NotifyParamListCache<\/code><\/td><\/tr><tr><td>RBus Daemon<\/td><td>Inter-process communication and service discovery<\/td><td>RBus registration, method calls, and event publishing<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p><strong>Events Published by NotifyComponent:<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td><strong>Event Name<\/strong><\/td><td><strong>Event Topic\/Path<\/strong><\/td><td><strong>Trigger Condition<\/strong><\/td><td><strong>Subscriber Components<\/strong><\/td><\/tr><tr><td>Parameter Change Notification<\/td><td>Protocol-specific RBus methods<\/td><td>Parameter value changes received via message queue<\/td><td>All registered protocol agents based on notification masks<\/td><\/tr><tr><td>TR-069 Connected Client<\/td><td><code><strong>Device<\/strong>.TR069Notify.X_RDKCENTRAL-COM_Connected-Client<\/code><\/td><td>Client connection status changes<\/td><td>TR-069 Protocol Agent<\/td><\/tr><tr><td>TR-069 Notification<\/td><td><code><strong>Device<\/strong>.TR069Notify.X_RDKCENTRAL-COM_TR069_Notification<\/code><\/td><td>TR-069 specific parameter changes<\/td><td>TR-069 Protocol Agent<\/td><\/tr><tr><td>Presence Notification<\/td><td><code><strong>Device<\/strong>.NotifyComponent.X_RDKCENTRAL-COM_PresenceNotification<\/code><\/td><td>Device presence detection events<\/td><td>WebPA Agent, Mesh Agent<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"ipc-flow-patterns\"><a href=\"https:\/\/wiki.rdkcentral.com\/spaces\/RDK\/pages\/83560821\/Notify+Component#ipc-flow-patterns\">IPC Flow Patterns<\/a><\/h3>\n\n\n\n<p><strong>Primary IPC Flow &#8211; Parameter Registration:<\/strong><\/p>\n\n\n\n<div class=\"wp-block-merpress-mermaidjs diagram-source-mermaid\"><pre class=\"mermaid\">sequenceDiagram\n    participant PA as Protocol Agent\n    participant RBus as RBus Daemon\n    participant NotifyComp as NotifyComponent\n    participant Registry as Parameter Registry\n    participant Storage as File System\n\n    PA->>RBus: SetParameterValues()&lt;br\/>Device.NotifyComponent.SetNotifi_ParamName&lt;br\/>\"webpaagent,Device.WiFi.Radio.1.Enable,true\"\n    RBus->>NotifyComp: RBus Method Call\n    Note over NotifyComp: Parse: PA=\"webpaagent\"&lt;br\/>Param=\"Device.WiFi.Radio.1.Enable\"&lt;br\/>Action=\"true\"\n    NotifyComp->>Registry: AddNotifyParam(webpaagent, Device.WiFi.Radio.1.Enable)\n    Registry->>Registry: Update linked list with WebPA mask\n    Registry-->>NotifyComp: Registration Complete\n    NotifyComp->>Storage: UpdateNotifyParamFile()\n    Storage-->>NotifyComp: Cache Updated\n    NotifyComp-->>RBus: SetParameterValues Response (Success)\n    RBus-->>PA: Registration Confirmed<\/pre><\/div>\n\n\n\n<p><strong>Event Notification Flow:<\/strong><\/p>\n\n\n\n<div class=\"wp-block-merpress-mermaidjs diagram-source-mermaid\"><pre class=\"mermaid\">sequenceDiagram\n    participant RDKBComp as RDK-B Component\n    participant MsgQueue as Message Queue\n    participant EventThread as Event Handler Thread\n    participant Registry as Parameter Registry\n    participant Dispatcher as Notification Dispatcher\n    participant RBus as RBus Daemon\n    participant WebPA as WebPA Agent\n    participant TR069 as TR-069 Agent\n\n    RDKBComp->>MsgQueue: mq_send(\/Notify_queue)&lt;br\/>\"Device.WiFi.Radio.1.Enable,true\"\n    Note over MsgQueue: Asynchronous delivery\n    MsgQueue->>EventThread: mq_receive()\n    EventThread->>Registry: Find_Param(\"Device.WiFi.Radio.1.Enable\")\n    Registry-->>EventThread: Found: NotifyMask=WebPA|TR069\n    EventThread->>Dispatcher: Notify_To_PAs(WebPA|TR069, message)\n    \n    par WebPA Notification\n        Dispatcher->>RBus: RBus call to webpaagent\n        RBus->>WebPA: Parameter Change Notification\n        WebPA-->>RBus: Ack\n        RBus-->>Dispatcher: Success\n    and TR-069 Notification\n        Dispatcher->>RBus: RBus call to tr069pa&lt;br\/>Device.TR069Notify.X_RDKCENTRAL-COM_TR069_Notification\n        RBus->>TR069: Parameter Change Notification\n        TR069-->>RBus: Ack  \n        RBus-->>Dispatcher: Success\n    end\n    \n    Dispatcher-->>EventThread: Notifications Sent\n    EventThread->>MsgQueue: Continue monitoring<\/pre><\/div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"implementation-details\"><a href=\"https:\/\/wiki.rdkcentral.com\/spaces\/RDK\/pages\/83560821\/Notify+Component#implementation-details\">Implementation Details<\/a><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"major-hal-apis-integration\"><a href=\"https:\/\/wiki.rdkcentral.com\/spaces\/RDK\/pages\/83560821\/Notify+Component#major-hal-apis-integration\">Major HAL APIs Integration<\/a><\/h3>\n\n\n\n<p>The NotifyComponent operates entirely within the RDK-B middleware layer and does not directly integrate with Hardware Abstraction Layer (HAL) APIs. It functions as a pure software service that manages inter-component communication without requiring hardware-specific operations.<\/p>\n\n\n\n<p><strong>No Direct HAL Integration:<\/strong><\/p>\n\n\n\n<p>The NotifyComponent&#8217;s design philosophy emphasizes middleware-level notification management without hardware dependencies, allowing it to operate consistently across different RDK-B platform implementations regardless of underlying hardware variations.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"key-implementation-logic\"><a href=\"https:\/\/wiki.rdkcentral.com\/spaces\/RDK\/pages\/83560821\/Notify+Component#key-implementation-logic\">Key Implementation Logic<\/a><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Dynamic Parameter Registry Management<\/strong>: The core state management is implemented using a dynamic linked list structure in&nbsp;<code>cosa_apis_NotifyComponent.c<\/code>, with thread-safe operations using ANSC memory management functions\n<ul class=\"wp-block-list\">\n<li>Main implementation in&nbsp;<code>AddNotifyParam()<\/code>&nbsp;and&nbsp;<code>DelNotifyParam()<\/code>&nbsp;functions for registration management<\/li>\n\n\n\n<li>Dynamic linked list traversal and modification in&nbsp;<code>Find_Param()<\/code>&nbsp;function for notification lookup<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Asynchronous Event Processing<\/strong>: The message queue-based notification system enables non-blocking parameter change processing through dedicated thread management\n<ul class=\"wp-block-list\">\n<li>POSIX message queue operations in&nbsp;<code>Event_HandlerThread()<\/code>&nbsp;with continuous monitoring loop<\/li>\n\n\n\n<li>Message parsing and parameter extraction using&nbsp;<code><strong>strtok_r<\/strong>()<\/code>&nbsp;for safe string tokenization<\/li>\n\n\n\n<li>Thread-safe message processing with proper error handling and logging<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Notification Mask System<\/strong>: Protocol agent identification and notification targeting implemented through bitmask operations for efficient subscriber management\n<ul class=\"wp-block-list\">\n<li>Protocol agent to mask conversion in&nbsp;<code>PA_to_Mask()<\/code>&nbsp;function with lookup table<\/li>\n\n\n\n<li>Notification distribution logic in&nbsp;<code>Notify_To_PAs()<\/code>&nbsp;with per-agent message delivery<\/li>\n\n\n\n<li>Support for WebPA (0x1), DMCLI (0x2), SNMP (0x4), TR-069 (0x8), Wi-Fi (0x10), and Mesh (0x20) agents<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Persistent Registration Storage<\/strong>: File-based caching system ensures registration persistence across component restarts and system failures\n<ul class=\"wp-block-list\">\n<li>Registration serialization in&nbsp;<code>UpdateNotifyParamFile()<\/code>&nbsp;with atomic file operations<\/li>\n\n\n\n<li>Recovery mechanism in&nbsp;<code>ReloadNotifyParam()<\/code>&nbsp;for startup registration reconstruction<\/li>\n\n\n\n<li>Crash-resilient design with immediate cache updates on registration changes<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Error Handling Strategy<\/strong>: Comprehensive error detection and recovery mechanisms for robust operation in production environments\n<ul class=\"wp-block-list\">\n<li>POSIX message queue error handling with automatic retry and graceful degradation<\/li>\n\n\n\n<li>File I\/O error management with fallback to in-memory operation<\/li>\n\n\n\n<li>RBus communication error handling with logging and continuation of service<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Logging &amp; Debugging<\/strong>: Multi-level logging system with component-specific trace categories for operational visibility\n<ul class=\"wp-block-list\">\n<li>Parameter registration and notification activity logging with&nbsp;<code>CcspNotifyCompTraceInfo()<\/code><\/li>\n\n\n\n<li>Error condition logging with detailed context information<\/li>\n\n\n\n<li>Debug support for registration state inspection and message flow tracing<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"key-configuration-files\"><a href=\"https:\/\/wiki.rdkcentral.com\/spaces\/RDK\/pages\/83560821\/Notify+Component#key-configuration-files\">Key Configuration Files<\/a><\/h3>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td><strong>Configuration File<\/strong><\/td><td><strong>Purpose<\/strong><\/td><td><strong>Override Mechanisms<\/strong><\/td><\/tr><tr><td><code><strong>NotifyComponent<\/strong>.xml<\/code><\/td><td>TR-181 parameter definitions and COSA API function mappings for component interface<\/td><td>Environment variable overrides for file location<\/td><\/tr><tr><td><code><strong>msg_daemon<\/strong>.cfg<\/code><\/td><td>Message bus daemon configuration for RBus\/DBUS connectivity<\/td><td>Command-line parameters during component startup<\/td><\/tr><tr><td><code>\/tmp\/.NotifyParamListCache<\/code><\/td><td>Runtime persistent storage for parameter registrations to survive restarts<\/td><td>Automatic regeneration if file is corrupted or missing<\/td><\/tr><tr><td><code><strong>configure<\/strong>.ac<\/code><\/td><td>Build-time configuration for autotools integration and dependency management<\/td><td>Configure script parameters and cross-compilation settings<\/td><\/tr><\/tbody><\/table><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>The NotifyComponent is a centralized notification service in the RDK-B middleware that manages parameter change [&hellip;]<\/p>\n","protected":false},"author":28,"featured_media":0,"parent":9575,"menu_order":22,"comment_status":"open","ping_status":"closed","template":"","meta":{"_bbp_topic_count":0,"_bbp_reply_count":0,"_bbp_total_topic_count":0,"_bbp_total_reply_count":0,"_bbp_voice_count":0,"_bbp_anonymous_reply_count":0,"_bbp_topic_count_hidden":0,"_bbp_reply_count_hidden":0,"_bbp_forum_subforum_count":0,"footnotes":""},"class_list":["post-9705","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v24.9 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Notify Component - RDK Documentation Portal | Documentation<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_broadband_documentation\/components\/notify_component\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Notify Component - RDK Documentation Portal | Documentation\" \/>\n<meta property=\"og:description\" content=\"The NotifyComponent is a centralized notification service in the RDK-B middleware that manages parameter change [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_broadband_documentation\/components\/notify_component\/\" \/>\n<meta property=\"og:site_name\" content=\"RDK Documentation Portal | Documentation\" \/>\n<meta property=\"article:modified_time\" content=\"2026-03-04T11:51:39+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"8 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_broadband_documentation\/components\/notify_component\/\",\"url\":\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_broadband_documentation\/components\/notify_component\/\",\"name\":\"Notify Component - RDK Documentation Portal | Documentation\",\"isPartOf\":{\"@id\":\"https:\/\/developer.rdkcentral.com\/documentation\/#website\"},\"datePublished\":\"2022-06-21T13:53:03+00:00\",\"dateModified\":\"2026-03-04T11:51:39+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_broadband_documentation\/components\/notify_component\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_broadband_documentation\/components\/notify_component\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_broadband_documentation\/components\/notify_component\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/developer.rdkcentral.com\/documentation\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Documentation\",\"item\":\"https:\/\/developer.rdkcentral.com\/documentation\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"RDK Broadband\",\"item\":\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_broadband_documentation\/\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"Components\",\"item\":\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_broadband_documentation\/components\/\"},{\"@type\":\"ListItem\",\"position\":5,\"name\":\"Notify Component\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/developer.rdkcentral.com\/documentation\/#website\",\"url\":\"https:\/\/developer.rdkcentral.com\/documentation\/\",\"name\":\"RDK Documentation Portal | Documentation\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/developer.rdkcentral.com\/documentation\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Notify Component - RDK Documentation Portal | Documentation","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_broadband_documentation\/components\/notify_component\/","og_locale":"en_US","og_type":"article","og_title":"Notify Component - RDK Documentation Portal | Documentation","og_description":"The NotifyComponent is a centralized notification service in the RDK-B middleware that manages parameter change [&hellip;]","og_url":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_broadband_documentation\/components\/notify_component\/","og_site_name":"RDK Documentation Portal | Documentation","article_modified_time":"2026-03-04T11:51:39+00:00","twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"8 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_broadband_documentation\/components\/notify_component\/","url":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_broadband_documentation\/components\/notify_component\/","name":"Notify Component - RDK Documentation Portal | Documentation","isPartOf":{"@id":"https:\/\/developer.rdkcentral.com\/documentation\/#website"},"datePublished":"2022-06-21T13:53:03+00:00","dateModified":"2026-03-04T11:51:39+00:00","breadcrumb":{"@id":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_broadband_documentation\/components\/notify_component\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_broadband_documentation\/components\/notify_component\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_broadband_documentation\/components\/notify_component\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/developer.rdkcentral.com\/documentation\/"},{"@type":"ListItem","position":2,"name":"Documentation","item":"https:\/\/developer.rdkcentral.com\/documentation\/"},{"@type":"ListItem","position":3,"name":"RDK Broadband","item":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_broadband_documentation\/"},{"@type":"ListItem","position":4,"name":"Components","item":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_broadband_documentation\/components\/"},{"@type":"ListItem","position":5,"name":"Notify Component"}]},{"@type":"WebSite","@id":"https:\/\/developer.rdkcentral.com\/documentation\/#website","url":"https:\/\/developer.rdkcentral.com\/documentation\/","name":"RDK Documentation Portal | Documentation","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/developer.rdkcentral.com\/documentation\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"}]}},"_links":{"self":[{"href":"https:\/\/developer.rdkcentral.com\/documentation\/wp-json\/wp\/v2\/pages\/9705","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/developer.rdkcentral.com\/documentation\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/developer.rdkcentral.com\/documentation\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/developer.rdkcentral.com\/documentation\/wp-json\/wp\/v2\/users\/28"}],"replies":[{"embeddable":true,"href":"https:\/\/developer.rdkcentral.com\/documentation\/wp-json\/wp\/v2\/comments?post=9705"}],"version-history":[{"count":17,"href":"https:\/\/developer.rdkcentral.com\/documentation\/wp-json\/wp\/v2\/pages\/9705\/revisions"}],"predecessor-version":[{"id":12766,"href":"https:\/\/developer.rdkcentral.com\/documentation\/wp-json\/wp\/v2\/pages\/9705\/revisions\/12766"}],"up":[{"embeddable":true,"href":"https:\/\/developer.rdkcentral.com\/documentation\/wp-json\/wp\/v2\/pages\/9575"}],"wp:attachment":[{"href":"https:\/\/developer.rdkcentral.com\/documentation\/wp-json\/wp\/v2\/media?parent=9705"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}