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: + {=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 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");