X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=Socket%2FProtocols%2FDVB%2FDVBFrontendHandle.hh;h=bc555ff35d7893e692e3e8db702ea22d07d37a08;hb=3863d46dd898b7bc35ea8c6ccd8563b18762a6b6;hp=74c58d5cc8dba95c88ab4472d3a54ee35f54f88e;hpb=69bcc009d679b71b816b9a1bfd11dfaf6c980fd1;p=senf.git diff --git a/Socket/Protocols/DVB/DVBFrontendHandle.hh b/Socket/Protocols/DVB/DVBFrontendHandle.hh index 74c58d5..bc555ff 100644 --- a/Socket/Protocols/DVB/DVBFrontendHandle.hh +++ b/Socket/Protocols/DVB/DVBFrontendHandle.hh @@ -4,6 +4,7 @@ // Fraunhofer Institute for Open Communication Systems (FOKUS) // Competence Center NETwork research (NET), St. Augustin, GERMANY // Thorsten Horstmann +// Anton Gillert // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -36,11 +37,7 @@ #include "../../../Socket/ReadWritePolicy.hh" #include "../../../Socket/ProtocolClientSocketHandle.hh" #include "../../../Socket/SocketProtocol.hh" -#include -#include - - - +#include //#include "DVBFrontendHandle.mpp" ///////////////////////////////hh.p//////////////////////////////////////// @@ -61,33 +58,42 @@ namespace senf { /** \brief SocketProtocol for the dvb frontend device The DVB frontend device controls the tuner and DVB demodulator hardware. + ATTENTION! + Some calls are not supported by real life drivers, known issues: + + Cinergy T² getParameter is not supported + Cinergy T² in getEvent fe_status_t will be set but dvb_frontend_parameters will be stay untouched + Cinergy DT XS bitErrorRate is not supported + + This dues to the lack of driver implementation. There could be restrictions also for other DVB devices! */ class DVBFrontendSocketProtocol : public ConcreteSocketProtocol { private: - dvb_frontend_event tune(const struct dvb_frontend_parameters & frontend); - struct dvb_frontend_event waitTune(const struct dvb_frontend_parameters & frontend); - struct dvb_frontend_event asyncTune(const struct dvb_frontend_parameters & frontend); - boost::function cb2_X_Tune; + void tune(const struct dvb_frontend_parameters & frontend) const; public: + + /////////////////////////////////////////////////////////////////////////// // internal interface ///\name Constructors ///@{ - void init_client(unsigned const short adapter = 0, unsigned const short device = 0); + void init_client(unsigned short adapter = 0, unsigned short device = 0, int flags = (O_RDWR | O_NONBLOCK) ) const; ///< Opens the specified frontend device in read-only mode. /**< \note This member is implicitly called from the ProtocolClientSocketHandle::ProtocolClientSocketHandle() constructor */ ///@} - - void tuneDVB_S(unsigned int frequency, fe_spectral_inversion_t inversion, unsigned int symbole_rate, fe_code_rate_t code_rate); - ///< Tunes a DVB-C device - /**< Tunes a DVB-C device. Needs full configuration */ + + void setNonBlock(bool on = true) const; + + void tuneDVB_S(unsigned int frequency, fe_spectral_inversion_t inversion, unsigned int symbole_rate, fe_code_rate_t code_rate) const; + ///< Tunes a DVB-S device + /**< Tunes a DVB-S device. Needs full configuration */ void tuneDVB_T(unsigned int frequency, fe_spectral_inversion_t inversion, fe_bandwidth_t bandwidth, @@ -97,54 +103,27 @@ namespace senf { fe_transmit_mode_t transmission_mode, fe_guard_interval_t guard_interval, fe_hierarchy_t hierarchy_information - ); ///< Tunes a DVB-T device + ) const; ///< Tunes a DVB-T device /**< Tunes a DVB-T device. Needs full configuration */ void tuneDVB_C(unsigned int frequency, fe_spectral_inversion_t inversion, unsigned int symbol_rate, fe_code_rate_t fec_inner, - fe_modulation_t modulation); + fe_modulation_t modulation + ) const; ///< Tunes a DVB-C device /**< Tunes a DVB-C device. Needs full configuration */ - struct dvb_frontend_info getInfo() const; ///< Returns information struct. + dvb_frontend_info getInfo() const; ///< Returns information struct. /**< Returns information struct, which contains information about the device which is associated with the current frontend.*/ struct dvb_frontend_parameters getFrontendParam() const; ///< Returns dvb_frontend_parameters struct. /**< Returns dvb_frontend_parameters struct, which contains the actual configuration of the device.*/ - void setFrequency(unsigned int frequency); ///< Sets frequency - /**< Sets frequency. This can be done for all device types.*/ - void setInversion(fe_spectral_inversion_t inversion); ///< Sets inversion - /**< Sets inversion. This can be done for all device types.*/ - void setCodeRate(fe_code_rate_t fec_inner); ///< Sets code rate - /**< Sets code rate. This can be done for all device types. Attention - for DVB-T devices the high and low priority stream code rate will be set to - the given value.*/ - void setSymbolRate(unsigned int symbol_rate); ///< Sets symbol rate - /**< Sets symbol rate. This can only be done for DVB-S or DVB-C devices. - Other attempts will throw an exception.*/ - void setModulation(fe_modulation_t modulation); ///< Sets modulation - /**< Sets modulation. This can only be done for DVB-T or DVB-C devices. - Other attempts will throw an exception.*/ - void setBandwidth(fe_bandwidth_t bandwidth); ///< Sets bandwidth - /**< Sets bandwidth. This can only be done for DVB-T devices. - Other attempts will throw an exception.*/ - void setHighPriorityCodeRate(fe_code_rate_t code_rate_HP); ///< Sets high priority stream code rate - /**< Sets high priority stream code rate. This can only be done for DVB-T devices. - Other attempts will throw an exception.*/ - void setLowPriorityCodeRate(fe_code_rate_t code_rate_LP); ///< Sets low priority stream code rate - /**< Sets low priority stream code rate. This can only be done for DVB-T devices. - Other attempts will throw an exception.*/ - void setGuardInterval(fe_guard_interval_t guard_interval); ///< Sets guard interval - /**< Sets guard interval. This can only be done for DVB-T devices. - Other attempts will throw an exception.*/ - void setHierarchyInformation(fe_hierarchy_t hierarchy_information); ///< Sets hierarchy information - /**< Sets hierarchy information. This can only be done for DVB-T devices. - Other attempts will throw an exception.*/ - - ///\name Abstract Interface Implementation ///@{ + + dvb_frontend_event getEvent() const; + unsigned available() const; ///< Returns always 0 /**< Returns always 0, since the DVB frontend @@ -170,6 +149,20 @@ namespace senf { /**< Returns the bit error rate for the signal currently received/demodulated by the front-end. For this method, read-only access to the device is sufficient. */ + uint32_t uncorrectedBlocks() const; ///< Returns the number of uncorrected blocks + /**< Returns the number of uncorrected blocks + * detected by the device driver during its lifetime. + * For meaningful measurements, the increment in block + * count during a specific time interval should be calculated. + * For this command, read-only access to the device is sufficient. + * Note that the counter will wrap to zero after its maximum count + * has been reached.*/ + + fe_status_t status() const; ///< This ioctl call returns status information about the front-end. + /**< This ioctl call returns status information about the + * front-end. This call only requires read-only access + * to the device.*/ + }; typedef ProtocolClientSocketHandle DVBFrontendHandle;