@@ -107,6 +107,7 @@ static VendorID appVendorId = {defaultVendorId.at(0),defaultVendorId.at(1),defau
107
107
static VendorID lgVendorId = {0x00 ,0xE0 ,0x91 };
108
108
static PhysicalAddress physical_addr = {0x0F ,0x0F ,0x0F ,0x0F };
109
109
static LogicalAddress logicalAddress = 0xF ;
110
+ static Language defaultLanguage = " eng" ;
110
111
static OSDName osdName = " TV Box" ;
111
112
static int32_t powerState = 1 ;
112
113
@@ -277,6 +278,7 @@ namespace WPEFramework
277
278
{
278
279
printHeader (header);
279
280
LOGINFO (" Command: GetMenuLanguage\n " );
281
+ HdmiCecSink::_instance->sendMenuLanguage ();
280
282
}
281
283
void HdmiCecSinkProcessor::process (const ReportPhysicalAddress &msg, const Header &header)
282
284
{
@@ -403,7 +405,8 @@ namespace WPEFramework
403
405
registerMethod (HDMICECSINK_METHOD_GET_ACTIVE_SOURCE, &HdmiCecSink::getActiveSourceWrapper, this );
404
406
registerMethod (HDMICECSINK_METHOD_SET_ACTIVE_SOURCE, &HdmiCecSink::setActiveSourceWrapper, this );
405
407
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 );
407
410
408
411
logicalAddressDeviceType = " None" ;
409
412
logicalAddress = 0xFF ;
@@ -892,7 +895,18 @@ namespace WPEFramework
892
895
}
893
896
894
897
898
+ uint32_t HdmiCecSink::setMenuLanguageWrapper (const JsonObject& parameters, JsonObject& response)
899
+ {
900
+ std::string lang;
901
+
902
+ returnIfParamNotFound (parameters, " language" );
895
903
904
+ lang = parameters[" language" ].String ();
905
+
906
+ setCurrentLanguage (Language (lang.data ()));
907
+ sendMenuLanguage ();
908
+ returnResponse (true );
909
+ }
896
910
897
911
898
912
uint32_t HdmiCecSink::setVendorIdWrapper (const JsonObject& parameters, JsonObject& response)
@@ -1284,7 +1298,35 @@ namespace WPEFramework
1284
1298
_instance->m_currentActiveSource = _instance->m_logicalAddressAllocated ;
1285
1299
}
1286
1300
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
+
1288
1330
void HdmiCecSink::updateInActiveSource (const int logical_address, const InActiveSource &source )
1289
1331
{
1290
1332
JsonObject params;
@@ -1775,6 +1817,7 @@ namespace WPEFramework
1775
1817
_instance->deviceList [_instance->m_logicalAddressAllocated ].m_isDevicePresent = true ;
1776
1818
_instance->deviceList [_instance->m_logicalAddressAllocated ].m_cecVersion = Version::V_1_4;
1777
1819
_instance->deviceList [_instance->m_logicalAddressAllocated ].m_vendorID = appVendorId;
1820
+ _instance->deviceList [_instance->m_logicalAddressAllocated ].m_currentLanguage = defaultLanguage;
1778
1821
_instance->smConnection ->addFrameListener (_instance->msgFrameListener );
1779
1822
_instance->smConnection ->sendTo (LogicalAddress (LogicalAddress ::BROADCAST),
1780
1823
MessageEncoder ().encode (ReportPhysicalAddress (physical_addr, _instance->deviceList [_instance->m_logicalAddressAllocated ].m_deviceType )), 5000 );
0 commit comments