예제 #1
0
void CFEManager::Open()
{
	for(fe_map_iterator_t it = femap.begin(); it != femap.end(); it++) {
		CFrontend * fe = it->second;
		if(!fe->Locked())
			fe->Open(true);
	}
}
예제 #2
0
bool CFEManager::Init()
{
	CFrontend * fe;
	unsigned short fekey;

	OpenThreads::ScopedLock<OpenThreads::Mutex> m_lock(mutex);
	have_sat = have_cable = have_terr = false;
	for(int i = 0; i < MAX_ADAPTERS; i++) {
		for(int j = 0; j < MAX_FE; j++) {
			fe = new CFrontend(j, i);
			if(fe->Open()) {
				fekey = MAKE_FE_KEY(i, j);
				femap.insert(std::pair <unsigned short, CFrontend*> (fekey, fe));
				INFO("add fe %d", fe->fenumber);
				if(livefe == NULL)
					livefe = fe;
				if (fe->hasSat())
					have_sat = true;
				if (fe->hasCable())
					have_cable = true;
				if (fe->hasTerr())
					have_terr = true;
			} else
				delete fe;
		}
	}
	for (unsigned i = 0; i < MAX_DMX_UNITS; i++)
		dmap.push_back(CFeDmx(i));

	INFO("found %d frontends, %d demuxes\n", (int)femap.size(), (int)dmap.size());
	/* for testing without a frontend, export SIMULATE_FE=1 */
	if (femap.empty() && getenv("SIMULATE_FE")) {
		INFO("SIMULATE_FE is set, adding dummy frontend for testing");
		fe = new CFrontend(0,0);
		fekey = MAKE_FE_KEY(0, 0);
		femap.insert(std::pair <unsigned short, CFrontend*> (fekey, fe));
		livefe = fe;
	}
	if (femap.empty())
		return false;

	return true;
}