void eListboxServiceContent::getCurrent(eServiceReference &ref) { if (cursorValid()) ref = *m_cursor; else ref = eServiceReference(); }
void eServicePlaylistHandler::addFile(void *node, const eString &filename) { if (filename.right(4).upper()==".M3U") eServiceFileHandler::getInstance()->addReference(node, eServiceReference(id, eServiceReference::mustDescent| eServiceReference::canDescent| eServiceReference::sort1, filename)); }
void eServiceHandlerDVB::addFile(void *node, const eString &filename) { if (filename.right(3).upper()==".TS") { // struct stat64 s; // if (::stat64(filename.c_str(), &s)) // return; eServiceFileHandler::getInstance()->addReference(node, eServiceReference(id, 0, filename)); } }
void eListboxServiceContent::getPrev(eServiceReference &ref) { if (cursorValid()) { list::iterator cursor(m_cursor); if (cursor == m_list.begin()) { cursor = m_list.end(); } ref = *(--cursor); } else ref = eServiceReference(); }
void eListboxServiceContent::getNext(eServiceReference &ref) { list::iterator cursor; if (cursorValid()) { cursor = m_cursor; cursor++; if (cursor == m_list.end()) cursor = m_list.begin(); ref = *(cursor); } else ref = eServiceReference(); }
RESULT eServiceFS::getNext(eServiceReference &ptr) { if (!m_list_valid) { m_list_valid = 1; int res = getContent(m_list); if (res) return res; } if (m_list.empty()) { ptr = eServiceReference(); return -ERANGE; } ptr = m_list.front(); m_list.pop_front(); return 0; }
eServiceReference eServicePlaylistHandler::newPlaylist(const eServiceReference &parent, const eServiceReference &ref) { if (parent) { playlists.insert(std::pair<eServiceReference,eServiceReference>(parent, ref)); return ref; } else { int uniqueNum=0; do { timeval now; gettimeofday(&now,0); uniqueNum = now.tv_usec; if ( uniqueNum < 21 && uniqueNum >=0 ) continue; } while( usedUniqueIDs.find( uniqueNum ) != usedUniqueIDs.end() ); usedUniqueIDs.insert(uniqueNum); return eServiceReference( ID, eServiceReference::flagDirectory, 0, uniqueNum ); } }
void eServiceHandlerDVB::loadNode(eServiceCache<eServiceHandlerDVB>::eNode &node, const eServiceReference &ref) { int data = 0xFFFFFFFF; data &= ~(1<<4); // exclude NVOD data &= ~(1<<1); // exclude TV data &= ~(1<<2); // exclude Radio switch (ref.type) { case eServiceReference::idStructure: switch (ref.data[0]) { case eServiceStructureHandler::modeBouquets: break; case eServiceStructureHandler::modeRoot: cache.addToNode(node, eServiceReference(eServiceReference::idDVB, eServiceReference::flagDirectory|eServiceReference::shouldSort, -4, (1<<4)|(1<<1) )); cache.addToNode(node, eServiceReference(eServiceReference::idDVB, eServiceReference::flagDirectory|eServiceReference::shouldSort, -4, 1<<2 )); cache.addToNode(node, eServiceReference(eServiceReference::idDVB, eServiceReference::flagDirectory|eServiceReference::shouldSort, -4, data )); cache.addToNode(node, eServiceReference(eServiceReference::idDVB, eServiceReference::flagDirectory|eServiceReference::shouldSort, -2, (1<<4)|(1<<1), 0xFFFFFFFF )); cache.addToNode(node, eServiceReference(eServiceReference::idDVB, eServiceReference::flagDirectory|eServiceReference::shouldSort, -2, 1<<2, 0xFFFFFFFF )); cache.addToNode(node, eServiceReference(eServiceReference::idDVB, eServiceReference::flagDirectory|eServiceReference::shouldSort, -2, data, 0xFFFFFFFF)); cache.addToNode(node, eServiceReference(eServiceReference::idDVB, eServiceReference::flagDirectory|eServiceReference::shouldSort, -1, (1<<4)|(1<<1), 0xFFFFFFFF )); cache.addToNode(node, eServiceReference(eServiceReference::idDVB, eServiceReference::flagDirectory|eServiceReference::shouldSort, -1, 1<<2, 0xFFFFFFFF )); cache.addToNode(node, eServiceReference(eServiceReference::idDVB, eServiceReference::flagDirectory|eServiceReference::shouldSort, -1, data, 0xFFFFFFFF)); break; case eServiceStructureHandler::modeTvRadio: cache.addToNode(node, eServiceReference(eServiceReference::idDVB, eServiceReference::flagDirectory|eServiceReference::shouldSort, -1, (1<<4)|(1<<1), 0xFFFFFFFF )); cache.addToNode(node, eServiceReference(eServiceReference::idDVB, eServiceReference::flagDirectory|eServiceReference::shouldSort, -1, 1<<2, 0xFFFFFFFF )); cache.addToNode(node, eServiceReference(eServiceReference::idDVB, eServiceReference::flagDirectory|eServiceReference::shouldSort, -2, (1<<4)|(1<<1), 0xFFFFFFFF )); cache.addToNode(node, eServiceReference(eServiceReference::idDVB, eServiceReference::flagDirectory|eServiceReference::shouldSort, -2, 1<<2, 0xFFFFFFFF )); break; case eServiceStructureHandler::modeTV: if ( eSystemInfo::getInstance()->getFEType() == eSystemInfo::feSatellite ) cache.addToNode(node, eServiceReference(eServiceReference::idDVB, eServiceReference::flagDirectory|eServiceReference::shouldSort, -4, (1<<4)|(1<<1) )); cache.addToNode(node, eServiceReference(eServiceReference::idDVB, eServiceReference::flagDirectory|eServiceReference::shouldSort, -2, (1<<4)|(1<<1), 0xFFFFFFFF )); cache.addToNode(node, eServiceReference(eServiceReference::idDVB, eServiceReference::flagDirectory|eServiceReference::shouldSort, -1, (1<<4)|(1<<1), 0xFFFFFFFF )); break; case eServiceStructureHandler::modeRadio: if ( eSystemInfo::getInstance()->getFEType() == eSystemInfo::feSatellite ) cache.addToNode(node, eServiceReference(eServiceReference::idDVB, eServiceReference::flagDirectory|eServiceReference::shouldSort, -4, 1<<2 )); cache.addToNode(node, eServiceReference(eServiceReference::idDVB, eServiceReference::flagDirectory|eServiceReference::shouldSort, -2, 1<<2, 0xFFFFFFFF )); cache.addToNode(node, eServiceReference(eServiceReference::idDVB, eServiceReference::flagDirectory|eServiceReference::shouldSort, -1, 1<<2, 0xFFFFFFFF )); break; case eServiceStructureHandler::modeData: if ( eSystemInfo::getInstance()->getFEType() == eSystemInfo::feSatellite ) cache.addToNode(node, eServiceReference(eServiceReference::idDVB, eServiceReference::flagDirectory|eServiceReference::shouldSort, -4, data )); cache.addToNode(node, eServiceReference(eServiceReference::idDVB, eServiceReference::flagDirectory|eServiceReference::shouldSort, -2, data, 0xFFFFFFFF )); cache.addToNode(node, eServiceReference(eServiceReference::idDVB, eServiceReference::flagDirectory|eServiceReference::shouldSort, -1, data, 0xFFFFFFFF )); break; } break; case eServiceReference::idDVB: switch (ref.data[0]) { case -1: // handle bouquets { std::map<int, eBouquet*> &map=*eDVB::getInstance()->settings->getBouquets(); for (std::map<int, eBouquet*>::iterator x(map.begin()); x != map.end(); ++x) { eBouquet *i = x->second; int flags=eServiceReference::mustDescent|eServiceReference::canDescent|eServiceReference::isDirectory; if (i->bouquet_id >= 0) // sort only automatic generated services flags|=eServiceReference::shouldSort; for ( std::list<eServiceReferenceDVB>::iterator s(i->list.begin()); s != i->list.end(); ++s) { int t = s->getServiceType(); int nspace = ((eServiceReferenceDVB&)*s).getDVBNamespace().get()&0xFFFF0000; if (t < 0) t=0; if (t >= 31) t=31; if ( ref.data[1] & (1<<t) && // right dvb service type ( ( ref.data[2] == (int)0xFFFFFFFF) || // ignore namespace ( (ref.data[2]&(int)0xFFFF0000) == nspace ) // right satellite ) ) { cache.addToNode(node, eServiceReference(eServiceReference::idDVB, flags, -3, ref.data[1], i->bouquet_id, ref.data[2] )); break; } } } break; } case -4: // handle Satellites { static int flags=eServiceReference::mustDescent|eServiceReference::canDescent|eServiceReference::isDirectory|eServiceReference::shouldSort|eServiceReference::hasSortKey; std::set<int> filledSats; eTransponderList::getInstance()->forEachTransponder( eServiceHandlerDVB_SatExist( filledSats )); for ( std::set<int>::iterator it( filledSats.begin()) ; it != filledSats.end(); it++ ) { cache.addToNode(node, eServiceReference(eServiceReference::idDVB, flags, -1, ref.data[1], *it<<16, *it )); cache.addToNode(node, eServiceReference(eServiceReference::idDVB, flags, -2, ref.data[1], *it<<16, *it )); cache.addToNode(node, eServiceReference(eServiceReference::idDVB, flags, -5, ref.data[1], *it<<16, *it )); } cache.addToNode(node, eServiceReference(eServiceReference::idDVB, flags, -6, ref.data[1], 0, 0 )); break; } } } }
void eServiceHandlerDVB::init_eServiceHandlerDVB() { if (eServiceInterface::getInstance()->registerHandler(id, this)<0) eFatal("couldn't register serviceHandler %d", id); CONNECT(eDVB::getInstance()->scrambled, eServiceHandlerDVB::scrambledStatusChanged); CONNECT(eDVB::getInstance()->switchedService, eServiceHandlerDVB::switchedService); CONNECT(eDVB::getInstance()->gotEIT, eServiceHandlerDVB::gotEIT); CONNECT(eDVB::getInstance()->gotSDT, eServiceHandlerDVB::gotSDT); CONNECT(eDVB::getInstance()->gotPMT, eServiceHandlerDVB::gotPMT); CONNECT(eDVB::getInstance()->leaveService, eServiceHandlerDVB::leaveService); #ifndef DISABLE_FILE CONNECT(eDVB::getInstance()->eventOccured, eServiceHandlerDVB::handleDVBEvent); #endif CONNECT(eStreamWatchdog::getInstance()->AspectRatioChanged, eServiceHandlerDVB::aspectRatioChanged); int data = 0xFFFFFFFF; data &= ~(1<<4); // exclude NVOD data &= ~(1<<1); // exclude TV data &= ~(1<<2); // exclude Radio cache.addPersistentService( eServiceReference(eServiceReference::idDVB, eServiceReference::flagDirectory|eServiceReference::shouldSort, -1, (1<<4)|(1<<1), 0xFFFFFFFF), new eService( eString().sprintf("%s (%s)",_("Providers"),_("TV"))) ); cache.addPersistentService( eServiceReference(eServiceReference::idDVB, eServiceReference::flagDirectory|eServiceReference::shouldSort, -1, 1<<2, 0xFFFFFFFF ), new eService( eString().sprintf("%s (%s)",_("Providers"),_("Radio"))) ); cache.addPersistentService( eServiceReference(eServiceReference::idDVB, eServiceReference::flagDirectory|eServiceReference::shouldSort, -1, data, 0xFFFFFFFF), new eService( eString().sprintf("%s (%s)",_("Providers"),_("Data"))) ); cache.addPersistentService( eServiceReference(eServiceReference::idDVB, eServiceReference::flagDirectory|eServiceReference::shouldSort, -2, (1<<4)|(1<<1), 0xFFFFFFFF ), // TV and NVOD new eService( eString().sprintf("%s (%s)",_("All services"),_("TV"))) ); cache.addPersistentService( eServiceReference(eServiceReference::idDVB, eServiceReference::flagDirectory|eServiceReference::shouldSort, -2, 1<<2, 0xFFFFFFFF ), // radio new eService( eString().sprintf("%s (%s)",_("All services"),_("Radio"))) ); cache.addPersistentService( eServiceReference(eServiceReference::idDVB, eServiceReference::flagDirectory|eServiceReference::shouldSort, -2, data, 0xFFFFFFFF), new eService( eString().sprintf("%s (%s)",_("All services"),_("Data"))) ); if ( eSystemInfo::getInstance()->getFEType() == eSystemInfo::feSatellite ) { cache.addPersistentService( eServiceReference(eServiceReference::idDVB, eServiceReference::flagDirectory|eServiceReference::shouldSort, -4, (1<<4)|(1<<1)), new eService( eString().sprintf("%s (%s)",_("Satellites"),_("TV"))) ); cache.addPersistentService( eServiceReference(eServiceReference::idDVB, eServiceReference::flagDirectory|eServiceReference::shouldSort, -4, 1<<2), new eService( eString().sprintf("%s (%s)",_("Satellites"),_("Radio"))) ); cache.addPersistentService( eServiceReference(eServiceReference::idDVB, eServiceReference::flagDirectory|eServiceReference::shouldSort, -4, data), new eService( eString().sprintf("%s (%s)",_("Satellites"),_("Data"))) ); } #ifndef DISABLE_FILE CONNECT(eServiceFileHandler::getInstance()->fileHandlers, eServiceHandlerDVB::addFile); recording=0; CONNECT(messages.recv_msg, eServiceHandlerDVB::gotMessage); #endif }