DVBFrontendHandle.hh
Go to the documentation of this file.
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00027 #ifndef HH_SENF_Socket_Protocols_DVB_DVBFrontendHandle_
00028 #define HH_SENF_Socket_Protocols_DVB_DVBFrontendHandle_ 1
00029
00030
00031 #include <boost/cstdint.hpp>
00032 #include <boost/bind.hpp>
00033 #include <boost/function.hpp>
00034 #include <linux/dvb/frontend.h>
00035 #include <senf/Socket/FramingPolicy.hh>
00036 #include <senf/Socket/CommunicationPolicy.hh>
00037 #include <senf/Socket/ReadWritePolicy.hh>
00038 #include <senf/Socket/ProtocolClientSocketHandle.hh>
00039 #include <senf/Socket/SocketProtocol.hh>
00040 #include <fcntl.h>
00041
00042
00043
00044 namespace senf {
00045
00047
00048
00049 typedef MakeSocketPolicy<
00050 NoAddressingPolicy,
00051 DatagramFramingPolicy,
00052 UnconnectedCommunicationPolicy,
00053 NotReadablePolicy,
00054 NotWriteablePolicy
00055 > ::policy DVBFrontend_Policy;
00056
00057
00071 class DVBFrontendSocketProtocol
00072 : public ConcreteSocketProtocol<DVBFrontend_Policy, DVBFrontendSocketProtocol>
00073 {
00074 private:
00075 void tune(const struct dvb_frontend_parameters & frontend) const;
00076 public:
00077
00078
00079
00080
00081
00083
00084 void init_client(unsigned short adapter = 0, unsigned short device = 0, int flags = (O_RDWR | O_NONBLOCK) ) const;
00086
00090
00091
00092 void setNonBlock(bool on = true) const;
00093
00094 void tuneDVB_S(unsigned int frequency, fe_spectral_inversion_t inversion, unsigned int symbole_rate, fe_code_rate_t code_rate) const;
00096
00097 void tuneDVB_T(unsigned int frequency,
00098 fe_spectral_inversion_t inversion,
00099 fe_bandwidth_t bandwidth,
00100 fe_code_rate_t code_rate_HP,
00101 fe_code_rate_t code_rate_LP,
00102 fe_modulation_t constellation,
00103 fe_transmit_mode_t transmission_mode,
00104 fe_guard_interval_t guard_interval,
00105 fe_hierarchy_t hierarchy_information
00106 ) const;
00107
00108 void tuneDVB_C(unsigned int frequency,
00109 fe_spectral_inversion_t inversion,
00110 unsigned int symbol_rate,
00111 fe_code_rate_t fec_inner,
00112 fe_modulation_t modulation
00113 ) const;
00115
00116 dvb_frontend_info getInfo() const;
00117
00119 struct dvb_frontend_parameters getFrontendParam() const;
00120
00122
00123
00124
00125 dvb_frontend_event getEvent() const;
00126
00127
00128 unsigned available() const;
00129
00131 bool eof() const;
00132
00135
00136
00137 int16_t signalStrength() const;
00138
00142 int16_t signalNoiseRatio() const;
00144
00148 uint32_t bitErrorRate() const;
00149
00152 uint32_t uncorrectedBlocks() const;
00153
00161 fe_status_t status() const;
00162
00166 };
00167
00168 typedef ProtocolClientSocketHandle<DVBFrontendSocketProtocol> DVBFrontendHandle;
00169
00170
00171 }
00172
00173
00174
00175
00176
00177
00178 #endif
00179
00180
00181
00182
00183
00184
00185
00186
00187
00188
00189