summaryrefslogtreecommitdiff
path: root/dvb-spec/API/dvb_api/frontend.xml
diff options
context:
space:
mode:
Diffstat (limited to 'dvb-spec/API/dvb_api/frontend.xml')
-rw-r--r--dvb-spec/API/dvb_api/frontend.xml843
1 files changed, 843 insertions, 0 deletions
diff --git a/dvb-spec/API/dvb_api/frontend.xml b/dvb-spec/API/dvb_api/frontend.xml
new file mode 100644
index 000000000..1cd1b0fbd
--- /dev/null
+++ b/dvb-spec/API/dvb_api/frontend.xml
@@ -0,0 +1,843 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><title>
+ linuxtv.org|DVB Frontend API</title></head><body bgcolor="#000000"
+link="#ffcc00" text="#ffffff" vlink="#ffdd00"><table border="0"
+cellpadding="0" cellspacing="0" width="100%"><tr><td><table border="0"
+cellpadding="0" cellspacing="0" width="100%"><tr><td width="610"><table
+border="0" cellpadding="0" cellspacing="0"><tr valign="top"><td><table
+border="0" cellpadding="0" cellspacing="0" width="180"><tr align="right"
+valign="top"><td><img height="30" src="/images/top01.gif"
+width="180"></td></tr><tr><td align="center" height="38"
+valign="bottom"><img border="0" height="38" src="/images/cimlogo02.gif"
+width="45"></td></tr></table></td><td><table border="0" cellpadding="0"
+cellspacing="0" width="50"><tr><td><img height="30"
+src="/images/top02.gif" width="284"></td></tr><tr><td><img height="45"
+src="/images/top06.gif" width="20">&nbsp;
+
+ </td></tr></table></td><td><table border="0" cellpadding="0"
+cellspacing="0" width="170"><tr><td background="/images/squares05.gif"
+colspan="2"><img height="68" src="/images/squares04.gif"
+width="32"></td></tr></table></td></tr><tr><td></td></tr></table></td><td
+height="68" valign="top" width="100%"><table border="0" cellpadding="0"
+cellspacing="0" width="100%"><tr><td background="/images/squares05.gif"
+height="68"
+width="100%">&nbsp;</td></tr></table></td></tr></table></td></tr><tr><td height="30">
+ &nbsp;
+ </td></tr></table><table border="0" cellpadding="0"
+cellspacing="0"><tr><td width="181"><table border="0" cellpadding="0"
+cellspacing="0" width="181"><tr><td bgcolor="#000000" valign="top"
+width="20"><img height="22" src="/images/gruen.gif" width="20"></td><td
+bgcolor="#003d19" valign="top" width="19"><img height="22"
+src="/images/pfeilgruen.gif" width="19"></td><td bgcolor="#000000"
+valign="top" width="2"></td><td bgcolor="#003d19" width="120"><a
+href="http://www.convergence.de"><font color="#ffcc00"
+face="arial, helvetica" size="2"><b>
+ &nbsp;convergence.de
+ </b></font></a></td><td align="right" bgcolor="#003d19"
+valign="bottom" width="20"><img height="22"
+src="/images/eckeswgruen.gif" width="8"></td></tr><tr><td
+height="2"></td></tr><tr><td bgcolor="#000000" valign="top"
+width="20"><img height="22" src="/images/gruen.gif" width="20"></td><td
+bgcolor="#003d19" valign="top" width="19"><img height="22"
+src="/images/pfeilgruen.gif" width="19"></td><td bgcolor="#000000"
+valign="top" width="2"></td><td bgcolor="#003d19" width="120"><a
+href="http://www.cryptolabs.org"><font color="#ffcc00"
+face="arial, helvetica" size="2"><b>
+ &nbsp;cryptolabs.org</b></font></a></td><td align="right"
+bgcolor="#003d19" valign="bottom" width="20"><img height="22"
+src="/images/eckeswgruen.gif" width="8"></td></tr><tr><td
+height="2"></td></tr><tr><td bgcolor="#000000" valign="top"
+width="20"><img height="22" src="/images/gruen.gif" width="20"></td><td
+bgcolor="#003d19" valign="top" width="19"><img height="22"
+src="/images/pfeilgruen.gif" width="19"></td><td bgcolor="#000000"
+valign="top" width="2"></td><td bgcolor="#003d19" width="120"><a
+href="http://www.directfb.org"><font color="#ffcc00"
+face="arial, helvetica" size="2"><b>
+ &nbsp;directfb.org
+ </b></font></a></td><td align="right" bgcolor="#003d19"
+valign="bottom" width="20"><img height="22"
+src="/images/eckeswgruen.gif" width="8"></td></tr><tr><td
+height="2"></td></tr><tr><td bgcolor="#000000" valign="top"
+width="20"><img height="22" src="/images/gleb.gif" width="20"></td><td
+bgcolor="#ffcc00" valign="top" width="19"><img height="22"
+src="/images/pfeilgelb.gif" width="19"></td><td bgcolor="#000000"
+valign="top" width="2"></td><td bgcolor="#ffcc00" width="120"><a
+href="/"><font color="#003d19" face="arial, helvetica" size="2"><b>
+ &nbsp;linuxtv.org
+ </b></font></a></td><td align="right" bgcolor="#ffcc00"
+valign="bottom" width="20"><img height="22" src="/images/eckeswgelb.gif"
+width="8"></td></tr><tr><td height="2"></td></tr></table></td><td width="20">
+ &nbsp;
+ </td><td valign="top" width="500"><img height="60"
+src="/images/linuxtv.gif" width="245"></td></tr><tr><td align="left"
+valign="top" width="181"><table bgcolor="#ffcc00" border="0"
+cellpadding="0" cellspacing="0" width="185"><tr><td bgcolor="#000000"
+valign="top" width="20"><img height="22" src="/images/gleb.gif"
+width="20"></td><td bgcolor="#ffcc00" width="19"><img height="22"
+src="/images/arrow_main.gif" width="19"></td><td bgcolor="#000000"
+width="2"></td><td bgcolor="#ffcc00" width="131">
+ &nbsp;<a href="/"><font color="#003d19" face="helvetica"
+size="2"><b>linuxtv</b></font></a></td><td bgcolor="#000000"
+width="9"></td></tr><tr><td bgcolor="#000000" colspan="5"
+height="2"></td></tr><tr><td bgcolor="#000000" valign="top"
+width="20"><img height="22" src="/images/gleb.gif" width="20"></td><td
+bgcolor="#ffcc00" width="19"><img height="22"
+src="/images/arrow_main.gif" width="19"></td><td bgcolor="#000000"
+width="2"></td><td bgcolor="#ffcc00" width="131">
+ &nbsp;<a href="/projects.xml"><font color="#003d19" face="helvetica"
+size="2"><b>projects</b></font></a></td><td bgcolor="#000000"
+width="9"></td></tr><tr><td bgcolor="#000000" colspan="5"
+height="2"></td></tr><tr><td bgcolor="#000000" valign="top"
+width="20"><img height="22" src="/images/gleb.gif" width="20"></td><td
+bgcolor="#ffcc00" width="19"><img height="22"
+src="/images/arrow_main_open.gif" width="19"></td><td bgcolor="#000000"
+width="2"></td><td bgcolor="#ffcc00" width="131">
+ &nbsp;<a href="/developer/"><font color="#003d19" face="helvetica"
+size="2"><b>developer</b></font></a></td><td bgcolor="#000000"
+width="9"></td></tr><tr><td bgcolor="#000000" width="20"></td><td
+bgcolor="#ffcc00" width="19">&nbsp;</td><td bgcolor="#000000"
+width="2"></td><td width="131"><img height="13"
+src="/images/arrow_sub_open.gif" width="13">
+ &nbsp;<a href="/developer/dvb.xml"><font color="#000000"
+face="helvetica" size="2">DVB</font></a></td><td bgcolor="#000000"
+width="9"></td></tr><tr><td bgcolor="#000000" width="20"></td><td
+width="19">&nbsp;</td><td bgcolor="#000000" width="2"></td><td width="131">&nbsp;
+ <img height="13" src="/images/space_sub.gif" width="13"><img
+height="13" src="/images/kulleropen.gif" width="13"><a
+href="/developer/dvb_api.xml"><font color="#000000" face="helvetica" size="2">
+ &nbsp;API</font></a></td><td bgcolor="#000000"
+width="9"></td></tr><tr><td bgcolor="#000000" width="20"></td><td
+bgcolor="#ffcc00" width="19">&nbsp;</td><td bgcolor="#000000"
+width="2"></td><td width="131"><img height="13"
+src="/images/arrow_sub.gif" width="13">
+ &nbsp;<a href="/developer/dvd.xml"><font color="#000000"
+face="helvetica" size="2">DVD</font></a></td><td bgcolor="#000000"
+width="9"></td></tr><tr><td bgcolor="#000000" width="20"></td><td
+bgcolor="#ffcc00" width="19">&nbsp;</td><td bgcolor="#000000"
+width="2"></td><td width="131"><img height="13"
+src="/images/arrow_sub.gif" width="13">
+ &nbsp;<a href="/developer/mbone.xml"><font color="#000000"
+face="helvetica" size="2">Mbone</font></a></td><td bgcolor="#000000"
+width="9"></td></tr><tr><td bgcolor="#000000" width="20"></td><td
+bgcolor="#ffcc00" width="19">&nbsp;</td><td bgcolor="#000000"
+width="2"></td><td width="131"><img height="13"
+src="/images/arrow_sub.gif" width="13">
+ &nbsp;<a href="/cvs/"><font color="#000000" face="helvetica"
+size="2">CVS</font></a></td><td bgcolor="#000000"
+width="9"></td></tr><tr><td bgcolor="#000000" colspan="5"
+height="2"></td></tr><tr><td bgcolor="#000000" valign="top"
+width="20"><img height="22" src="/images/gleb.gif" width="20"></td><td
+bgcolor="#ffcc00" width="19"><img height="22"
+src="/images/arrow_main.gif" width="19"></td><td bgcolor="#000000"
+width="2"></td><td bgcolor="#ffcc00" width="131">
+ &nbsp;<a href="/download/"><font color="#003d19" face="helvetica"
+size="2"><b>download</b></font></a></td><td bgcolor="#000000"
+width="9"></td></tr><tr><td bgcolor="#000000" colspan="5"
+height="2"></td></tr><tr><td bgcolor="#000000" valign="top"
+width="20"><img height="22" src="/images/gleb.gif" width="20"></td><td
+bgcolor="#ffcc00" width="19"><img height="22"
+src="/images/arrow_main.gif" width="19"></td><td bgcolor="#000000"
+width="2"></td><td bgcolor="#ffcc00" width="131">
+ &nbsp;<a href="/contact.xml"><font color="#003d19" face="helvetica"
+size="2"><b>contact</b></font></a></td><td bgcolor="#000000"
+width="9"></td></tr><tr><td bgcolor="#000000" colspan="5"
+height="2"></td></tr></table></td><td width="20">
+ &nbsp;
+ </td><td valign="top" width="500"><font color="#ffcc00" face="arial, helvetica"><h2>DVB Frontend API</h2></font>
+
+ <p>
+ The DVB frontend device controls the frontend of the DVB hardware, e.g.
+ tuning, symbol rate, error correction, ...
+ It is accessed through /dev/ost/qpskfe.
+ </p>
+
+ <p>
+ The function calls defined in the include file
+ <a href="frontend.h">frontend.h</a> are described in detail below:
+ </p>
+
+ <p>
+ <font face="arial, helvetica" size="+1">Frontend API IO control calls</font>
+
+
+<p>
+<pre>
+
+int open(const char *deviceName, int flags);
+
+ DESCRIPTION
+
+ This system call opens a named front-end device (e.g. /dev/qpskfe) for
+ subsequent use. The device can be opened in read-only mode, which only allows
+ monitoring of device status and statistics, or read/write mode, which allows
+ any kind of use (e.g. performing tuning operations.)
+
+ In a system with multiple front-ends, it is usually the case that multiple
+ devices cannot be open in read/write mode simultaneously. As long as a
+ front-end device is opened in read/write mode, other open() calls in
+ read/write mode will either fail or block, depending on whether
+ non-blocking or blocking mode was specified.
+ A front-end device opened in blocking mode can later be put into non-blocking
+ mode (and vice versa) using the F_SETFL command of the fcntl system call.
+ This is a standard system call, documented in the Linux manual page for fcntl.
+ When an open() call has succeeded, the device will be ready for use in the
+ specified mode. This implies that the corresponding hardware is powered up,
+ and that other front-ends may have been powered down to make that possible.
+
+ PARAMETERS
+
+ const char *deviceName I Name of specific front-end device. In the
+ current implementation, /dev/qpskfe is the
+ only one available (QPSK satellite front-end.)
+
+ int flags I A bit-wise OR of the following flags:
+ O_RDONLY read-only access
+ O_RDWR read/write access
+ O_NONBLOCK open in non-blocking mode
+ (blocking mode is the default)
+ RETURNS
+
+ ENODEV Device driver not loaded/available.
+
+ EBUSY Device or resource busy.
+
+ EINVAL Invalid argument.
+
+
+
+</pre>
+</p>
+
+<p>
+<pre>
+
+int close(int fd);
+
+ DESCRIPTION
+
+ This system call closes a previously opened front-end device. After closing a
+ front-end device, its corresponding hardware might be powered down
+ automatically, but only when this is needed to open another front-end device.
+ To affect an unconditional power down, it should be done explicitly using
+ the OST_SET_POWER_STATE ioctl.
+
+ PARAMETERS
+
+ int fd I File descriptor returned by a previous call to open().
+
+ RETURNS
+
+ EBADF fd is not a valid open file descriptor
+
+
+
+</pre>
+</p>
+
+<p>
+<pre>
+
+int ioctl(int fd, int request = OST_SELFTEST);
+
+ DESCRIPTION
+
+ This ioctl call initiates an automatic self-test of the front-end hardware.
+ This call requires read/write access to the device.
+
+ PARAMETERS
+
+ int fd I File descriptor returned by a previous call to open().
+
+ int request I Equals OST_SELFTEST for this command.
+
+ RETURNS
+
+ 0 Success
+
+ -1 Failure
+
+
+
+</pre>
+</p>
+
+<p>
+<pre>
+
+int ioctl(int fd, int request = OST_SET_POWER_STATE, uint32_t state);
+
+ DESCRIPTION
+
+ This ioctl call, implemented in many OST device drivers, enables direct
+ control over the power state of the hardware device, which may be on, off,
+ standby, or suspend. The latter two are low-power modes, which disable all
+ functionality of the device until turned on again. In contrast to the off
+ state, however, the standby and suspend states resume operation in the same
+ state as when the device was active. The only difference between the standby
+ and suspend states is a different tradeoff between resume time and power
+ consumption &shy; power consumption may be lower in the suspend state at the
+ cost of a longer resume time.
+
+ A device that implements this call does not necessarily support two low-power
+ modes. If it only support one low-power state, or none at all, the
+ OST_SET_POWER_STATE operation for the missing states will still succeed, but
+ it will be mapped to an existing state as per this table:
+
+ number of low-power requested state resulting state
+ states supported
+
+ 1 standby suspend
+
+ 1 suspend suspend
+
+ 0 standby on
+
+ 0 suspend on
+
+ For other cases where a required state is missing, an error code will be
+ returned. This can happen if a device does not support the power-off state,
+ but nevertheless implements this ioctl operation for control of low-power
+ states.
+ When opening a device in read/write mode, the driver ensures that the
+ corresponding hardware device is turned on initially. If the device is
+ later turned off or put in suspend mode, it has to be explicitly turned on
+ again.
+
+ This call requires read/write access to the device. (Note that the power
+ management driver can affect the power state of devices without using this
+ ioctl operation, so having exclusive read/write access to a device does not
+ imply total control over the power state.)
+
+ PARAMETERS
+
+ int fd I File descriptor returned by a previous call to open().
+
+ int request I Equals OST_SET_POWER_STATE for this command.
+
+ uint32_t state I Requested power state. One of:
+
+ OST_POWER_ON: turn power on
+ OST_POWER_STANDBY: set device in standby mode
+ OST_POWER_SUSPEND: set device in suspend mode
+ OST_POWER_OFF: turn power off
+
+
+ RETURNS
+
+ EBADF fd is not a valid open file descriptor
+
+ EINVAL illegal state, or not available on this device
+
+ EPERM permission denied (needs read/write access)
+
+ ENOSYS Function not available for this device.
+
+
+
+</pre>
+</p>
+
+<p>
+<pre>
+
+int ioctl(int fd, int request = OST_GET_POWER_STATE, uint32_t *state);
+
+ DESCRIPTION
+
+ This ioctl call, implemented in many OST device drivers, obtains the power
+ state of the hardware device, which may be on, off, standby, or suspend.
+ A device that implements this call does not necessarily support all four states.
+ If there is only one low-power state, the suspend state will be returned for
+ that state. If there is no low-power state, the on state will be reported
+ standby and suspend states will be equivalent to the on state.
+ For this command, read-only access to the device is sufficient.
+
+ PARAMETERS
+
+ int fd I File descriptor returned by a previous call to open().
+
+ int request I Equals OST_GET_POWER_STATE for this command.
+
+ uint32_t *state O Pointer to a variable where the power state is
+ to be stored. Possible values are:
+ OST_POWER_ON power is on
+ OST_POWER_STANDBY device in
+ standby mode
+ OST_POWER_SUSPEND: device in
+ suspend mode
+ OST_POWER_OFF: power is off
+
+
+ RETURNS
+
+ EBADF fd is not a valid open file descriptor
+
+ EINVAL illegal state, or not available on this device
+
+ EFAULT state points to invalid address
+
+ EPERM permission denied (needs read/write access)
+
+ ENOSYS Function not available for this device.
+
+
+
+</pre>
+</p>
+
+<p>
+<pre>
+
+int ioctl(int fd, int request = QPSK_READ_STATUS, feStatus *status);
+
+ DESCRIPTION
+
+ This ioctl call returns status information about the front-end.
+ This call only requires read-only access to the device.
+
+ PARAMETERS
+
+ int fd I File descriptor returned by a previous call to open().
+
+ int request I Equals FE_READ_STATUS for this command.
+
+ struct feStatus *status O Points to the location where the front-end
+ status word is to be stored.
+
+ RETURNS
+
+ EBADF fd is not a valid open file descriptor
+
+ EFAULT status points to invalid address
+
+
+
+</pre>
+</p>
+
+<p>
+<pre>
+
+int ioctl(int fd, int request = FE_READ_BER, uint32_t *ber);
+
+ DESCRIPTION
+
+ 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.
+
+ FUNCTION PARAMETERS
+
+ int fd I File descriptor returned by a previous call to open().
+
+ int request I Equals FE_READ_BER for this command.
+
+ uint32_t *ber O The bit error rate, as a multiple of 10-9, is stored into *ber.
+
+ Example: a value of 2500 corresponds to a bit error
+ rate of 2.5 10-6, or 1 error in 400000 bits.
+
+ RETURNS
+
+ EBADF fd is not a valid open file descriptor.
+
+ EFAULT ber points to invalid address
+
+ ENOSIGNAL There is no signal, thus no meaningful bit error
+ rate. Also returned if the front-end is not turned on.
+
+ ENOSYS Function not available for this device.
+
+
+
+</pre>
+</p>
+
+<p>
+<pre>
+
+int ioctl( int fd, int request = FE_READ_SIGNAL_STRENGTH, int32_t *strength);
+
+ DESCRIPTION
+
+ 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.
+
+ PARAMETERS
+
+ int fd I File descriptor returned by a previous call to open().
+
+ int request I Equals FE_READ_SIGNAL_STRENGTH for this
+ command.
+ int32_t *strength O The signal strength value, as a multiple of 10^-6 dBm,
+ is stored into *strength.
+ Example: a value of &shy;12,500,000 corresponds to a signal
+ strength value of &shy;12.5 dBm.
+
+ RETURNS
+
+ EBADF fd is not a valid open file descriptor
+
+ EFAULT strength points to invalid address
+
+ ENOSIGNAL There is no signal, thus no meaningful signal
+ strength value. Also returned if front-end is not
+ turned on.
+
+ ENOSYS Function not available for this device.
+
+
+
+</pre>
+</p>
+
+<p>
+<pre>
+
+int ioctl(int fd, int request = FE_READ_SNR, int32_t *snr);
+
+ DESCRIPTION
+
+ 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.
+
+ PARAMETERS
+
+ int fd I File descriptor returned by a previous call to open().
+
+ int request I Equals FE_READ_SNR for this command.
+
+ int32_t *snr O The signal-to-noise ratio, as a multiple of
+ 10^-6 dB, is stored into *snr.
+
+ Example: a value of 12,300,000 corresponds
+ to a signal-to-noise ratio of 12.3 dB.
+
+ RETURNS
+
+ EBADF fd is not a valid open file descriptor
+
+ EFAULT snr points to invalid address
+
+ ENOSIGNAL No stable signal, thus no meaningful signal-to-
+ noise ratio. Also returned if front-end is not
+ turned on.
+
+ ENOSYS Function not available for this device.
+</pre>
+</p>
+
+<p>
+<pre>
+int ioctl( int fd, int request = FE_READ_UNCORRECTED_BLOCKS, uint32_t *ublocks);
+
+
+ DESCRIPTION
+
+ 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 calculated2. For this
+ command, read-only access to the device is sufficient.
+
+ 2 Note that the counter will wrap to zero after its maximum count has
+ been reached (232-1).
+
+ PARAMETERS
+
+ int fd I File descriptor returned by a previous call to open().
+
+ int request I Equals FE_READ_UNCORRECTED_BLOCKS for this command.
+
+ uint32_t *ublocks O The total number of uncorrected blocks seen
+ by the driver so far.
+
+ RETURNS
+
+ EBADF fd is not a valid open file descriptor
+
+ EFAULT ublocks points to invalid address
+
+ ENOSYS Function not available for this device.
+
+
+
+</pre>
+</p>
+
+<p>
+<pre>
+
+int ioctl( int fd, int request = FE_GET_NEXT_FREQUENCY, uint32_t *freq);
+
+ DESCRIPTION
+
+ When scanning a frequency range, it is desirable to use a scanning step size
+ that is as large as possible, yet small enough to be able to lock to any signal
+ within the range.
+ This ioctl operation does just that &shy; it increments a given frequency by a
+ step size suitable for efficient3 scanning.
+ The step size used by this function may be a quite complex function of the given
+ frequency, hardware capabilities, and parameter settings of the device. Thus, a
+ returned result is only valid for the current state of the device.
+ For this command, read-only access to the device is sufficient.
+
+ 3 Note that scanning may still be excruciatingly slow on some hardware, for
+ other reasons than a non-optimal scanning step size.
+
+ PARAMETERS
+
+ int fd I File descriptor returned by a previous call to open().
+
+ int request I Equals FE_GET_NEXT_FREQUENCY for this command.
+
+ uint32_t *freq I/O Input: a given frequency
+ Output: the frequency corresponding to
+ the next higher frequency setting.
+
+ RETURNS
+
+ EBADF fd is not a valid open file descriptor
+
+ EFAULT freq points to invalid address
+
+ EINVAL maximum frequency reached
+
+ ENOSYS Function not available for this device.
+
+
+
+</pre>
+</p>
+
+<p>
+<pre>
+
+int ioctl( int fd, int request = FE_GET_NEXT_SYMBOL_RATE, uint32_t *symbolRate);
+
+ DESCRIPTION
+
+ When scanning a range of symbol rates (e.g. for &quot;blind acquisition&quot;) it is
+ desirable to use a scanning step size that is as large as possible, yet
+ small enough to detect any valid signal within the range. This ioctl
+ operation does just that &shy; it increments a given symbol rate by a step size
+ suitable for efficient4 scanning.
+ The step size used by this function may be a quite complex function of the given
+ symbol rate, hardware capabilities, and parameter settings of the device.
+ Thus, a returned result is only valid for the current state of the device.
+ For this command, read-only access to the device is sufficient.
+
+ PARAMETERS
+
+ int fd I File descriptor returned by a previous call to open().
+
+ int request I Equals FE_GET_NEXT_SYMBOL_RATE for this command.
+
+ uint32_t *symbolRate I/O Input: a given symbol rate Output: the symbol rate corresponding to the next
+ higher symbol rate setting.
+
+ RETURNS
+
+ EBADF fd is not a valid open file descriptor
+
+ EFAULT symbolRate points to invalid address
+
+ EINVAL maximum symbol rate reached
+
+ ENOSYS Function not available for this device.
+
+
+
+</pre>
+</p>
+
+<p>
+<pre>
+
+int ioctl(int fd, int request = QPSK_TUNE, struct qpskParameters *p);
+
+ DESCRIPTION
+
+ 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 QPSK_GET_EVENT and qpskEvent.)
+ If a new QPSK_TUNE 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.
+
+ PARAMETERS
+
+ int fd File descriptor returned by a previous call to open().
+
+ int request Equals QPSK_TUNE for this command.
+
+ struct qpskParameters *p Points to parameters for tuning operation.
+
+ RETURNS
+
+ EBADF fd is not a valid open file descriptor
+ EFAULT p points to invalid address
+ EINVAL parameter value(s) not valid
+
+
+
+</pre>
+</p>
+
+<p>
+<pre>
+
+int ioctl(int fd, int request = QPSK_GET_EVENT, struct qpskEvent *ev);
+
+ DESCRIPTION
+
+ This ioctl call returns an event of type qpskEvent 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.
+ 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 (EBUFFEROVERFLOW) occurs
+ the next time the queue is read. After reporting the error condition in this
+ fashion, subsequent QPSK_GET_EVENT calls will return events from the queue as
+ usual.
+ For the sake of implementation simplicity, this command requires read/write
+ access to the device.
+
+ PARAMETERS
+
+ int fd File descriptor returned by a previous call to open().
+
+ int request I Equals QPSK_GET_EVENT for this command.
+
+ struct qpskEvent *ev O Points to the location where the event, if any, is to be stored.
+
+ RETURNS
+
+ EBADF fd is not a valid open file descriptor
+
+ EFAULT ev points to invalid address
+
+ EWOULDBLOCK There is no event pending, and the device is in
+ non-blocking mode.
+
+ EBUFFEROVERFLOW Overflow in event queue - one or more events were lost.
+
+
+
+</pre>
+</p>
+
+<p>
+<pre>
+
+int ioctl(int fd, int request = QPSK_FE_INFO, struct qpskFrontendInfo *info);
+
+ DESCRIPTION
+
+ This ioctl call returns information about the front-end.
+ This call only requires read-only access to the device.
+
+ PARAMETERS
+
+ int fd I File descriptor returned by a previous call to open().
+
+ int request I Equals QPSK_FE_INFO for this command.
+
+ struct qpskFrontendInfo *info O Points to the location where the front-end
+ information is to be stored.
+
+ RETURNS
+
+ EBADF fd is not a valid open file descriptor
+
+ EFAULT info points to invalid address
+
+
+
+</pre>
+</p>
+
+<p>
+<pre>
+
+int ioctl(int fd, int request = QPSK_WRITE_REGISTER, struct qpskRegister *reg);
+
+ DESCRIPTION
+
+ This ioctl call is intended for hardware-specific diagnostics. It writes
+ an 8-bit value at an 8-bit address of a register in a chip identified by an
+ 8-bit index.
+
+ PARAMETERS
+
+ int fd I File descriptor returned by a previous call to open().
+
+ int request I Equals QPSK_WRITE_REGISTER for this command.
+
+ struct qpskRegister *reg I Specifies a value that should be written
+ into a specified register in a specified chip.
+
+ RETURNS
+
+ EBADF fd is not a valid open file descriptor
+
+ EFAULT reg points to and invalid address
+
+ EINVAL Register specification invalid.
+
+
+
+
+</pre>
+</p>
+
+<p>
+<pre>
+
+int ioctl(int fd, int request = QPSK_READ_REGISTER, struct qpskRegister *reg);
+
+ DESCRIPTION
+
+ This ioctl call is intended for hardware-specific diagnostics.
+ It reads an 8-bit value at an 8-bit address of a register in a chip
+ identified by an 8-bit index.
+
+ PARAMETERS
+
+ int fd I File descriptor returned by a previous call to open().
+
+ int request I Equals QPSK_READ_REGISTER for this command.
+
+ struct qpskRegister *reg I/O I: specifies a register in a specified
+ chip from which a value should be read.
+
+ O: the value is read into the
+ qpskRegister structure.
+
+ RETURNS
+
+ EBADF fd is not a valid open file descriptor
+
+ EFAULT reg points to and invalid address
+
+ EINVAL Register specification invalid.
+
+
+
+</pre>
+</p>
+
+ </p>
+
+ </td></tr></table></body></html>
+
+<!-- This page was served in 1919 milliseconds by Cocoon 1.7.4 -->