5 #include <lib/base/ebase.h>
6 #include <lib/base/object.h>
7 #include <lib/base/eptrlist.h>
8 #include <lib/dvb/idvb.h>
11 class eDVBResourceManager;
12 class eDVBRegisteredFrontend;
14 typedef struct fbc_tuner
23 class eFBCTunerManager: public iObject, public Object
26 DECLARE_REF(eFBCTunerManager);
27 ePtr<eDVBResourceManager> m_res_mgr;
28 static eFBCTunerManager *m_instance;
29 std::map<int, FBC_TUNER> m_fbc_tuners;
31 int setProcFBCID(int fe_id, int root_idx, bool is_linked);
32 int feSlotID(const eDVBRegisteredFrontend *fe) const;
33 bool isLinked(eDVBRegisteredFrontend *fe) const;
34 bool isUnicable(eDVBRegisteredFrontend *fe) const;
35 bool isFeUsed(eDVBRegisteredFrontend *fe, bool a_simulate) const;
36 bool isSameFbcSet(int fe_id_a, int fe_id_b);
37 bool isRootFe(eDVBRegisteredFrontend *fe);
38 int getFBCID(int fe_id);
39 int getDefaultFBCID(int fe_id);
41 eDVBRegisteredFrontend *getPrev(eDVBRegisteredFrontend *fe) const;
42 eDVBRegisteredFrontend *getNext(eDVBRegisteredFrontend *fe) const;
43 eDVBRegisteredFrontend *getTop(eDVBRegisteredFrontend *fe) const;
44 eDVBRegisteredFrontend *getLast(eDVBRegisteredFrontend *fe) const;
45 eDVBRegisteredFrontend *getSimulFe(eDVBRegisteredFrontend *fe) const;
47 void connectLink(eDVBRegisteredFrontend *link_fe, eDVBRegisteredFrontend *prev_fe, eDVBRegisteredFrontend *next_fe, bool simulate);
48 void disconnectLink(eDVBRegisteredFrontend *link_fe, eDVBRegisteredFrontend *prev_fe, eDVBRegisteredFrontend *next_fe, bool simulate);
49 int updateLNBSlotMask(int dest_slot, int src_slot, bool remove);
50 void printLinks(eDVBRegisteredFrontend *fe) const;
53 static eFBCTunerManager* getInstance();
54 eFBCTunerManager(ePtr<eDVBResourceManager> res_mgr);
55 virtual ~eFBCTunerManager();
56 void setDefaultFBCID(eDVBRegisteredFrontend *fe);
57 void updateFBCID(eDVBRegisteredFrontend *next_fe, eDVBRegisteredFrontend *prev_fe);
58 int isCompatibleWith(ePtr<iDVBFrontendParameters> &feparm, eDVBRegisteredFrontend *link_fe, eDVBRegisteredFrontend *&fbc_fe, bool simulate);
59 void addLink(eDVBRegisteredFrontend *link_fe, eDVBRegisteredFrontend *top_fe, bool simulate);
60 void unLink(eDVBRegisteredFrontend *link_fe);
61 bool canLink(eDVBRegisteredFrontend *fe);
62 int getLinkedSlotID(int feid) const;
63 int getFBCSetID(int fe_id);
64 bool isFBCLink(int fe_id);
67 #endif /* __dvb_fbc_h */