Merge branch 'dvbsi++' of coolstreamtech.de:cst-public-gui-neutrino into dvbsi++

Origin commit data
------------------
Commit: 57fcc92482
Author: [CST] Focus <focus.cst@gmail.com>
Date: 2012-10-29 (Mon, 29 Oct 2012)
This commit is contained in:
[CST] Focus
2012-10-29 17:51:00 +04:00
10 changed files with 112 additions and 93 deletions

View File

@@ -1085,7 +1085,8 @@ printf("[neutrino] CSectionsdClient::EVT_GOT_CN_EPG\n");
break;
case CTimerdClient::EVT_ANNOUNCE_ZAPTO :
*msg = NeutrinoMessages::ANNOUNCE_ZAPTO;
*data = 0;
*data = (neutrino_msg_data_t)p;
dont_delete_p = true;
break;
case CTimerdClient::EVT_ANNOUNCE_SHUTDOWN :
*msg = NeutrinoMessages::ANNOUNCE_SHUTDOWN;

View File

@@ -73,8 +73,10 @@ CVFD::CVFD()
CVFD::~CVFD()
{
if(fd > 0)
if(fd > 0){
close(fd);
fd = -1;
}
}
CVFD* CVFD::getInstance()
@@ -678,7 +680,7 @@ void CVFD::Clear()
void CVFD::ShowIcon(vfd_icon icon, bool show)
{
if(!has_lcd) return;
if(!has_lcd || fd < 0) return;
//printf("CVFD::ShowIcon %s %x\n", show ? "show" : "hide", (int) icon);
int ret = ioctl(fd, show ? IOC_VFD_SET_ICON : IOC_VFD_CLEAR_ICON, icon);
if(ret < 0)

View File

@@ -66,6 +66,8 @@
#define NEUTRINO_RECORDING_ENDED_SCRIPT CONFIGDIR "/recording.end"
#define NEUTRINO_ENTER_STANDBY_SCRIPT CONFIGDIR "/standby.on"
#define NEUTRINO_LEAVE_STANDBY_SCRIPT CONFIGDIR "/standby.off"
#define NEUTRINO_ENTER_DEEPSTANDBY_SCRIPT CONFIGDIR "/deepstandby.on"
#define NEUTRINO_LEAVE_DEEPSTANDBY_SCRIPT CONFIGDIR "/deepstandby.off"
#define MOVIEPLAYER_START_SCRIPT CONFIGDIR "/movieplayer.start"
#define MOVIEPLAYER_END_SCRIPT CONFIGDIR "/movieplayer.end"

View File

@@ -1,16 +1,22 @@
AM_CPPFLAGS = -fno-rtti -fno-exceptions
#AM_CPPFLAGS = -fno-rtti
BUILT_SOURCES = svn_version.h
svn_version.h:
@if test -d .svn ; then \
sleep 180 && rm svn_version.h & echo "#define SVNVERSION \"$$(svnversion -n || echo svn_oops!)\" " > svn_version.h ; \
BUILT_SOURCES = git_version.h
git_version.h: makeversion
@if test -d ../../.git; then \
echo "#define GITVERSION \"$$(git describe --dirty || echo `date` )\" " > git_version.h.tmp ; \
if diff -q git_version.h git_version.h.tmp >/dev/null 2>&1 ; then \
rm -f git_version.h.tmp ; \
else \
rm -f git_version.h ; \
mv git_version.h.tmp git_version.h ; \
fi; \
else \
rm svn_version.h; echo '#define BUILT_DATE "'`date`'"' > svn_version.h ; \
rm git_version.h; echo '#define BUILT_DATE "'`date`'"' > git_version.h ; \
fi
noinst_HEADERS = git_version.h
.PHONY: makeversion
noinst_HEADERS = svn_version.h
SUBDIRS = widget bedit

View File

@@ -337,7 +337,7 @@ int CBouquetList::show(bool bShowChannelList)
CVFD::getInstance()->setMode(CVFD::MODE_MENU_UTF8, "");
fheight = g_Font[SNeutrinoSettings::FONT_TYPE_CHANNELLIST]->getHeight();
width = w_max (need_width, g_Font[SNeutrinoSettings::FONT_TYPE_INFOBAR_SMALL]->getWidth()*52);//500
width = w_max (need_width, 20);//500
height = h_max (16 * fheight, 40);
/* assuming all color icons must have same size */

View File

@@ -39,8 +39,8 @@
#include <system/flashtool.h>
#include <video.h>
#include "svn_version.h"
#define SVN_REV "SVN Rev.:"
#include "git_version.h"
#define GIT_DESC "GIT Desc.:"
#define GIT_REV "GIT Build:"
extern cVideo * videoDecoder;
@@ -92,8 +92,8 @@ void CImageInfo::Init(void)
offset = tmpoffset;
}
}
#ifdef SVNVERSION
int off_tmp = g_Font[font_info]->getRenderWidth(SVN_REV);
#ifdef GITVERSION
int off_tmp = g_Font[font_info]->getRenderWidth(GIT_DESC);
#else
int off_tmp = g_Font[font_info]->getRenderWidth(GIT_REV);
#endif
@@ -206,8 +206,8 @@ void CImageInfo::paint()
const char * version = config.getString("version", "no version").c_str();
const char * docs = config.getString("docs", "http://wiki.neutrino-hd.de").c_str();
const char * forum = config.getString("forum", "http://forum.tuxbox.org").c_str();
#ifdef SVNVERSION
const char * builddate = config.getString("builddate", SVNVERSION).c_str();
#ifdef GITVERSION
const char * builddate = GITVERSION;
#else
const char * builddate = config.getString("builddate", BUILT_DATE).c_str();
#endif
@@ -244,8 +244,8 @@ void CImageInfo::paint()
paintLine(xpos+offset, font_info, Version_Kernel.c_str());
ypos += iheight;
#ifdef SVNVERSION
paintLine(xpos , font_info, SVN_REV);
#ifdef GITVERSION
paintLine(xpos , font_info, GIT_DESC);
#else
paintLine(xpos , font_info, GIT_REV);
#endif

View File

@@ -1751,10 +1751,9 @@ void wake_up( bool &wakeup)
}
printf("[timerd] wakeup from standby: %s\n", wakeup ? "yes" : "no");
if(!wakeup){
const char *neutrino_leave_deepstandby_script = CONFIGDIR "/deepstandby.off";
printf("[%s] executing %s\n",__FILE__ ,neutrino_leave_deepstandby_script);
if (my_system(neutrino_leave_deepstandby_script) != 0)
perror( neutrino_leave_deepstandby_script );
puts("[neutrino.cpp] executing " NEUTRINO_LEAVE_DEEPSTANDBY_SCRIPT ".");
if (my_system(NEUTRINO_LEAVE_DEEPSTANDBY_SCRIPT) != 0)
perror(NEUTRINO_LEAVE_DEEPSTANDBY_SCRIPT " failed");
}
#endif
@@ -1858,9 +1857,9 @@ TIMER_START();
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;
CFanControlNotifier * fanNotifier= new CFanControlNotifier();
fanNotifier->changeNotify(NONEXISTANT_LOCALE, (void*) &g_settings.fan_speed);
delete fanNotifier;
}
dvbsub_init();
@@ -2630,8 +2629,7 @@ _repeat:
return res;
}
else if( msg == NeutrinoMessages::ZAPTO) {
CTimerd::EventInfo * eventinfo;
eventinfo = (CTimerd::EventInfo *) data;
CTimerd::EventInfo * eventinfo = (CTimerd::EventInfo *) data;
if(recordingstatus==0) {
bool isTVMode = CServiceManager::getInstance()->IsChannelTVChannel(eventinfo->channel_id);
@@ -2653,52 +2651,19 @@ _repeat:
standbyMode( false );
}
if( mode != mode_scart ) {
CTimerd::RecordingInfo * eventinfo = (CTimerd::RecordingInfo *) data;
std::string name = g_Locale->getText(LOCALE_ZAPTOTIMER_ANNOUNCE);
CTimerd::TimerList tmpTimerList;
CTimerdClient tmpTimerdClient;
tmpTimerList.clear();
tmpTimerdClient.getTimerList( tmpTimerList );
if( !tmpTimerList.empty() ) {
sort( tmpTimerList.begin(), tmpTimerList.end() );
CTimerd::responseGetTimer &timer = tmpTimerList[0];
name += "\n";
std::string zAddData = CServiceManager::getInstance()->GetServiceName(timer.channel_id);
if( zAddData.empty()) {
zAddData = g_Locale->getText(LOCALE_TIMERLIST_PROGRAM_UNKNOWN);
}
if(timer.epgID!=0) {
CEPGData epgdata;
zAddData += " :\n";
if (CEitManager::getInstance()->getEPGid(timer.epgID, timer.epg_starttime, &epgdata)) {
zAddData += epgdata.title;
}
else if(strlen(timer.epgTitle)!=0) {
zAddData += timer.epgTitle;
}
}
else if(strlen(timer.epgTitle)!=0) {
zAddData += timer.epgTitle;
}
name += zAddData;
}
getAnnounceEpgName( eventinfo, name);
ShowHintUTF( LOCALE_MESSAGEBOX_INFO, name.c_str() );
}
delete [] (unsigned char*) data;
return messages_return::handled;
}
else if( msg == NeutrinoMessages::ANNOUNCE_RECORD) {
my_system(NEUTRINO_RECORDING_TIMER_SCRIPT);
CTimerd::RecordingInfo * eventinfo = (CTimerd::RecordingInfo *) data;
if (g_settings.recording_type == RECORDING_FILE) {
char * recordingDir = ((CTimerd::RecordingInfo*)data)->recordingDir;
char * recordingDir = eventinfo->recordingDir;
for(int i=0 ; i < NETWORK_NFS_NR_OF_ENTRIES ; i++) {
if (strcmp(g_settings.network_nfs_local_dir[i],recordingDir) == 0) {
printf("[neutrino] waking up %s (%s)\n",g_settings.network_nfs_ip[i].c_str(),recordingDir);
@@ -2712,18 +2677,21 @@ _repeat:
}
}
if( g_settings.recording_zap_on_announce && (mode != mode_standby) ) {
if( g_settings.recording_zap_on_announce && (mode != mode_standby) && (eventinfo->channel_id != CZapit::getInstance()->GetCurrentChannelID())) {
//TODO check transponder ?
CRecordManager::getInstance()->StopAutoRecord();
if(!CRecordManager::getInstance()->RecordingStatus()) {
dvbsub_stop(); //FIXME if same channel ?
t_channel_id channel_id=((CTimerd::RecordingInfo*)data)->channel_id;
dvbsub_stop();
t_channel_id channel_id=eventinfo->channel_id;
g_Zapit->zapTo_serviceID_NOWAIT(channel_id);
}
}
if(( mode != mode_scart ) && ( mode != mode_standby )){
std::string name = g_Locale->getText(LOCALE_RECORDTIMER_ANNOUNCE);
getAnnounceEpgName(eventinfo, name);
ShowHintUTF(LOCALE_MESSAGEBOX_INFO, name.c_str());
}
delete[] (unsigned char*) data;
if( mode != mode_scart )
ShowHintUTF(LOCALE_MESSAGEBOX_INFO, g_Locale->getText(LOCALE_RECORDTIMER_ANNOUNCE));
return messages_return::handled;
}
else if( msg == NeutrinoMessages::ANNOUNCE_SLEEPTIMER) {
@@ -2944,10 +2912,9 @@ void CNeutrinoApp::ExitRun(const bool /*write_si*/, int retcode)
saveSetup(NEUTRINO_SETTINGS_FILE);
if(retcode) {
const char *neutrino_enter_deepstandby_script = CONFIGDIR "/deepstandby.on";
printf("[%s] executing %s\n",__FILE__ ,neutrino_enter_deepstandby_script);
if (my_system(neutrino_enter_deepstandby_script) != 0)
perror(neutrino_enter_deepstandby_script );
puts("[neutrino.cpp] executing " NEUTRINO_ENTER_DEEPSTANDBY_SCRIPT ".");
if (my_system(NEUTRINO_ENTER_DEEPSTANDBY_SCRIPT) != 0)
perror(NEUTRINO_ENTER_DEEPSTANDBY_SCRIPT " failed");
printf("entering off state\n");
mode = mode_off;
@@ -3020,9 +2987,9 @@ void CNeutrinoApp::ExitRun(const bool /*write_si*/, int retcode)
powerManager->SetStandby(true, true);
if (g_info.delivery_system == DVB_S && (cs_get_revision() < 8)) {
int fspeed = 0;
CFanControlNotifier * funNotifier= new CFanControlNotifier();
funNotifier->changeNotify(NONEXISTANT_LOCALE, (void *) &fspeed);
delete funNotifier;
CFanControlNotifier * fanNotifier= new CFanControlNotifier();
fanNotifier->changeNotify(NONEXISTANT_LOCALE, (void *) &fspeed);
delete fanNotifier;
}
if (powerManager) {
powerManager->Close();
@@ -3055,8 +3022,8 @@ void CNeutrinoApp::ExitRun(const bool /*write_si*/, int retcode)
//fan speed
if (g_info.has_fan) {
int fspeed = 0;
CFanControlNotifier funNotifier;
funNotifier.changeNotify(NONEXISTANT_LOCALE, (void *) &fspeed);
CFanControlNotifier fanNotifier;
fanNotifier.changeNotify(NONEXISTANT_LOCALE, (void *) &fspeed);
}
//CVFD::getInstance()->ShowText(g_Locale->getText(LOCALE_MAINMENU_REBOOT));
stop_video();
@@ -3245,9 +3212,9 @@ void CNeutrinoApp::standbyMode( bool bOnOff, bool fromDeepStandby )
//fan speed
if (g_info.has_fan) {
int fspeed = 1;
CFanControlNotifier * funNotifier= new CFanControlNotifier();
funNotifier->changeNotify(NONEXISTANT_LOCALE, (void *) &fspeed);
delete funNotifier;
CFanControlNotifier * fanNotifier= new CFanControlNotifier();
fanNotifier->changeNotify(NONEXISTANT_LOCALE, (void *) &fspeed);
delete fanNotifier;
}
frameBuffer->setActive(false);
// Active standby on
@@ -3272,9 +3239,9 @@ void CNeutrinoApp::standbyMode( bool bOnOff, bool fromDeepStandby )
frameBuffer->setActive(true);
//fan speed
if (g_info.has_fan) {
CFanControlNotifier * funNotifier= new CFanControlNotifier();
funNotifier->changeNotify(NONEXISTANT_LOCALE, (void*) &g_settings.fan_speed);
delete funNotifier;
CFanControlNotifier * fanNotifier= new CFanControlNotifier();
fanNotifier->changeNotify(NONEXISTANT_LOCALE, (void*) &g_settings.fan_speed);
delete fanNotifier;
}
puts("[neutrino.cpp] executing " NEUTRINO_LEAVE_STANDBY_SCRIPT ".");
@@ -3870,6 +3837,33 @@ void CNeutrinoApp::SDT_ReloadChannels()
}
}
void CNeutrinoApp::getAnnounceEpgName(CTimerd::RecordingInfo * eventinfo, std::string &name)
{
name += "\n";
std::string zAddData = CServiceManager::getInstance()->GetServiceName(eventinfo->channel_id);
if( zAddData.empty()) {
zAddData = g_Locale->getText(LOCALE_TIMERLIST_PROGRAM_UNKNOWN);
}
if(eventinfo->epgID!=0) {
CEPGData epgdata;
zAddData += " :\n";
if (CEitManager::getInstance()->getEPGid(eventinfo->epgID, eventinfo->epg_starttime, &epgdata)) {
zAddData += epgdata.title;
}
else if(strlen(eventinfo->epgTitle)!=0) {
zAddData += eventinfo->epgTitle;
}
}
else if(strlen(eventinfo->epgTitle)!=0) {
zAddData += eventinfo->epgTitle;
}
name += zAddData;
}
void CNeutrinoApp::Cleanup()
{
#ifdef EXIT_CLEANUP

View File

@@ -136,6 +136,7 @@ private:
void scartMode( bool bOnOff );
void standbyMode( bool bOnOff, bool fromDeepStandby = false );
void saveEpg(bool cvfd_mode);
void getAnnounceEpgName(CTimerd::RecordingInfo * eventinfo, std::string &name);
void ExitRun(const bool write_si = true, int retcode = 0);
void RealRun(CMenuWidget &mainSettings);

View File

@@ -246,14 +246,14 @@ std::string trim(std::string &str, const std::string &trimChars /*= " \n\r\t"*/)
CFileHelpers::CFileHelpers()
{
FileBufSize = 0xFFFF;
FileBuf = (char*)malloc(FileBufSize);
FileBuf = new char[FileBufSize];
doCopyFlag = true;
}
CFileHelpers::~CFileHelpers()
{
if (FileBuf != NULL)
free(FileBuf);
delete [] FileBuf;
}
CFileHelpers* CFileHelpers::getInstance()
@@ -271,7 +271,7 @@ bool CFileHelpers::copyFile(const char *Src, const char *Dst, mode_t mode)
if ((fd1 = open(Src, O_RDONLY)) < 0)
return false;
if ((fd2 = open(Dst, O_WRONLY | O_CREAT)) < 0) {
close(fd2);
close(fd1);
return false;
}
@@ -294,8 +294,11 @@ bool CFileHelpers::copyFile(const char *Src, const char *Dst, mode_t mode)
if (doCopyFlag) {
lseek64(fd2, 0, SEEK_SET);
off64_t fsizeDst64 = lseek64(fd2, 0, SEEK_END);
if (fsizeSrc64 != fsizeDst64)
if (fsizeSrc64 != fsizeDst64){
close(fd1);
close(fd2);
return false;
}
}
}
else { // < 2GB
@@ -316,8 +319,11 @@ bool CFileHelpers::copyFile(const char *Src, const char *Dst, mode_t mode)
if (doCopyFlag) {
lseek(fd2, 0, SEEK_SET);
long fsizeDst = lseek(fd2, 0, SEEK_END);
if (fsizeSrc != fsizeDst)
if (fsizeSrc != fsizeDst){
close(fd1);
close(fd2);
return false;
}
}
}
close(fd1);

View File

@@ -1250,8 +1250,15 @@ void CTimerEvent_Record::Refresh()
//=============================================================
void CTimerEvent_Zapto::announceEvent()
{
Refresh();
CTimerd::RecordingInfo ri=eventInfo;
ri.eventID=eventID;
ri.recordingDir[0] = 0;
strcpy(ri.epgTitle, epgTitle.substr(0,sizeof(ri.epgTitle)-1).c_str());
CTimerManager::getInstance()->getEventServer()->sendEvent(CTimerdClient::EVT_ANNOUNCE_ZAPTO,
CEventServer::INITID_TIMERD);
CEventServer::INITID_TIMERD,
&ri,sizeof(CTimerd::RecordingInfo));
}
//------------------------------------------------------------
void CTimerEvent_Zapto::fireEvent()