From fc11a76c0184dc603fce7825a082494339502bde Mon Sep 17 00:00:00 2001 From: "[CST] Focus" Date: Wed, 2 Mar 2016 14:30:51 +0300 Subject: [PATCH] nhttpd/tuxboxapi/controlapi.cpp: add direct record start for current channel --- src/driver/rcinput.cpp | 10 ++++++++++ src/neutrino.cpp | 16 ++++++++++++---- src/nhttpd/tuxboxapi/controlapi.cpp | 10 ++++++++++ src/nhttpd/tuxboxapi/neutrinoapi.cpp | 2 ++ 4 files changed, 34 insertions(+), 4 deletions(-) diff --git a/src/driver/rcinput.cpp b/src/driver/rcinput.cpp index c11368e01..1954fbdb0 100644 --- a/src/driver/rcinput.cpp +++ b/src/driver/rcinput.cpp @@ -873,6 +873,16 @@ void CRCInput::getMsg_us(neutrino_msg_t * msg, neutrino_msg_data_t * data, uint6 *msg = NeutrinoMessages::EVT_SET_VOLUME; *data = *(char*) p; break; + case NeutrinoMessages::RECORD_START : + *msg = NeutrinoMessages::RECORD_START; + *data = (unsigned long) p; + dont_delete_p = true; + break; + case NeutrinoMessages::RECORD_STOP : + *msg = NeutrinoMessages::RECORD_STOP; + *data = (unsigned long) p; + dont_delete_p = true; + 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 80ae99149..7ac6970c1 100644 --- a/src/neutrino.cpp +++ b/src/neutrino.cpp @@ -3007,16 +3007,24 @@ int CNeutrinoApp::handleMsg(const neutrino_msg_t _msg, neutrino_msg_data_t data) } #endif //zap to rec channel in standby-mode + CTimerd::RecordingInfo * eventinfo = (CTimerd::RecordingInfo *) data; + t_channel_id live_channel_id = CZapit::getInstance()->GetCurrentChannelID(); + /* special case for nhttpd: start direct record, if no eventID */ + if (eventinfo->eventID == 0) { + int rec_mode = CRecordManager::getInstance()->GetRecordMode(live_channel_id); + /* start only if not recorded yet */ + if (rec_mode == CRecordManager::RECMODE_OFF || rec_mode == CRecordManager::RECMODE_TSHIFT) + CRecordManager::getInstance()->Record(live_channel_id); + delete[] (unsigned char*) data; + return messages_return::handled | messages_return::cancel_all; + } if(mode == mode_standby){ - CTimerd::RecordingInfo * eventinfo = (CTimerd::RecordingInfo *) data; - t_channel_id live_channel_id = CZapit::getInstance()->GetCurrentChannelID(); - if((eventinfo->channel_id != live_channel_id) && !(SAME_TRANSPONDER(live_channel_id, eventinfo->channel_id))) zapTo(eventinfo->channel_id); } if (g_settings.recording_type != CNeutrinoApp::RECORDING_OFF) { - CRecordManager::getInstance()->Record((CTimerd::RecordingInfo *) data); + CRecordManager::getInstance()->Record(eventinfo); autoshift = CRecordManager::getInstance()->TimeshiftOnly(); } diff --git a/src/nhttpd/tuxboxapi/controlapi.cpp b/src/nhttpd/tuxboxapi/controlapi.cpp index 60cb7c53e..43d769619 100644 --- a/src/nhttpd/tuxboxapi/controlapi.cpp +++ b/src/nhttpd/tuxboxapi/controlapi.cpp @@ -370,17 +370,27 @@ void CControlAPI::SetModeCGI(CyhookHandler *hh) } else if (hh->ParamList["record"] == "start") // start record mode { +#if 0 if(hh->ParamList["stopplayback"] == "true") NeutrinoAPI->Zapit->stopPlayBack(); NeutrinoAPI->Sectionsd->setPauseScanning(true); NeutrinoAPI->Zapit->setRecordMode(true); +#endif + CTimerd::RecordingInfo recinfo; + recinfo.eventID = 0; + NeutrinoAPI->EventServer->sendEvent(NeutrinoMessages::RECORD_START, CEventServer::INITID_HTTPD, (void *)&recinfo, sizeof(CTimerd::RecordingInfo)); } else if (hh->ParamList["record"] == "stop") // stop record mode { +#if 0 NeutrinoAPI->Zapit->setRecordMode(false); NeutrinoAPI->Sectionsd->setPauseScanning(false); if (!NeutrinoAPI->Zapit->isPlayBackActive()) NeutrinoAPI->Zapit->startPlayBack(); +#endif + CTimerd::RecordingInfo recinfo; + recinfo.eventID = 0; // FIXME must present + NeutrinoAPI->EventServer->sendEvent(NeutrinoMessages::RECORD_STOP, CEventServer::INITID_HTTPD, (void *)&recinfo, sizeof(CTimerd::RecordingInfo)); } hh->SendOk(); } diff --git a/src/nhttpd/tuxboxapi/neutrinoapi.cpp b/src/nhttpd/tuxboxapi/neutrinoapi.cpp index 2c4f858d3..52733e5b5 100644 --- a/src/nhttpd/tuxboxapi/neutrinoapi.cpp +++ b/src/nhttpd/tuxboxapi/neutrinoapi.cpp @@ -136,6 +136,8 @@ CNeutrinoAPI::CNeutrinoAPI() EventServer->registerEvent2( NeutrinoMessages::EVT_HDMI_CEC_STANDBY, CEventServer::INITID_HTTPD, "/tmp/neutrino.sock"); EventServer->registerEvent2( NeutrinoMessages::EVT_SET_MUTE, CEventServer::INITID_HTTPD, "/tmp/neutrino.sock"); EventServer->registerEvent2( NeutrinoMessages::EVT_SET_VOLUME, CEventServer::INITID_HTTPD, "/tmp/neutrino.sock"); + EventServer->registerEvent2( NeutrinoMessages::RECORD_START, CEventServer::INITID_HTTPD, "/tmp/neutrino.sock"); + EventServer->registerEvent2( NeutrinoMessages::RECORD_STOP, CEventServer::INITID_HTTPD, "/tmp/neutrino.sock"); pmutex = new OpenThreads::Mutex(OpenThreads::Mutex::MUTEX_RECURSIVE); }