mirror of
https://github.com/tuxbox-neutrino/neutrino.git
synced 2025-09-01 18:01:13 +02:00
neutrino.cpp: add common code to partially neutrino wakeup / put to sleep;
process EVT_STREAM_START/STOP events
This commit is contained in:
@@ -2484,6 +2484,40 @@ void CNeutrinoApp::zapTo(t_channel_id channel_id)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CNeutrinoApp::wakeupFromStandby(void)
|
||||||
|
{
|
||||||
|
bool alive = recordingstatus || CEpgScan::getInstance()->Running() ||
|
||||||
|
CStreamManager::getInstance()->StreamStatus();
|
||||||
|
|
||||||
|
if ((mode == mode_standby) && !alive) {
|
||||||
|
cpuFreq->SetCpuFreq(g_settings.cpufreq * 1000 * 1000);
|
||||||
|
if(g_settings.ci_standby_reset) {
|
||||||
|
g_CamHandler->exec(NULL, "ca_ci_reset0");
|
||||||
|
g_CamHandler->exec(NULL, "ca_ci_reset1");
|
||||||
|
}
|
||||||
|
g_Zapit->setStandby(false);
|
||||||
|
g_Zapit->getMode();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void CNeutrinoApp::standbyToStandby(void)
|
||||||
|
{
|
||||||
|
bool alive = recordingstatus || CEpgScan::getInstance()->Running() ||
|
||||||
|
CStreamManager::getInstance()->StreamStatus();
|
||||||
|
|
||||||
|
if ((mode == mode_standby) && !alive) {
|
||||||
|
// zap back to pre-recording channel if necessary
|
||||||
|
t_channel_id live_channel_id = CZapit::getInstance()->GetCurrentChannelID();
|
||||||
|
if (standby_channel_id && (live_channel_id != standby_channel_id)) {
|
||||||
|
live_channel_id = standby_channel_id;
|
||||||
|
channelList->zapTo_ChannelID(live_channel_id);
|
||||||
|
}
|
||||||
|
g_Zapit->setStandby(true);
|
||||||
|
g_Sectionsd->setPauseScanning(true);
|
||||||
|
cpuFreq->SetCpuFreq(g_settings.standby_cpufreq * 1000 * 1000);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
int CNeutrinoApp::handleMsg(const neutrino_msg_t _msg, neutrino_msg_data_t data)
|
int CNeutrinoApp::handleMsg(const neutrino_msg_t _msg, neutrino_msg_data_t data)
|
||||||
{
|
{
|
||||||
int res = 0;
|
int res = 0;
|
||||||
@@ -2726,27 +2760,9 @@ int CNeutrinoApp::handleMsg(const neutrino_msg_t _msg, neutrino_msg_data_t data)
|
|||||||
/* sent by rcinput, when got msg from zapit about record activated/deactivated */
|
/* sent by rcinput, when got msg from zapit about record activated/deactivated */
|
||||||
/* should be sent when no record running */
|
/* should be sent when no record running */
|
||||||
printf("NeutrinoMessages::EVT_RECORDMODE: %s\n", ( data ) ? "on" : "off");
|
printf("NeutrinoMessages::EVT_RECORDMODE: %s\n", ( data ) ? "on" : "off");
|
||||||
//if(!CRecordManager::getInstance()->RecordingStatus() && was_record && (!data))
|
|
||||||
|
|
||||||
/* no records left and record mode off FIXME check !*/
|
|
||||||
if(!CRecordManager::getInstance()->RecordingStatus() && (!data))
|
|
||||||
{
|
|
||||||
if(mode == mode_standby) {
|
|
||||||
// zap back to pre-recording channel if necessary
|
|
||||||
t_channel_id live_channel_id = CZapit::getInstance()->GetCurrentChannelID();
|
|
||||||
if (standby_channel_id && (live_channel_id != standby_channel_id)) {
|
|
||||||
live_channel_id = standby_channel_id;
|
|
||||||
channelList->zapTo_ChannelID(live_channel_id);
|
|
||||||
}
|
|
||||||
/* do not put zapit to standby, if epg scan not finished */
|
|
||||||
if (!CEpgScan::getInstance()->Running())
|
|
||||||
g_Zapit->setStandby(true);
|
|
||||||
cpuFreq->SetCpuFreq(g_settings.standby_cpufreq * 1000 * 1000);
|
|
||||||
}
|
|
||||||
/* try to wakeup epg scan */
|
|
||||||
CEpgScan::getInstance()->Next();
|
|
||||||
}
|
|
||||||
recordingstatus = data;
|
recordingstatus = data;
|
||||||
|
CEpgScan::getInstance()->Next();
|
||||||
|
standbyToStandby();
|
||||||
autoshift = CRecordManager::getInstance()->TimeshiftOnly();
|
autoshift = CRecordManager::getInstance()->TimeshiftOnly();
|
||||||
CVFD::getInstance()->ShowIcon(FP_ICON_CAM1, recordingstatus != 0);
|
CVFD::getInstance()->ShowIcon(FP_ICON_CAM1, recordingstatus != 0);
|
||||||
|
|
||||||
@@ -2756,15 +2772,8 @@ int CNeutrinoApp::handleMsg(const neutrino_msg_t _msg, neutrino_msg_data_t data)
|
|||||||
return messages_return::handled;
|
return messages_return::handled;
|
||||||
}
|
}
|
||||||
else if (msg == NeutrinoMessages::RECORD_START) {
|
else if (msg == NeutrinoMessages::RECORD_START) {
|
||||||
|
|
||||||
//FIXME better at announce ?
|
//FIXME better at announce ?
|
||||||
if( mode == mode_standby ) {
|
wakeupFromStandby();
|
||||||
cpuFreq->SetCpuFreq(g_settings.cpufreq * 1000 * 1000);
|
|
||||||
if(!recordingstatus && g_settings.ci_standby_reset) {
|
|
||||||
g_CamHandler->exec(NULL, "ca_ci_reset0");
|
|
||||||
g_CamHandler->exec(NULL, "ca_ci_reset1");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#if 0
|
#if 0
|
||||||
//zap to rec channel if box start from deepstandby
|
//zap to rec channel if box start from deepstandby
|
||||||
if(timer_wakeup){
|
if(timer_wakeup){
|
||||||
@@ -2801,11 +2810,25 @@ int CNeutrinoApp::handleMsg(const neutrino_msg_t _msg, neutrino_msg_data_t data)
|
|||||||
delete[] (unsigned char*) data;
|
delete[] (unsigned char*) data;
|
||||||
return messages_return::handled;
|
return messages_return::handled;
|
||||||
}
|
}
|
||||||
|
else if (msg == NeutrinoMessages::EVT_STREAM_START) {
|
||||||
|
int fd = (int) data;
|
||||||
|
printf("NeutrinoMessages::EVT_STREAM_START: fd %d\n", fd);
|
||||||
|
wakeupFromStandby();
|
||||||
|
|
||||||
|
if (!CStreamManager::getInstance()->AddClient(fd))
|
||||||
|
close(fd);
|
||||||
|
return messages_return::handled;
|
||||||
|
}
|
||||||
|
else if (msg == NeutrinoMessages::EVT_STREAM_STOP) {
|
||||||
|
printf("NeutrinoMessages::EVT_STREAM_STOP\n");
|
||||||
|
CEpgScan::getInstance()->Next();
|
||||||
|
standbyToStandby();
|
||||||
|
return messages_return::handled;
|
||||||
|
}
|
||||||
else if( msg == NeutrinoMessages::EVT_PMT_CHANGED) {
|
else if( msg == NeutrinoMessages::EVT_PMT_CHANGED) {
|
||||||
res = messages_return::handled;
|
|
||||||
t_channel_id channel_id = *(t_channel_id*) data;
|
t_channel_id channel_id = *(t_channel_id*) data;
|
||||||
CRecordManager::getInstance()->Update(channel_id);
|
CRecordManager::getInstance()->Update(channel_id);
|
||||||
return res;
|
return messages_return::handled;
|
||||||
}
|
}
|
||||||
|
|
||||||
else if( msg == NeutrinoMessages::ZAPTO) {
|
else if( msg == NeutrinoMessages::ZAPTO) {
|
||||||
|
@@ -213,6 +213,8 @@ public:
|
|||||||
CPersonalizeGui & getPersonalizeGui() { return personalize; }
|
CPersonalizeGui & getPersonalizeGui() { return personalize; }
|
||||||
bool getChannellistIsVisible() { return channellist_visible; }
|
bool getChannellistIsVisible() { return channellist_visible; }
|
||||||
void zapTo(t_channel_id channel_id);
|
void zapTo(t_channel_id channel_id);
|
||||||
|
void wakeupFromStandby(void);
|
||||||
|
void standbyToStandby(void);
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user