diff --git a/autorun.sh b/autorun.sh
index d0b799034..44509a10c 100755
--- a/autorun.sh
+++ b/autorun.sh
@@ -1,19 +1,29 @@
export LD_LIBRARY_PATH=/var/lib
export PATH=${PATH}:/var/bin:/var/plugins
-echo "### Starting NEUTRINO ###"
+# Simple Neutrino start script
+
+# Neutrino's exit codes
+ERROR=-1
+NORMAL=0
+SHUTDOWN=1
+REBOOT=2
+RESTART=3
+
+echo "Starting Neutrino"
cd /tmp
-/bin/neutrino > /dev/null 2> /dev/null
+/bin/neutrino >/dev/null 2>&1; RET=$?
+sync
-/bin/sync
-/bin/sync
+echo "Neutrino exited with exit code $RET"
-if [ -e /tmp/.reboot ] ; then
- /bin/dt -t"Rebooting..."
- /sbin/reboot -f
-else
- /bin/dt -t"Panic..."
- sleep 5
- /sbin/reboot -f
+if [ $RET -eq $NORMAL ]; then
+ # do nothing
+elif [ $RET -eq $SHUTDOWN ]; then
+ poweroff
+elif [ $RET -eq $REBOOT ]; then
+ reboot
+else # $RET -eq $ERROR
+ reboot -f
fi
diff --git a/data/y-web/Y_Tools_Boxcontrol.yhtm b/data/y-web/Y_Tools_Boxcontrol.yhtm
index 701da8e01..88994b62c 100644
--- a/data/y-web/Y_Tools_Boxcontrol.yhtm
+++ b/data/y-web/Y_Tools_Boxcontrol.yhtm
@@ -56,6 +56,14 @@ function get_data() {
CEC:
+
diff --git a/data/y-web/languages/Deutsch b/data/y-web/languages/Deutsch
index 06359e281..86fd3146b 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 6b0aefbab..b03c7ab2a 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 1418d3d8f..758dcc997 100644
--- a/src/driver/rcinput.cpp
+++ b/src/driver/rcinput.cpp
@@ -916,6 +916,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 0693adafa..beb96e448 100644
--- a/src/neutrino.cpp
+++ b/src/neutrino.cpp
@@ -4537,6 +4537,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);
}
@@ -4815,7 +4818,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)
{
@@ -5370,6 +5373,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 092fff1eb..22eb60194 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 5c933604b..5a87415d9 100644
--- a/src/nhttpd/tuxboxapi/controlapi.cpp
+++ b/src/nhttpd/tuxboxapi/controlapi.cpp
@@ -188,6 +188,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"},
@@ -879,6 +880,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 3fdbb5d13..7774a4a8c 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 66406cd24..fa3023a3e 100644
--- a/src/nhttpd/tuxboxapi/neutrinoapi.cpp
+++ b/src/nhttpd/tuxboxapi/neutrinoapi.cpp
@@ -131,6 +131,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");
|