X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/ff84dc4ee5f57e24a0777930d5482ee4ff53da0e..82aa264d3b1732f8c5883a13401a45cb32e00bc1:/lib/dvb/idvb.h diff --git a/lib/dvb/idvb.h b/lib/dvb/idvb.h index d353611d..ad5da21e 100644 --- a/lib/dvb/idvb.h +++ b/lib/dvb/idvb.h @@ -9,6 +9,7 @@ #include #define FRONTENDPARAMETERS struct dvb_frontend_parameters #endif +#include #include #include #include @@ -19,10 +20,25 @@ struct eBouquet { std::string m_bouquet_name; std::string m_path; - std::list m_services; + typedef std::list list; + list m_services; +// the following four methods are implemented in db.cpp + RESULT flushChanges(); + RESULT addService(const eServiceReference &); + RESULT removeService(const eServiceReference &); + RESULT moveService(const eServiceReference &, unsigned int); }; - // bitte KEINE operator int() definieren, sonst bringt das ganze nix! + /* these structures have by intention no operator int() defined. + the reason of these structures is to avoid mixing for example + a onid and a tsid (as there's no general order for them). + + defining an operator int() would implicitely convert values + between them over the constructor with the int argument. + + 'explicit' doesn't here - eTransportStreamID(eOriginalNetworkID(n)) + would still work. */ + struct eTransportStreamID { private: @@ -191,6 +207,8 @@ public: std::string m_service_name, m_service_name_sort; std::string m_provider_name; + void genSortName(); + int m_flags; std::set m_ca; std::map m_cache; @@ -262,104 +280,11 @@ public: virtual RESULT addService(const eServiceReferenceDVB &service, eDVBService *service)=0; virtual RESULT getService(const eServiceReferenceDVB &reference, ePtr &service)=0; - virtual RESULT getBouquet(const eServiceReference &ref, const eBouquet* &bouquet)=0; + virtual RESULT getBouquet(const eServiceReference &ref, eBouquet* &bouquet)=0; virtual RESULT startQuery(ePtr &query, eDVBChannelQuery *query, const eServiceReference &source)=0; }; -class SatelliteDeliverySystemDescriptor; -class CableDeliverySystemDescriptor; -class TerrestrialDeliverySystemDescriptor; - -struct eDVBFrontendParametersSatellite -{ - struct Polarisation - { - enum { - Horizontal, Vertical, CircularLeft, CircularRight - }; - }; - struct Inversion - { - enum { - On, Off, Unknown - }; - }; - struct FEC - { - enum { - fNone, f1_2, f2_3, f3_4, f5_6, f7_8, fAuto - }; - }; - unsigned int frequency, symbol_rate; - int polarisation, fec, inversion, orbital_position; - - void set(const SatelliteDeliverySystemDescriptor &); -}; - -struct eDVBFrontendParametersCable -{ - unsigned int frequency, symbol_rate; - int modulation, inversion, fec_inner; - void set(const CableDeliverySystemDescriptor &); -}; - -struct eDVBFrontendParametersTerrestrial -{ - unsigned int frequency; - struct Bandwidth { - enum { Bw8MHz, Bw7MHz, Bw6MHz, BwAuto }; - }; - - struct FEC - { - enum { - fNone, f1_2, f2_3, f3_4, f5_6, f7_8, fAuto - }; - }; - - struct TransmissionMode { - enum { - TM2k, TM8k, TMAuto - }; - }; - - struct GuardInterval { - enum { - GI_1_32, GI_1_16, GI_1_8, GI_1_4, GI_Auto - }; - }; - - struct Hierarchy { - enum { - HNone, H1, H2, H4, HAuto - }; - }; - - struct Modulation { - enum { - QPSK, QAM16, Auto - }; - }; - - struct Inversion - { - enum { - On, Off, Unknown - }; - }; - - int bandwidth; - int code_rate_HP, code_rate_LP; - int modulation; - int transmission_mode; - int guard_interval; - int hierarchy; - int inversion; - - void set(const TerrestrialDeliverySystemDescriptor &); -}; - class iDVBFrontendParameters: public iObject { public: @@ -401,7 +326,8 @@ public: stateIdle = 0, stateTuning = 1, stateFailed = 2, - stateLock = 3 + stateLock = 3, + stateLostLock = 4, }; virtual RESULT getState(int &state)=0; enum { @@ -418,6 +344,9 @@ public: virtual RESULT setSecSequence(const eSecCommandList &list)=0; virtual RESULT getData(int num, int &data)=0; virtual RESULT setData(int num, int val)=0; + + /* 0 means: not compatible. other values are a priority. */ + virtual int isCompatibleWith(const eDVBChannelID &chid)=0; }; class iDVBSatelliteEquipmentControl: public iObject @@ -438,6 +367,7 @@ public: { state_idle, /* not yet tuned */ state_tuning, /* currently tuning (first time) */ + state_failed, /* tuning failed. */ state_unavailable, /* currently unavailable, will be back without further interaction */ state_ok, /* ok */ state_release /* channel is being shut down. */ @@ -462,7 +392,8 @@ public: virtual void ReleaseUse() = 0; }; -typedef unsigned long long pts_t; + /* signed, so we can express deltas. */ +typedef long long pts_t; class iDVBPVRChannel: public iDVBChannel { @@ -478,9 +409,8 @@ public: virtual RESULT getLength(pts_t &pts) = 0; virtual RESULT getCurrentPosition(pts_t &pos) = 0; - virtual RESULT seekTo(pts_t &pts) = 0; - - // seekTo ... + virtual RESULT seekTo(int relative, pts_t &pts) = 0; + virtual RESULT seekToPosition(const off_t &pts) = 0; }; class iDVBSectionReader;