604 lines
		
	
	
	
		
			19 KiB
			
		
	
	
	
		
			XML
		
	
	
	
	
	
		
		
			
		
	
	
			604 lines
		
	
	
	
		
			19 KiB
			
		
	
	
	
		
			XML
		
	
	
	
	
	
|   | <section id="frontend_legacy_types"> | ||
|  | <title>Frontend Legacy Data Types</title> | ||
|  | 
 | ||
|  | <section id="fe-type-t"> | ||
|  | <title>Frontend type</title> | ||
|  | 
 | ||
|  | <para>For historical reasons, frontend types are named by the type of modulation | ||
|  |     used in transmission. The fontend types are given by fe_type_t type, defined as:</para> | ||
|  | 
 | ||
|  | <table pgwide="1" frame="none" id="fe-type"> | ||
|  | <title>Frontend types</title> | ||
|  | <tgroup cols="3"> | ||
|  |    &cs-def; | ||
|  |    <thead> | ||
|  |      <row> | ||
|  |        <entry>fe_type</entry> | ||
|  |        <entry>Description</entry> | ||
|  |        <entry><link linkend="DTV-DELIVERY-SYSTEM">DTV_DELIVERY_SYSTEM</link> equivalent type</entry> | ||
|  |      </row> | ||
|  |   </thead> | ||
|  |   <tbody valign="top"> | ||
|  |   <row> | ||
|  |      <entry id="FE_QPSK"><constant>FE_QPSK</constant></entry> | ||
|  |      <entry>For DVB-S standard</entry> | ||
|  |      <entry><constant>SYS_DVBS</constant></entry> | ||
|  |   </row> | ||
|  |   <row> | ||
|  |      <entry id="FE_QAM"><constant>FE_QAM</constant></entry> | ||
|  |      <entry>For DVB-C annex A standard</entry> | ||
|  |      <entry><constant>SYS_DVBC_ANNEX_A</constant></entry> | ||
|  |   </row> | ||
|  |   <row> | ||
|  |      <entry id="FE_OFDM"><constant>FE_OFDM</constant></entry> | ||
|  |      <entry>For DVB-T standard</entry> | ||
|  |      <entry><constant>SYS_DVBT</constant></entry> | ||
|  |   </row> | ||
|  |   <row> | ||
|  |      <entry id="FE_ATSC"><constant>FE_ATSC</constant></entry> | ||
|  |      <entry>For ATSC standard (terrestrial) or for DVB-C Annex B (cable) used in US.</entry> | ||
|  |      <entry><constant>SYS_ATSC</constant> (terrestrial) or <constant>SYS_DVBC_ANNEX_B</constant> (cable)</entry> | ||
|  |   </row> | ||
|  | </tbody></tgroup></table> | ||
|  | 
 | ||
|  | <para>Newer formats like DVB-S2, ISDB-T, ISDB-S and DVB-T2 are not described at the above, as they're | ||
|  | supported via the new <link linkend="FE_GET_SET_PROPERTY">FE_GET_PROPERTY/FE_GET_SET_PROPERTY</link> ioctl's, using the <link linkend="DTV-DELIVERY-SYSTEM">DTV_DELIVERY_SYSTEM</link> parameter. | ||
|  | </para> | ||
|  | 
 | ||
|  | <para>The usage of this field is deprecated, as it doesn't report all supported standards, and | ||
|  | will provide an incomplete information for frontends that support multiple delivery systems. | ||
|  | Please use <link linkend="DTV-ENUM-DELSYS">DTV_ENUM_DELSYS</link> instead.</para> | ||
|  | </section> | ||
|  | 
 | ||
|  | 
 | ||
|  | <section id="dvb-frontend-parameters"> | ||
|  | <title>frontend parameters</title> | ||
|  | <para>The kind of parameters passed to the frontend device for tuning depend on | ||
|  | the kind of hardware you are using.</para> | ||
|  | <para>The struct <constant>dvb_frontend_parameters</constant> uses an | ||
|  | union with specific per-system parameters. However, as newer delivery systems | ||
|  | required more data, the structure size weren't enough to fit, and just | ||
|  | extending its size would break the existing applications. So, those parameters | ||
|  | were replaced by the usage of <link linkend="FE_GET_SET_PROPERTY"> | ||
|  | <constant>FE_GET_PROPERTY/FE_SET_PROPERTY</constant></link> ioctl's. The | ||
|  | new API is flexible enough to add new parameters to existing delivery systems, | ||
|  | and to add newer delivery systems.</para> | ||
|  | <para>So, newer applications should use <link linkend="FE_GET_SET_PROPERTY"> | ||
|  | <constant>FE_GET_PROPERTY/FE_SET_PROPERTY</constant></link> instead, in | ||
|  | order to be able to support the newer System Delivery like  DVB-S2, DVB-T2, | ||
|  | DVB-C2, ISDB, etc.</para> | ||
|  | <para>All kinds of parameters are combined as an union in the FrontendParameters structure: | ||
|  | <programlisting> | ||
|  | struct dvb_frontend_parameters { | ||
|  | 	uint32_t frequency;     /⋆ (absolute) frequency in Hz for QAM/OFDM ⋆/ | ||
|  | 				/⋆ intermediate frequency in kHz for QPSK ⋆/ | ||
|  | 	fe_spectral_inversion_t inversion; | ||
|  | 	union { | ||
|  | 		struct dvb_qpsk_parameters qpsk; | ||
|  | 		struct dvb_qam_parameters  qam; | ||
|  | 		struct dvb_ofdm_parameters ofdm; | ||
|  | 		struct dvb_vsb_parameters  vsb; | ||
|  | 	} u; | ||
|  | }; | ||
|  | </programlisting></para> | ||
|  | <para>In the case of QPSK frontends the <constant>frequency</constant> field specifies the intermediate | ||
|  | frequency, i.e. the offset which is effectively added to the local oscillator frequency (LOF) of | ||
|  | the LNB. The intermediate frequency has to be specified in units of kHz. For QAM and | ||
|  | OFDM frontends the <constant>frequency</constant> specifies the absolute frequency and is given in Hz. | ||
|  | </para> | ||
|  | 
 | ||
|  | <section id="dvb-qpsk-parameters"> | ||
|  | <title>QPSK parameters</title> | ||
|  | <para>For satellite QPSK frontends you have to use the <constant>dvb_qpsk_parameters</constant> structure:</para> | ||
|  | <programlisting> | ||
|  |  struct dvb_qpsk_parameters { | ||
|  | 	 uint32_t        symbol_rate;  /⋆ symbol rate in Symbols per second ⋆/ | ||
|  | 	 fe_code_rate_t  fec_inner;    /⋆ forward error correction (see above) ⋆/ | ||
|  |  }; | ||
|  | </programlisting> | ||
|  | </section> | ||
|  | 
 | ||
|  | <section id="dvb-qam-parameters"> | ||
|  | <title>QAM parameters</title> | ||
|  | <para>for cable QAM frontend you use the <constant>dvb_qam_parameters</constant> structure:</para> | ||
|  | <programlisting> | ||
|  |  struct dvb_qam_parameters { | ||
|  | 	 uint32_t         symbol_rate; /⋆ symbol rate in Symbols per second ⋆/ | ||
|  | 	 fe_code_rate_t   fec_inner;   /⋆ forward error correction (see above) ⋆/ | ||
|  | 	 fe_modulation_t  modulation;  /⋆ modulation type (see above) ⋆/ | ||
|  |  }; | ||
|  | </programlisting> | ||
|  | </section> | ||
|  | 
 | ||
|  | <section id="dvb-vsb-parameters"> | ||
|  | <title>VSB parameters</title> | ||
|  | <para>ATSC frontends are supported by the <constant>dvb_vsb_parameters</constant> structure:</para> | ||
|  | <programlisting> | ||
|  | struct dvb_vsb_parameters { | ||
|  | 	fe_modulation_t modulation;	/⋆ modulation type (see above) ⋆/ | ||
|  | }; | ||
|  | </programlisting> | ||
|  | </section> | ||
|  | 
 | ||
|  | <section id="dvb-ofdm-parameters"> | ||
|  | <title>OFDM parameters</title> | ||
|  | <para>DVB-T frontends are supported by the <constant>dvb_ofdm_parameters</constant> structure:</para> | ||
|  | <programlisting> | ||
|  |  struct dvb_ofdm_parameters { | ||
|  | 	 fe_bandwidth_t      bandwidth; | ||
|  | 	 fe_code_rate_t      code_rate_HP;  /⋆ high priority stream code rate ⋆/ | ||
|  | 	 fe_code_rate_t      code_rate_LP;  /⋆ low priority stream code rate ⋆/ | ||
|  | 	 fe_modulation_t     constellation; /⋆ modulation type (see above) ⋆/ | ||
|  | 	 fe_transmit_mode_t  transmission_mode; | ||
|  | 	 fe_guard_interval_t guard_interval; | ||
|  | 	 fe_hierarchy_t      hierarchy_information; | ||
|  |  }; | ||
|  | </programlisting> | ||
|  | </section> | ||
|  | </section> | ||
|  | 
 | ||
|  | <section id="dvb-frontend-event"> | ||
|  | <title>frontend events</title> | ||
|  |  <programlisting> | ||
|  |  struct dvb_frontend_event { | ||
|  | 	 fe_status_t status; | ||
|  | 	 struct dvb_frontend_parameters parameters; | ||
|  |  }; | ||
|  | </programlisting> | ||
|  |  </section> | ||
|  | </section> | ||
|  | 
 | ||
|  | <section id="frontend_fcalls"> | ||
|  | <title>Frontend Legacy Function Calls</title> | ||
|  | 
 | ||
|  | <para>Those functions are defined at DVB version 3. The support is kept in | ||
|  |     the kernel due to compatibility issues only. Their usage is strongly | ||
|  |     not recommended</para> | ||
|  | 
 | ||
|  | <section id="FE_READ_BER"> | ||
|  | <title>FE_READ_BER</title> | ||
|  | <para>DESCRIPTION | ||
|  | </para> | ||
|  | <informaltable><tgroup cols="1"><tbody><row><entry | ||
|  |  align="char"> | ||
|  | <para>This ioctl call returns the bit error rate for the signal currently | ||
|  |  received/demodulated by the front-end. For this command, read-only access to | ||
|  |  the device is sufficient.</para> | ||
|  | </entry> | ||
|  |  </row></tbody></tgroup></informaltable> | ||
|  | <para>SYNOPSIS | ||
|  | </para> | ||
|  | <informaltable><tgroup cols="1"><tbody><row><entry | ||
|  |  align="char"> | ||
|  | <para>int ioctl(int fd, int request = <link linkend="FE_READ_BER">FE_READ_BER</link>, | ||
|  |  uint32_t ⋆ber);</para> | ||
|  | </entry> | ||
|  |  </row></tbody></tgroup></informaltable> | ||
|  | <para>PARAMETERS | ||
|  | </para> | ||
|  | <informaltable><tgroup cols="2"><tbody><row><entry | ||
|  |  align="char"> | ||
|  | <para>int fd</para> | ||
|  | </entry><entry | ||
|  |  align="char"> | ||
|  | <para>File descriptor returned by a previous call to open().</para> | ||
|  | </entry> | ||
|  |  </row><row><entry | ||
|  |  align="char"> | ||
|  | <para>int request</para> | ||
|  | </entry><entry | ||
|  |  align="char"> | ||
|  | <para>Equals <link linkend="FE_READ_BER">FE_READ_BER</link> for this command.</para> | ||
|  | </entry> | ||
|  |  </row><row><entry | ||
|  |  align="char"> | ||
|  | <para>uint32_t *ber</para> | ||
|  | </entry><entry | ||
|  |  align="char"> | ||
|  | <para>The bit error rate is stored into *ber.</para> | ||
|  | </entry> | ||
|  |  </row></tbody></tgroup></informaltable> | ||
|  | 
 | ||
|  | &return-value-dvb; | ||
|  | </section> | ||
|  | 
 | ||
|  | <section id="FE_READ_SNR"> | ||
|  | <title>FE_READ_SNR</title> | ||
|  | 
 | ||
|  | <para>DESCRIPTION | ||
|  | </para> | ||
|  | <informaltable><tgroup cols="1"><tbody><row><entry | ||
|  |  align="char"> | ||
|  | <para>This ioctl call returns the signal-to-noise ratio for the signal currently received | ||
|  |  by the front-end. For this command, read-only access to the device is sufficient.</para> | ||
|  | </entry> | ||
|  |  </row></tbody></tgroup></informaltable> | ||
|  | <para>SYNOPSIS | ||
|  | </para> | ||
|  | <informaltable><tgroup cols="1"><tbody><row><entry | ||
|  |  align="char"> | ||
|  | <para>int ioctl(int fd, int request = <link linkend="FE_READ_SNR">FE_READ_SNR</link>, uint16_t | ||
|  |  ⋆snr);</para> | ||
|  | </entry> | ||
|  |  </row></tbody></tgroup></informaltable> | ||
|  | <para>PARAMETERS | ||
|  | </para> | ||
|  | <informaltable><tgroup cols="2"><tbody><row><entry | ||
|  |  align="char"> | ||
|  | <para>int fd</para> | ||
|  | </entry><entry | ||
|  |  align="char"> | ||
|  | <para>File descriptor returned by a previous call to open().</para> | ||
|  | </entry> | ||
|  |  </row><row><entry | ||
|  |  align="char"> | ||
|  | <para>int request</para> | ||
|  | </entry><entry | ||
|  |  align="char"> | ||
|  | <para>Equals <link linkend="FE_READ_SNR">FE_READ_SNR</link> for this command.</para> | ||
|  | </entry> | ||
|  |  </row><row><entry | ||
|  |  align="char"> | ||
|  | <para>uint16_t *snr</para> | ||
|  | </entry><entry | ||
|  |  align="char"> | ||
|  | <para>The signal-to-noise ratio is stored into *snr.</para> | ||
|  | </entry> | ||
|  |  </row></tbody></tgroup></informaltable> | ||
|  | 
 | ||
|  | &return-value-dvb; | ||
|  | </section> | ||
|  | 
 | ||
|  | <section id="FE_READ_SIGNAL_STRENGTH"> | ||
|  | <title>FE_READ_SIGNAL_STRENGTH</title> | ||
|  | <para>DESCRIPTION | ||
|  | </para> | ||
|  | <informaltable><tgroup cols="1"><tbody><row><entry | ||
|  |  align="char"> | ||
|  | <para>This ioctl call returns the signal strength value for the signal currently received | ||
|  |  by the front-end. For this command, read-only access to the device is sufficient.</para> | ||
|  | </entry> | ||
|  |  </row></tbody></tgroup></informaltable> | ||
|  | <para>SYNOPSIS | ||
|  | </para> | ||
|  | <informaltable><tgroup cols="1"><tbody><row><entry | ||
|  |  align="char"> | ||
|  | <para>int ioctl( int fd, int request = | ||
|  |  <link linkend="FE_READ_SIGNAL_STRENGTH">FE_READ_SIGNAL_STRENGTH</link>, uint16_t ⋆strength);</para> | ||
|  | </entry> | ||
|  |  </row></tbody></tgroup></informaltable> | ||
|  | 
 | ||
|  | <para>PARAMETERS | ||
|  | </para> | ||
|  | <informaltable><tgroup cols="2"><tbody><row><entry | ||
|  |  align="char"> | ||
|  | <para>int fd</para> | ||
|  | </entry><entry | ||
|  |  align="char"> | ||
|  | <para>File descriptor returned by a previous call to open().</para> | ||
|  | </entry> | ||
|  |  </row><row><entry | ||
|  |  align="char"> | ||
|  | <para>int request</para> | ||
|  | </entry><entry | ||
|  |  align="char"> | ||
|  | <para>Equals <link linkend="FE_READ_SIGNAL_STRENGTH">FE_READ_SIGNAL_STRENGTH</link> for this | ||
|  |  command.</para> | ||
|  | </entry> | ||
|  |  </row><row><entry | ||
|  |  align="char"> | ||
|  | <para>uint16_t *strength</para> | ||
|  | </entry><entry | ||
|  |  align="char"> | ||
|  | <para>The signal strength value is stored into *strength.</para> | ||
|  | </entry> | ||
|  |  </row></tbody></tgroup></informaltable> | ||
|  | 
 | ||
|  | &return-value-dvb; | ||
|  | </section> | ||
|  | 
 | ||
|  | <section id="FE_READ_UNCORRECTED_BLOCKS"> | ||
|  | <title>FE_READ_UNCORRECTED_BLOCKS</title> | ||
|  | <para>DESCRIPTION | ||
|  | </para> | ||
|  | <informaltable><tgroup cols="1"><tbody><row><entry | ||
|  |  align="char"> | ||
|  | <para>This ioctl call 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.</para> | ||
|  | </entry> | ||
|  |  </row><row><entry | ||
|  |  align="char"> | ||
|  | <para>Note that the counter will wrap to zero after its maximum count has been | ||
|  |  reached.</para> | ||
|  | </entry> | ||
|  |  </row></tbody></tgroup></informaltable> | ||
|  | <para>SYNOPSIS | ||
|  | </para> | ||
|  | <informaltable><tgroup cols="1"><tbody><row><entry | ||
|  |  align="char"> | ||
|  | <para>int ioctl( int fd, int request = | ||
|  |  <link linkend="FE_READ_UNCORRECTED_BLOCKS">FE_READ_UNCORRECTED_BLOCKS</link>, uint32_t ⋆ublocks);</para> | ||
|  | </entry> | ||
|  |  </row></tbody></tgroup></informaltable> | ||
|  | <para>PARAMETERS | ||
|  | </para> | ||
|  | <informaltable><tgroup cols="2"><tbody><row><entry | ||
|  |  align="char"> | ||
|  | <para>int fd</para> | ||
|  | </entry><entry | ||
|  |  align="char"> | ||
|  | <para>File descriptor returned by a previous call to open().</para> | ||
|  | </entry> | ||
|  |  </row><row><entry | ||
|  |  align="char"> | ||
|  | <para>int request</para> | ||
|  | </entry><entry | ||
|  |  align="char"> | ||
|  | <para>Equals <link linkend="FE_READ_UNCORRECTED_BLOCKS">FE_READ_UNCORRECTED_BLOCKS</link> for this | ||
|  |  command.</para> | ||
|  | </entry> | ||
|  |  </row><row><entry | ||
|  |  align="char"> | ||
|  | <para>uint32_t *ublocks</para> | ||
|  | </entry><entry | ||
|  |  align="char"> | ||
|  | <para>The total number of uncorrected blocks seen by the driver | ||
|  |  so far.</para> | ||
|  | </entry> | ||
|  |  </row></tbody></tgroup></informaltable> | ||
|  | 
 | ||
|  | &return-value-dvb; | ||
|  | </section> | ||
|  | 
 | ||
|  | <section id="FE_SET_FRONTEND"> | ||
|  | <title>FE_SET_FRONTEND</title> | ||
|  | <para>DESCRIPTION | ||
|  | </para> | ||
|  | <informaltable><tgroup cols="1"><tbody><row><entry | ||
|  |  align="char"> | ||
|  | <para>This ioctl call starts a tuning operation using specified parameters. The result | ||
|  |  of this call will be successful if the parameters were valid and the tuning could | ||
|  |  be initiated. The result of the tuning operation in itself, however, will arrive | ||
|  |  asynchronously as an event (see documentation for <link linkend="FE_GET_EVENT">FE_GET_EVENT</link> and | ||
|  |  FrontendEvent.) If a new <link linkend="FE_SET_FRONTEND">FE_SET_FRONTEND</link> operation is initiated before | ||
|  |  the previous one was completed, the previous operation will be aborted in favor | ||
|  |  of the new one. This command requires read/write access to the device.</para> | ||
|  | </entry> | ||
|  |  </row></tbody></tgroup></informaltable> | ||
|  | 
 | ||
|  | <para>SYNOPSIS | ||
|  | </para> | ||
|  | <informaltable><tgroup cols="1"><tbody><row><entry | ||
|  |  align="char"> | ||
|  | <para>int ioctl(int fd, int request = <link linkend="FE_SET_FRONTEND">FE_SET_FRONTEND</link>, | ||
|  |  struct dvb_frontend_parameters ⋆p);</para> | ||
|  | </entry> | ||
|  |  </row></tbody></tgroup></informaltable> | ||
|  | <para>PARAMETERS | ||
|  | </para> | ||
|  | <informaltable><tgroup cols="2"><tbody><row><entry | ||
|  |  align="char"> | ||
|  | <para>int fd</para> | ||
|  | </entry><entry | ||
|  |  align="char"> | ||
|  | <para>File descriptor returned by a previous call to open().</para> | ||
|  | </entry> | ||
|  |  </row><row><entry | ||
|  |  align="char"> | ||
|  | <para>int request</para> | ||
|  | </entry><entry | ||
|  |  align="char"> | ||
|  | <para>Equals <link linkend="FE_SET_FRONTEND">FE_SET_FRONTEND</link> for this command.</para> | ||
|  | </entry> | ||
|  |  </row><row><entry | ||
|  |  align="char"> | ||
|  | <para>struct | ||
|  |  dvb_frontend_parameters | ||
|  |  *p</para> | ||
|  | </entry><entry | ||
|  |  align="char"> | ||
|  | <para>Points to parameters for tuning operation.</para> | ||
|  | </entry> | ||
|  |  </row></tbody></tgroup></informaltable> | ||
|  | 
 | ||
|  | &return-value-dvb; | ||
|  | <informaltable><tgroup cols="2"><tbody><row><entry | ||
|  |  align="char"> | ||
|  | <para>EINVAL</para> | ||
|  | </entry><entry | ||
|  |  align="char"> | ||
|  | <para>Maximum supported symbol rate reached.</para> | ||
|  | </entry> | ||
|  | </row></tbody></tgroup></informaltable> | ||
|  | </section> | ||
|  | 
 | ||
|  | <section id="FE_GET_FRONTEND"> | ||
|  | <title>FE_GET_FRONTEND</title> | ||
|  | <para>DESCRIPTION | ||
|  | </para> | ||
|  | <informaltable><tgroup cols="1"><tbody><row><entry | ||
|  |  align="char"> | ||
|  | <para>This ioctl call queries the currently effective frontend parameters. For this | ||
|  |  command, read-only access to the device is sufficient.</para> | ||
|  | </entry> | ||
|  |  </row></tbody></tgroup></informaltable> | ||
|  | 
 | ||
|  | <para>SYNOPSIS | ||
|  | </para> | ||
|  | <informaltable><tgroup cols="1"><tbody><row><entry | ||
|  |  align="char"> | ||
|  | <para>int ioctl(int fd, int request = <link linkend="FE_GET_FRONTEND">FE_GET_FRONTEND</link>, | ||
|  |  struct dvb_frontend_parameters ⋆p);</para> | ||
|  | </entry> | ||
|  |  </row></tbody></tgroup></informaltable> | ||
|  | 
 | ||
|  | <para>PARAMETERS | ||
|  | </para> | ||
|  | <informaltable><tgroup cols="2"><tbody><row><entry | ||
|  |  align="char"> | ||
|  | <para>int fd</para> | ||
|  | </entry><entry | ||
|  |  align="char"> | ||
|  | <para>File descriptor returned by a previous call to open().</para> | ||
|  | </entry> | ||
|  |  </row><row><entry | ||
|  |  align="char"> | ||
|  | <para>int request</para> | ||
|  | </entry><entry | ||
|  |  align="char"> | ||
|  | <para>Equals <link linkend="FE_SET_FRONTEND">FE_SET_FRONTEND</link> for this command.</para> | ||
|  | </entry> | ||
|  |  </row><row><entry | ||
|  |  align="char"> | ||
|  | <para>struct | ||
|  |  dvb_frontend_parameters | ||
|  |  *p</para> | ||
|  | </entry><entry | ||
|  |  align="char"> | ||
|  | <para>Points to parameters for tuning operation.</para> | ||
|  | </entry> | ||
|  |  </row></tbody></tgroup></informaltable> | ||
|  | 
 | ||
|  | &return-value-dvb; | ||
|  | <informaltable><tgroup cols="2"><tbody><row><entry | ||
|  |  align="char"> | ||
|  | <para>EINVAL</para> | ||
|  | </entry><entry | ||
|  |  align="char"> | ||
|  | <para>Maximum supported symbol rate reached.</para> | ||
|  | </entry> | ||
|  |  </row></tbody></tgroup></informaltable> | ||
|  | 
 | ||
|  | </section> | ||
|  | 
 | ||
|  | <section id="FE_GET_EVENT"> | ||
|  | <title>FE_GET_EVENT</title> | ||
|  | <para>DESCRIPTION | ||
|  | </para> | ||
|  | <informaltable><tgroup cols="1"><tbody><row><entry | ||
|  |  align="char"> | ||
|  | <para>This ioctl call returns a frontend event if available. If an event is not | ||
|  |  available, the behavior depends on whether the device is in blocking or | ||
|  |  non-blocking mode. In the latter case, the call fails immediately with errno | ||
|  |  set to EWOULDBLOCK. In the former case, the call blocks until an event | ||
|  |  becomes available.</para> | ||
|  | </entry> | ||
|  |  </row><row><entry | ||
|  |  align="char"> | ||
|  | <para>The standard Linux poll() and/or select() system calls can be used with the | ||
|  |  device file descriptor to watch for new events. For select(), the file descriptor | ||
|  |  should be included in the exceptfds argument, and for poll(), POLLPRI should | ||
|  |  be specified as the wake-up condition. Since the event queue allocated is | ||
|  |  rather small (room for 8 events), the queue must be serviced regularly to avoid | ||
|  |  overflow. If an overflow happens, the oldest event is discarded from the queue, | ||
|  |  and an error (EOVERFLOW) occurs the next time the queue is read. After | ||
|  |  reporting the error condition in this fashion, subsequent | ||
|  |  <link linkend="FE_GET_EVENT">FE_GET_EVENT</link> | ||
|  |  calls will return events from the queue as usual.</para> | ||
|  | </entry> | ||
|  |  </row><row><entry | ||
|  |  align="char"> | ||
|  | <para>For the sake of implementation simplicity, this command requires read/write | ||
|  |  access to the device.</para> | ||
|  | </entry> | ||
|  |  </row></tbody></tgroup></informaltable> | ||
|  | 
 | ||
|  | <para>SYNOPSIS | ||
|  | </para> | ||
|  | <informaltable><tgroup cols="1"><tbody><row><entry | ||
|  |  align="char"> | ||
|  | <para>int ioctl(int fd, int request = QPSK_GET_EVENT, | ||
|  |  struct dvb_frontend_event ⋆ev);</para> | ||
|  | </entry> | ||
|  |  </row></tbody></tgroup></informaltable> | ||
|  | 
 | ||
|  | <para>PARAMETERS | ||
|  | </para> | ||
|  | <informaltable><tgroup cols="2"><tbody><row><entry | ||
|  |  align="char"> | ||
|  | <para>int fd</para> | ||
|  | </entry><entry | ||
|  |  align="char"> | ||
|  | <para>File descriptor returned by a previous call to open().</para> | ||
|  | </entry> | ||
|  |  </row><row><entry | ||
|  |  align="char"> | ||
|  | <para>int request</para> | ||
|  | </entry><entry | ||
|  |  align="char"> | ||
|  | <para>Equals <link linkend="FE_GET_EVENT">FE_GET_EVENT</link> for this command.</para> | ||
|  | </entry> | ||
|  |  </row><row><entry | ||
|  |  align="char"> | ||
|  | <para>struct | ||
|  |  dvb_frontend_event | ||
|  |  *ev</para> | ||
|  | </entry><entry | ||
|  |  align="char"> | ||
|  | <para>Points to the location where the event,</para> | ||
|  | </entry> | ||
|  |  </row><row><entry | ||
|  |  align="char"> | ||
|  | </entry><entry | ||
|  |  align="char"> | ||
|  | <para>if any, is to be stored.</para> | ||
|  | </entry> | ||
|  |  </row></tbody></tgroup></informaltable> | ||
|  | 
 | ||
|  | &return-value-dvb; | ||
|  | <informaltable><tgroup cols="2"><tbody><row><entry | ||
|  |  align="char"> | ||
|  | <para>EWOULDBLOCK</para> | ||
|  | </entry><entry | ||
|  |  align="char"> | ||
|  | <para>There is no event pending, and the device is in | ||
|  |  non-blocking mode.</para> | ||
|  | </entry> | ||
|  |  </row><row><entry | ||
|  |  align="char"> | ||
|  | <para>EOVERFLOW</para> | ||
|  | </entry><entry | ||
|  |  align="char"> | ||
|  | <para>Overflow in event queue - one or more events were lost.</para> | ||
|  | </entry> | ||
|  | </row></tbody></tgroup></informaltable> | ||
|  | </section> | ||
|  | 
 | ||
|  | <section id="FE_DISHNETWORK_SEND_LEGACY_CMD"> | ||
|  | 	<title>FE_DISHNETWORK_SEND_LEGACY_CMD</title> | ||
|  | <para>DESCRIPTION</para> | ||
|  | <informaltable><tgroup cols="1"><tbody><row> | ||
|  | <entry align="char"> | ||
|  | <para>WARNING: This is a very obscure legacy command, used only at stv0299 driver. Should not be used on newer drivers.</para> | ||
|  | <para>It provides a non-standard method for selecting Diseqc voltage on the frontend, for Dish Network legacy switches.</para> | ||
|  | <para>As support for this ioctl were added in 2004, this means that such dishes were already legacy in 2004.</para> | ||
|  | </entry> | ||
|  | </row></tbody></tgroup></informaltable> | ||
|  | 
 | ||
|  | <para>SYNOPSIS</para> | ||
|  | <informaltable><tgroup cols="1"><tbody><row> | ||
|  | <entry align="char"> | ||
|  | <para>int ioctl(int fd, int request = | ||
|  | 	<link linkend="FE_DISHNETWORK_SEND_LEGACY_CMD">FE_DISHNETWORK_SEND_LEGACY_CMD</link>, unsigned long cmd);</para> | ||
|  | </entry> | ||
|  | </row></tbody></tgroup></informaltable> | ||
|  | 
 | ||
|  | <para>PARAMETERS</para> | ||
|  | <informaltable><tgroup cols="2"><tbody><row> | ||
|  | <entry align="char"> | ||
|  | 	<para>unsigned long cmd</para> | ||
|  | </entry> | ||
|  | <entry align="char"> | ||
|  | <para> | ||
|  | sends the specified raw cmd to the dish via DISEqC. | ||
|  | </para> | ||
|  | </entry> | ||
|  |  </row></tbody></tgroup></informaltable> | ||
|  | 
 | ||
|  | &return-value-dvb; | ||
|  | </section> | ||
|  | 
 | ||
|  | </section> |