tr69hostif 1.5.0 release changelog updates - #523
Closed
nhanasi wants to merge 4 commits into
Closed
Conversation
Tr69hostif release for Develop OTEL feature
#502) * RDKEMW-19163:Migrate to Existing Thunder Plugin for libds Methods and Event Notification using OSDD. Reason for change: Migrate to Existing Thunder Plugin. Test Procedure: refer RDKEMW-19163 Risks: Medium Signed-off-by:gsanto722 <grandhi_santoshkumar@comcast.com> * archive the changes * Update Makefile.am * update missing migaration code * fix build error * fix issue and formats * Fix all issue * fix build issue * fix format issue * fix displayinfo callsign * added compiler flag * fix build issue and cleanup * disable libds include in rdke * added loging for NOT_HANDEL API in RDK-e * fix build issue with flag * fix build issue * address review comments * add L1 and L2 test cases. remove unwanted AI files * Updated L1 and L2 test cases * fix the L1 and L2. cleanup data-model * fix L1, L2 run * fix L1 and L2 tests * fix L1 and L2 * fix build issus * fix build issue * fix build issue with libds cleanup * fix coverity issue * Potential fix for pull request finding Update document Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> * fix high copilot issue * fix code-coverage and L1, L2 issue * fix code coverage * fix HDMI coverage * add HDMI L1 test cases * fix HDMI L1 test cases error * fix HDMI faile test case * Add L1 cases to increase code and funcation coverage --------- Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Contributor
There was a problem hiding this comment.
Pull request overview
This PR introduces a Thunder (WPEFramework JSON-RPC) backed implementation path for STBService (and parts of DeviceInfo), wiring it through autotools conditionals, adding unit/functional coverage, and updating documentation/data-model/changelog to reflect the migration.
Changes:
- Add
--enable-thunderbuild option and conditionalize DS-HAL includes/libs vs Thunder-backed sources. - Implement Thunder-backed STBService component handlers (AudioOutput/SPDIF/HDMI/DisplayDevice/VideoOutput/VideoDecoder/Capabilities) plus supporting Thunder helper(s) and gtest stubs.
- Add STBService Thunder L2 functional tests, a dedicated STBService Thunder gtest target, and related docs/troubleshooting updates.
Reviewed changes
Copilot reviewed 40 out of 40 changed files in this pull request and generated 11 comments.
Show a summary per file
| File | Description |
|---|---|
| test/functional-tests/tests/tr69hostif_stbservice_thunder.py | New L2 functional coverage for Thunder-migrated STBService TR-181 parameters. |
| src/Makefile.am | Adjust link flags and gate DS-HAL libs behind Thunder conditional. |
| src/hostif/src/hostIf_utils.cpp | Add scalar-bool Thunder JSON-RPC result extractor helper. |
| src/hostif/profiles/STBService/Makefile.am | Select Thunder vs DS implementations and set USE_THUNDER_CLIENT for STBService. |
| src/hostif/profiles/STBService/gtest/thunder_plugin_stub.cpp | New Thunder invocation stubs + utility stubs to support STBService Thunder gtests. |
| src/hostif/profiles/STBService/gtest/Makefile.am | New STBService Thunder-focused gtest target build rules. |
| src/hostif/profiles/STBService/docs/thunder-migration-mapping.md | New mapping doc for DS→Thunder method/field relationships and gaps. |
| src/hostif/profiles/STBService/docs/README.md | Update STBService docs to describe mixed DS/Thunder state and migration notes. |
| src/hostif/profiles/STBService/Components_VideoOutput.h | Gate DS HAL includes/fields and add Thunder-specific state (port name). |
| src/hostif/profiles/STBService/Components_VideoOutput_Thunder.cpp | New Thunder-backed VideoOutput implementation. |
| src/hostif/profiles/STBService/Components_VideoDecoder.h | Gate DS HAL includes/fields and add Thunder-specific state (port name). |
| src/hostif/profiles/STBService/Components_VideoDecoder_Thunder.cpp | New Thunder-backed VideoDecoder implementation. |
| src/hostif/profiles/STBService/Components_SPDIF.h | Gate DS HAL includes/fields and add Thunder-specific state (port name). |
| src/hostif/profiles/STBService/Components_SPDIF_Thunder.cpp | New Thunder-backed SPDIF implementation. |
| src/hostif/profiles/STBService/Components_HDMI.h | Gate DS HAL includes/fields and add Thunder-specific state (port name). |
| src/hostif/profiles/STBService/Components_HDMI_Thunder.cpp | New Thunder-backed HDMI implementation. |
| src/hostif/profiles/STBService/Components_DisplayDevice.h | Gate DS HAL includes/fields and add Thunder-specific state (port name). |
| src/hostif/profiles/STBService/Components_DisplayDevice_Thunder.cpp | New Thunder-backed DisplayDevice implementation (incl. EDID handling). |
| src/hostif/profiles/STBService/Components_AudioOutput.h | Gate DS HAL includes/fields and add Thunder-specific state (port name). |
| src/hostif/profiles/STBService/Components_AudioOutput_Thunder.cpp | New Thunder-backed AudioOutput implementation. |
| src/hostif/profiles/STBService/Capabilities_Thunder.cpp | New Thunder-backed Capabilities implementation. |
| src/hostif/profiles/DeviceInfo/Makefile.am | Gate DS-HAL link libs behind Thunder conditional and set USE_THUNDER_CLIENT. |
| src/hostif/profiles/DeviceInfo/Device_DeviceInfo.cpp | Add Thunder paths for CPU temp and some RFC-related audio settings. |
| src/hostif/parodusClient/waldb/data-model/data-model-tv.xml | Remove/adjust TR-181 parameters related to HEVC capability subtree. |
| src/hostif/parodusClient/waldb/data-model/data-model-generic.xml | Remove/adjust STBService parameter definitions to match new behavior/coverage. |
| src/hostif/parodusClient/pal/mock-parodus/Makefile.am | Remove DS-HAL link libs from mock parodus build. |
| src/hostif/include/hostIf_utils.h | Declare new scalar-bool Thunder extraction helper. |
| src/hostif/handlers/src/hostIf_rbus_Dml_Provider.cpp | Remove unused exception includes. |
| src/hostif/handlers/src/hostIf_dsClient_ReqHandler.cpp | Skip DS Manager init/deinit in Thunder mode; add logging indicating backend. |
| src/hostif/handlers/src/hostIf_DeviceClient_ReqHandler.cpp | Remove DS-related includes. |
| src/hostif/handlers/src/gtest/Makefile.am | Force Thunder mode in handlers gtest build and switch STBService sources to Thunder. |
| src/hostif/handlers/Makefile.am | Gate DS include paths/libs behind Thunder conditional; define USE_THUNDER_CLIENT. |
| src/configure.ac | Add STBService gtest Makefile to generated outputs. |
| run_ut.sh | Add STBService Thunder gtest build/run and extend coverage extraction/removal. |
| run_l2.sh | Add execution of new STBService Thunder L2 functional test file. |
| docs/troubleshooting/common-errors.md | Add troubleshooting guidance for Thunder method-not-found and instance drift. |
| cov_build.sh | Enable Thunder option in coverage build path and adjust flags. |
| configure.ac | Add --enable-thunder option + WITH_THUNDER_CLIENT automake conditional. |
| CHANGELOG.md | Add 1.5.0 section and update 1.4.9 section details. |
Comment on lines
+92
to
+112
| int hostIf_STBServiceDisplayDevice::getStatus(HOSTIF_MsgData_t *stMsgData, bool *pChanged) | ||
| { | ||
| bool connected = false; | ||
| if (!invokeThunderPluginMethodAndExtractBoolField(THUNDER_DI_CONNECTED, "{}", "isconnected", connected)) | ||
| { | ||
| RDK_LOG(RDK_LOG_WARN, LOG_TR69HOSTIF, "[%s] DisplayInfo.1.connected failed, returning Absent\n", __FUNCTION__); | ||
| // On failure, default to Absent | ||
| connected = false; | ||
| } | ||
| const char *status = connected ? "Present" : "Absent"; | ||
| strncpy(stMsgData->paramValue, status, PARAM_LEN); | ||
| stMsgData->paramValue[PARAM_LEN - 1] = '\0'; | ||
| stMsgData->paramtype = hostIf_StringType; | ||
| stMsgData->paramLen = strlen(status); | ||
| if (bCalledDisplayDeviceStatus && pChanged && strcmp(backupDisplayDeviceStatus, stMsgData->paramValue)) | ||
| *pChanged = true; | ||
| bCalledDisplayDeviceStatus = true; | ||
| strncpy(backupDisplayDeviceStatus, stMsgData->paramValue, sizeof(backupDisplayDeviceStatus) - 1); | ||
| backupDisplayDeviceStatus[sizeof(backupDisplayDeviceStatus) - 1] = '\0'; | ||
| return OK; | ||
| } |
| } | ||
| } | ||
|
|
||
| void hostIf_STBServiceVideoOutput::getLock() { g_mutex_init(&m_mutex); g_mutex_lock(&m_mutex); } |
| } | ||
| } | ||
|
|
||
| void hostIf_STBServiceHDMI::getLock() { g_mutex_init(&m_mutex); g_mutex_lock(&m_mutex); } |
| } | ||
| } | ||
|
|
||
| void hostIf_STBServiceVideoDecoder::getLock() { g_mutex_init(&m_mutex); g_mutex_lock(&m_mutex); } |
Comment on lines
+150
to
+154
| void hostIf_STBServiceAudioInterface::getLock() | ||
| { | ||
| g_mutex_init(&hostIf_STBServiceAudioInterface::m_mutex); | ||
| g_mutex_lock(&hostIf_STBServiceAudioInterface::m_mutex); | ||
| } |
Comment on lines
+192
to
+213
| int hostIf_STBServiceVideoOutput::getStatus(HOSTIF_MsgData_t *stMsgData, bool *pChanged) | ||
| { | ||
| bool isConnected = false; | ||
|
|
||
| if (!invokeThunderPluginMethodAndExtractBoolField(THUNDER_DI_CONNECTED, "{}", "isconnected", isConnected)) | ||
| { | ||
| RDK_LOG(RDK_LOG_WARN, LOG_TR69HOSTIF, "[%s] DisplayInfo.1.connected failed, returning Disabled\n", __FUNCTION__); | ||
| // On failure, default to Disabled | ||
| isConnected = false; | ||
| } | ||
| const char *status = isConnected ? ENABLED_STRING : DISABLED_STRING; | ||
| strncpy(stMsgData->paramValue, status, PARAM_LEN); | ||
| stMsgData->paramValue[PARAM_LEN - 1] = '\0'; | ||
| stMsgData->paramtype = hostIf_StringType; | ||
| stMsgData->paramLen = strlen(status); | ||
| if (bCalledVideoOutputStatus && pChanged && strcmp(backupVideoOutputStatus, stMsgData->paramValue)) | ||
| *pChanged = true; | ||
| bCalledVideoOutputStatus = true; | ||
| strncpy(backupVideoOutputStatus, stMsgData->paramValue, sizeof(backupVideoOutputStatus) - 1); | ||
| backupVideoOutputStatus[sizeof(backupVideoOutputStatus) - 1] = '\0'; | ||
| return OK; | ||
| } |
Comment on lines
+45
to
+47
| # Force Thunder mode for production builds | ||
| CONFIGURE_THUNDER_OPT="--enable-thunder=yes" | ||
|
|
Comment on lines
+248
to
+256
| void putValue(HOSTIF_MsgData_t *stMsgData, const std::string &value) | ||
| { | ||
| if (!stMsgData) | ||
| return; | ||
| strncpy(stMsgData->paramValue, value.c_str(), TR69HOSTIFMGR_MAX_PARAM_LEN - 1); | ||
| stMsgData->paramValue[TR69HOSTIFMGR_MAX_PARAM_LEN - 1] = '\0'; | ||
| stMsgData->paramtype = hostIf_StringType; | ||
| stMsgData->paramLen = static_cast<int>(value.size()); | ||
| } |
| | `Components_AudioOutput` | `device::AudioOutputPort`, `device::Host::getAudioOutputPorts()` | `org.rdk.DisplaySettings` | `getSupportedAudioPorts`→`supportedAudioPorts`; `getEnableAudioPort`→`enable` / `setEnableAudioPort`; `getMuted`→`muted` / `setMuted`; `getVolumeLevel`→`volumeLevel` / `setVolumeLevel`; `getAudioEncoding`→`audioEncoding` / `setAudioEncoding`; `getAudioFormat`→`audioFormat`; `getSoundMode`→`soundMode` / `setSoundMode`; `getAudioCompression`→`compressionLevel` / `setAudioCompression`; `getDialogEnhancement`→`dialogEnhancementlevel` / `setDialogEnhancement` | | ||
| | `Components_SPDIF` | `device::AudioOutputPort`, SPDIF-specific port selection | `org.rdk.DisplaySettings` | `getSupportedAudioPorts`→`supportedAudioPorts` (SPDIF filter); `getEnableAudioPort`→`enable` / `setEnableAudioPort`; `getAudioEncoding`→`audioEncoding` / `setAudioEncoding` (PCM=ForcePCM, non-PCM=passthrough); `getAudioDelay`→`audioDelay` | | ||
| | `Components_HDMI` | `device::VideoOutputPort`, resolution control via DS HAL | `org.rdk.DisplaySettings` | `getSupportedVideoDisplays`→`supportedVideoDisplays` (port discovery); `getCurrentResolution`→`resolution` / `setCurrentResolution`; enable/disable: `getEnableAudioPort`-style on video port using `getVideoPortStatusInfo`→`isConnected`; `getDefaultResolution`→`defaultResolution` | | ||
| | `Components_DisplayDevice` | `device::VideoOutputPort` display capabilities | `org.rdk.DisplayInfo` | `DisplayInfo.1.displayinfo`→`connected`, `width`, `height`, `hdrtype`, `hdcpprotection`; `DisplayInfo.1.connected`→bool; `DisplayInfo.1.width` / `DisplayInfo.1.height` (pixel resolution for SupportedResolutions/PreferredResolution strings). EDID fields (`EEDID`, `X_COMCAST-COM_EDID`, `EDID_BYTES`) have no Thunder equivalent — guard with `#if 0` | |
Comment on lines
+7
to
+11
| #### [1.5.0](https://github.com/rdkcentral/tr69hostif/compare/1.4.9...1.5.0) | ||
|
|
||
| - update license year and doxygen comment [`#521`](https://github.com/rdkcentral/tr69hostif/pull/521) | ||
| - RDKEMW-19163:Migrate to Existing Thunder Plugin for libds Methods and… [`#502`](https://github.com/rdkcentral/tr69hostif/pull/502) | ||
| - Merge tag '1.4.9' into develop [`34bc947`](https://github.com/rdkcentral/tr69hostif/commit/34bc9478d193ee19f3728dc423b75561a0f83f5a) |
Code Coverage Summary |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.