diff --git a/src/driver/rcinput.cpp b/src/driver/rcinput.cpp index 6f2344c7a..5d24f69c6 100644 --- a/src/driver/rcinput.cpp +++ b/src/driver/rcinput.cpp @@ -857,6 +857,10 @@ void CRCInput::getMsg_us(neutrino_msg_t * msg, neutrino_msg_data_t * data, uint6 *msg = NeutrinoMessages::RELOAD_SETUP; *data = 0; break; + case NeutrinoMessages::EVT_HDMI_CEC_ON: + *msg = NeutrinoMessages::EVT_HDMI_CEC_ON; + *data = 0; + break; default: printf("[neutrino] event INITID_HTTPD - unknown eventID 0x%x\n", emsg.eventID ); } diff --git a/src/neutrino.cpp b/src/neutrino.cpp index 2761eec41..fdfa4ea33 100644 --- a/src/neutrino.cpp +++ b/src/neutrino.cpp @@ -3035,6 +3035,12 @@ int CNeutrinoApp::handleMsg(const neutrino_msg_t _msg, neutrino_msg_data_t data) // ShowHint(LOCALE_MESSAGEBOX_INFO, g_Locale->getText(LOCALE_EXTRA_ZAPIT_SDT_CHANGED), // CMessageBox::mbrBack,CMessageBox::mbBack, NEUTRINO_ICON_INFO); } + else if (msg == NeutrinoMessages::EVT_HDMI_CEC_ON) { + if(g_settings.hdmi_cec_view_on) + videoDecoder->SetCECAutoView(g_settings.hdmi_cec_view_on); + + return messages_return::handled; + } if ((msg >= CRCInput::RC_WithData) && (msg < CRCInput::RC_WithData + 0x10000000)) delete [] (unsigned char*) data; diff --git a/src/neutrinoMessages.h b/src/neutrinoMessages.h index ce90d5b46..28c60dd58 100644 --- a/src/neutrinoMessages.h +++ b/src/neutrinoMessages.h @@ -151,6 +151,8 @@ struct NeutrinoMessages { /* sectionsd */ EVT_EIT_COMPLETE = CRCInput::RC_WithData + 24, /* data: (t_channel_id *) */ EVT_BACK_ZAP_COMPLETE = CRCInput::RC_WithData + 25, /* data: (t_channel_id *) */ + + EVT_HDMI_CEC_ON = CRCInput::RC_WithData + 26 }; enum { diff --git a/src/nhttpd/tuxboxapi/coolstream/controlapi.cpp b/src/nhttpd/tuxboxapi/coolstream/controlapi.cpp index 61f01bd0e..e31bb44a3 100644 --- a/src/nhttpd/tuxboxapi/coolstream/controlapi.cpp +++ b/src/nhttpd/tuxboxapi/coolstream/controlapi.cpp @@ -48,6 +48,8 @@ // nhttpd #include "neutrinoapi.h" #include "controlapi.h" +#include +extern cVideo * videoDecoder; extern CPlugins *g_PluginList;//for relodplugins extern CBouquetManager *g_bouquetManager; @@ -422,6 +424,13 @@ void CControlAPI::StandbyCGI(CyhookHandler *hh) { if (!(hh->ParamList.empty())) { + bool CEC_HDMI_off = false; + if (!(hh->ParamList["cec"].empty())){ + if(hh->ParamList["cec"]=="off"){ + CEC_HDMI_off = true; + } + } + if (hh->ParamList["1"] == "on") // standby mode on { if(CNeutrinoApp::getInstance()->getMode() != 4) @@ -430,10 +439,19 @@ void CControlAPI::StandbyCGI(CyhookHandler *hh) } else if (hh->ParamList["1"] == "off")// standby mode off { + //dont use CEC with standbyoff --- use: control/standby?off&cec=off + if(g_settings.hdmi_cec_view_on && CEC_HDMI_off){ + videoDecoder->SetCECAutoView(0); + } + NeutrinoAPI->Zapit->setStandby(false); if(CNeutrinoApp::getInstance()->getMode() == 4) NeutrinoAPI->EventServer->sendEvent(NeutrinoMessages::STANDBY_OFF, CEventServer::INITID_HTTPD); hh->SendOk(); + + if(g_settings.hdmi_cec_view_on && CEC_HDMI_off){//dont use CEC with standbyoff + NeutrinoAPI->EventServer->sendEvent(NeutrinoMessages::EVT_HDMI_CEC_ON, CEventServer::INITID_HTTPD); + } } else hh->SendError(); diff --git a/src/nhttpd/tuxboxapi/coolstream/neutrinoapi.cpp b/src/nhttpd/tuxboxapi/coolstream/neutrinoapi.cpp index beb863407..dd571c050 100644 --- a/src/nhttpd/tuxboxapi/coolstream/neutrinoapi.cpp +++ b/src/nhttpd/tuxboxapi/coolstream/neutrinoapi.cpp @@ -130,6 +130,7 @@ CNeutrinoAPI::CNeutrinoAPI() EventServer->registerEvent2( NeutrinoMessages::LOCK_RC, CEventServer::INITID_HTTPD, "/tmp/neutrino.sock"); EventServer->registerEvent2( NeutrinoMessages::UNLOCK_RC, CEventServer::INITID_HTTPD, "/tmp/neutrino.sock"); EventServer->registerEvent2( NeutrinoMessages::RELOAD_SETUP, CEventServer::INITID_HTTPD, "/tmp/neutrino.sock");//reload neutrino conf + EventServer->registerEvent2( NeutrinoMessages::EVT_HDMI_CEC_ON, CEventServer::INITID_HTTPD, "/tmp/neutrino.sock"); } //-------------------------------------------------------------------------