update dvbapp.
[vuplus_dvbapp] / lib / dvb / fbc.h
1 #ifndef __dvb_fbc_h
2 #define __dvb_fbc_h
3
4 /* FBC Manager */
5 #include <lib/base/ebase.h>
6 #include <lib/base/object.h>
7 #include <lib/base/eptrlist.h>
8 #include <lib/dvb/idvb.h>
9
10 class eDVBResourceManager;
11 class eDVBRegisteredFrontend;
12
13 class eFBCTunerManager: public iObject, public Object
14 {
15 private:
16         DECLARE_REF(eFBCTunerManager);
17         ePtr<eDVBResourceManager> m_res_mgr;
18         int m_fbc_tuner_num;
19         static bool isDestroyed;
20
21         int getFBCTunerNum();
22         void procInit();
23         bool isSameFbcSet(int a, int b);
24         bool isSupportDVBS(eDVBRegisteredFrontend *fe);
25         int getFBCID(int root_fe_id);
26
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);
44
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);
49
50 public:
51         eFBCTunerManager();
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);
65
66         static eFBCTunerManager* getInstance()
67         {
68                 if (isDestroyed == true)
69                 {
70                         eDebug("eFBCTunerManager is already destroyed!");
71                         return 0;
72                 }
73                 static eFBCTunerManager instance;
74                 return &instance;
75         }
76
77         int getLinkedSlotID(int feid);
78 };
79
80 #endif /* __dvb_fbc_h */