Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
12eade6
Feature/rdkemw 12540 2 (#385)
hgfell683 Feb 26, 2026
3fef992
1.11.1 release changelog updates
rdkcm-rdke Feb 26, 2026
e68aa51
Merge tag '1.11.1' into develop
rdkcm-rdke Feb 26, 2026
9924e40
Merge branch 'release/1.11.1'
rdkcm-rdke Feb 26, 2026
25b7259
RDKEMW-12716: Improve L1 test coverage for HdmiCecSink plugin (#381)
melhar098 Feb 26, 2026
3b7d845
1.11.2 release changelog updates
rdkcm-rdke Feb 26, 2026
7fcf586
Merge tag '1.11.2' into develop
rdkcm-rdke Feb 26, 2026
c7b5418
Merge branch 'release/1.11.2'
rdkcm-rdke Feb 26, 2026
64894ee
RDKEMW-14703: Disable Setup Cache in inputoutput (#391)
MukeshkumarK Feb 27, 2026
05f273d
1.12.0 release changelog updates
rdkcm-rdke Feb 27, 2026
7e8d42d
Merge tag '1.12.0' into develop
rdkcm-rdke Feb 27, 2026
fd3830f
Merge branch 'release/1.12.0'
rdkcm-rdke Feb 27, 2026
534500e
RDKEMW-11929 : Fix Coverity identified issues - entservices-inputoutp…
balav08 Feb 27, 2026
2c10dfd
1.12.1 release changelog updates
rdkcm-rdke Feb 27, 2026
b803859
Merge tag '1.12.1' into develop
rdkcm-rdke Feb 27, 2026
298d314
Merge branch 'release/1.12.1'
rdkcm-rdke Feb 27, 2026
b6ed2cb
RDKEMW-12934 - README update (#392)
srikanth-vv Feb 27, 2026
2b72953
1.12.2 release changelog updates
rdkcm-rdke Feb 27, 2026
eb13616
Merge tag '1.12.2' into develop
rdkcm-rdke Feb 27, 2026
badd859
Merge branch 'release/1.12.2'
rdkcm-rdke Feb 27, 2026
e303ea9
RDKEMW-12934 - README update (#393)
srikanth-vv Feb 27, 2026
2544ae0
1.12.3 release changelog updates
rdkcm-rdke Feb 27, 2026
2690215
Merge branch 'release/1.12.3'
rdkcm-rdke Feb 27, 2026
ac758f1
Merge tag '1.12.3' into develop
rdkcm-rdke Feb 27, 2026
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
3 changes: 2 additions & 1 deletion .github/workflows/L1-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ env:
INTERFACES_REF: "develop"
AUTOMATICS_UNAME: ${{ secrets.AUTOMATICS_UNAME}}
AUTOMATICS_PASSCODE: ${{ secrets. AUTOMATICS_PASSCODE}}
ENABLE_CACHE: "false"

jobs:
L1-tests:
Expand All @@ -41,7 +42,7 @@ jobs:
# https://github.com/actions/cache
# https://docs.github.com/en/rest/actions/cache
# Modify the key if changing the list.
if: ${{ !env.ACT }}
if: ${{ !env.ACT && env.ENABLE_CACHE == 'true' }}
id: cache
uses: actions/cache@v3
with:
Expand Down
2 changes: 2 additions & 0 deletions .github/workflows/L2-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -524,6 +524,7 @@ jobs:
-DPLUGIN_AVINPUT=ON
-DPLUGIN_AVOUTPUT=OFF
-DPLUGIN_HDMICECSINK=ON
-DPLUGIN_HDMICECSOURCE=ON
-DAVOUTPUT_TV=OFF
-DUSE_THUNDER_R4=ON
-DPLUGIN_L2Tests=ON
Expand Down Expand Up @@ -600,6 +601,7 @@ jobs:
-DPLUGIN_AVINPUT=ON
-DPLUGIN_AVOUTPUT=OFF
-DPLUGIN_HDMICECSINK=ON
-DPLUGIN_HDMICECSOURCE=ON
-DAVOUTPUT_TV=OFF
-DUSE_THUNDER_R4=ON
-DPLUGIN_L2Tests=ON
Expand Down
10 changes: 5 additions & 5 deletions AVInput/AVInputImplementation.cpp
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
/**

Check failure on line 1 in AVInput/AVInputImplementation.cpp

View workflow job for this annotation

GitHub Actions / call-fossid-workflow / Fossid Annotate PR

FossID License Issue Detected

Source code with 'Apache-2.0' license found in local file 'AVInput/AVInputImplementation.cpp' (Match: rdkcentral/rdkservices/6.1.7, 1248 lines, url: https://github.com/rdkcentral/rdkservices/archive/refs/tags/AML_BSP_REL_VERSION_RDK6.1.7.tar.gz, file: AVInput/AVInput.cpp)
* If not stated otherwise in this file or this component's LICENSE
* file the following copyright and licenses apply:
*
Expand Down Expand Up @@ -42,7 +42,7 @@
SERVICE_REGISTRATION(AVInputImplementation, 1, 0);
AVInputImplementation* AVInputImplementation::_instance = nullptr;

AVInputImplementation::AVInputImplementation() : _adminLock(), _registeredDsEventHandlers(false)
AVInputImplementation::AVInputImplementation() : _adminLock(), _service(nullptr), _registeredDsEventHandlers(false)
{
LOGINFO("Create AVInputImplementation Instance");

Expand Down Expand Up @@ -517,7 +517,7 @@
}
inputDevice.locator = locator.str();
LOGINFO("getInputDevices id %d, locator=[%s], connected=[%d]", i, inputDevice.locator.c_str(), inputDevice.connected);
inputDeviceList.push_back(inputDevice);
inputDeviceList.push_back(std::move(inputDevice));
}
}
} catch (const std::exception& e) {
Expand Down Expand Up @@ -597,7 +597,7 @@
try {
vector<uint8_t> edidVec2;
device::HdmiInput::getInstance().getEDIDBytesInfo(id, edidVec2);
edidVec = edidVec2; // edidVec must be "unknown" unless we successfully get to this line
edidVec = std::move(edidVec2); // edidVec must be "unknown" unless we successfully get to this line

// convert to base64
uint16_t size = min(edidVec.size(), (size_t)numeric_limits<uint16_t>::max());
Expand Down Expand Up @@ -1172,7 +1172,7 @@
LOGWARN("AVInputImplementation::getSPDInfo");
vector<uint8_t> spdVect2;
device::HdmiInput::getInstance().getHDMISPDInfo(id, spdVect2);
spdVect = spdVect2; // spdVect must be "unknown" unless we successfully get to this line
spdVect = std::move(spdVect2); // spdVect must be "unknown" unless we successfully get to this line

// convert to base64
uint16_t size = min(spdVect.size(), (size_t)numeric_limits<uint16_t>::max());
Expand Down Expand Up @@ -1219,7 +1219,7 @@
try {
vector<uint8_t> spdVect2;
device::HdmiInput::getInstance().getHDMISPDInfo(id, spdVect2);
spdVect = spdVect2; // edidVec must be "unknown" unless we successfully get to this line
spdVect = std::move(spdVect2); // edidVec must be "unknown" unless we successfully get to this line

// convert to base64
uint16_t size = min(spdVect.size(), (size_t)numeric_limits<uint16_t>::max());
Expand Down
2 changes: 1 addition & 1 deletion AVInput/AVInputUtils.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
namespace WPEFramework {
namespace Plugin {

const int AVInputUtils::getTypeOfInput(const std::string& sType) {
int AVInputUtils::getTypeOfInput(const std::string& sType) {
if (sType == INPUT_TYPE_STRING_HDMI) {
return INPUT_TYPE_INT_HDMI;
}
Expand Down
2 changes: 1 addition & 1 deletion AVInput/AVInputUtils.h
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ namespace WPEFramework {
namespace Plugin {
class AVInputUtils {
public:
static const int getTypeOfInput(const std::string& type);
static int getTypeOfInput(const std::string& type);
static const std::string& getTypeOfInput(const int type);

private:
Expand Down
30 changes: 15 additions & 15 deletions AVOutput/AVOutputTV.h
Original file line number Diff line number Diff line change
Expand Up @@ -269,24 +269,24 @@ class AVOutputTV : public AVOutputBase {
private:


int getPictureModeIndex(std::string pqmode);
int getSourceIndex(std::string source);
int getFormatIndex(std::string format);
int getPictureModeIndex(const std::string& pqmode);
int getSourceIndex(const std::string& source);
int getFormatIndex(const std::string& format);
int getPqParamIndex();
int getParamIndex(std::string param, capDetails_t& paramInfo, paramIndex_t& indexInfo);
int getDolbyModeIndex(const char * dolbyMode);
int getHDRModeIndex(const std::string HDRMode, const std::string format,tvDolbyMode_t &value);
tvDimmingMode_t getDimmingModeIndex(string mode);

bool isIncluded(const std::set<string> set1,const std::set<string> set2);
bool isIncluded(const std::set<string>& set1,const std::set<string>& set2);
bool isSetRequired(std::string pqmode,std::string source,std::string format);
int isPlatformSupport(std::string pqparam);
int isPlatformSupport(const std::string& pqparam);


bool isCapablityCheckPassed( std::string param, capDetails_t inputInfo );
bool isCapablityCheckPassed( const std::string& param, const capDetails_t& inputInfo );
int parsingSetInputArgument(const JsonObject& parameters, std::string pqparam,capDetails_t& paramInfo);
int parsingGetInputArgument(const JsonObject& parameters, std::string pqparam, capDetails_t& info);
void spliltCapablities( capVectors_t& vectorInfo, capDetails_t stringInfo);
void spliltCapablities( capVectors_t& vectorInfo, const capDetails_t& stringInfo);
void spliltStringsAndConvertToSet( std::string pqmodeInfo,std::string formatInfo,std::string sourceInfo,std::set<string> &pqmode, std::set<string> &format, std::set<string> &source);
int validateIntegerInputParameter(std::string param, int inputValue);
int fetchCapablities(string pqparam, capDetails_t& info);
Expand All @@ -302,7 +302,7 @@ class AVOutputTV : public AVOutputBase {

std::string convertToString(std::vector<std::string> vec_strings);
void convertParamToLowerCase(std::string &source, std::string &pqmode, std::string &format);
int convertToValidInputParameter(std::string pqparam, capDetails_t& info);
int convertToValidInputParameter(const std::string& pqparam, capDetails_t& info);
string convertSourceIndexToString(int source);
string convertVideoFormatToString(int format);
string convertPictureIndexToString(int pqmode);
Expand All @@ -316,7 +316,7 @@ class AVOutputTV : public AVOutputBase {
* it will call TVSettings HAL for setting/saving the value
* Will be called whenever the application invokes set/reset call
*/
int updateAVoutputTVParam( std::string action, std::string tr181ParamName, capDetails_t info, tvPQParameterIndex_t pqParamIndex, int level );
int updateAVoutputTVParam(const std::string& action, const std::string& tr181ParamName, capDetails_t& info, tvPQParameterIndex_t pqParamIndex, int level );

/* Every bootup this function is called to sync TR181 to TVSettings HAL for saving the value */
tvError_t syncAvoutputTVParamsToHAL(std::string pqmode, std::string source, std::string format);
Expand All @@ -333,11 +333,11 @@ class AVOutputTV : public AVOutputBase {
std::string getErrorString (tvError_t eReturn);

/* Get function to query TR181 entries or pq capability.ini file*/
int getSaveConfig(std::string param, capDetails_t capInfo, valueVectors_t &values);
int getSaveConfig(const std::string& param, capDetails_t& capInfo, valueVectors_t &values);
int getLocalparam( std::string forParam,paramIndex_t indexInfo,int & value,tvPQParameterIndex_t pqParamIndex,bool sync=false);

tvDataComponentColor_t getComponentColorEnum(std::string colorName);
tvError_t getParamsCaps(std::string param, capVectors_t &vecInfo);
tvError_t getParamsCaps(const std::string& param, capVectors_t &vecInfo);
int GetPanelID(char *panelid);
int ReadCapablitiesFromConf(std::string param, capDetails_t& info);
void getDimmingModeStringFromEnum(int value, std::string &toStore);
Expand All @@ -357,11 +357,11 @@ class AVOutputTV : public AVOutputBase {
std::string getCMSColorStringFromEnum(tvDataComponentColor_t value);
std::string getCMSComponentStringFromEnum(tvComponentType_t value);
std::string getWBControlStringFromEnum(tvWBControl_t value);
int getCMSColorEnumFromString(std::string color,tvDataComponentColor_t &value);
int getCMSComponentEnumFromString(std::string component, tvComponentType_t& value);
int getCMSColorEnumFromString(const std::string& color,tvDataComponentColor_t &value);
int getCMSComponentEnumFromString(const std::string& component, tvComponentType_t& value);
std::string getWBColorStringFromEnum(tvWBColor_t value);
int getWBColorEnumFromString(std::string color,tvWBColor_t& value);
int getWBControlEnumFromString(std::string color,tvWBControl_t& value);
int getWBColorEnumFromString(const std::string& color,tvWBColor_t& value);
int getWBControlEnumFromString(const std::string& color,tvWBControl_t& value);
int getColorTempEnumFromString(std::string color, tvColorTemp_t& value);

bool checkCMSColorAndComponentCapability(const std::string capValue, const std::string inputValue);
Expand Down
66 changes: 40 additions & 26 deletions AVOutput/AVOutputTVHelper.cpp
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* If not stated otherwise in this file or this component's LICENSE file the

Check failure on line 2 in AVOutput/AVOutputTVHelper.cpp

View workflow job for this annotation

GitHub Actions / call-fossid-workflow / Fossid Annotate PR

FossID License Issue Detected

Source code with 'Apache-2.0' license found in local file 'AVOutput/AVOutputTVHelper.cpp' (Match: rdkcentral/rdkservices/6.1.7, 1945 lines, url: https://github.com/rdkcentral/rdkservices/archive/refs/tags/AML_BSP_REL_VERSION_RDK6.1.7.tar.gz, file: AVOutput/AVOutputTV.cpp)
* following copyright and licenses apply:
*
* Copyright 2024 RDK Management
Expand Down Expand Up @@ -32,7 +32,7 @@
namespace WPEFramework {
namespace Plugin {

int AVOutputTV::getPictureModeIndex(std::string pqparam)
int AVOutputTV::getPictureModeIndex(const std::string& pqparam)
{
int index = -1;
std::map<std::string, int> :: iterator it;
Expand All @@ -46,7 +46,7 @@
return index;
}

int AVOutputTV::getSourceIndex(std::string pqparam)
int AVOutputTV::getSourceIndex(const std::string& pqparam)
{
int index = -1;
std::map<std::string, int> :: iterator it;
Expand All @@ -60,7 +60,7 @@
return index;
}

int AVOutputTV::getFormatIndex(std::string pqparam)
int AVOutputTV::getFormatIndex(const std::string& pqparam)
{
int index = -1;
std::map<std::string, int> :: iterator it;
Expand Down Expand Up @@ -224,7 +224,9 @@

}

if (indexInfo.sourceIndex == -1 || indexInfo.pqmodeIndex == -1 || indexInfo.formatIndex == -1) {
// Coverity fix: Compare with 255 instead of -1 since paramIndex_t uses uint8_t
// When get*Index() functions return -1 (error), it wraps to 255 in uint8_t
if (indexInfo.sourceIndex == 255 || indexInfo.pqmodeIndex == 255 || indexInfo.formatIndex == 255) {
return -1;
}
LOGINFO("%s: Exit sourceIndex = %d pqmodeIndex = %d formatIndex = %d\n",__FUNCTION__,indexInfo.sourceIndex,indexInfo.pqmodeIndex,indexInfo.formatIndex);
Expand Down Expand Up @@ -312,7 +314,7 @@
return index;
}

bool AVOutputTV::isIncluded(const std::set<string> set1,const std::set<string> set2)
bool AVOutputTV::isIncluded(const std::set<string>& set1,const std::set<string>& set2)
{
for( const auto& element : set2) {
if(set1.find(element) == set1.end()) {
Expand Down Expand Up @@ -366,7 +368,7 @@
return ret;
}

int AVOutputTV::isPlatformSupport(std::string pqparam)
int AVOutputTV::isPlatformSupport(const std::string& pqparam)
{
capVectors_t vectorInfo;

Expand All @@ -385,7 +387,7 @@
return 0;
}

void AVOutputTV::spliltCapablities( capVectors_t& vectorInfo, capDetails_t stringInfo)
void AVOutputTV::spliltCapablities( capVectors_t& vectorInfo, const capDetails_t& stringInfo)
{
std::vector<std::pair<std::stringstream, std::vector<std::string>&>> streamVector;

Expand All @@ -412,7 +414,7 @@
}
}

bool AVOutputTV::isCapablityCheckPassed( std::string param, capDetails_t inputInfo )
bool AVOutputTV::isCapablityCheckPassed( const std::string& param, const capDetails_t& inputInfo )
{

capDetails_t paramInfo;
Expand Down Expand Up @@ -767,7 +769,7 @@
return result;
}

int AVOutputTV::convertToValidInputParameter(std::string pqparam, capDetails_t& info)
int AVOutputTV::convertToValidInputParameter(const std::string& pqparam, capDetails_t& info)
{

LOGINFO("Entry %s source %s pqmode %s format %s \n", __FUNCTION__, info.source.c_str(), info.pqmode.c_str(), info.format.c_str());
Expand Down Expand Up @@ -944,11 +946,13 @@
return ret;
}

int AVOutputTV::updateAVoutputTVParam( std::string action, std::string tr181ParamName, capDetails_t info, tvPQParameterIndex_t pqParamIndex, int level )
int AVOutputTV::updateAVoutputTVParam( const std::string& action, const std::string& tr181ParamName, capDetails_t& info, tvPQParameterIndex_t pqParamIndex, int level )
{
LOGINFO("Entry : %s\n",__FUNCTION__);
valueVectors_t values;
paramIndex_t paramIndex;
// Coverity fix: Initialize struct to zero to prevent uninitialized field usage
// This ensures all 7 uint8_t fields start with defined values
paramIndex_t paramIndex = {};
std::vector<int> sources;
std::vector<int> pictureModes;
std::vector<int> formats;
Expand Down Expand Up @@ -1118,7 +1122,11 @@
{
if(sync) {
int value=0;
getLocalparam(tr181ParamName,paramIndex,value,pqParamIndex,sync);
// Coverity fix: Check return value to ensure value is properly initialized
// The function returns int (-1 on error, 0 on success), validate before use
if (getLocalparam(tr181ParamName,paramIndex,value,pqParamIndex,sync) != 0) {
LOGERR("%s: getLocalparam failed for LOCALDIMMING_LEVEL\n", __FUNCTION__);
}
level=value;
}
ret |= SaveTVDimmingMode((tvVideoSrcType_t)paramIndex.sourceIndex, paramIndex.pqmodeIndex,(tvVideoFormatType_t)paramIndex.formatIndex,(tvDimmingMode_t)level);
Expand Down Expand Up @@ -1240,10 +1248,11 @@
tr181ErrorCode_t err = tr181Success;
TR181_ParamData_t param = {0};
int ret = 0;
// Coverity fix: Use std::move() since parameters are passed by value and not reused

inputInfo.pqmode = pqmode;
inputInfo.source = source;
inputInfo.format = format;
inputInfo.pqmode = std::move(pqmode);
inputInfo.source = std::move(source);
inputInfo.format = std::move(format);

ret = getSaveConfig("PictureMode", inputInfo, valueVectors);

Expand Down Expand Up @@ -1327,7 +1336,7 @@
return "UNKNOWN ERROR";
}

int AVOutputTV::getSaveConfig(std::string param, capDetails_t capInfo, valueVectors_t &values)
int AVOutputTV::getSaveConfig(const std::string& param, capDetails_t& capInfo, valueVectors_t &values)
{
LOGINFO("Entry : %s pqmode : %s source :%s format :%s component : %s color : %s control:%s\n",__FUNCTION__,capInfo.pqmode.c_str(),capInfo.source.c_str(),capInfo.format.c_str(),capInfo.component.c_str(),capInfo.color.c_str(),capInfo.control.c_str());

Expand Down Expand Up @@ -1566,7 +1575,7 @@
return CompColorEnum;
}

tvError_t AVOutputTV::getParamsCaps(std::string param, capVectors_t &vecInfo)
tvError_t AVOutputTV::getParamsCaps(const std::string& param, capVectors_t &vecInfo)
{
tvError_t ret = tvERROR_NONE;
capDetails_t stringInfo;
Expand Down Expand Up @@ -1866,9 +1875,10 @@
tvError_t ret = tvERROR_NONE;
capDetails_t inputInfo;

inputInfo.pqmode = pqmode;
inputInfo.source = source;
inputInfo.format = format;
// Coverity fix: Use std::move() since parameters are passed by value and not reused
inputInfo.pqmode = std::move(pqmode);
inputInfo.source = std::move(source);
inputInfo.format = std::move(format);

memset(&param, 0, sizeof(param));
tr181ErrorCode_t err = getLocalParam(rfc_caller_id, AVOUTPUT_ASPECTRATIO_RFC_PARAM, &param);
Expand Down Expand Up @@ -1932,7 +1942,7 @@
return ret;
}

int AVOutputTV::getCMSComponentEnumFromString(std::string component, tvComponentType_t& value)
int AVOutputTV::getCMSComponentEnumFromString(const std::string& component, tvComponentType_t& value)
{
int ret = 0;

Expand All @@ -1948,7 +1958,7 @@
return ret;
}

int AVOutputTV::getCMSColorEnumFromString(std::string color,tvDataComponentColor_t& value)
int AVOutputTV::getCMSColorEnumFromString(const std::string& color,tvDataComponentColor_t& value)
{
int ret = 0;

Expand Down Expand Up @@ -2038,8 +2048,12 @@

if ( convertWBParamToPQEnum(inputInfo.control,inputInfo.color,tvPQEnum) != 0 ) {
LOGERR("%s: %s/%s Param Not Found \n",__FUNCTION__,inputInfo.control.c_str(),inputInfo.color.c_str());
}
updateAVoutputTVParam("sync","WhiteBalance",inputInfo,tvPQEnum,level);
}
// Coverity fix: Check return value to prevent undefined behavior
// The function returns 0 on success non-zero on failure, must be validated
if (updateAVoutputTVParam("sync","WhiteBalance",inputInfo,tvPQEnum,level) != 0) {
LOGERR("%s: updateAVoutputTVParam failed for WhiteBalance sync\n", __FUNCTION__);
}
}
}
}
Expand Down Expand Up @@ -2180,7 +2194,7 @@
}
}

int AVOutputTV::getWBColorEnumFromString(std::string color,tvWBColor_t& value) {
int AVOutputTV::getWBColorEnumFromString(const std::string& color,tvWBColor_t& value) {
int ret = 0;

if( color.compare("Red") == 0 )
Expand All @@ -2195,7 +2209,7 @@
return ret;
}

int AVOutputTV::getWBControlEnumFromString(std::string color,tvWBControl_t& value) {
int AVOutputTV::getWBControlEnumFromString(const std::string& color,tvWBControl_t& value) {
int ret = 0;

if( color.compare("Gain") == 0 )
Expand Down
Loading
Loading