diff --git a/CHANGELOG.md b/CHANGELOG.md index fe546edd..459b82e0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,6 +14,15 @@ All notable changes to this RDK Service will be documented in this file. * Changes in CHANGELOG should be updated when commits are added to the main or release branches. There should be one CHANGELOG entry per JIRA Ticket. This is not enforced on sprint branches since there could be multiple changes for the same JIRA ticket during development. +## [4.0.0] - 2026-09-03 +### Added +- Implemented a new `onRouteChange` event notify availability of IP Route either from WiFi or Ethernet +- Integrated new InternetConnectivityManager external component to identify the internet availability without having 204 endpoint +- Publishing onInternetStatusChange event upon wake-up +- Added mutex protection before accessing lastConnectedSSID +- Changed the onWiFiStateChange event to include SSID name +- Updated documentation for events and method descriptions. + ## [3.7.0] - 2026-08-21 ### Changed - Implemented a caching logic about the status of the interface & update based on events diff --git a/CMakeLists.txt b/CMakeLists.txt index cb836160..636dd3ea 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -36,8 +36,8 @@ if (NOT WPEFramework_FOUND AND NOT Thunder_FOUND) endif() list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/cmake") -set(VERSION_MAJOR 3) -set(VERSION_MINOR 7) +set(VERSION_MAJOR 4) +set(VERSION_MINOR 0) set(VERSION_PATCH 0) add_compile_definitions(NETWORKMANAGER_MAJOR_VERSION=${VERSION_MAJOR}) diff --git a/definition/NetworkManager.json b/definition/NetworkManager.json index 15c9ab53..a4535b5d 100644 --- a/definition/NetworkManager.json +++ b/definition/NetworkManager.json @@ -8,7 +8,7 @@ "status": "production", "description": "A Unified `NetworkManager` plugin that allows you to manage Ethernet and Wifi interfaces on the device.", "sourcelocation": "https://github.com/rdkcentral/networkmanager/blob/main/definition/NetworkManager.json", - "version": "3.7.0" + "version": "4.0.0" }, "definitions": { "success": { @@ -29,7 +29,7 @@ "autoconfig": { "summary": "`true` if DHCP is used, `false` if IP is configured manually", "type": "boolean", - "example": true + "example": false }, "dhcpserver": { "summary": "The DHCP Server address", @@ -409,9 +409,9 @@ } }, "SetIPSettings":{ - "summary": "Sets the IP settings for the given interface.", + "summary": "Sets the IP settings for the given interface. The `interface`, `ipversion`, and `autoconfig` parameters are mandatory. When `autoconfig` is `false`, the `ipaddress`, `prefix`, `gateway`, `primarydns`, and `secondarydns` parameters must also be provided.", "events":{ - "onAddressChange" : "Triggered when the device connects to router.", + "onIPAddressChange" : "Triggered when the device connects to router.", "onInternetStatusChange" : "Triggered when each IP address is lost or acquired." }, "params": { @@ -445,12 +445,7 @@ "required": [ "interface", "ipversion", - "autoconfig", - "ipaddress", - "prefix", - "gateway", - "primarydns", - "secondarydns" + "autoconfig" ] }, "result": { @@ -974,7 +969,7 @@ "summary": "Remove given SSID from saved SSIDs. This method just removes an entry from the list and of the list is having only one entry thats being removed, it will initiate a disconnect.", "events":{ "onWiFiStateChange" : "Triggered when Wifi state changes to DISCONNECTED", - "onAddressChange" : "Triggered when an IP Address is assigned or lost", + "onIPAddressChange" : "Triggered when an IP Address is assigned or lost", "onInternetStatusChange" : "Triggered when internet connection state changed" }, "params": { @@ -1004,7 +999,7 @@ "summary": "Connects to a saved SSID. The `ssid` parameter is mandatory. Returns failure if `ssid` is not specified or not found in the saved SSIDs list.", "events":{ "onWiFiStateChange" : "Triggered when Wifi state changes to CONNECTING, CONNECTED .", - "onAddressChange" : "Triggered when an IP Address is assigned or lost", + "onIPAddressChange" : "Triggered when an IP Address is assigned or lost", "onInternetStatusChange" : "Triggered when internet connection state changed" }, "params": { @@ -1031,7 +1026,7 @@ } }, "WiFiConnect":{ - "summary": "Initiates request to connect to the specified SSID with the given passphrase. Passphrase can be `null` when the network security is `NONE`. The security mode is decided based on the highest security mode provided by the SSID. Also when called with no arguments, this method attempts to connect to the saved SSID and password. See `AddToKnownSSIDs`.", + "summary": "Initiates request to connect to the specified SSID with the given passphrase. Passphrase can be `null` when the network security is `NONE`. The security mode is decided based on the highest security mode provided by the SSID. Also when called with no arguments, this method attempts to connect to the last connected SSID. See `AddToKnownSSIDs`.", "events":{ "onWiFiStateChange" : "Triggered when Wifi state changes to CONNECTING, CONNECTED ." }, @@ -1127,7 +1122,7 @@ "summary": "Disconnects from the currently connected SSID. A event will be posted upon completion", "events":{ "onWIFIStateChange" : "Triggered when Wifi state changes to DISCONNECTED (only if currently connected).", - "onAddressChange" : "Triggered when an IP Address is assigned or lost", + "onIPAddressChange" : "Triggered when an IP Address is assigned or lost", "onInternetStatusChange" : "Triggered when internet connection state changed" }, "result": { @@ -1192,7 +1187,7 @@ "summary": "Initiates a connection using Wifi Protected Setup (WPS). An existing connection will be disconnected before attempting to initiate a new connection. Failure in WPS pairing will trigger an error event.\n\nIf the `method` parameter is set to `SERIALIZED_PIN`, then RDK retrieves the serialized pin using the Manufacturer (MFR) API. If the `method` parameter is set to `PIN`, then RDK use the pin supplied as part of the request. If the `method` parameter is set to `PBC`, then RDK uses Push Button Configuration (PBC) to obtain the pin.", "events":{ "onWIFIStateChange" : "Triggered when Wifi state changes to DISCONNECTED (only if currently connected), CONNECTING, CONNECTED.", - "onAddressChange" : "Triggered when an IP Address is assigned or lost", + "onIPAddressChange" : "Triggered when an IP Address is assigned or lost", "onInternetStatusChange" : "Triggered when internet connection state changed" }, "params": { @@ -1411,7 +1406,7 @@ ] } }, - "onAddressChange":{ + "onIPAddressChange":{ "summary": "Triggered when an IP Address is assigned or lost.", "params": { "type": "object", diff --git a/docs/NetworkManagerPlugin.md b/docs/NetworkManagerPlugin.md index 94efba09..aa7b7829 100644 --- a/docs/NetworkManagerPlugin.md +++ b/docs/NetworkManagerPlugin.md @@ -2,7 +2,7 @@ # NetworkManager Plugin -**Version: 3.7.0** +**Version: 4.0.0** **Status: :black_circle::black_circle::black_circle:** @@ -23,7 +23,7 @@ org.rdk.NetworkManager interface for Thunder framework. ## Scope -This document describes purpose and functionality of the org.rdk.NetworkManager interface (version 3.7.0). It includes detailed specification about its methods provided and notifications sent. +This document describes purpose and functionality of the org.rdk.NetworkManager interface (version 4.0.0). It includes detailed specification about its methods provided and notifications sent. ## Case Sensitivity @@ -464,7 +464,7 @@ Gets the IP setting for the given interface. ## *SetIPSettings [method](#head.Methods)* -Sets the IP settings for the given interface. +Sets the IP settings for the given interface. The `interface`, `ipversion`, and `autoconfig` parameters are mandatory. When `autoconfig` is `false`, the `ipaddress`, `prefix`, `gateway`, `primarydns`, and `secondarydns` parameters must also be provided. Also see: [onAddressChange](#event.onAddressChange), [onInternetStatusChange](#event.onInternetStatusChange) @@ -476,11 +476,11 @@ Also see: [onAddressChange](#event.onAddressChange), [onInternetStatusChange](#e | params.interface | string | An interface, such as `eth0` or `wlan0`, depending upon availability of the given interface | | params.ipversion | string | Either IPv4 or IPv6 | | params.autoconfig | boolean | `true` if DHCP is used, `false` if IP is configured manually | -| params.ipaddress | string | The IP address | -| params.prefix | integer | The prefix number | -| params.gateway | string | The gateway address | -| params.primarydns | string | The primary DNS address | -| params.secondarydns | string | The secondary DNS address | +| params?.ipaddress | string | *(optional)* The IP address | +| params?.prefix | integer | *(optional)* The prefix number | +| params?.gateway | string | *(optional)* The gateway address | +| params?.primarydns | string | *(optional)* The primary DNS address | +| params?.secondarydns | string | *(optional)* The secondary DNS address | ### Result @@ -501,7 +501,7 @@ Also see: [onAddressChange](#event.onAddressChange), [onInternetStatusChange](#e "params": { "interface": "wlan0", "ipversion": "IPv4", - "autoconfig": true, + "autoconfig": false, "ipaddress": "192.168.1.101", "prefix": 24, "gateway": "192.168.1.1",