5 #include <lib/base/ebase.h>
6 #include <lib/base/object.h>
7 #include <lib/base/eptrlist.h>
8 #include <lib/dvb/idvb.h>
10 class eDVBResourceManager;
11 class eDVBRegisteredFrontend;
13 class eFBCTunerManager: public iObject, public Object
16 DECLARE_REF(eFBCTunerManager);
17 ePtr<eDVBResourceManager> m_res_mgr;
19 static bool isDestroyed;
23 bool isSameFbcSet(int a, int b);
24 bool isSupportDVBS(eDVBRegisteredFrontend *fe);
25 int getFBCID(int root_fe_id);
27 eDVBRegisteredFrontend *getPrev(eDVBRegisteredFrontend *fe);
28 eDVBRegisteredFrontend *getNext(eDVBRegisteredFrontend *fe);
29 eDVBRegisteredFrontend *getTop(eDVBRegisteredFrontend *fe);
30 eDVBRegisteredFrontend *getLast(eDVBRegisteredFrontend *fe);
31 bool isLinked(eDVBRegisteredFrontend *fe);
32 bool isLinkedByIndex(int fe_idx);
33 bool checkTop(eDVBRegisteredFrontend *fe);
34 int connectLinkByIndex(int link_fe_index, int prev_fe_index, int next_fe_index, bool simulate);
35 int connectLinkByIndex(int link_fe_index, int prev_fe_index, bool simulate);
36 int disconnectLinkByIndex(int link_fe_index, int prev_fe_index, int next_fe_index, bool simulate);
37 int disconnectLinkByIndex(int link_fe_index, int prev_fe_index, bool simulate);
38 int connectLink(eDVBRegisteredFrontend *link_fe, eDVBRegisteredFrontend *prev_fe, eDVBRegisteredFrontend *next_fe, bool simulate);
39 int connectLink(eDVBRegisteredFrontend *link_fe, eDVBRegisteredFrontend *prev_fe, bool simulate);
40 int disconnectLink(eDVBRegisteredFrontend *link_fe, eDVBRegisteredFrontend *prev_fe, eDVBRegisteredFrontend *next_fe, bool simulate);
41 int disconnectLink(eDVBRegisteredFrontend *linkable_fe, eDVBRegisteredFrontend *top_fe, bool simulate);
42 void connectLinkNoSimulate(eDVBRegisteredFrontend *link_fe, eDVBRegisteredFrontend *top_fe);
43 void disconnectLinkNoSimulate(eDVBRegisteredFrontend *link_fe);
45 bool checkUsed(eDVBRegisteredFrontend *fe, bool a_simulate);
46 void connectSortedLink(eDVBRegisteredFrontend *link_fe, eDVBRegisteredFrontend *top_fe, bool simulate);
47 int updateLNBSlotMask(int dest_slot, int src_slot, bool remove);
48 void printLinks(eDVBRegisteredFrontend *fe);
52 virtual ~eFBCTunerManager();
53 int setProcFBCID(int fe_id, int fbc_id);
54 int setDefaultFBCID(eDVBRegisteredFrontend *fe);
55 void updateFBCID(eDVBRegisteredFrontend *next_fe, eDVBRegisteredFrontend *prev_fe);
56 bool isRootFeSlot(int fe_slot_id);
57 bool isRootFe(eDVBRegisteredFrontend *fe);
58 bool canLink(eDVBRegisteredFrontend *fe);
59 bool isUnicable(eDVBRegisteredFrontend *fe);
60 int isCompatibleWith(ePtr<iDVBFrontendParameters> &feparm, eDVBRegisteredFrontend *link_fe, bool simulate);
61 int isCompatibleWith(ePtr<iDVBFrontendParameters> &feparm, eDVBRegisteredFrontend *link_fe, eDVBRegisteredFrontend *&fbc_fe, bool simulate);
62 void addLink(eDVBRegisteredFrontend *link_fe, eDVBRegisteredFrontend *top_fe, bool simulate);
63 void unset(eDVBRegisteredFrontend *fe);
64 bool canAllocateLink(eDVBRegisteredFrontend *fe, bool simulate);
66 static eFBCTunerManager* getInstance()
68 if (isDestroyed == true)
70 eDebug("eFBCTunerManager is already destroyed!");
73 static eFBCTunerManager instance;
77 int getLinkedSlotID(int feid);
80 #endif /* __dvb_fbc_h */