0xc89 0x3
0xc8f 0x3
0xbc7 0x3
-0x436 0x1 #ASTRA 19.2° MTV Euro - MTV Networks
-0x42a 0x1 #ASTRA 19.2° VH1 Classic - MTV Networks
-11000 318 #Hotbird 13.0° Cyfra+
-11900 318
-12200 318
+400 318 #Hotbird 13.0° Cyfra+
1500 318
-400 318
-13000 318
-12800 318
+11000 318
11400 318
-1000 318
-7400 318
+11900 318
+7400 113 #Hotbird 13.0° Cyfrowy Polsat
+7800 113
+7900 113
+13200 113
+1000 318 #Grupa ITI
+1600 318 #Filmbox Polska and other
+12200 318 #Disney Channel Polska and other
+12800 318 #Viacom ... MTV / VH1 Polska
+13000 318 #BBC Polska and other
#Fallback encoding table for following transponders
#TSID ONID ISO8859-X
#0x447 0x1 ISO8859-9
50800 126 ISO8859-9 # Digiturk 7°E 11.678 H 30.000 3/4
50900 126 ISO8859-9 # Skyturk 7°E 11.513 H 27.500 3/4
51000 126 ISO8859-9 # Digiturk 7°E 11.617 V 30.000 3/4
+12800 318 ISO6397 #Viacom ... MTV / VH1 Polska
if ( line[0] == '#' )
continue;
int tsid, onid, encoding;
- if ( sscanf( line, "%s ISO8859-%d", countrycode, &encoding ) == 2 )
+ if ( (sscanf( line, "0x%x 0x%x ISO8859-%d", &tsid, &onid, &encoding ) == 3 )
+ ||(sscanf( line, "%d %d ISO8859-%d", &tsid, &onid, &encoding ) == 3 ) )
+ m_TransponderDefaultMapping[(tsid<<16)|onid]=encoding;
+ else if ( sscanf( line, "%s ISO8859-%d", countrycode, &encoding ) == 2 )
{
m_CountryCodeDefaultMapping[countrycode]=encoding;
countrycode[0]=toupper(countrycode[0]);
countrycode[2]=toupper(countrycode[2]);
m_CountryCodeDefaultMapping[countrycode]=encoding;
}
- else if ( (sscanf( line, "0x%x 0x%x ISO8859-%d", &tsid, &onid, &encoding ) == 3 )
- ||(sscanf( line, "%d %d ISO8859-%d", &tsid, &onid, &encoding ) == 3 ) )
- m_TransponderDefaultMapping[(tsid<<16)|onid]=encoding;
+ else if ( (sscanf( line, "0x%x 0x%x ISO%d", &tsid, &onid, &encoding ) == 3 && encoding == 6397 )
+ ||(sscanf( line, "%d %d ISO%d", &tsid, &onid, &encoding ) == 3 && encoding == 6397 ) )
+ m_TransponderDefaultMapping[(tsid<<16)|onid]=64;
+ else if ( sscanf( line, "%s ISO%d", countrycode, &encoding ) == 2 && encoding == 6397 )
+ {
+ m_CountryCodeDefaultMapping[countrycode]=64;
+ countrycode[0]=toupper(countrycode[0]);
+ countrycode[1]=toupper(countrycode[1]);
+ countrycode[2]=toupper(countrycode[2]);
+ m_CountryCodeDefaultMapping[countrycode]=64;
+ }
else if ( (sscanf( line, "0x%x 0x%x", &tsid, &onid ) == 2 )
||(sscanf( line, "%d %d", &tsid, &onid ) == 2 ) )
m_TransponderUseTwoCharMapping.insert((tsid<<16)|onid);
break;
case 0x10:
{
-// eDebug("(0x10)text encoded in ISO-8859-%d",n);
int n=(data[++i]<<8);
n |= (data[++i]);
+// eDebug("(0x10)text encoded in ISO-8859-%d",n);
++i;
switch(n)
{
bool useTwoCharMapping =
tsidonid && encodingHandler.getTransponderUseTwoCharMapping(tsidonid);
- if (useTwoCharMapping)
- table = 64;
+ if (useTwoCharMapping) {
+ if (table == 5)
+ table = 64;
+ }
unsigned char res[2048];
while (i < len)
if (filename)
{
char buf[255];
- snprintf(buf, 255, "%s.$$$", filename);
+ snprintf(buf, 255, "%s.del", filename);
if (rename(filename, buf)<0)
;/*perror("rename file failed !!!");*/
else
RESULT eTSMPEGDecoder::play()
{
if (m_state == statePlay)
- return 0;
- m_state = statePlay;
- m_changed |= changeState;
+ {
+ if (!m_changed)
+ return 0;
+ }
+ else
+ {
+ m_state = statePlay;
+ m_changed |= changeState;
+ }
return setState();
}
eDVBFrontend::eDVBFrontend(int adap, int fe, int &ok, bool simulate)
:m_simulate(simulate), m_enabled(false), m_type(-1), m_dvbid(fe), m_slotid(fe)
,m_fd(-1), m_need_rotor_workaround(false), m_can_handle_dvbs2(false)
- , m_timeout(0), m_tuneTimer(0)
+ ,m_state(stateClosed), m_timeout(0), m_tuneTimer(0)
#if HAVE_DVB_API_VERSION < 3
,m_secfd(-1)
#endif
int eDVBFrontend::openFrontend()
{
- if (m_sn)
+ if (m_state != stateClosed)
return -1; // already opened
m_state=stateIdle;
state = sec_fe->m_state;
}
// sec_fe is closed... we must reopen it here..
- if (state == eDVBFrontend::stateClosed)
+ if (state == stateClosed)
{
regFE = prev;
prev->inc_use();
bool direct_connected = m_not_linked_slot_mask & slot_id;
int score=0, satcount=0;
long linked_prev_ptr=-1, linked_next_ptr=-1, linked_csw=-1, linked_ucsw=-1, linked_toneburst=-1,
- satpos_depends_ptr=-1, rotor_pos=-1;
+ fe_satpos_depends_ptr=-1, fe_rotor_pos=-1;
bool linked_in_use = false;
eSecDebugNoSimulate("direct_connected %d", !!direct_connected);
fe->getData(eDVBFrontend::LINKED_PREV_PTR, linked_prev_ptr);
fe->getData(eDVBFrontend::LINKED_NEXT_PTR, linked_next_ptr);
- fe->getData(eDVBFrontend::SATPOS_DEPENDS_PTR, satpos_depends_ptr);
+ fe->getData(eDVBFrontend::SATPOS_DEPENDS_PTR, fe_satpos_depends_ptr);
// first we search the linkage base frontend and check if any tuner in prev direction is used
while (linked_prev_ptr != -1)
linked_fe->m_frontend->getData(eDVBFrontend::LINKED_PREV_PTR, (long&)linked_prev_ptr);
}
- fe->getData(eDVBFrontend::ROTOR_POS, rotor_pos);
+ fe->getData(eDVBFrontend::ROTOR_POS, fe_rotor_pos);
// now check also the linked tuners is in use
while (!linked_in_use && linked_next_ptr != -1)
{
bool diseqc=false;
long band=0,
- satpos_depends_ptr=-1,
+ satpos_depends_ptr=fe_satpos_depends_ptr,
csw = di_param.m_committed_cmd,
ucsw = di_param.m_uncommitted_cmd,
- toneburst = di_param.m_toneburst_param;
+ toneburst = di_param.m_toneburst_param,
+ rotor_pos = fe_rotor_pos;
eSecDebugNoSimulate("sat %d found", sat.orbital_position);
eSecDebugNoSimulate("ret2 %d", ret);
if (ret) // special case when this tuner is linked to a satpos dependent tuner
{
- long satpos_depends_ptr=-1;
fe->getData(eDVBFrontend::SATPOS_DEPENDS_PTR, satpos_depends_ptr);
if (satpos_depends_ptr != -1)
{
eDVBRegisteredFrontend *satpos_depends_to_fe = (eDVBRegisteredFrontend*) satpos_depends_ptr;
- long satpos_depends_rotor_pos;
- satpos_depends_to_fe->m_frontend->getData(eDVBFrontend::ROTOR_POS, satpos_depends_rotor_pos);
- if (!rotor || satpos_depends_rotor_pos == -1 /* we dont know the rotor position yet */
- || satpos_depends_rotor_pos != sat.orbital_position ) // not the same orbital position?
+ satpos_depends_to_fe->m_frontend->getData(eDVBFrontend::ROTOR_POS, rotor_pos);
+ if (!rotor || rotor_pos == -1 /* we dont know the rotor position yet */
+ || rotor_pos != sat.orbital_position ) // not the same orbital position?
{
ret = 0;
}
else // current fe is dependent of another tuner ... (so this fe can't turn the rotor!)
{
// get current orb pos of the tuner with rotor connection
- long satpos_depends_rotor_pos;
- satpos_depends_to_fe->m_frontend->getData(eDVBFrontend::ROTOR_POS, satpos_depends_rotor_pos);
- if (!rotor || satpos_depends_rotor_pos == -1 /* we dont know the rotor position yet */
- || satpos_depends_rotor_pos != sat.orbital_position ) // not the same orbital position?
+ satpos_depends_to_fe->m_frontend->getData(eDVBFrontend::ROTOR_POS, rotor_pos);
+ if (!rotor || rotor_pos == -1 /* we dont know the rotor position yet */
+ || rotor_pos != sat.orbital_position ) // not the same orbital position?
{
ret = 0;
}
from Components.config import config
from Tools.Directories import pathExists, fileExists
from Components.Harddisk import harddiskmanager
-from Plugins.SystemPlugins.Hotplug.plugin import hotplugNotifier
import servicedvd # load c++ part of dvd player plugin
})
self.onClose.append(self.__onClose)
+
+ from Plugins.SystemPlugins.Hotplug.plugin import hotplugNotifier
hotplugNotifier.append(self.hotplugCB)
if dvd_device:
def __onClose(self):
self.restore_infobar_seek_config()
self.session.nav.playService(self.oldService)
+ from Plugins.SystemPlugins.Hotplug.plugin import hotplugNotifier
hotplugNotifier.remove(self.hotplugCB)
def playLastCB(self, answer): # overwrite infobar cuesheet function
from Components.config import config
from Tools.Directories import fileExists, pathExists, resolveFilename, SCOPE_CONFIG, SCOPE_PLAYLIST, SCOPE_SKIN_IMAGE
from settings import MediaPlayerSettings
-from Plugins.SystemPlugins.Hotplug.plugin import hotplugNotifier
import random
class MyPlayList(PlayList):
self["repeat"] = MultiPixmap()
self.seek_target = None
+
+ from Plugins.SystemPlugins.Hotplug.plugin import hotplugNotifier
hotplugNotifier.append(self.hotplugCB)
class MoviePlayerActionMap(NumberActionMap):
if config.mediaplayer.saveDirOnExit.getValue():
config.mediaplayer.defaultDir.setValue(self.filelist.getCurrentDirectory())
config.mediaplayer.defaultDir.save()
+ from Plugins.SystemPlugins.Hotplug.plugin import hotplugNotifier
hotplugNotifier.remove(self.hotplugCB)
del self["coverArt"].picload
self.close()
self.filelist.descent()
def use(self):
- if self.filelist.canDescent() and len(self["filelist"].getFilename()) > len(self["filelist"].getCurrentDirectory()):
+ if self.filelist.canDescent() and self["filelist"].getFilename() and len(self["filelist"].getFilename()) > len(self["filelist"].getCurrentDirectory()):
self.filelist.descent()
self.close(self["filelist"].getCurrentDirectory())
from Tools.Directories import resolveFilename, SCOPE_PLUGINS, SCOPE_SKIN_IMAGE
from Tools.LoadPixmap import LoadPixmap
+from time import time
class PluginBrowser(Screen):
def __init__(self, session):
class PluginDownloadBrowser(Screen):
DOWNLOAD = 0
REMOVE = 1
-
+ lastDownloadDate = None
+
def __init__(self, session, type):
Screen.__init__(self, session)
elif self.type == self.REMOVE:
self.setTitle(_("Remove plugins"))
+ def startIpkgListInstalled(self):
+ self.container.execute("ipkg list_installed enigma2-plugin-*")
+
def startRun(self):
self["list"].instance.hide()
if self.type == self.DOWNLOAD:
- self.container.execute("ipkg update")
+ if not PluginDownloadBrowser.lastDownloadDate or (time() - PluginDownloadBrowser.lastDownloadDate) > 3600:
+ # Only update from internet once per hour
+ self.container.execute("ipkg update")
+ PluginDownloadBrowser.lastDownloadDate = time()
+ else:
+ self.startIpkgListInstalled()
elif self.type == self.REMOVE:
self.run = 1
- self.container.execute("ipkg list_installed enigma2-plugin-*")
-
+ self.startIpkgListInstalled()
+
def installFinished(self):
plugins.readPluginList(resolveFilename(SCOPE_PLUGINS))
self.container.appClosed.remove(self.runFinished)
if self.run == 0:
self.run = 1
if self.type == self.DOWNLOAD:
- self.container.execute("ipkg list_installed enigma2-plugin-*")
+ self.startIpkgListInstalled()
elif self.run == 1 and self.type == self.DOWNLOAD:
self.run = 2
self.container.execute("ipkg list enigma2-plugin-*")
self.plugins = {}
for x in self.pluginlist:
- split = x[3].split('-')
+ split = x[3].split('-', 1)
if len(split) < 2:
continue
if not self.plugins.has_key(split[0]):
}, -2)
self.onLayoutFinish.append(self.buildVirtualKeyBoard)
+
+ self.max_key=47+len(self.keys_list[4])
def buildVirtualKeyBoard(self, selectedKey=0):
list = []
elif self.selectedKey == 35:
self.selectedKey = 47
elif self.selectedKey == 47:
- self.selectedKey = 59
+ self.selectedKey = self.max_key
self.showActiveKey()
self.selectedKey = 24
elif self.selectedKey == 48:
self.selectedKey = 36
- elif self.selectedKey == 60:
+ elif self.selectedKey > self.max_key:
self.selectedKey = 48
self.showActiveKey()
def up(self):
self.selectedKey -= 12
- if self.selectedKey < 0:
- self.selectedKey += 60
+ if (self.selectedKey < 0) and (self.selectedKey > (self.max_key-60)):
+ self.selectedKey += 48
+ elif self.selectedKey < 0:
+ self.selectedKey += 60
self.showActiveKey()
def down(self):
self.selectedKey += 12
- if self.selectedKey > 59:
+ if (self.selectedKey > self.max_key) and (self.selectedKey > 59):
self.selectedKey -= 60
+ elif self.selectedKey > self.max_key:
+ self.selectedKey -= 48
self.showActiveKey()
return -1;
if (ffratio == 0)
- return 0; /* return m_decoder->play(); is done in caller*/
+ ; /* return m_decoder->play(); is done in caller*/
else if (ffratio != 1)
return m_decoder->setFastForward(ffratio);
else
{
int ret = selectAudioStream(i);
- if (m_decoder->play())
+ if (m_decoder->set())
return -5;
return ret;
eDebug("set audio pid failed");
return -4;
}
-
- m_decoder->set();
/* if we are not in PVR mode, timeshift is not active and we are not in pip mode, check if we need to enable the rds reader */
if (!(m_is_pvr || m_timeshift_active || !m_is_primary))
m_dvb_service->setCacheEntry(eDVBService::cAPID, apid);
m_dvb_service->setCacheEntry(eDVBService::cAC3PID, -1);
}
- else
+ else if (apidtype == eDVBAudio::aAC3)
{
m_dvb_service->setCacheEntry(eDVBService::cAPID, -1);
m_dvb_service->setCacheEntry(eDVBService::cAC3PID, apid);
}
+ else
+ {
+ m_dvb_service->setCacheEntry(eDVBService::cAPID, -1);
+ m_dvb_service->setCacheEntry(eDVBService::cAC3PID, -1);
+ }
}
h.resetCachedProgram();