diff --git a/autorun.sh b/autorun.sh
index ecee284da..aea43c1e8 100755
--- a/autorun.sh
+++ b/autorun.sh
@@ -7,6 +7,7 @@ ERROR=-1
NORMAL=0
SHUTDOWN=1
REBOOT=2
+RESTART=3
echo "Starting Neutrino"
diff --git a/data/y-web/Y_Tools_Boxcontrol.yhtm b/data/y-web/Y_Tools_Boxcontrol.yhtm
index b15409a6f..bfc014659 100644
--- a/data/y-web/Y_Tools_Boxcontrol.yhtm
+++ b/data/y-web/Y_Tools_Boxcontrol.yhtm
@@ -55,6 +55,14 @@ function init() {
CEC:
+
diff --git a/data/y-web/languages/Deutsch b/data/y-web/languages/Deutsch
index 5eeb354d5..fd13e059e 100644
--- a/data/y-web/languages/Deutsch
+++ b/data/y-web/languages/Deutsch
@@ -140,7 +140,8 @@ bc.control.reboot=Neustart
bc.control.shutdown.ask=Box wirklich ausschalten?
bc.control.shutdown=Ausschalten
bc.control.status=Status
-bc.control.restart=Neu starten
+bc.control.restart=Neustart
+bc.control.neutrino=Neutrino
========= Boxcontrol - Message
bc.msg.message_to_screen_desc=Nachricht eingeben
diff --git a/data/y-web/languages/English b/data/y-web/languages/English
index 5e811d3cb..b8b38ed38 100644
--- a/data/y-web/languages/English
+++ b/data/y-web/languages/English
@@ -143,6 +143,7 @@ bc.control.shutdown.ask=Really shutdown the Box?
bc.control.shutdown=shutdown
bc.control.status=status
bc.control.restart=restart
+bc.control.neutrino=Neutrino
========= Boxcontrol - Message
bc.msg.message_to_screen_desc=enter message to send to TV screen
diff --git a/src/driver/rcinput.cpp b/src/driver/rcinput.cpp
index d88fccaef..c906e45c3 100644
--- a/src/driver/rcinput.cpp
+++ b/src/driver/rcinput.cpp
@@ -920,6 +920,10 @@ void CRCInput::getMsg_us(neutrino_msg_t * msg, neutrino_msg_data_t * data, uint6
*msg = NeutrinoMessages::REBOOT;
*data = 0;
break;
+ case NeutrinoMessages::RESTART :
+ *msg = NeutrinoMessages::RESTART;
+ *data = 0;
+ break;
case NeutrinoMessages::EVT_POPUP :
*msg = NeutrinoMessages::EVT_POPUP;
*data = (unsigned long) p;
diff --git a/src/neutrino.cpp b/src/neutrino.cpp
index 1cac604d6..4da5dc8af 100644
--- a/src/neutrino.cpp
+++ b/src/neutrino.cpp
@@ -4567,6 +4567,9 @@ int CNeutrinoApp::handleMsg(const neutrino_msg_t _msg, neutrino_msg_data_t data)
}
return messages_return::handled;
}
+ else if( msg == NeutrinoMessages::RESTART ) {
+ ExitRun(CNeutrinoApp::EXIT_RESTART);
+ }
else if( msg == NeutrinoMessages::REBOOT ) {
ExitRun(CNeutrinoApp::EXIT_REBOOT);
}
@@ -4849,7 +4852,7 @@ void CNeutrinoApp::ExitRun(int exit_code)
if (cs_get_revision() != 10)
bright = g_settings.lcd_setting[SNeutrinoSettings::LCD_DEEPSTANDBY_BRIGHTNESS];
#endif
- if (exit_code != CNeutrinoApp::EXIT_REBOOT)
+ if (exit_code != EXIT_NORMAL && exit_code != EXIT_RESTART)
{
if (timer_minutes)
{
@@ -5403,6 +5406,12 @@ int CNeutrinoApp::exec(CMenuTarget* parent, const std::string & actionKey)
ExitRun(CNeutrinoApp::EXIT_REBOOT);
returnval = menu_return::RETURN_NONE;
}
+ else if (actionKey=="restart")
+ {
+ videoDecoder->SetCECMode((VIDEO_HDMI_CEC_MODE)0);
+ ExitRun(CNeutrinoApp::EXIT_RESTART);
+ returnval = menu_return::RETURN_NONE;
+ }
else if (actionKey=="clock_switch")
{
InfoClock->switchClockOnOff();
diff --git a/src/neutrino.h b/src/neutrino.h
index 5da63aca3..5a99c4062 100644
--- a/src/neutrino.h
+++ b/src/neutrino.h
@@ -62,7 +62,8 @@ public:
EXIT_ERROR = -1,
EXIT_NORMAL = 0, // g_info.hw_caps->can_shutdown == 0
EXIT_SHUTDOWN = 1, // g_info.hw_caps->can_shutdown == 1
- EXIT_REBOOT = 2
+ EXIT_REBOOT = 2,
+ EXIT_RESTART = 3
};
enum
diff --git a/src/neutrinoMessages.h b/src/neutrinoMessages.h
index de5774293..568f85a8d 100644
--- a/src/neutrinoMessages.h
+++ b/src/neutrinoMessages.h
@@ -77,6 +77,7 @@ struct NeutrinoMessages {
RELOAD_SETUP = CRCInput::RC_Messages + 24,
SHOW_MAINMENU = CRCInput::RC_Messages + 25,
LEAVE_ALL = CRCInput::RC_Messages + 26,
+ RESTART = CRCInput::RC_Messages + 27,
EVT_VOLCHANGED = CRCInput::RC_Events + 1,
diff --git a/src/nhttpd/tuxboxapi/controlapi.cpp b/src/nhttpd/tuxboxapi/controlapi.cpp
index f1e26d031..fab0ed17a 100644
--- a/src/nhttpd/tuxboxapi/controlapi.cpp
+++ b/src/nhttpd/tuxboxapi/controlapi.cpp
@@ -194,6 +194,7 @@ const CControlAPI::TyCgiCall CControlAPI::yCgiCallList[]=
{"standby", &CControlAPI::StandbyCGI, "text/plain"},
{"shutdown", &CControlAPI::ShutdownCGI, "text/plain"},
{"reboot", &CControlAPI::RebootCGI, "text/plain"},
+ {"restart", &CControlAPI::RestartCGI, "text/plain"},
{"getdate", &CControlAPI::GetDateCGI, "text/plain"},
{"gettime", &CControlAPI::GetTimeCGI, "text/plain"},
{"info", &CControlAPI::InfoCGI, "text/plain"},
@@ -888,6 +889,18 @@ void CControlAPI::RebootCGI(CyhookHandler *hh)
hh->SendError();
}
+//-----------------------------------------------------------------------------
+void CControlAPI::RestartCGI(CyhookHandler *hh)
+{
+ if (hh->ParamList.empty())
+ {
+ NeutrinoAPI->EventServer->sendEvent(NeutrinoMessages::RESTART, CEventServer::INITID_HTTPD);
+ hh->SendOk();
+ }
+ else
+ hh->SendError();
+}
+
//-----------------------------------------------------------------------------
unsigned int revert_translate(unsigned int code)
{
diff --git a/src/nhttpd/tuxboxapi/controlapi.h b/src/nhttpd/tuxboxapi/controlapi.h
index c173b4490..86a50fc64 100644
--- a/src/nhttpd/tuxboxapi/controlapi.h
+++ b/src/nhttpd/tuxboxapi/controlapi.h
@@ -111,6 +111,7 @@ private:
void LCDAction(CyhookHandler *hh);
void YWebCGI(CyhookHandler *hh);
void RebootCGI(CyhookHandler *hh);
+ void RestartCGI(CyhookHandler *hh);
void RCEmCGI(CyhookHandler *hh);
void AspectRatioCGI(CyhookHandler *hh);
void VideoFormatCGI(CyhookHandler *hh);
diff --git a/src/nhttpd/tuxboxapi/neutrinoapi.cpp b/src/nhttpd/tuxboxapi/neutrinoapi.cpp
index 3a6eb2a72..c93b69af8 100644
--- a/src/nhttpd/tuxboxapi/neutrinoapi.cpp
+++ b/src/nhttpd/tuxboxapi/neutrinoapi.cpp
@@ -132,6 +132,7 @@ CNeutrinoAPI::CNeutrinoAPI()
EventServer = new CEventServer;
EventServer->registerEvent2( NeutrinoMessages::SHUTDOWN, CEventServer::INITID_HTTPD, "/tmp/neutrino.sock");
EventServer->registerEvent2( NeutrinoMessages::REBOOT, CEventServer::INITID_HTTPD, "/tmp/neutrino.sock");
+ EventServer->registerEvent2( NeutrinoMessages::RESTART, CEventServer::INITID_HTTPD, "/tmp/neutrino.sock");
EventServer->registerEvent2( NeutrinoMessages::STANDBY_ON, CEventServer::INITID_HTTPD, "/tmp/neutrino.sock");
EventServer->registerEvent2( NeutrinoMessages::STANDBY_OFF, CEventServer::INITID_HTTPD, "/tmp/neutrino.sock");
EventServer->registerEvent2( NeutrinoMessages::STANDBY_TOGGLE, CEventServer::INITID_HTTPD, "/tmp/neutrino.sock");
|