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: + {=L:bc.control.neutrino=}  + + + + +   + + {=L:bc.control.playback=}{=L:bc.control.recording_mode=} 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");