Skip to content

Commit b0fa19f

Browse files
kselva1983anand-ky
andauthored
RDK-29649 : CEC Menu Language Support changes (rdkcentral#412)
* RDK-29648 - HDMI CEC Routing Control Changes for Sink devices * RDK-29648 - HDMI CEC Routing Control - Fixing review comments * RDK-29649 : CEC Menu Language Support changes Co-authored-by: Anand Kandasamy <[email protected]>
1 parent 8be1c4d commit b0fa19f

File tree

2 files changed

+48
-2
lines changed

2 files changed

+48
-2
lines changed

HdmiCecSink/HdmiCecSink.cpp

+45-2
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,7 @@ static VendorID appVendorId = {defaultVendorId.at(0),defaultVendorId.at(1),defau
107107
static VendorID lgVendorId = {0x00,0xE0,0x91};
108108
static PhysicalAddress physical_addr = {0x0F,0x0F,0x0F,0x0F};
109109
static LogicalAddress logicalAddress = 0xF;
110+
static Language defaultLanguage = "eng";
110111
static OSDName osdName = "TV Box";
111112
static int32_t powerState = 1;
112113

@@ -277,6 +278,7 @@ namespace WPEFramework
277278
{
278279
printHeader(header);
279280
LOGINFO("Command: GetMenuLanguage\n");
281+
HdmiCecSink::_instance->sendMenuLanguage();
280282
}
281283
void HdmiCecSinkProcessor::process (const ReportPhysicalAddress &msg, const Header &header)
282284
{
@@ -403,7 +405,8 @@ namespace WPEFramework
403405
registerMethod(HDMICECSINK_METHOD_GET_ACTIVE_SOURCE, &HdmiCecSink::getActiveSourceWrapper, this);
404406
registerMethod(HDMICECSINK_METHOD_SET_ACTIVE_SOURCE, &HdmiCecSink::setActiveSourceWrapper, this);
405407
registerMethod(HDMICECSINK_METHOD_GET_ACTIVE_ROUTE, &HdmiCecSink::getActiveRouteWrapper, this);
406-
registerMethod(HDMICECSINK_METHOD_REQUEST_ACTIVE_SOURCE, &HdmiCecSink::requestActiveSourceWrapper, this);
408+
registerMethod(HDMICECSINK_METHOD_REQUEST_ACTIVE_SOURCE, &HdmiCecSink::requestActiveSourceWrapper, this);
409+
registerMethod(HDMICECSINK_METHOD_SET_MENU_LANGUAGE, &HdmiCecSink::setMenuLanguageWrapper, this);
407410

408411
logicalAddressDeviceType = "None";
409412
logicalAddress = 0xFF;
@@ -892,7 +895,18 @@ namespace WPEFramework
892895
}
893896

894897

898+
uint32_t HdmiCecSink::setMenuLanguageWrapper(const JsonObject& parameters, JsonObject& response)
899+
{
900+
std::string lang;
901+
902+
returnIfParamNotFound(parameters, "language");
895903

904+
lang = parameters["language"].String();
905+
906+
setCurrentLanguage(Language(lang.data()));
907+
sendMenuLanguage();
908+
returnResponse(true);
909+
}
896910

897911

898912
uint32_t HdmiCecSink::setVendorIdWrapper(const JsonObject& parameters, JsonObject& response)
@@ -1284,7 +1298,35 @@ namespace WPEFramework
12841298
_instance->m_currentActiveSource = _instance->m_logicalAddressAllocated;
12851299
}
12861300

1287-
1301+
void HdmiCecSink::setCurrentLanguage(const Language &lang)
1302+
{
1303+
if(!HdmiCecSink::_instance)
1304+
return;
1305+
1306+
if ( _instance->m_logicalAddressAllocated == LogicalAddress::UNREGISTERED ){
1307+
LOGERR("Logical Address NOT Allocated");
1308+
return;
1309+
}
1310+
1311+
_instance->deviceList[_instance->m_logicalAddressAllocated].m_currentLanguage = lang;
1312+
}
1313+
1314+
void HdmiCecSink::sendMenuLanguage()
1315+
{
1316+
Language lang = "NA";
1317+
if(!HdmiCecSink::_instance)
1318+
return;
1319+
1320+
if ( _instance->m_logicalAddressAllocated == LogicalAddress::UNREGISTERED ){
1321+
LOGERR("Logical Address NOT Allocated");
1322+
return;
1323+
}
1324+
1325+
lang = _instance->deviceList[_instance->m_logicalAddressAllocated].m_currentLanguage;
1326+
1327+
_instance->smConnection->sendTo(LogicalAddress::BROADCAST, MessageEncoder().encode(SetMenuLanguage(lang)), 5000);
1328+
}
1329+
12881330
void HdmiCecSink::updateInActiveSource(const int logical_address, const InActiveSource &source )
12891331
{
12901332
JsonObject params;
@@ -1775,6 +1817,7 @@ namespace WPEFramework
17751817
_instance->deviceList[_instance->m_logicalAddressAllocated].m_isDevicePresent = true;
17761818
_instance->deviceList[_instance->m_logicalAddressAllocated].m_cecVersion = Version::V_1_4;
17771819
_instance->deviceList[_instance->m_logicalAddressAllocated].m_vendorID = appVendorId;
1820+
_instance->deviceList[_instance->m_logicalAddressAllocated].m_currentLanguage = defaultLanguage;
17781821
_instance->smConnection->addFrameListener(_instance->msgFrameListener);
17791822
_instance->smConnection->sendTo(LogicalAddress(LogicalAddress::BROADCAST),
17801823
MessageEncoder().encode(ReportPhysicalAddress(physical_addr, _instance->deviceList[_instance->m_logicalAddressAllocated].m_deviceType)), 5000);

HdmiCecSink/HdmiCecSink.h

+3
Original file line numberDiff line numberDiff line change
@@ -405,6 +405,8 @@ namespace WPEFramework {
405405
void printDeviceList();
406406
void setStreamPath( const PhysicalAddress &physical_addr);
407407
void setRoutingChange(const std::string &from, const std::string &to);
408+
void setCurrentLanguage(const Language &lang);
409+
void sendMenuLanguage();
408410
void setActiveSource(bool isResponse);
409411
void requestActiveSource();
410412
int m_numberOfDevices; /* Number of connected devices othethan own device */
@@ -428,6 +430,7 @@ namespace WPEFramework {
428430
uint32_t setActiveSourceWrapper(const JsonObject& parameters, JsonObject& response);
429431
uint32_t getActiveRouteWrapper(const JsonObject& parameters, JsonObject& response);
430432
uint32_t requestActiveSourceWrapper(const JsonObject& parameters, JsonObject& response);
433+
uint32_t setMenuLanguageWrapper(const JsonObject& parameters, JsonObject& response);
431434

432435

433436
//End methods

0 commit comments

Comments
 (0)