mirror of
https://github.com/tuxbox-neutrino/neutrino.git
synced 2025-08-29 08:21:12 +02:00
neutrino.cpp: experimental startup changes: split and reorder, add wakeup zapit from standby
This commit is contained in:
468
src/neutrino.cpp
468
src/neutrino.cpp
@@ -1573,17 +1573,17 @@ void CNeutrinoApp::InitZapper()
|
|||||||
struct stat my_stat;
|
struct stat my_stat;
|
||||||
|
|
||||||
g_InfoViewer->start();
|
g_InfoViewer->start();
|
||||||
//SendSectionsdConfig();
|
|
||||||
if (g_settings.epg_save){
|
if (g_settings.epg_save){
|
||||||
if(stat(g_settings.epg_dir.c_str(), &my_stat) == 0)
|
if(stat(g_settings.epg_dir.c_str(), &my_stat) == 0)
|
||||||
g_Sectionsd->readSIfromXML(g_settings.epg_dir.c_str());
|
g_Sectionsd->readSIfromXML(g_settings.epg_dir.c_str());
|
||||||
}
|
}
|
||||||
firstChannel();
|
|
||||||
lastChannelMode = g_settings.channel_mode;
|
lastChannelMode = g_settings.channel_mode;
|
||||||
SDTreloadChannels = false;
|
SDTreloadChannels = false;
|
||||||
channelsInit();
|
channelsInit();
|
||||||
|
|
||||||
if(firstchannel.mode == 't') {
|
int tvmode = CZapit::getInstance()->getMode() & CZapitClient::MODE_TV;
|
||||||
|
if(tvmode)
|
||||||
|
{
|
||||||
tvMode(true);
|
tvMode(true);
|
||||||
} else {
|
} else {
|
||||||
g_RCInput->killTimer(g_InfoViewer->lcdUpdateTimer);
|
g_RCInput->killTimer(g_InfoViewer->lcdUpdateTimer);
|
||||||
@@ -1593,11 +1593,14 @@ void CNeutrinoApp::InitZapper()
|
|||||||
if(g_settings.cacheTXT)
|
if(g_settings.cacheTXT)
|
||||||
tuxtxt_init();
|
tuxtxt_init();
|
||||||
|
|
||||||
|
t_channel_id live_channel_id = CZapit::getInstance()->GetCurrentChannelID();
|
||||||
|
g_Sectionsd->setServiceChanged(live_channel_id, true );
|
||||||
|
#if 0 // mode switch above do zap, so all next should be done after zap complete message
|
||||||
t_channel_id live_channel_id = CZapit::getInstance()->GetCurrentChannelID();
|
t_channel_id live_channel_id = CZapit::getInstance()->GetCurrentChannelID();
|
||||||
if(channelList->getSize() && live_channel_id) {
|
if(channelList->getSize() && live_channel_id) {
|
||||||
channelList->adjustToChannelID(live_channel_id);
|
channelList->adjustToChannelID(live_channel_id);
|
||||||
CVFD::getInstance ()->showServicename(channelList->getActiveChannelName());
|
CVFD::getInstance ()->showServicename(channelList->getActiveChannelName());
|
||||||
g_Sectionsd->setPauseScanning(false);
|
//g_Sectionsd->setPauseScanning(false);
|
||||||
g_Sectionsd->setServiceChanged(live_channel_id, true );
|
g_Sectionsd->setServiceChanged(live_channel_id, true );
|
||||||
g_Zapit->getPIDS(g_RemoteControl->current_PIDs);
|
g_Zapit->getPIDS(g_RemoteControl->current_PIDs);
|
||||||
if(g_settings.cacheTXT)
|
if(g_settings.cacheTXT)
|
||||||
@@ -1608,6 +1611,7 @@ void CNeutrinoApp::InitZapper()
|
|||||||
SelectSubtitles();
|
SelectSubtitles();
|
||||||
StartSubtitles();
|
StartSubtitles();
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void CNeutrinoApp::setupRecordingDevice(void)
|
void CNeutrinoApp::setupRecordingDevice(void)
|
||||||
@@ -1622,231 +1626,9 @@ static void CSSendMessage(uint32_t msg, uint32_t data)
|
|||||||
g_RCInput->postMsg(msg, data);
|
g_RCInput->postMsg(msg, data);
|
||||||
}
|
}
|
||||||
|
|
||||||
extern bool timer_wakeup;//timermanager.cpp
|
void CNeutrinoApp::InitTimerdClient()
|
||||||
int CNeutrinoApp::run(int argc, char **argv)
|
|
||||||
{
|
{
|
||||||
CmdParser(argc, argv);
|
|
||||||
|
|
||||||
cs_api_init();
|
|
||||||
cs_register_messenger(CSSendMessage);
|
|
||||||
|
|
||||||
CHintBox * hintBox;
|
|
||||||
|
|
||||||
int loadSettingsErg = loadSetup(NEUTRINO_SETTINGS_FILE);
|
|
||||||
|
|
||||||
bool display_language_selection;
|
|
||||||
|
|
||||||
initialize_iso639_map();
|
|
||||||
|
|
||||||
CLocaleManager::loadLocale_ret_t loadLocale_ret = g_Locale->loadLocale(g_settings.language);
|
|
||||||
if (loadLocale_ret == CLocaleManager::NO_SUCH_LOCALE)
|
|
||||||
{
|
|
||||||
strcpy(g_settings.language, "english");
|
|
||||||
loadLocale_ret = g_Locale->loadLocale(g_settings.language);
|
|
||||||
display_language_selection = true;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
display_language_selection = false;
|
|
||||||
|
|
||||||
SetupFonts();
|
|
||||||
SetupTiming();
|
|
||||||
g_PicViewer = new CPictureViewer();
|
|
||||||
colorSetupNotifier = new CColorSetupNotifier;
|
|
||||||
colorSetupNotifier->changeNotify(NONEXISTANT_LOCALE, NULL);
|
|
||||||
hintBox = new CHintBox(LOCALE_MESSAGEBOX_INFO, g_Locale->getText(LOCALE_NEUTRINO_STARTING));
|
|
||||||
hintBox->paint();
|
|
||||||
CVFD::getInstance()->init(font.filename, font.name);
|
|
||||||
|
|
||||||
CVFD::getInstance()->Clear();
|
|
||||||
CVFD::getInstance()->ShowText(g_Locale->getText(LOCALE_NEUTRINO_STARTING));
|
|
||||||
|
|
||||||
//zapit start parameters
|
|
||||||
Z_start_arg ZapStart_arg;
|
|
||||||
ZapStart_arg.startchanneltv_id = g_settings.startchanneltv_id;
|
|
||||||
ZapStart_arg.startchannelradio_id = g_settings.startchannelradio_id;
|
|
||||||
ZapStart_arg.startchanneltv_nr = g_settings.startchanneltv_nr;
|
|
||||||
ZapStart_arg.startchannelradio_nr = g_settings.startchannelradio_nr;
|
|
||||||
ZapStart_arg.uselastchannel = g_settings.uselastchannel;
|
|
||||||
ZapStart_arg.video_mode = g_settings.video_Mode;
|
|
||||||
ZapStart_arg.ci_clock = g_settings.ci_clock;
|
|
||||||
|
|
||||||
CZapit::getInstance()->Start(&ZapStart_arg);
|
|
||||||
|
|
||||||
audioSetupNotifier = new CAudioSetupNotifier;
|
|
||||||
//timer start
|
|
||||||
pthread_create (&timer_thread, NULL, timerd_main_thread, (void *) NULL);
|
|
||||||
|
|
||||||
audioDecoder->SetSRS(g_settings.srs_enable, g_settings.srs_nmgr_enable, g_settings.srs_algo, g_settings.srs_ref_volume);
|
|
||||||
audioDecoder->setVolume(g_settings.current_volume, g_settings.current_volume);
|
|
||||||
audioDecoder->SetHdmiDD((HDMI_ENCODED_MODE)g_settings.hdmi_dd);
|
|
||||||
audioDecoder->SetSpdifDD(g_settings.spdif_dd ? true : false);
|
|
||||||
audioDecoder->EnableAnalogOut(g_settings.analog_out ? true : false);
|
|
||||||
|
|
||||||
//init video settings
|
|
||||||
g_videoSettings = new CVideoSettings;
|
|
||||||
g_videoSettings->setVideoSettings();
|
|
||||||
|
|
||||||
init_cec_setting = true;
|
|
||||||
if(!(g_settings.shutdown_timer_record_type && timer_wakeup && g_settings.hdmi_cec_mode)){
|
|
||||||
//init cec settings
|
|
||||||
CCECSetup cecsetup;
|
|
||||||
cecsetup.setCECSettings();
|
|
||||||
init_cec_setting = false;
|
|
||||||
}
|
|
||||||
g_settings.shutdown_timer_record_type = false;
|
|
||||||
timer_wakeup = false;
|
|
||||||
|
|
||||||
// trigger a change
|
|
||||||
audioSetupNotifier->changeNotify(LOCALE_AUDIOMENU_AVSYNC, NULL);
|
|
||||||
|
|
||||||
if(display_language_selection)
|
|
||||||
videoDecoder->ShowPicture(DATADIR "/neutrino/icons/start.jpg");
|
|
||||||
|
|
||||||
powerManager = new cPowerManager;
|
|
||||||
|
|
||||||
if (powerManager) {
|
|
||||||
if (!powerManager->Open())
|
|
||||||
printf("opening powermanager failed\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
cpuFreq = new cCpuFreqManager();
|
|
||||||
cpuFreq->SetCpuFreq(g_settings.cpufreq * 1000 * 1000);
|
|
||||||
|
|
||||||
|
|
||||||
dvbsub_init();
|
|
||||||
|
|
||||||
pthread_create (&nhttpd_thread, NULL, nhttpd_main_thread, (void *) NULL);
|
|
||||||
|
|
||||||
pthread_create (&stream_thread, NULL, streamts_main_thread, (void *) NULL);
|
|
||||||
|
|
||||||
hintBox->hide(); //FIXME
|
|
||||||
hintBox->paint();
|
|
||||||
|
|
||||||
#ifndef DISABLE_SECTIONSD
|
|
||||||
//pthread_create (§ions_thread, NULL, sectionsd_main_thread, (void *) NULL);
|
|
||||||
CSectionsdClient::epg_config config;
|
|
||||||
MakeSectionsdConfig(config);
|
|
||||||
CEitManager::getInstance()->SetConfig(config);
|
|
||||||
CEitManager::getInstance()->Start();
|
|
||||||
#endif
|
|
||||||
g_Zapit = new CZapitClient;
|
|
||||||
|
|
||||||
g_info.delivery_system = g_Zapit->getDeliverySystem();
|
|
||||||
if (!scanSettings.loadSettings(NEUTRINO_SCAN_SETTINGS_FILE, g_info.delivery_system)) {
|
|
||||||
dprintf(DEBUG_NORMAL, "Loading of scan settings failed. Using defaults.\n");
|
|
||||||
}
|
|
||||||
#if HAVE_TRIPLEDRAGON
|
|
||||||
/* only SAT-hd1 before rev 8 has fan, rev 1 is TD (compat hack) */
|
|
||||||
g_info.has_fan = (cs_get_revision() > 1 && cs_get_revision() < 8 && g_info.delivery_system == DVB_S);
|
|
||||||
#else
|
|
||||||
g_info.has_fan = (cs_get_revision() < 8 && g_info.delivery_system == DVB_S);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
dprintf(DEBUG_NORMAL, "g_info.has_fan: %d\n", g_info.has_fan);
|
|
||||||
//fan speed
|
|
||||||
if (g_info.has_fan) {
|
|
||||||
CFanControlNotifier * funNotifier= new CFanControlNotifier();
|
|
||||||
funNotifier->changeNotify(NONEXISTANT_LOCALE, (void*) &g_settings.fan_speed);
|
|
||||||
delete funNotifier;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
CVFD::getInstance()->showVolume(g_settings.current_volume);
|
|
||||||
CVFD::getInstance()->setMuted(current_muted);
|
|
||||||
|
|
||||||
InfoClock = new CInfoClock();
|
|
||||||
if(g_settings.mode_clock)
|
|
||||||
InfoClock->StartClock();
|
|
||||||
|
|
||||||
g_RCInput = new CRCInput;
|
|
||||||
|
|
||||||
g_Sectionsd = new CSectionsdClient;
|
|
||||||
g_Timerd = new CTimerdClient;
|
g_Timerd = new CTimerdClient;
|
||||||
|
|
||||||
g_RemoteControl = new CRemoteControl;
|
|
||||||
g_EpgData = new CEpgData;
|
|
||||||
g_InfoViewer = new CInfoViewer;
|
|
||||||
g_EventList = new CNeutrinoEventList;
|
|
||||||
|
|
||||||
int dx = 0;
|
|
||||||
int dy = 0;
|
|
||||||
frameBuffer->getIconSize(NEUTRINO_ICON_VOLUME,&dx,&dy);
|
|
||||||
g_volscale = new CProgressBar(true, dy * 125 / 10, dy, 50, 100, 80, true);
|
|
||||||
g_CamHandler = new CCAMMenuHandler();
|
|
||||||
g_CamHandler->init();
|
|
||||||
|
|
||||||
g_PluginList = new CPlugins;
|
|
||||||
g_PluginList->setPluginDir(PLUGINDIR);
|
|
||||||
|
|
||||||
|
|
||||||
CFSMounter::automount();
|
|
||||||
//load Pluginlist before main menu (only show script menu if at least one script is available
|
|
||||||
g_PluginList->loadPlugins();
|
|
||||||
|
|
||||||
MoviePluginChanger = new CMoviePluginChangeExec;
|
|
||||||
|
|
||||||
// setup recording device
|
|
||||||
setupRecordingDevice();
|
|
||||||
|
|
||||||
dprintf( DEBUG_NORMAL, "menue setup\n");
|
|
||||||
//init Menues
|
|
||||||
InitMenu();
|
|
||||||
|
|
||||||
#if 0 //ndef DISABLE_SECTIONSD
|
|
||||||
/* wait for sectionsd to be able to process our registration */
|
|
||||||
time_t t = time_monotonic_ms();
|
|
||||||
while (! sectionsd_isReady())
|
|
||||||
sleep(0);
|
|
||||||
dprintf(DEBUG_NORMAL, "had to wait %ld ms for sectionsd to start up\n", time_monotonic_ms() - t);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
dprintf( DEBUG_NORMAL, "registering as event client\n");
|
|
||||||
|
|
||||||
g_Sectionsd->registerEvent(CSectionsdClient::EVT_TIMESET, 222, NEUTRINO_UDS_NAME);
|
|
||||||
g_Sectionsd->registerEvent(CSectionsdClient::EVT_GOT_CN_EPG, 222, NEUTRINO_UDS_NAME);
|
|
||||||
//g_Sectionsd->registerEvent(CSectionsdClient::EVT_SERVICES_UPDATE, 222, NEUTRINO_UDS_NAME);
|
|
||||||
//g_Sectionsd->registerEvent(CSectionsdClient::EVT_BOUQUETS_UPDATE, 222, NEUTRINO_UDS_NAME);
|
|
||||||
g_Sectionsd->registerEvent(CSectionsdClient::EVT_WRITE_SI_FINISHED, 222, NEUTRINO_UDS_NAME);
|
|
||||||
|
|
||||||
#define ZAPIT_EVENT_COUNT 31
|
|
||||||
const CZapitClient::events zapit_event[ZAPIT_EVENT_COUNT] =
|
|
||||||
{
|
|
||||||
CZapitClient::EVT_ZAP_COMPLETE,
|
|
||||||
CZapitClient::EVT_ZAP_COMPLETE_IS_NVOD,
|
|
||||||
CZapitClient::EVT_ZAP_FAILED,
|
|
||||||
CZapitClient::EVT_ZAP_SUB_COMPLETE,
|
|
||||||
CZapitClient::EVT_ZAP_SUB_FAILED,
|
|
||||||
CZapitClient::EVT_ZAP_MOTOR,
|
|
||||||
CZapitClient::EVT_ZAP_CA_CLEAR,
|
|
||||||
CZapitClient::EVT_ZAP_CA_LOCK,
|
|
||||||
CZapitClient::EVT_ZAP_CA_FTA,
|
|
||||||
CZapitClient::EVT_ZAP_CA_ID,
|
|
||||||
CZapitClient::EVT_RECORDMODE_ACTIVATED,
|
|
||||||
CZapitClient::EVT_RECORDMODE_DEACTIVATED,
|
|
||||||
CZapitClient::EVT_SCAN_COMPLETE,
|
|
||||||
CZapitClient::EVT_SCAN_FAILED,
|
|
||||||
CZapitClient::EVT_SCAN_NUM_TRANSPONDERS,
|
|
||||||
CZapitClient::EVT_SCAN_REPORT_NUM_SCANNED_TRANSPONDERS,
|
|
||||||
CZapitClient::EVT_SCAN_REPORT_FREQUENCY,
|
|
||||||
CZapitClient::EVT_SCAN_REPORT_FREQUENCYP,
|
|
||||||
CZapitClient::EVT_SCAN_SATELLITE,
|
|
||||||
CZapitClient::EVT_SCAN_NUM_CHANNELS,
|
|
||||||
CZapitClient::EVT_SCAN_PROVIDER,
|
|
||||||
CZapitClient::EVT_BOUQUETS_CHANGED,
|
|
||||||
CZapitClient::EVT_SERVICES_CHANGED,
|
|
||||||
CZapitClient::EVT_SCAN_SERVICENAME,
|
|
||||||
CZapitClient::EVT_SCAN_FOUND_A_CHAN,
|
|
||||||
CZapitClient::EVT_SCAN_FOUND_TV_CHAN,
|
|
||||||
CZapitClient::EVT_SCAN_FOUND_RADIO_CHAN,
|
|
||||||
CZapitClient::EVT_SCAN_FOUND_DATA_CHAN,
|
|
||||||
CZapitClient::EVT_SDT_CHANGED,
|
|
||||||
CZapitClient::EVT_PMT_CHANGED,
|
|
||||||
CZapitClient::EVT_TUNE_COMPLETE,
|
|
||||||
};
|
|
||||||
|
|
||||||
for (int i = 0; i < ZAPIT_EVENT_COUNT; i++)
|
|
||||||
g_Zapit->registerEvent(zapit_event[i], 222, NEUTRINO_UDS_NAME);
|
|
||||||
|
|
||||||
g_Timerd->registerEvent(CTimerdClient::EVT_ANNOUNCE_SHUTDOWN, 222, NEUTRINO_UDS_NAME);
|
g_Timerd->registerEvent(CTimerdClient::EVT_ANNOUNCE_SHUTDOWN, 222, NEUTRINO_UDS_NAME);
|
||||||
g_Timerd->registerEvent(CTimerdClient::EVT_SHUTDOWN, 222, NEUTRINO_UDS_NAME);
|
g_Timerd->registerEvent(CTimerdClient::EVT_SHUTDOWN, 222, NEUTRINO_UDS_NAME);
|
||||||
g_Timerd->registerEvent(CTimerdClient::EVT_ANNOUNCE_NEXTPROGRAM, 222, NEUTRINO_UDS_NAME);
|
g_Timerd->registerEvent(CTimerdClient::EVT_ANNOUNCE_NEXTPROGRAM, 222, NEUTRINO_UDS_NAME);
|
||||||
@@ -1862,7 +1644,227 @@ int CNeutrinoApp::run(int argc, char **argv)
|
|||||||
g_Timerd->registerEvent(CTimerdClient::EVT_ANNOUNCE_SLEEPTIMER, 222, NEUTRINO_UDS_NAME);
|
g_Timerd->registerEvent(CTimerdClient::EVT_ANNOUNCE_SLEEPTIMER, 222, NEUTRINO_UDS_NAME);
|
||||||
g_Timerd->registerEvent(CTimerdClient::EVT_REMIND, 222, NEUTRINO_UDS_NAME);
|
g_Timerd->registerEvent(CTimerdClient::EVT_REMIND, 222, NEUTRINO_UDS_NAME);
|
||||||
g_Timerd->registerEvent(CTimerdClient::EVT_EXEC_PLUGIN, 222, NEUTRINO_UDS_NAME);
|
g_Timerd->registerEvent(CTimerdClient::EVT_EXEC_PLUGIN, 222, NEUTRINO_UDS_NAME);
|
||||||
|
}
|
||||||
|
|
||||||
|
void CNeutrinoApp::InitZapitClient()
|
||||||
|
{
|
||||||
|
g_Zapit = new CZapitClient;
|
||||||
|
#define ZAPIT_EVENT_COUNT 27
|
||||||
|
const CZapitClient::events zapit_event[ZAPIT_EVENT_COUNT] =
|
||||||
|
{
|
||||||
|
CZapitClient::EVT_ZAP_COMPLETE,
|
||||||
|
CZapitClient::EVT_ZAP_COMPLETE_IS_NVOD,
|
||||||
|
CZapitClient::EVT_ZAP_FAILED,
|
||||||
|
CZapitClient::EVT_ZAP_SUB_COMPLETE,
|
||||||
|
CZapitClient::EVT_ZAP_SUB_FAILED,
|
||||||
|
CZapitClient::EVT_ZAP_MOTOR,
|
||||||
|
#if 0
|
||||||
|
CZapitClient::EVT_ZAP_CA_CLEAR,
|
||||||
|
CZapitClient::EVT_ZAP_CA_LOCK,
|
||||||
|
CZapitClient::EVT_ZAP_CA_FTA,
|
||||||
|
#endif
|
||||||
|
CZapitClient::EVT_ZAP_CA_ID,
|
||||||
|
CZapitClient::EVT_RECORDMODE_ACTIVATED,
|
||||||
|
CZapitClient::EVT_RECORDMODE_DEACTIVATED,
|
||||||
|
CZapitClient::EVT_SCAN_COMPLETE,
|
||||||
|
CZapitClient::EVT_SCAN_FAILED,
|
||||||
|
CZapitClient::EVT_SCAN_NUM_TRANSPONDERS,
|
||||||
|
CZapitClient::EVT_SCAN_REPORT_NUM_SCANNED_TRANSPONDERS,
|
||||||
|
CZapitClient::EVT_SCAN_REPORT_FREQUENCY,
|
||||||
|
CZapitClient::EVT_SCAN_REPORT_FREQUENCYP,
|
||||||
|
CZapitClient::EVT_SCAN_SATELLITE,
|
||||||
|
CZapitClient::EVT_SCAN_NUM_CHANNELS,
|
||||||
|
CZapitClient::EVT_SCAN_PROVIDER,
|
||||||
|
CZapitClient::EVT_BOUQUETS_CHANGED,
|
||||||
|
CZapitClient::EVT_SERVICES_CHANGED,
|
||||||
|
CZapitClient::EVT_SCAN_SERVICENAME,
|
||||||
|
#if 0
|
||||||
|
CZapitClient::EVT_SCAN_FOUND_A_CHAN,
|
||||||
|
#endif
|
||||||
|
CZapitClient::EVT_SCAN_FOUND_TV_CHAN,
|
||||||
|
CZapitClient::EVT_SCAN_FOUND_RADIO_CHAN,
|
||||||
|
CZapitClient::EVT_SCAN_FOUND_DATA_CHAN,
|
||||||
|
CZapitClient::EVT_SDT_CHANGED,
|
||||||
|
CZapitClient::EVT_PMT_CHANGED,
|
||||||
|
CZapitClient::EVT_TUNE_COMPLETE,
|
||||||
|
};
|
||||||
|
|
||||||
|
for (int i = 0; i < ZAPIT_EVENT_COUNT; i++)
|
||||||
|
g_Zapit->registerEvent(zapit_event[i], 222, NEUTRINO_UDS_NAME);
|
||||||
|
}
|
||||||
|
|
||||||
|
void CNeutrinoApp::InitSectiondClient()
|
||||||
|
{
|
||||||
|
g_Sectionsd = new CSectionsdClient;
|
||||||
|
g_Sectionsd->registerEvent(CSectionsdClient::EVT_TIMESET, 222, NEUTRINO_UDS_NAME);
|
||||||
|
g_Sectionsd->registerEvent(CSectionsdClient::EVT_GOT_CN_EPG, 222, NEUTRINO_UDS_NAME);
|
||||||
|
g_Sectionsd->registerEvent(CSectionsdClient::EVT_WRITE_SI_FINISHED, 222, NEUTRINO_UDS_NAME);
|
||||||
|
}
|
||||||
|
|
||||||
|
extern bool timer_wakeup;//timermanager.cpp
|
||||||
|
int CNeutrinoApp::run(int argc, char **argv)
|
||||||
|
{
|
||||||
|
CmdParser(argc, argv);
|
||||||
|
|
||||||
|
TIMER_START();
|
||||||
|
cs_api_init();
|
||||||
|
cs_register_messenger(CSSendMessage);
|
||||||
|
|
||||||
|
int loadSettingsErg = loadSetup(NEUTRINO_SETTINGS_FILE);
|
||||||
|
|
||||||
|
initialize_iso639_map();
|
||||||
|
|
||||||
|
bool display_language_selection = false;
|
||||||
|
CLocaleManager::loadLocale_ret_t loadLocale_ret = g_Locale->loadLocale(g_settings.language);
|
||||||
|
if (loadLocale_ret == CLocaleManager::NO_SUCH_LOCALE)
|
||||||
|
{
|
||||||
|
strcpy(g_settings.language, "english");
|
||||||
|
loadLocale_ret = g_Locale->loadLocale(g_settings.language);
|
||||||
|
display_language_selection = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* setup GUI */
|
||||||
|
SetupFonts();
|
||||||
|
SetupTiming();
|
||||||
|
g_PicViewer = new CPictureViewer();
|
||||||
|
colorSetupNotifier = new CColorSetupNotifier;
|
||||||
|
colorSetupNotifier->changeNotify(NONEXISTANT_LOCALE, NULL);
|
||||||
|
|
||||||
|
CHintBox * hintBox = new CHintBox(LOCALE_MESSAGEBOX_INFO, g_Locale->getText(LOCALE_NEUTRINO_STARTING));
|
||||||
|
hintBox->paint();
|
||||||
|
|
||||||
|
CVFD::getInstance()->init(font.filename, font.name);
|
||||||
|
CVFD::getInstance()->Clear();
|
||||||
|
CVFD::getInstance()->ShowText(g_Locale->getText(LOCALE_NEUTRINO_STARTING));
|
||||||
|
|
||||||
|
//zapit start parameters
|
||||||
|
Z_start_arg ZapStart_arg;
|
||||||
|
ZapStart_arg.startchanneltv_id = g_settings.startchanneltv_id;
|
||||||
|
ZapStart_arg.startchannelradio_id = g_settings.startchannelradio_id;
|
||||||
|
ZapStart_arg.startchanneltv_nr = g_settings.startchanneltv_nr;
|
||||||
|
ZapStart_arg.startchannelradio_nr = g_settings.startchannelradio_nr;
|
||||||
|
ZapStart_arg.uselastchannel = g_settings.uselastchannel;
|
||||||
|
ZapStart_arg.video_mode = g_settings.video_Mode;
|
||||||
|
ZapStart_arg.ci_clock = g_settings.ci_clock;
|
||||||
|
|
||||||
|
/* create decoders, read channels */
|
||||||
|
CZapit::getInstance()->Start(&ZapStart_arg);
|
||||||
|
|
||||||
|
// init audio settings
|
||||||
|
audioDecoder->SetSRS(g_settings.srs_enable, g_settings.srs_nmgr_enable, g_settings.srs_algo, g_settings.srs_ref_volume);
|
||||||
|
audioDecoder->setVolume(g_settings.current_volume, g_settings.current_volume);
|
||||||
|
audioDecoder->SetHdmiDD((HDMI_ENCODED_MODE)g_settings.hdmi_dd);
|
||||||
|
audioDecoder->SetSpdifDD(g_settings.spdif_dd ? true : false);
|
||||||
|
audioDecoder->EnableAnalogOut(g_settings.analog_out ? true : false);
|
||||||
|
audioSetupNotifier = new CAudioSetupNotifier;
|
||||||
|
// trigger a change
|
||||||
|
if(g_settings.avsync != (AVSYNC_TYPE) AVSYNC_ENABLED)
|
||||||
|
audioSetupNotifier->changeNotify(LOCALE_AUDIOMENU_AVSYNC, NULL);
|
||||||
|
|
||||||
|
//init video settings
|
||||||
|
g_videoSettings = new CVideoSettings;
|
||||||
|
g_videoSettings->setVideoSettings();
|
||||||
|
if(display_language_selection)
|
||||||
|
videoDecoder->ShowPicture(DATADIR "/neutrino/icons/start.jpg");
|
||||||
|
|
||||||
|
g_RCInput = new CRCInput();
|
||||||
|
|
||||||
|
InitZapitClient();
|
||||||
|
g_Zapit->setStandby(false);
|
||||||
|
|
||||||
|
//timer start
|
||||||
|
pthread_create (&timer_thread, NULL, timerd_main_thread, (void *) NULL);
|
||||||
|
|
||||||
|
init_cec_setting = true;
|
||||||
|
if(!(g_settings.shutdown_timer_record_type && timer_wakeup && g_settings.hdmi_cec_mode)){
|
||||||
|
//init cec settings
|
||||||
|
CCECSetup cecsetup;
|
||||||
|
cecsetup.setCECSettings();
|
||||||
|
init_cec_setting = false;
|
||||||
|
}
|
||||||
|
g_settings.shutdown_timer_record_type = false;
|
||||||
|
timer_wakeup = false;
|
||||||
|
|
||||||
|
powerManager = new cPowerManager;
|
||||||
|
powerManager->Open();
|
||||||
|
|
||||||
|
cpuFreq = new cCpuFreqManager();
|
||||||
|
cpuFreq->SetCpuFreq(g_settings.cpufreq * 1000 * 1000);
|
||||||
|
#if HAVE_TRIPLEDRAGON
|
||||||
|
/* only SAT-hd1 before rev 8 has fan, rev 1 is TD (compat hack) */
|
||||||
|
g_info.has_fan = (cs_get_revision() > 1 && cs_get_revision() < 8 && g_info.delivery_system == DVB_S);
|
||||||
|
#else
|
||||||
|
g_info.has_fan = (cs_get_revision() < 8 && g_info.delivery_system == DVB_S);
|
||||||
|
#endif
|
||||||
|
dprintf(DEBUG_NORMAL, "g_info.has_fan: %d\n", g_info.has_fan);
|
||||||
|
//fan speed
|
||||||
|
if (g_info.has_fan) {
|
||||||
|
CFanControlNotifier * funNotifier= new CFanControlNotifier();
|
||||||
|
funNotifier->changeNotify(NONEXISTANT_LOCALE, (void*) &g_settings.fan_speed);
|
||||||
|
delete funNotifier;
|
||||||
|
}
|
||||||
|
|
||||||
|
dvbsub_init();
|
||||||
|
|
||||||
|
pthread_create (&nhttpd_thread, NULL, nhttpd_main_thread, (void *) NULL);
|
||||||
|
|
||||||
|
pthread_create (&stream_thread, NULL, streamts_main_thread, (void *) NULL);
|
||||||
|
|
||||||
|
#ifndef DISABLE_SECTIONSD
|
||||||
|
CSectionsdClient::epg_config config;
|
||||||
|
MakeSectionsdConfig(config);
|
||||||
|
CEitManager::getInstance()->SetConfig(config);
|
||||||
|
CEitManager::getInstance()->Start();
|
||||||
|
#endif
|
||||||
|
|
||||||
|
g_info.delivery_system = CFEManager::getInstance()->getLiveFE()->getInfo()->type == FE_QPSK ? DVB_S : DVB_C;
|
||||||
|
if (!scanSettings.loadSettings(NEUTRINO_SCAN_SETTINGS_FILE, g_info.delivery_system)) {
|
||||||
|
dprintf(DEBUG_NORMAL, "Loading of scan settings failed. Using defaults.\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
CVFD::getInstance()->showVolume(g_settings.current_volume);
|
||||||
|
CVFD::getInstance()->setMuted(current_muted);
|
||||||
|
|
||||||
|
InfoClock = new CInfoClock();
|
||||||
|
if(g_settings.mode_clock)
|
||||||
|
InfoClock->StartClock();
|
||||||
|
|
||||||
|
//g_RCInput = new CRCInput();
|
||||||
|
|
||||||
|
g_RemoteControl = new CRemoteControl;
|
||||||
|
g_EpgData = new CEpgData;
|
||||||
|
g_InfoViewer = new CInfoViewer;
|
||||||
|
g_EventList = new CNeutrinoEventList;
|
||||||
|
|
||||||
|
int dx, dy;
|
||||||
|
frameBuffer->getIconSize(NEUTRINO_ICON_VOLUME, &dx, &dy);
|
||||||
|
g_volscale = new CProgressBar(true, dy * 125 / 10, dy, 50, 100, 80, true);
|
||||||
|
|
||||||
|
g_CamHandler = new CCAMMenuHandler();
|
||||||
|
g_CamHandler->init();
|
||||||
|
|
||||||
|
CFSMounter::automount();
|
||||||
|
g_PluginList = new CPlugins;
|
||||||
|
g_PluginList->setPluginDir(PLUGINDIR);
|
||||||
|
//load Pluginlist before main menu (only show script menu if at least one script is available
|
||||||
|
g_PluginList->loadPlugins();
|
||||||
|
|
||||||
|
MoviePluginChanger = new CMoviePluginChangeExec;
|
||||||
|
|
||||||
|
// setup recording device
|
||||||
|
setupRecordingDevice();
|
||||||
|
|
||||||
|
dprintf( DEBUG_NORMAL, "menue setup\n");
|
||||||
|
//init Menues
|
||||||
|
InitMenu();
|
||||||
|
|
||||||
|
dprintf( DEBUG_NORMAL, "registering as event client\n");
|
||||||
|
|
||||||
|
#ifndef DISABLE_SECTIONSD
|
||||||
|
InitSectiondClient();
|
||||||
|
#endif
|
||||||
|
|
||||||
|
InitTimerdClient();
|
||||||
|
|
||||||
if (display_language_selection)
|
if (display_language_selection)
|
||||||
{
|
{
|
||||||
@@ -1875,9 +1877,9 @@ int CNeutrinoApp::run(int argc, char **argv)
|
|||||||
{
|
{
|
||||||
//open video settings in wizardmode
|
//open video settings in wizardmode
|
||||||
g_videoSettings->setWizardMode(CVideoSettings::V_SETUP_MODE_WIZARD);
|
g_videoSettings->setWizardMode(CVideoSettings::V_SETUP_MODE_WIZARD);
|
||||||
|
|
||||||
COsdSetup osdSettings(COsdSetup::OSD_SETUP_MODE_WIZARD);
|
COsdSetup osdSettings(COsdSetup::OSD_SETUP_MODE_WIZARD);
|
||||||
|
|
||||||
bool ret = g_videoSettings->exec(NULL, "");
|
bool ret = g_videoSettings->exec(NULL, "");
|
||||||
g_videoSettings->setWizardMode(CVideoSettings::V_SETUP_MODE_WIZARD_NO);
|
g_videoSettings->setWizardMode(CVideoSettings::V_SETUP_MODE_WIZARD_NO);
|
||||||
|
|
||||||
@@ -1931,6 +1933,7 @@ int CNeutrinoApp::run(int argc, char **argv)
|
|||||||
hintBox->hide();
|
hintBox->hide();
|
||||||
delete hintBox;
|
delete hintBox;
|
||||||
|
|
||||||
|
TIMER_STOP("################################## after all ##################################");
|
||||||
RealRun(personalize.getWidget(0)/**main**/);
|
RealRun(personalize.getWidget(0)/**main**/);
|
||||||
|
|
||||||
ExitRun(true, (cs_get_revision() > 7));
|
ExitRun(true, (cs_get_revision() > 7));
|
||||||
@@ -3622,11 +3625,15 @@ int CNeutrinoApp::exec(CMenuTarget* parent, const std::string & actionKey)
|
|||||||
delete frameBuffer;
|
delete frameBuffer;
|
||||||
|
|
||||||
stop_daemons(true);
|
stop_daemons(true);
|
||||||
|
delete videoDecoder;
|
||||||
|
cs_api_exit();
|
||||||
/* g_Timerd, g_Zapit and CVFD are used in stop_daemons */
|
/* g_Timerd, g_Zapit and CVFD are used in stop_daemons */
|
||||||
delete g_Timerd;
|
delete g_Timerd;
|
||||||
delete g_Zapit; //do we really need this?
|
delete g_Zapit; //do we really need this?
|
||||||
delete CVFD::getInstance();
|
delete CVFD::getInstance();
|
||||||
|
|
||||||
|
for(int i = 3; i < 256; i++)
|
||||||
|
close(i);
|
||||||
execvp(global_argv[0], global_argv); // no return if successful
|
execvp(global_argv[0], global_argv); // no return if successful
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
@@ -3765,9 +3772,10 @@ int main(int argc, char **argv)
|
|||||||
signal(SIGHUP, SIG_IGN); // process are unspecified (signal(2))
|
signal(SIGHUP, SIG_IGN); // process are unspecified (signal(2))
|
||||||
/* don't die in streamts.cpp from a SIGPIPE if client disconnects */
|
/* don't die in streamts.cpp from a SIGPIPE if client disconnects */
|
||||||
signal(SIGPIPE, SIG_IGN);
|
signal(SIGPIPE, SIG_IGN);
|
||||||
|
#if 0
|
||||||
for(int i = 3; i < 256; i++)
|
for(int i = 3; i < 256; i++)
|
||||||
close(i);
|
close(i);
|
||||||
|
#endif
|
||||||
tzset();
|
tzset();
|
||||||
initGlobals();
|
initGlobals();
|
||||||
|
|
||||||
|
@@ -161,13 +161,16 @@ private:
|
|||||||
void ExitRun(const bool write_si = true, int retcode = 0);
|
void ExitRun(const bool write_si = true, int retcode = 0);
|
||||||
void RealRun(CMenuWidget &mainSettings);
|
void RealRun(CMenuWidget &mainSettings);
|
||||||
void InitZapper();
|
void InitZapper();
|
||||||
|
void InitTimerdClient();
|
||||||
|
void InitZapitClient();
|
||||||
|
void InitSectiondClient();
|
||||||
|
|
||||||
//menues
|
//menues
|
||||||
void InitMenu();
|
void InitMenu();
|
||||||
void InitMenuMain();
|
void InitMenuMain();
|
||||||
void InitMenuSettings();
|
void InitMenuSettings();
|
||||||
void InitMenuService();
|
void InitMenuService();
|
||||||
|
|
||||||
void SetupFrameBuffer();
|
void SetupFrameBuffer();
|
||||||
void CmdParser(int argc, char **argv);
|
void CmdParser(int argc, char **argv);
|
||||||
CNeutrinoApp();
|
CNeutrinoApp();
|
||||||
|
Reference in New Issue
Block a user