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); } }
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; }