Ejemplo n.º 1
0
void eListboxServiceContent::getCurrent(eServiceReference &ref)
{
	if (cursorValid())
		ref = *m_cursor;
	else
		ref = eServiceReference();
}
Ejemplo n.º 2
0
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));
}
Ejemplo n.º 3
0
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));
	}
}
Ejemplo n.º 4
0
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();
}
Ejemplo n.º 5
0
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();
}
Ejemplo n.º 6
0
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;
}
Ejemplo n.º 7
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 );
	}
}
Ejemplo n.º 8
0
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;
		}
	}
	}
}
Ejemplo n.º 9
0
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
}