Support Uno4k/Ultimo4k
[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 #include <map>
10
11 class eDVBResourceManager;
12 class eDVBRegisteredFrontend;
13
14 typedef struct fbc_tuner
15 {
16         int fbcSetID;
17         int fbcIndex;
18         bool isRoot;
19         int initFbcId;
20 }FBC_TUNER;
21
22
23 class eFBCTunerManager: public iObject, public Object
24 {
25 private:
26         DECLARE_REF(eFBCTunerManager);
27         ePtr<eDVBResourceManager> m_res_mgr;
28         static eFBCTunerManager *m_instance;
29         std::map<int, FBC_TUNER> m_fbc_tuners;
30
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);
40
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;
46
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;
51
52 public:
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);
65 };
66
67 #endif /* __dvb_fbc_h */
68