X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/19e39976339e23b38a045116f0ed8211b8a7144b..82aa264d3b1732f8c5883a13401a45cb32e00bc1:/lib/dvb/idvb.h diff --git a/lib/dvb/idvb.h b/lib/dvb/idvb.h index f5d3d2ee..ad5da21e 100644 --- a/lib/dvb/idvb.h +++ b/lib/dvb/idvb.h @@ -9,13 +9,36 @@ #include #define FRONTENDPARAMETERS struct dvb_frontend_parameters #endif +#include #include #include #include #include #include - // bitte KEINE operator int() definieren, sonst bringt das ganze nix! +struct eBouquet +{ + std::string m_bouquet_name; + std::string m_path; + 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); +}; + + /* 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: @@ -184,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; @@ -237,6 +262,7 @@ public: /* sort is only valid in root, and must be from the enum above. */ int m_sort; + std::string m_bouquet_name; static RESULT compile(ePtr &res, std::string query); @@ -254,100 +280,9 @@ public: virtual RESULT addService(const eServiceReferenceDVB &service, eDVBService *service)=0; virtual RESULT getService(const eServiceReferenceDVB &reference, ePtr &service)=0; - virtual RESULT startQuery(ePtr &query, eDVBChannelQuery *query)=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 - }; - }; + virtual RESULT getBouquet(const eServiceReference &ref, eBouquet* &bouquet)=0; - 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 &); + virtual RESULT startQuery(ePtr &query, eDVBChannelQuery *query, const eServiceReference &source)=0; }; class iDVBFrontendParameters: public iObject @@ -391,7 +326,8 @@ public: stateIdle = 0, stateTuning = 1, stateFailed = 2, - stateLock = 3 + stateLock = 3, + stateLostLock = 4, }; virtual RESULT getState(int &state)=0; enum { @@ -408,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 @@ -428,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. */ @@ -452,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 { @@ -468,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;