libdvbv5: Digital TV frontend control

libdvbv5 1.26.1 Library to work with Digital TV devices on Linux

Files | Data Structures | Macros | Functions
Digital TV frontend control

## Files
file | dvb-fe.h
| Provides interfaces to deal with DVB frontend.
file | dvb-v5-std.h
| Provides libdvbv5 defined properties for the frontend.

## Data Structures
struct | dvb_v5_fe_parms
| Keeps data needed to handle the DVB frontend. More...

## Macros
#define | MAX_DELIVERY_SYSTEMS
| Max number of delivery systems for a given frontend.
#define | DTV_USER_COMMAND_START
| Start number for libdvbv5 user commands.
#define | DTV_POLARIZATION
| Satellite polarization (for Satellite delivery systems)
#define | DTV_AUDIO_PID
| Audio PID.
#define | DTV_VIDEO_PID
| Video PID.
#define | DTV_SERVICE_ID
| MPEG TS service ID.
#define | DTV_CH_NAME
| Digital TV service name.
#define | DTV_VCHANNEL
| Digital TV channel number.
#define | DTV_SAT_NUMBER
| Number of the satellite (used on multi-dish Satellite systems)
#define | DTV_DISEQC_WAIT
| Extra time needed to wait for DiSeqC to complete, in ms.
#define | DTV_DISEQC_LNB
| LNBf name.
#define | DTV_FREQ_BPF
| SCR/Unicable band-pass filter frequency in kHz.
#define | DTV_PLS_CODE
| DVB-T2 PLS code.
#define | DTV_PLS_MODE
| DVB-T2 PLS mode.
#define | DTV_COUNTRY_CODE
| Country variant of international delivery system standard.
#define | DTV_MAX_USER_COMMAND
| Last user command.
#define | DTV_USER_NAME_SIZE
| Number of user commands.
#define | DTV_STAT_COMMAND_START
| Start number for libdvbv5 statistics commands.
#define | DTV_STATUS
| Lock status of a DTV frontend.
#define | DTV_BER
| Bit Error Rate.
#define | DTV_PER
| Packet Error Rate.
#define | DTV_QUALITY
| A quality indicator that represents if a locked channel provides a good, OK or poor signal.
#define | DTV_PRE_BER
| Bit Error Rate before Viterbi.
#define | DTV_MAX_STAT_COMMAND
| Last statistics command.
#define | DTV_STAT_NAME_SIZE
| Number of statistics commands.
#define | DTV_NUM_KERNEL_STATS
| Number of statistics commands provided by the Kernel.
#define | DTV_NUM_STATS_PROPS
| Total number of statistics commands.

## Functions
struct dvb_v5_fe_parms * | dvb_fe_dummy (void)
| Allocates a dummy frontend structure.
struct dvb_v5_fe_parms * | dvb_fe_open_flags (int adapter, int frontend, unsigned verbose, unsigned use_legacy_call, dvb_logfunc logfunc, int flags)
| Opens a frontend and allocates a structure to work with.
struct dvb_v5_fe_parms * | dvb_fe_open (int adapter, int frontend, unsigned verbose, unsigned use_legacy_call)
| Opens a frontend and allocates a structure to work with.
struct dvb_v5_fe_parms * | dvb_fe_open2 (int adapter, int frontend, unsigned verbose, unsigned use_legacy_call, dvb_logfunc logfunc)
| Opens a frontend and allocates a structure to work with.
void | dvb_fe_close (struct dvb_v5_fe_parms *parms)
| Closes the frontend and frees allocated resources.
const char * | dvb_cmd_name (int cmd)
| Returns the string name associated with a DVBv5 command.
const char *const * | dvb_attr_names (int cmd)
| Returns an string array with the valid string values associated with a DVBv5 command.
int | dvb_fe_retrieve_parm (const struct dvb_v5_fe_parms *parms, unsigned cmd, uint32_t *value)
| Retrieves the value of a DVBv5/libdvbv5 property.
int | dvb_fe_store_parm (struct dvb_v5_fe_parms *parms, unsigned cmd, uint32_t value)
| Stores the value of a DVBv5/libdvbv5 property.
int | dvb_set_sys (struct dvb_v5_fe_parms *parms, fe_delivery_system_t sys)
| Sets the delivery system.
int | dvb_add_parms_for_sys (struct dvb_v5_fe_parms *parms, fe_delivery_system_t sys)
| Make dvb properties reflect the current standard.
int | dvb_set_compat_delivery_system (struct dvb_v5_fe_parms *parms, uint32_t desired_system)
| Sets the delivery system.
void | dvb_fe_prt_parms (const struct dvb_v5_fe_parms *parms)
| Prints all the properties at the cache.
int | dvb_fe_set_parms (struct dvb_v5_fe_parms *parms)
| Prints all the properties at the cache.
int | dvb_fe_get_parms (struct dvb_v5_fe_parms *parms)
| Prints all the properties at the cache.
struct dtv_stats * | dvb_fe_retrieve_stats_layer (struct dvb_v5_fe_parms *parms, unsigned cmd, unsigned layer)
| Retrieve the stats for a DTV layer from cache.
int | dvb_fe_retrieve_stats (struct dvb_v5_fe_parms *parms, unsigned cmd, uint32_t *value)
| Retrieve the stats for a DTV layer from cache.
int | dvb_fe_get_stats (struct dvb_v5_fe_parms *parms)
| Retrieve the stats from the Kernel.
float | dvb_fe_retrieve_ber (struct dvb_v5_fe_parms *parms, unsigned layer, enum fecap_scale_params *scale)
| Retrieve the BER stats from cache.
float | dvb_fe_retrieve_per (struct dvb_v5_fe_parms *parms, unsigned layer)
| Retrieve the PER stats from cache.
enum dvb_quality | dvb_fe_retrieve_quality (struct dvb_v5_fe_parms *parms, unsigned layer)
| Retrieve the quality stats from cache.
int | dvb_fe_snprintf_eng (char *buf, int len, float val)
| Ancillary function to sprintf on ENG format.
int | dvb_fe_snprintf_stat (struct dvb_v5_fe_parms *parms, uint32_t cmd, char *display_name, int layer, char **buf, int *len, int *show_layer_name)
| Ancillary function to sprintf on ENG format.
int | dvb_fe_get_event (struct dvb_v5_fe_parms *parms)
| Get both status statistics and dvb parameters.
int | dvb_fe_sec_voltage (struct dvb_v5_fe_parms *parms, int on, int v18)
| DVB ioctl wrapper for setting SEC voltage.
int | dvb_fe_sec_tone (struct dvb_v5_fe_parms *parms, fe_sec_tone_mode_t tone)
| DVB ioctl wrapper for setting SEC tone.
int | dvb_fe_lnb_high_voltage (struct dvb_v5_fe_parms *parms, int on)
| DVB ioctl wrapper for setting LNBf high voltage.
int | dvb_fe_diseqc_burst (struct dvb_v5_fe_parms *parms, int mini_b)
| DVB ioctl wrapper for setting SEC DiSeqC tone burst to select between satellite A or B.
int | dvb_fe_diseqc_cmd (struct dvb_v5_fe_parms *parms, const unsigned len, const unsigned char *buf)
| DVB ioctl wrapper for setting SEC DiSeqC command.
int | dvb_fe_diseqc_reply (struct dvb_v5_fe_parms *parms, unsigned *len, char *buf, int timeout)
| DVB ioctl wrapper for getting SEC DiSEqC reply.
int | dvb_fe_is_satellite (uint32_t delivery_system)
| DVB Ancillary routine to check if a given Delivery system is satellite.
int | dvb_fe_set_default_country (struct dvb_v5_fe_parms *parms, const char *country)
| Set default country variant of delivery systems like ISDB-T.

## Detailed Description

## Macro Definition Documentation

## ◆ DTV_AUDIO_PID

#define DTV_AUDIO_PID

Audio PID.

Definition at line 111 of file dvb-v5-std.h.

## ◆ DTV_BER

#define DTV_BER

Bit Error Rate.

This is a parameter that it is derivated from two counters at the Kernel side

Examples
  dvb-fe-tool.c, dvbv5-scan.c, and dvbv5-zap.c.

Definition at line 200 of file dvb-v5-std.h.

## ◆ DTV_CH_NAME

#define DTV_CH_NAME

Digital TV service name.

Definition at line 113 of file dvb-v5-std.h.

## ◆ DTV_COUNTRY_CODE

#define DTV_COUNTRY_CODE

Country variant of international delivery system standard.

in ISO 3166-1 two letter code.

Definition at line 121 of file dvb-v5-std.h.

## ◆ DTV_DISEQC_LNB

#define DTV_DISEQC_LNB

LNBf name.

Definition at line 117 of file dvb-v5-std.h.

## ◆ DTV_DISEQC_WAIT

#define DTV_DISEQC_WAIT

Extra time needed to wait for DiSeqC to complete, in ms.

The minimal wait time is 15 ms. The time here will be added to the minimal time.

Definition at line 116 of file dvb-v5-std.h.

## ◆ DTV_FREQ_BPF

#define DTV_FREQ_BPF

SCR/Unicable band-pass filter frequency in kHz.

Definition at line 118 of file dvb-v5-std.h.

## ◆ DTV_MAX_STAT_COMMAND

#define DTV_MAX_STAT_COMMAND

Last statistics command.

Definition at line 205 of file dvb-v5-std.h.

## ◆ DTV_MAX_USER_COMMAND

#define DTV_MAX_USER_COMMAND

Last user command.

Definition at line 123 of file dvb-v5-std.h.

## ◆ DTV_NUM_KERNEL_STATS

#define DTV_NUM_KERNEL_STATS

Number of statistics commands provided by the Kernel.

Definition at line 210 of file dvb-v5-std.h.

## ◆ DTV_NUM_STATS_PROPS

#define DTV_NUM_STATS_PROPS

Total number of statistics commands.

Definition at line 212 of file dvb-v5-std.h.

## ◆ DTV_PER

#define DTV_PER

Packet Error Rate.

This is a parameter that it is derivated from two counters at the Kernel side

Examples
  dvb-fe-tool.c, dvbv5-scan.c, and dvbv5-zap.c.

Definition at line 201 of file dvb-v5-std.h.

## ◆ DTV_PLS_CODE

#define DTV_PLS_CODE

DVB-T2 PLS code.

Not used internally. It is needed only for file conversion.

Definition at line 119 of file dvb-v5-std.h.

## ◆ DTV_PLS_MODE

#define DTV_PLS_MODE

DVB-T2 PLS mode.

Not used internally. It is needed only for file conversion.

Definition at line 120 of file dvb-v5-std.h.

## ◆ DTV_POLARIZATION

#define DTV_POLARIZATION

Satellite polarization (for Satellite delivery systems)

Examples
  dvbv5-scan.c.

Definition at line 109 of file dvb-v5-std.h.

## ◆ DTV_PRE_BER

#define DTV_PRE_BER

Bit Error Rate before Viterbi.

This is the error rate before applying the Forward Error Correction. This is a parameter that it is derivated from two counters at the Kernel side.

Examples
  dvb-fe-tool.c, dvbv5-scan.c, and dvbv5-zap.c.

Definition at line 203 of file dvb-v5-std.h.

## ◆ DTV_QUALITY

#define DTV_QUALITY

A quality indicator that represents if a locked channel provides a good, OK or poor signal.

This is estimated considering the error rates, signal strengh and/or S/N ratio of the carrier.

Examples
  dvb-fe-tool.c, dvbv5-scan.c, and dvbv5-zap.c.

Definition at line 202 of file dvb-v5-std.h.

## ◆ DTV_SAT_NUMBER

#define DTV_SAT_NUMBER

Number of the satellite (used on multi-dish Satellite systems)

Definition at line 115 of file dvb-v5-std.h.

## ◆ DTV_SERVICE_ID

#define DTV_SERVICE_ID

MPEG TS service ID.

Definition at line 112 of file dvb-v5-std.h.

## ◆ DTV_STAT_COMMAND_START

#define DTV_STAT_COMMAND_START

Start number for libdvbv5 statistics commands.

Definition at line 197 of file dvb-v5-std.h.

## ◆ DTV_STAT_NAME_SIZE

#define DTV_STAT_NAME_SIZE

Number of statistics commands.

Definition at line 207 of file dvb-v5-std.h.

## ◆ DTV_STATUS

#define DTV_STATUS

Lock status of a DTV frontend.

This actually comes from the Kernel, but it uses a separate ioctl.

Examples
  dvb-fe-tool.c, dvbv5-scan.c, and dvbv5-zap.c.

Definition at line 199 of file dvb-v5-std.h.

## ◆ DTV_USER_COMMAND_START

#define DTV_USER_COMMAND_START

Start number for libdvbv5 user commands.

Definition at line 107 of file dvb-v5-std.h.

## ◆ DTV_USER_NAME_SIZE

#define DTV_USER_NAME_SIZE

Number of user commands.

Definition at line 125 of file dvb-v5-std.h.

## ◆ DTV_VCHANNEL

#define DTV_VCHANNEL

Digital TV channel number.

May contain symbols

Definition at line 114 of file dvb-v5-std.h.

## ◆ DTV_VIDEO_PID

#define DTV_VIDEO_PID

Video PID.

Definition at line 110 of file dvb-v5-std.h.

## ◆ MAX_DELIVERY_SYSTEMS

#define MAX_DELIVERY_SYSTEMS

Max number of delivery systems for a given frontend.

Definition at line 71 of file dvb-fe.h.

## Function Documentation

## ◆ dvb_add_parms_for_sys()

int dvb_add_parms_for_sys | ( | struct dvb_v5_fe_parms * | parms,
|  | fe_delivery_system_t | sys
| ) |  |

Make dvb properties reflect the current standard.

Parameters

  parms | struct dvb_v5_fe_parms pointer to the opened device
  sys | delivery system to be selected

This function prepares the properties cache for a given delivery system.

It is automatically called by dvb_set_sys(), and should not be normally called, except when dvb_fe_dummy() is used.

Returns
  Return 0 if success, EINVAL otherwise.

## ◆ dvb_attr_names()

const char *const * dvb_attr_names | ( | int | cmd | ) |

Returns an string array with the valid string values associated with a DVBv5 command.

Parameters

  cmd | DVBv5 or libdvbv5 property

Returns
  it returns a string array that corresponds to the names associated with the possible values for that property, when available. For example: dvb_cmd_name(DTV_CODE_RATE_HP) would return an array with the possible values for the code rates: { "1/2", "2/3", ... NULL }

Note
  The array always ends with NULL.

## ◆ dvb_cmd_name()

const char * dvb_cmd_name | ( | int | cmd | ) |

Returns the string name associated with a DVBv5 command.

Parameters

  cmd | DVBv5 or libdvbv5 property

This function gets an integer argument (cmd) and returns a string that corresponds to the name of that property.

Returns
  it returns a string that corresponds to the property name. For example: dvb_cmd_name(DTV_GUARD_INTERVAL) would return "GUARD_INTERVAL" It also returns names for the properties used internally by libdvbv5.

## ◆ dvb_fe_close()

void dvb_fe_close | ( | struct dvb_v5_fe_parms * | parms | ) |

Closes the frontend and frees allocated resources.

Parameters

  parms | struct dvb_v5_fe_parms pointer to the opened device

## ◆ dvb_fe_diseqc_burst()

int dvb_fe_diseqc_burst | ( | struct dvb_v5_fe_parms * | parms,
|  | int | mini_b
| ) |  |

DVB ioctl wrapper for setting SEC DiSeqC tone burst to select between satellite A or B.

Parameters

  parms | struct dvb_v5_fe_parms pointer to the opened device
  mini_b | if different than zero, sends a 22 KHz tone burst to select satellite B. Otherwise, sends tone to select satellite A.

Valid only on certain DISEqC arrangements.

If dvb_v5_fe_parms::lnb is set, this is controlled automatically.

## ◆ dvb_fe_diseqc_cmd()

int dvb_fe_diseqc_cmd | ( | struct dvb_v5_fe_parms * | parms,
|  | const unsigned | len,
|  | const unsigned char * | buf
| ) |  |

DVB ioctl wrapper for setting SEC DiSeqC command.

Parameters

  parms | struct dvb_v5_fe_parms pointer to the opened device
  len | size of the DiSEqC command
  buf | DiSEqC command to be sent

If dvb_v5_fe_parms::lnb is set, this is controlled automatically.

## ◆ dvb_fe_diseqc_reply()

int dvb_fe_diseqc_reply | ( | struct dvb_v5_fe_parms * | parms,
|  | unsigned * | len,
|  | char * | buf,
|  | int | timeout
| ) |  |

DVB ioctl wrapper for getting SEC DiSEqC reply.

Parameters

  parms | struct dvb_v5_fe_parms pointer to the opened device
  len | size of the DiSEqC command
  buf | DiSEqC command to be sent
  timeout | maximum time to receive the command, in ms.

If dvb_v5_fe_parms::lnb is set, this is controlled automatically.

## ◆ dvb_fe_dummy()

struct dvb_v5_fe_parms * dvb_fe_dummy | ( | void |  | ) |

Allocates a dummy frontend structure.

This is useful for some applications that may want to just use the frontend structure internally, without associating it with a real hardware

Returns
  Returns a pointer to a dummy struct, or NULL if no memory.

## ◆ dvb_fe_get_event()

int dvb_fe_get_event | ( | struct dvb_v5_fe_parms * | parms | ) |

Get both status statistics and dvb parameters.

Parameters

  parms | struct dvb_v5_fe_parms pointer to the opened device

That's similar of calling both dvb_fe_get_parms() and dvb_fe_get_stats().

Returns
  It returns 0 if success or an errorno otherwise.

## ◆ dvb_fe_get_parms()

int dvb_fe_get_parms | ( | struct dvb_v5_fe_parms * | parms | ) |

Prints all the properties at the cache.

Parameters

  parms | struct dvb_v5_fe_parms pointer to the opened device

Gets the properties from the DVB hardware. The values will only reflect what's set at the hardware if the frontend is locked.

Returns
  Return 0 if success, EINVAL otherwise.

Examples
  dvb-fe-tool.c.

## ◆ dvb_fe_get_stats()

int dvb_fe_get_stats | ( | struct dvb_v5_fe_parms * | parms | ) |

Retrieve the stats from the Kernel.

Parameters

  parms | struct dvb_v5_fe_parms pointer to the opened device

Updates the stats cache from the available stats at the Kernel.

Returns
  The returned value is 0 if success, EINVAL otherwise.

Examples
  dvb-fe-tool.c, dvbv5-scan.c, and dvbv5-zap.c.

## ◆ dvb_fe_is_satellite()

int dvb_fe_is_satellite | ( | uint32_t | delivery_system | ) |

DVB Ancillary routine to check if a given Delivery system is satellite.

Parameters

  delivery_system | delivery system to be selected

## ◆ dvb_fe_lnb_high_voltage()

int dvb_fe_lnb_high_voltage | ( | struct dvb_v5_fe_parms * | parms,
|  | int | on
| ) |  |

DVB ioctl wrapper for setting LNBf high voltage.

Parameters

  parms | struct dvb_v5_fe_parms pointer to the opened device
  on | a value different than zero indicates to produce lightly higher voltages instead of 13/18V, in order to compensate for long cables.

## ◆ dvb_fe_open()

struct dvb_v5_fe_parms * dvb_fe_open | ( | int | adapter,
|  | int | frontend,
|  | unsigned | verbose,
|  | unsigned | use_legacy_call
| ) |  |

Opens a frontend and allocates a structure to work with.

Parameters

  adapter | Number of the adapter to open
  frontend | Number of the frontend to open
  verbose | Verbosity level of the messages that will be printed
  use_legacy_call | Force to use the DVBv3 calls, instead of using the DVBv5 API

This function should be called before using any other function at the frontend library (or the other alternatives: dvb_fe_open2() or dvb_fe_dummy().

Returns
  Returns a pointer to an allocated data pointer or NULL on error.

## ◆ dvb_fe_open2()

struct dvb_v5_fe_parms * dvb_fe_open2 | ( | int | adapter,
|  | int | frontend,
|  | unsigned | verbose,
|  | unsigned | use_legacy_call,
|  | dvb_logfunc | logfunc
| ) |  |

Opens a frontend and allocates a structure to work with.

Parameters

  adapter | Number of the adapter to open
  frontend | Number of the frontend to open
  verbose | Verbosity level of the messages that will be printed
  use_legacy_call | Force to use the DVBv3 calls, instead of using the DVBv5 API
  logfunc | Callback function to be called when a log event happens. Can either store the event into a file or to print it at the TUI/GUI.

This function should be called before using any other function at the frontend library (or the other alternatives: dvb_fe_open() or dvb_fe_dummy().

Returns
  Returns a pointer to an allocated data pointer or NULL on error.

## ◆ dvb_fe_open_flags()

struct dvb_v5_fe_parms * dvb_fe_open_flags | ( | int | adapter,
|  | int | frontend,
|  | unsigned | verbose,
|  | unsigned | use_legacy_call,
|  | dvb_logfunc | logfunc,
|  | int | flags
| ) |  |

Opens a frontend and allocates a structure to work with.

Parameters

  adapter | Number of the adapter to open
  frontend | Number of the frontend to open
  verbose | Verbosity level of the messages that will be printed
  use_legacy_call | Force to use the DVBv3 calls, instead of using the DVBv5 API
  logfunc | Callback function to be called when a log event happens. Can either store the event into a file or to print it at the TUI/GUI. If NULL, the library will use its internal handler.
  flags | Flags to be passed to open. Currently only two flags are supported: O_RDONLY or O_RDWR. Using O_NONBLOCK may hit unexpected issues.

Todo:
  Add/check support for O_NONBLOCK at the scan routines.

This function should be called before using any other function at the frontend library (or the other alternatives: dvb_fe_open() or dvb_fe_dummy().

In general, this is called using O_RDWR, except if all that it is wanted is to check the DVB frontend statistics.

Returns
  Returns a pointer to an allocated data pointer or NULL on error.

## ◆ dvb_fe_prt_parms()

void dvb_fe_prt_parms | ( | const struct dvb_v5_fe_parms * | parms | ) |

Prints all the properties at the cache.

Parameters

  parms | struct dvb_v5_fe_parms pointer to the opened device

Used mostly for debugging issues.

Examples
  dvb-fe-tool.c.

## ◆ dvb_fe_retrieve_ber()

float dvb_fe_retrieve_ber | ( | struct dvb_v5_fe_parms * | parms,
|  | unsigned | layer,
|  | enum fecap_scale_params * | scale
| ) |  |

Retrieve the BER stats from cache.

Parameters

  parms | struct dvb_v5_fe_parms pointer to the opened device
  layer | DTV layer
  scale | retrieves the scale

Gets the value for BER stats from stats cache, on a given layer. Layer 0 is always present. On DTV standards that doesn't have layers, it returns the same value as dvb_fe_retrieve_stats() for layer = 0.

For DTV standards with multiple layers, like ISDB, layer=1 is layer 'A', layer=2 is layer 'B' and layer=3 is layer 'C'. Please notice that not all frontends support per-layer stats. Also, the layer value is only valid if the layer exists at the original stream. Also, on such standards, layer 0 is typically a mean value of the layers, or a sum of events (if FE_SCALE_COUNTER).

For it to be valid, dvb_fe_get_stats() should be called first.

Returns
  It returns a float number for the BER value. If the statistics is not available for any reason, scale will be equal to FE_SCALE_NOT_AVAILABLE.

## ◆ dvb_fe_retrieve_parm()

int dvb_fe_retrieve_parm | ( | const struct dvb_v5_fe_parms * | parms,
|  | unsigned | cmd,
|  | uint32_t * | value
| ) |  |

Retrieves the value of a DVBv5/libdvbv5 property.

Parameters

  parms | struct dvb_v5_fe_parms pointer to the opened device
  cmd | DVBv5 or libdvbv5 property
  value | Pointer to an uint32_t where the value will be stored.

This reads the value of a property stored at the cache. Before using it, a dvb_fe_get_parms() is likely required.

Returns
  Return 0 if success, EINVAL otherwise.

Examples
  dvbv5-zap.c.

## ◆ dvb_fe_retrieve_per()

float dvb_fe_retrieve_per | ( | struct dvb_v5_fe_parms * | parms,
|  | unsigned | layer
| ) |  |

Retrieve the PER stats from cache.

Parameters

  parms | struct dvb_v5_fe_parms pointer to the opened device
  layer | DTV layer

Gets the value for BER stats from stats cache, on a given layer. Layer 0 is always present. On DTV standards that doesn't have layers, it returns the same value as dvb_fe_retrieve_stats() for layer = 0.

For DTV standards with multiple layers, like ISDB, layer=1 is layer 'A', layer=2 is layer 'B' and layer=3 is layer 'C'. Please notice that not all frontends support per-layer stats. Also, the layer value is only valid if the layer exists at the original stream. Also, on such standards, layer 0 is typically a mean value of the layers, or a sum of events (if FE_SCALE_COUNTER).

For it to be valid, dvb_fe_get_stats() should be called first.

Returns
  A negative value indicates error.

## ◆ dvb_fe_retrieve_quality()

enum dvb_quality dvb_fe_retrieve_quality | ( | struct dvb_v5_fe_parms * | parms,
|  | unsigned | layer
| ) |  |

Retrieve the quality stats from cache.

Parameters

  parms | struct dvb_v5_fe_parms pointer to the opened device
  layer | DTV layer

Gets a quality measure for a given layer. Layer 0 is always present. On DTV standards that doesn't have layers, it returns the same value as dvb_fe_retrieve_stats() for layer = 0.

For DTV standards with multiple layers, like ISDB, layer=1 is layer 'A', layer=2 is layer 'B' and layer=3 is layer 'C'. Please notice that not all frontends support per-layer stats. Also, the layer value is only valid if the layer exists at the original stream. Also, on such standards, layer 0 is typically a mean value of the layers, or a sum of events (if FE_SCALE_COUNTER).

For it to be valid, dvb_fe_get_stats() should be called first.

Returns
  returns an enum dvb_quantity, where DVB_QUAL_UNKNOWN means that the stat isnot available.

Examples
  dvb-fe-tool.c.

## ◆ dvb_fe_retrieve_stats()

int dvb_fe_retrieve_stats | ( | struct dvb_v5_fe_parms * | parms,
|  | unsigned | cmd,
|  | uint32_t * | value
| ) |  |

Retrieve the stats for a DTV layer from cache.

Parameters

  parms | struct dvb_v5_fe_parms pointer to the opened device
  cmd | DVBv5 or libdvbv5 property
  value | DTV value pointer

Gets the value for one stats property for layer = 0.

For it to be valid, dvb_fe_get_stats() should be called first.

Returns
  The returned value is 0 if success, EINVAL otherwise.

Examples
  dvbv5-scan.c, and dvbv5-zap.c.

## ◆ dvb_fe_retrieve_stats_layer()

struct dtv_stats * dvb_fe_retrieve_stats_layer | ( | struct dvb_v5_fe_parms * | parms,
|  | unsigned | cmd,
|  | unsigned | layer
| ) |  |

Retrieve the stats for a DTV layer from cache.

Parameters

  parms | struct dvb_v5_fe_parms pointer to the opened device
  cmd | DVBv5 or libdvbv5 property
  layer | DTV layer

Gets the value for one stats cache, on a given layer. Layer 0 is always present. On DTV standards that doesn't have layers, it returns the same value as dvb_fe_retrieve_stats() for layer = 0.

For DTV standards with multiple layers, like ISDB, layer=1 is layer 'A', layer=2 is layer 'B' and layer=3 is layer 'C'. Please notice that not all frontends support per-layer stats. Also, the layer value is only valid if the layer exists at the original stream. Also, on such standards, layer 0 is typically a mean value of the layers, or a sum of events (if FE_SCALE_COUNTER).

For it to be valid, dvb_fe_get_stats() should be called first.

Returns
  It returns a struct dtv_stats if succeed or NULL otherwise.

## ◆ dvb_fe_sec_tone()

int dvb_fe_sec_tone | ( | struct dvb_v5_fe_parms * | parms,
|  | fe_sec_tone_mode_t | tone
| ) |  |

DVB ioctl wrapper for setting SEC tone.

Parameters

  parms | struct dvb_v5_fe_parms pointer to the opened device
  tone | tone setting, as defined by DVB fe_sec_tone_mode_t type

If dvb_v5_fe_parms::lnb is set, this is controlled automatically.

## ◆ dvb_fe_sec_voltage()

int dvb_fe_sec_voltage | ( | struct dvb_v5_fe_parms * | parms,
|  | int | on,
|  | int | v18
| ) |  |

DVB ioctl wrapper for setting SEC voltage.

Parameters

  parms | struct dvb_v5_fe_parms pointer to the opened device
  on | a value different than zero indicates to enable voltage on a Satellite Equipment Control (SEC)
  v18 | if on != 0, a value different than zero means 18 Volts; zero means 13 Volts.

If dvb_v5_fe_parms::lnb is set, this is controlled automatically.

## ◆ dvb_fe_set_default_country()

int dvb_fe_set_default_country | ( | struct dvb_v5_fe_parms * | parms,
|  | const char * | country
| ) |  |

Set default country variant of delivery systems like ISDB-T.

Parameters

  parms | struct dvb_v5_fe_parms pointer to the opened device
  country | default country, in ISO 3166-1 two letter code. If NULL, default charset is guessed from locale environment variables.

Returns
  0 if success or an errorno otherwise.

"COUNTRY" property in dvb_fe_set_parm() overrides the setting.

Examples
  dvbv5-scan.c, and dvbv5-zap.c.

## ◆ dvb_fe_set_parms()

int dvb_fe_set_parms | ( | struct dvb_v5_fe_parms * | parms | ) |

Prints all the properties at the cache.

Parameters

  parms | struct dvb_v5_fe_parms pointer to the opened device

Writes the properties stored at the DVB cache at the DVB hardware. At return, some properties could have a different value, as the frontend may not support the values set.

Returns
  Return 0 if success, EINVAL otherwise.

Examples
  dvbv5-zap.c.

## ◆ dvb_fe_snprintf_eng()

int dvb_fe_snprintf_eng | ( | char * | buf,
|  | int | len,
|  | float | val
| ) |  |

Ancillary function to sprintf on ENG format.

Parameters

  buf | buffer to store the value
  len | buffer length
  val | value to be printed

On ENG notation, the exponential value should be multiple of 3. This is good to display some values, like BER.

Returns
  At return, it shows the actual size of the print. A negative value indicates an error.

## ◆ dvb_fe_snprintf_stat()

int dvb_fe_snprintf_stat | ( | struct dvb_v5_fe_parms * | parms,
|  | uint32_t | cmd,
|  | char * | display_name,
|  | int | layer,
|  | char ** | buf,
|  | int * | len,
|  | int * | show_layer_name
| ) |  |

Ancillary function to sprintf on ENG format.

Parameters

  parms | struct dvb_v5_fe_parms pointer to the opened device
  cmd | DVBv5 or libdvbv5 property
  display_name | String with the name of the property to be shown
  layer | DTV Layer
  buf | buffer to store the value
  len | buffer length
  show_layer_name | a value different than zero shows the layer name, if the layer is bigger than zero.

This function calls internally dvb_fe_retrieve_stats_layer(). It allows to print a DVBv5 statistics value into a string. An extra property is available (DTV_QUALITY) with prints either one of the values: Poor, Ok or Good, depending on the overall measures.

Returns
  : It returns the length of the printed data. A negative value indicates an error.

Examples
  dvb-fe-tool.c, dvbv5-scan.c, and dvbv5-zap.c.

## ◆ dvb_fe_store_parm()

int dvb_fe_store_parm | ( | struct dvb_v5_fe_parms * | parms,
|  | unsigned | cmd,
|  | uint32_t | value
| ) |  |

Stores the value of a DVBv5/libdvbv5 property.

Parameters

  parms | struct dvb_v5_fe_parms pointer to the opened device
  cmd | DVBv5 or libdvbv5 property
  value | Pointer to an uint32_t where the value will be stored.

This stores the value of a property at the cache. The value will only be send to the hardware after calling dvb_fe_set_parms().

Returns
  Return 0 if success, EINVAL otherwise.

Examples
  dvbv5-zap.c.

## ◆ dvb_set_compat_delivery_system()

int dvb_set_compat_delivery_system | ( | struct dvb_v5_fe_parms * | parms,
|  | uint32_t | desired_system
| ) |  |

Sets the delivery system.

Parameters

  parms | struct dvb_v5_fe_parms pointer to the opened device
  desired_system | delivery system to be selected

This function changes the delivery system of the frontend. By default, the libdvbv5 will use the first available delivery system. If another delivery system is desirable, this function should be called before being able to store the properties for the new delivery system via dvb_fe_store_parm().

This function is an enhanced version of dvb_set_sys(). It has an special logic inside to work with Kernels that supports only DVBv3.

Returns
  Return 0 if success, EINVAL otherwise.

Examples
  dvbv5-zap.c.

## ◆ dvb_set_sys()

int dvb_set_sys | ( | struct dvb_v5_fe_parms * | parms,
|  | fe_delivery_system_t | sys
| ) |  |

Sets the delivery system.

Parameters

  parms | struct dvb_v5_fe_parms pointer to the opened device
  sys | delivery system to be selected

This function changes the delivery system of the frontend. By default, the libdvbv5 will use the first available delivery system. If another delivery system is desirable, this function should be called before being able to store the properties for the new delivery system via dvb_fe_store_parm().

Returns
  Return 0 if success, EINVAL otherwise.

Examples
  dvb-fe-tool.c.