Skip to content

Release/xumo ota10 1 #6207

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 45 commits into
base: sprint/25Q2
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
45 commits
Select commit Hold shift + click to select a range
ad3a7de
New Plugin MigrationPreparer First Commit
bvanav648 Nov 27, 2024
5f126a6
RDK-53843: Added getBoottypeInfo method
fzahir786 Nov 29, 2024
3bad965
test fix for sharp FP issue
apatel859 Nov 22, 2024
4f14ca0
RDKTV-34282: Updated the CHANGELOG.md and API version
yuvaramachandran-gurusamy Nov 29, 2024
da40cf3
Merge pull request #5898 from yuvaramachandran-gurusamy/release/xumo_…
apatel859 Nov 29, 2024
7f708cd
Merge branch 'release/xumo_4' into release/xumo_4
fzahir786 Dec 2, 2024
6415324
Merge pull request #5874 from npoltorapavlo/DELIA-66306_main
anand-ky Nov 19, 2024
a6bd281
Merge pull request #5914 from npoltorapavlo/DELIA-66306_xumo_4
anand-ky Dec 6, 2024
541157f
Merge branch 'release/xumo_4' into release/xumo_4
fzahir786 Dec 9, 2024
4980aa6
Merge branch 'release/xumo_4' into RDK-53740-MigrationPreparer-xumo4
ralagarsamyjs Dec 9, 2024
9e48fc8
RDK-53843: Updated changelog
fzahir786 Dec 9, 2024
53e53bf
Merge pull request #5896 from fzahir786/release/xumo_4
binuinbaraj Dec 9, 2024
c770c1a
Merge branch 'release/xumo_4' into RDK-53740-MigrationPreparer-xumo4
binuinbaraj Dec 9, 2024
ca0aae1
Merge pull request #5922 from bvanav648/RDK-53740-MigrationPreparer-x…
binuinbaraj Dec 9, 2024
33951b9
RDKTV-34608: Fix for SIG-ILL crash due to missing unregister call for…
yuvaramachandran-gurusamy Dec 2, 2024
fcbfa08
RDKTV-34608: Updated the CHANGELOG.md and API version
yuvaramachandran-gurusamy Dec 4, 2024
ff978b7
Merge pull request #5938 from yuvaramachandran-gurusamy/release/xumo_…
apatel859 Dec 12, 2024
1dd4191
RDKTV-33096: Wpeframework crash with signature RDKShell::subscribeFor…
bvanav648 Oct 1, 2024
5c3942d
Modified CHANGELOG.md
bvanav648 Dec 16, 2024
81b29fa
Update API_VERSION_NUMBER_PATCH in RDKShell.cpp
bvanav648 Jan 8, 2025
5b170d0
Merge pull request #5941 from bvanav648/RDKTV-33096-xumo_4
binuinbaraj Jan 8, 2025
d9366cd
RDK-55520: Obscure "value" field from getting printed in MigrationPre…
bvanav648 Jan 20, 2025
3bf349a
RDKTV-34659, RDK-55125: Monitor Plugin Sync
bvanav648 Jan 6, 2025
a516bbb
Merge pull request #6017 from bvanav648/Monitor-Plugin-Sync-xumo4
binuinbaraj Jan 22, 2025
5ce07bf
Merge branch 'release/xumo_4' into MigrationPreparer-RDK-55520-xumo4
binuinbaraj Jan 23, 2025
0651d86
Merge pull request #6015 from bvanav648/MigrationPreparer-RDK-55520-x…
binuinbaraj Jan 23, 2025
0872b88
RDKTV-34551 : Add new DeviceInfo API for Brandname
rwarier Jan 23, 2025
efb2a3d
RDKTV-34551 : Add new DeviceInfo API for Brandname
rwarier Jan 23, 2025
9402653
Merge pull request #6022 from rwarier/release/xumo_4
binuinbaraj Jan 23, 2025
9d0b04f
RDKTV-35412 : ResidentApp is not restarted automatically when it was …
tabbas651 Feb 6, 2025
5b6be5a
Composite VideoMode update
aishwariya15 Nov 22, 2024
d5fc4ef
Update AVInput.cpp
kprasad96 Nov 26, 2024
ba34977
Update CHANGELOG.md
aishwariya15 Dec 2, 2024
1d42a3b
Update CompositeInput.cpp
aishwariya15 Dec 2, 2024
7a941fa
Update CHANGELOG.md
aishwariya15 Dec 2, 2024
5a48278
Update CHANGELOG.md
aishwariya15 Dec 2, 2024
b73de32
Composite video mode update
aishwariya15 Feb 18, 2025
68478ce
RDK-43260: Remove DCM references from Maintenance Manager (#6074)
nhanasi Feb 18, 2025
6d4b8df
Merge branch 'release/xumo_4' into RDKTV-34084_xumo_4
apatel859 Feb 20, 2025
e27b740
Merge pull request #6072 from aishwariya15/RDKTV-34084_xumo_4
apatel859 Feb 20, 2025
ec9a87d
RDKTV-34462: Extending hibernate delay to 30 sec
adrianM27 Feb 27, 2025
f60d345
RDKTV-34010: Maintenance Status stuck at MAINTENANCE_STARTED (#6101)
nhanasi Feb 27, 2025
f8a00c9
RDKTV-35705:TV should return to previous Power state
apatel859 Mar 5, 2025
56908ec
Merge pull request #6152 from apatel859/release/xumo_ota10
apatel859 Mar 19, 2025
4e41142
RDKTV-35245 : handle file system corruption issue
nanimatta Apr 21, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .github/workflows/L1-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -142,6 +142,7 @@ jobs:
cd "${{github.workspace}}/ThunderInterfaces"
&&
git apply "${{github.workspace}}/rdkservices/Tests/L1Tests/patches/0001-Add-IAnalytics-interface-R2.patch"
git apply "${{github.workspace}}/rdkservices/Tests/L1Tests/patches/DeviceInfo_brand_R2_L1tests.patch"
&&
cd ..

Expand Down
76 changes: 58 additions & 18 deletions AVInput/AVInput.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@

#define API_VERSION_NUMBER_MAJOR 1
#define API_VERSION_NUMBER_MINOR 7
#define API_VERSION_NUMBER_PATCH 0
#define API_VERSION_NUMBER_PATCH 1

#define HDMI 0
#define COMPOSITE 1
Expand Down Expand Up @@ -168,6 +168,10 @@ void AVInput::InitializeIARM()
IARM_BUS_DSMGR_NAME,
IARM_BUS_DSMGR_EVENT_COMPOSITE_IN_STATUS,
dsAVStatusEventHandler));
IARM_CHECK(IARM_Bus_RegisterEventHandler(
IARM_BUS_DSMGR_NAME,
IARM_BUS_DSMGR_EVENT_COMPOSITE_IN_VIDEO_MODE_UPDATE,
dsAVVideoModeEventHandler));
IARM_CHECK(IARM_Bus_RegisterEventHandler(
IARM_BUS_DSMGR_NAME,
IARM_BUS_DSMGR_EVENT_HDMI_IN_AVI_CONTENT_TYPE,
Expand Down Expand Up @@ -204,6 +208,9 @@ void AVInput::DeinitializeIARM()
IARM_BUS_DSMGR_NAME,
IARM_BUS_DSMGR_EVENT_COMPOSITE_IN_STATUS, dsAVStatusEventHandler));
IARM_CHECK(IARM_Bus_RemoveEventHandler(
IARM_BUS_DSMGR_NAME,
IARM_BUS_DSMGR_EVENT_COMPOSITE_IN_VIDEO_MODE_UPDATE, dsAVVideoModeEventHandler));
IARM_CHECK(IARM_Bus_RemoveEventHandler(
IARM_BUS_DSMGR_NAME,
IARM_BUS_DSMGR_EVENT_HDMI_IN_AVI_CONTENT_TYPE, dsAviContentTypeEventHandler));
}
Expand Down Expand Up @@ -750,17 +757,18 @@ void AVInput::AVInputStatusChange( int port , bool isPresented, int type)
* @param[in] port HDMI In port id.
* @param[dsVideoPortResolution_t] video resolution data
*/
void AVInput::AVInputVideoModeUpdate( int port , dsVideoPortResolution_t resolution)
void AVInput::AVInputVideoModeUpdate( int port , dsVideoPortResolution_t resolution, int type)
{
LOGWARN("AVInputVideoModeUpdate [%d]", port);

JsonObject params;
params["id"] = port;
std::stringstream locator;
locator << "hdmiin://localhost/deviceid/" << port;
params["locator"] = locator.str();
if(type == HDMI){

locator << "hdmiin://localhost/deviceid/" << port;
switch(resolution.pixelResolution) {

switch(resolution.pixelResolution) {
case dsVIDEO_PIXELRES_720x480:
params["width"] = 720;
params["height"] = 480;
Expand All @@ -775,8 +783,8 @@ void AVInput::AVInputVideoModeUpdate( int port , dsVideoPortResolution_t resolut
params["width"] = 1280;
params["height"] = 720;
break;

case dsVIDEO_PIXELRES_1920x1080:
case dsVIDEO_PIXELRES_1920x1080:
params["width"] = 1920;
params["height"] = 1080;
break;
Expand All @@ -795,10 +803,31 @@ void AVInput::AVInputVideoModeUpdate( int port , dsVideoPortResolution_t resolut
params["width"] = 1920;
params["height"] = 1080;
break;
}
params["progressive"] = (!resolution.interlaced);
}
else if(type == COMPOSITE)
{
locator << "cvbsin://localhost/deviceid/" << port;
switch(resolution.pixelResolution) {
case dsVIDEO_PIXELRES_720x480:
params["width"] = 720;
params["height"] = 480;
break;
case dsVIDEO_PIXELRES_720x576:
params["width"] = 720;
params["height"] = 576;
break;
default:
params["width"] = 720;
params["height"] = 576;
break;
}

params["progressive"] = (!resolution.interlaced);
params["progressive"] = false;
}

params["locator"] = locator.str();
switch(resolution.frameRate) {
case dsVIDEO_FRAMERATE_24:
params["frameRateN"] = 24000;
Expand Down Expand Up @@ -851,16 +880,17 @@ void AVInput::AVInputVideoModeUpdate( int port , dsVideoPortResolution_t resolut

void AVInput::dsAviContentTypeEventHandler(const char *owner, IARM_EventId_t eventId, void *data, size_t len)
{
if(!AVInput::_instance)
return;
if(!AVInput::_instance)
return;

if (IARM_BUS_DSMGR_EVENT_HDMI_IN_AVI_CONTENT_TYPE == eventId)
{
IARM_Bus_DSMgr_EventData_t *eventData = (IARM_Bus_DSMgr_EventData_t *)data;
int hdmi_in_port = eventData->data.hdmi_in_content_type.port;
int avi_content_type = eventData->data.hdmi_in_content_type.aviContentType;
LOGINFO("Received IARM_BUS_DSMGR_EVENT_HDMI_IN_AVI_CONTENT_TYPE event port: %d, Content Type : %d", hdmi_in_port,avi_content_type);
AVInput::_instance->hdmiInputAviContentTypeChange(hdmi_in_port, avi_content_type);
if (IARM_BUS_DSMGR_EVENT_HDMI_IN_AVI_CONTENT_TYPE == eventId)
{
IARM_Bus_DSMgr_EventData_t *eventData = (IARM_Bus_DSMgr_EventData_t *)data;
int hdmi_in_port = eventData->data.hdmi_in_content_type.port;
int avi_content_type = eventData->data.hdmi_in_content_type.aviContentType;
LOGINFO("Received IARM_BUS_DSMGR_EVENT_HDMI_IN_AVI_CONTENT_TYPE event port: %d, Content Type : %d", hdmi_in_port,avi_content_type);

AVInput::_instance->hdmiInputAviContentTypeChange(hdmi_in_port, avi_content_type);
}
}

Expand Down Expand Up @@ -943,7 +973,17 @@ void AVInput::dsAVVideoModeEventHandler(const char *owner, IARM_EventId_t eventI
resolution.interlaced = eventData->data.hdmi_in_video_mode.resolution.interlaced;
resolution.frameRate = eventData->data.hdmi_in_video_mode.resolution.frameRate;
LOGWARN("Received IARM_BUS_DSMGR_EVENT_HDMI_IN_VIDEO_MODE_UPDATE event port: %d, pixelResolution: %d, interlaced : %d, frameRate: %d \n", hdmi_in_port,resolution.pixelResolution, resolution.interlaced, resolution.frameRate);
AVInput::_instance->AVInputVideoModeUpdate(hdmi_in_port, resolution);
AVInput::_instance->AVInputVideoModeUpdate(hdmi_in_port, resolution,HDMI);
}
else if (IARM_BUS_DSMGR_EVENT_COMPOSITE_IN_VIDEO_MODE_UPDATE == eventId) {
IARM_Bus_DSMgr_EventData_t *eventData = (IARM_Bus_DSMgr_EventData_t *)data;
int composite_in_port = eventData->data.composite_in_video_mode.port;
dsVideoPortResolution_t resolution = {};
resolution.pixelResolution = eventData->data.composite_in_video_mode.resolution.pixelResolution;
resolution.interlaced = eventData->data.composite_in_video_mode.resolution.interlaced;
resolution.frameRate = eventData->data.composite_in_video_mode.resolution.frameRate;
LOGWARN("Received IARM_BUS_DSMGR_EVENT_COMPOSITE_IN_VIDEO_MODE_UPDATE event port: %d, pixelResolution: %d, interlaced : %d, frameRate: %d \n", composite_in_port,resolution.pixelResolution, resolution.interlaced, resolution.frameRate);
AVInput::_instance->AVInputVideoModeUpdate(composite_in_port, resolution,COMPOSITE);
}
}

Expand Down
2 changes: 1 addition & 1 deletion AVInput/AVInput.h
Original file line number Diff line number Diff line change
Expand Up @@ -107,7 +107,7 @@ class AVInput: public PluginHost::IPlugin, public PluginHost::JSONRPC
void AVInputStatusChange( int port , bool isPresented, int type);
static void dsAVStatusEventHandler(const char *owner, IARM_EventId_t eventId, void *data, size_t len);

void AVInputVideoModeUpdate( int port , dsVideoPortResolution_t resolution);
void AVInputVideoModeUpdate( int port , dsVideoPortResolution_t resolution,int type);
static void dsAVVideoModeEventHandler(const char *owner, IARM_EventId_t eventId, void *data, size_t len);

void AVInputALLMChange( int port , bool allmMode);
Expand Down
2 changes: 1 addition & 1 deletion AVInput/AVInput.json
Original file line number Diff line number Diff line change
Expand Up @@ -765,7 +765,7 @@
}
},
"videoStreamInfoUpdate": {
"summary": "Triggered whenever there is an update in HDMI Input video stream info",
"summary": "Triggered whenever there is an update in HDMI/Composite Input video stream info",
"params": {
"type": "object",
"properties": {
Expand Down
4 changes: 4 additions & 0 deletions AVInput/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,10 @@ All notable changes to this RDK Service will be documented in this file.

* For more details, refer to [versioning](https://github.com/rdkcentral/rdkservices#versioning) section under Main README.

##[1.7.1] - 2024-12-02
###Changed
- Added support for handling the videoStreamInfoUpdate for composite Input.

##[1.7.0] - 2024-09-24
###Added
- Added support for Getting the Maximum HDMI Compatibility version for the given port.
Expand Down
3 changes: 3 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -152,6 +152,9 @@ if(PLUGIN_DEVICE_PROVISIONING)
add_subdirectory(DeviceProvisioning)
endif()

if(PLUGIN_MIGRATIONPREPARER)
add_subdirectory(MigrationPreparer)
endif()

# if(BLUETOOTH_SETTINGS)
# add_subdirectory(BluetoothSettings)
Expand Down
6 changes: 6 additions & 0 deletions CloudStore/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,12 @@ All notable changes to this RDK Service will be documented in this file.

* For more details, refer to [versioning](https://github.com/rdkcentral/rdkservices#versioning) section under Main README.

## [1.0.2] - 2024-11-19
### Fixed
- Set up idle timer
- Log grpc endpoint on startup
- Get security token on startup only

## [1.0.1] - 2024-09-17
### Fixed
- Decouple notification, add timeouts
Expand Down
22 changes: 21 additions & 1 deletion CloudStore/CloudStore.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@

#define API_VERSION_NUMBER_MAJOR 1
#define API_VERSION_NUMBER_MINOR 0
#define API_VERSION_NUMBER_PATCH 1
#define API_VERSION_NUMBER_PATCH 2

namespace WPEFramework {

Expand Down Expand Up @@ -78,6 +78,26 @@ namespace Plugin {

Core::SystemInfo::SetEnvironment(URI_ENV, uri);

SYSLOG(Logging::Startup, (_T("grpc endpoint is %s"), uri.c_str()));

string token;
auto security = _service->QueryInterfaceByCallsign<
PluginHost::IAuthenticate>("SecurityAgent");
if (security != nullptr) {
string payload = "http://localhost";
auto ret = security->CreateToken(
static_cast<uint16_t>(payload.length()),
reinterpret_cast<const uint8_t*>(payload.c_str()),
token);
if (ret != Core::ERROR_NONE) {
SYSLOG(Logging::Startup,
(_T("Couldn't create token: %d"), ret));
}
security->Release();
}

Core::SystemInfo::SetEnvironment(TOKEN_ENV, token);

_service->Register(&_notification);

_store2 = _service->Root<Exchange::IStore2>(_connectionId, RPC::CommunicationTimeOut, _T("CloudStoreImplementation"));
Expand Down
4 changes: 2 additions & 2 deletions CloudStore/Module.h
Original file line number Diff line number Diff line change
Expand Up @@ -30,16 +30,16 @@
#endif

#define URI_ENV "CLOUDSTORE_URI"
#define TOKEN_ENV "CLOUDSTORE_TOKEN"
#define IARM_INIT_NAME "Thunder_Plugins"
#define URI_RFC "Device.DeviceInfo.X_RDKCENTRAL-COM_RFC.CloudStore.Uri"
#define PARTNER_ID_FILENAME "/opt/www/authService/partnerId3.dat"
#define ACCOUNT_ID_FILENAME "/opt/www/authService/said.dat"
#define DEVICE_ID_FILENAME "/opt/www/authService/xdeviceid.dat"
#define SECURITY_AGENT_FILENAME "/tmp/SecurityAgent/token"
#define IARM_TIMEOUT 1000
#define COM_RPC_TIMEOUT 1000
#define JSON_RPC_TIMEOUT 2000
#define GRPC_TIMEOUT 3000
#define IDLE_TIMEOUT 30000

#undef EXTERNAL
#define EXTERNAL
45 changes: 8 additions & 37 deletions CloudStore/grpc/Store2.h
Original file line number Diff line number Diff line change
Expand Up @@ -69,12 +69,13 @@ namespace Plugin {

public:
Store2()
: Store2(getenv(URI_ENV))
: Store2(getenv(URI_ENV), getenv(TOKEN_ENV))
{
}
Store2(const string& uri)
Store2(const string& uri, const string& token)
: IStore2()
, _uri(uri)
, _token(token)
, _authorization((_uri.find("localhost") == string::npos) && (_uri.find("0.0.0.0") == string::npos))
{
Open();
Expand All @@ -84,14 +85,16 @@ namespace Plugin {
private:
void Open()
{
grpc::ChannelArguments args;
args.SetInt(GRPC_ARG_CLIENT_IDLE_TIMEOUT_MS, IDLE_TIMEOUT);
std::shared_ptr<grpc::ChannelCredentials> creds;
if (_authorization) {
creds = grpc::SslCredentials(grpc::SslCredentialsOptions());
} else {
creds = grpc::InsecureChannelCredentials();
}
_stub = ::distp::gateway::secure_storage::v1::SecureStorageService::NewStub(
grpc::CreateChannel(_uri, creds));
grpc::CreateCustomChannel(_uri, creds, args));
}

private:
Expand All @@ -115,47 +118,14 @@ namespace Plugin {
#endif
return true;
}
string GetSecurityToken() const
{
// Get actual token, as it may change at any time...
string result;

const char* endpoint = ::getenv(_T("SECURITYAGENT_PATH"));
if (endpoint == nullptr) {
endpoint = SECURITY_AGENT_FILENAME;
}
auto engine = Core::ProxyType<RPC::InvokeServerType<1, 0, 4>>::Create();
auto client = Core::ProxyType<RPC::CommunicatorClient>::Create(
Core::NodeId(endpoint),
Core::ProxyType<Core::IIPCServer>(engine));

auto interface = client->Open<PluginHost::IAuthenticate>(
_T("SecurityAgent"),
static_cast<uint32_t>(~0),
COM_RPC_TIMEOUT); // Timeout
if (interface != nullptr) {
string payload = _T("http://localhost");
// If main process is out of threads, this can time out, and IPC will mess up...
auto error = interface->CreateToken(
static_cast<uint16_t>(payload.length()),
reinterpret_cast<const uint8_t*>(payload.c_str()),
result);
if (error != Core::ERROR_NONE) {
TRACE(Trace::Error, (_T("security token error %d"), error));
}
interface->Release();
}

return result;
}
string GetToken() const
{
// Get actual token, as it may change at any time...
string result;

Core::SystemInfo::SetEnvironment(_T("THUNDER_ACCESS"), (_T("127.0.0.1:9998")));
auto link = Core::ProxyType<JSONRPC::LinkType<Core::JSON::IElement>>::Create(
_T("org.rdk.AuthService"), _T(""), false, "token=" + GetSecurityToken());
_T("org.rdk.AuthService"), _T(""), false, "token=" + _token);

JsonObject json;
auto status = link->Invoke<JsonObject, JsonObject>(
Expand Down Expand Up @@ -430,6 +400,7 @@ namespace Plugin {

private:
const string _uri;
const string _token;
const bool _authorization;
std::unique_ptr<::distp::gateway::secure_storage::v1::SecureStorageService::Stub> _stub;
std::list<INotification*> _clients;
Expand Down
2 changes: 1 addition & 1 deletion CloudStore/grpc/l0test/Store2Test.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ class AStore2 : public Test {
: workerPool(WPEFramework::Core::ProxyType<WorkerPoolImplementation>::Create(
WPEFramework::Core::Thread::DefaultStackSize()))
, server(kUri, &service)
, store2(WPEFramework::Core::ProxyType<Store2>::Create(kUri))
, store2(WPEFramework::Core::ProxyType<Store2>::Create(kUri, ""))
{
WPEFramework::Core::IWorkerPool::Assign(&(*workerPool));
}
Expand Down
2 changes: 1 addition & 1 deletion CloudStore/l0test/ServiceMock.h
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ class ServiceMock : public WPEFramework::PluginHost::IShell,
MOCK_METHOD(void, Register, (IShell::ICOMLink::INotification*), (override));
MOCK_METHOD(void, Unregister, (const IShell::ICOMLink::INotification*), (override));
MOCK_METHOD(WPEFramework::RPC::IRemoteConnection*, RemoteConnection, (const uint32_t), (override));
MOCK_METHOD(void*, Instantiate, (const WPEFramework::RPC::Object&, const uint32_t, uint32_t&), (override));
MOCK_METHOD(void*, Instantiate, (WPEFramework::RPC::Object&, const uint32_t, uint32_t&), (override));
MOCK_METHOD(WPEFramework::RPC::IStringIterator*, GetLibrarySearchPaths, (const string&), (const, override));
BEGIN_INTERFACE_MAP(ServiceMock)
INTERFACE_ENTRY(IShell)
Expand Down
4 changes: 4 additions & 0 deletions CompositeInput/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,10 @@ All notable changes to this RDK Service will be documented in this file.

* For more details, refer to [versioning](https://github.com/rdkcentral/rdkservices#versioning) section under Main README.

##[1.1.5] - 2024-12-02
###Added
- Added support for handling the videoStreamInfoUpdate for composite Input.

## [1.0.5] - 2023-09-12
### Added
- Implement Thunder Plugin Configuration for Kirkstone builds(CMake-3.20 & above)
Expand Down
Loading
Loading