e673b9e68f2444aeb285209cb4c69fffe3ea1319
[enigma2.git] / lib / dvb / db.h
1 #ifndef __db_h
2 #define __db_h
3
4 #include <lib/dvb/idvb.h>
5 #include <set>
6
7 class eDVBService: public iObject
8 {
9         DECLARE_REF;
10 public:
11         eDVBService();
12         std::string m_service_name;
13         std::string m_provider_name;
14         
15         int m_flags;
16         std::set<int> m_ca;
17         std::map<int,int> m_cache;
18         virtual ~eDVBService();
19         
20         eDVBService &operator=(const eDVBService &);
21 };
22
23 class ServiceDescriptionTable;
24
25 class eDVBDB: public iDVBChannelList
26 {
27 DECLARE_REF;
28 private:
29         struct channel
30         {
31                 ePtr<iDVBFrontendParameters> m_frontendParameters;
32         };
33         
34         std::map<eDVBChannelID, channel> m_channels;
35         
36         std::map<eServiceReferenceDVB, ePtr<eDVBService> > m_services;
37 public:
38         eDVBDB();
39         virtual ~eDVBDB();
40         
41         RESULT addChannelToList(const eDVBChannelID &id, iDVBFrontendParameters *feparm);
42         RESULT removeChannel(const eDVBChannelID &id);
43
44         RESULT getChannelFrontendData(const eDVBChannelID &id, ePtr<iDVBFrontendParameters> &parm);
45         
46         RESULT addService(const eServiceReferenceDVB &service, eDVBService *service);
47         RESULT getService(const eServiceReferenceDVB &reference, ePtr<eDVBService> &service);
48 };
49
50 #endif