diff options
author | tpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2010-02-10 00:59:09 +0000 |
---|---|---|
committer | tpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2010-02-10 00:59:09 +0000 |
commit | 7f66b9e8ba186fb14a2db598a87dfa8de7b5a47b (patch) | |
tree | b5e07812e82f00c780d2c035dca102b8e364f447 /kaffeine/src/input/dvb/lib/libdvbapi/dvbfe.h | |
download | kaffeine-7f66b9e8ba186fb14a2db598a87dfa8de7b5a47b.tar.gz kaffeine-7f66b9e8ba186fb14a2db598a87dfa8de7b5a47b.zip |
Added old abandoned KDE3 version of Kaffeine
git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/applications/kaffeine@1088031 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'kaffeine/src/input/dvb/lib/libdvbapi/dvbfe.h')
-rw-r--r-- | kaffeine/src/input/dvb/lib/libdvbapi/dvbfe.h | 308 |
1 files changed, 308 insertions, 0 deletions
diff --git a/kaffeine/src/input/dvb/lib/libdvbapi/dvbfe.h b/kaffeine/src/input/dvb/lib/libdvbapi/dvbfe.h new file mode 100644 index 0000000..9eb03b7 --- /dev/null +++ b/kaffeine/src/input/dvb/lib/libdvbapi/dvbfe.h @@ -0,0 +1,308 @@ +/* + * libdvbfe - a DVB frontend library + * + * Copyright (C) 2005 Andrew de Quincey (adq_dvb@lidskialf.net) + * Copyright (C) 2005 Kenneth Aafloy (kenneth@linuxtv.org) + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#ifndef LIBDVBFE_H +#define LIBDVBFE_H 1 + +#ifdef __cplusplus +extern "C" +{ +#endif + +#include <stdint.h> + +/** + * The types of frontend we support. + */ +typedef enum dvbfe_type { + DVBFE_TYPE_DVBS, + DVBFE_TYPE_DVBC, + DVBFE_TYPE_DVBT, + DVBFE_TYPE_ATSC, +} dvbfe_type_t; + +typedef enum dvbfe_polarization { + DVBFE_POLARIZATION_H, + DVBFE_POLARIZATION_V, + DVBFE_POLARIZATION_L, + DVBFE_POLARIZATION_R, +} dvbfe_polarization_t; + +typedef enum dvbfe_spectral_inversion { + DVBFE_INVERSION_OFF, + DVBFE_INVERSION_ON, + DVBFE_INVERSION_AUTO +} dvbfe_spectral_inversion_t; + +typedef enum dvbfe_code_rate { + DVBFE_FEC_NONE, + DVBFE_FEC_1_2, + DVBFE_FEC_2_3, + DVBFE_FEC_3_4, + DVBFE_FEC_4_5, + DVBFE_FEC_5_6, + DVBFE_FEC_6_7, + DVBFE_FEC_7_8, + DVBFE_FEC_8_9, + DVBFE_FEC_AUTO +} dvbfe_code_rate_t; + +typedef enum dvbfe_dvbt_const { + DVBFE_DVBT_CONST_QPSK, + DVBFE_DVBT_CONST_QAM_16, + DVBFE_DVBT_CONST_QAM_32, + DVBFE_DVBT_CONST_QAM_64, + DVBFE_DVBT_CONST_QAM_128, + DVBFE_DVBT_CONST_QAM_256, + DVBFE_DVBT_CONST_AUTO +} dvbfe_dvbt_const_t; + +typedef enum dvbfe_dvbc_mod { + DVBFE_DVBC_MOD_QAM_16, + DVBFE_DVBC_MOD_QAM_32, + DVBFE_DVBC_MOD_QAM_64, + DVBFE_DVBC_MOD_QAM_128, + DVBFE_DVBC_MOD_QAM_256, + DVBFE_DVBC_MOD_AUTO, +} dvbfe_dvbc_mod_t; + +typedef enum dvbfe_atsc_mod { + DVBFE_ATSC_MOD_QAM_64, + DVBFE_ATSC_MOD_QAM_256, + DVBFE_ATSC_MOD_VSB_8, + DVBFE_ATSC_MOD_VSB_16, + DVBFE_ATSC_MOD_AUTO +} dvbfe_atsc_mod_t; + +typedef enum dvbfe_dvbt_transmit_mode { + DVBFE_DVBT_TRANSMISSION_MODE_2K, + DVBFE_DVBT_TRANSMISSION_MODE_8K, + DVBFE_DVBT_TRANSMISSION_MODE_AUTO +} dvbfe_dvbt_transmit_mode_t; + +typedef enum dvbfe_dvbt_bandwidth { + DVBFE_DVBT_BANDWIDTH_8_MHZ, + DVBFE_DVBT_BANDWIDTH_7_MHZ, + DVBFE_DVBT_BANDWIDTH_6_MHZ, + DVBFE_DVBT_BANDWIDTH_AUTO +} dvbfe_dvbt_bandwidth_t; + +typedef enum dvbfe_dvbt_guard_interval { + DVBFE_DVBT_GUARD_INTERVAL_1_32, + DVBFE_DVBT_GUARD_INTERVAL_1_16, + DVBFE_DVBT_GUARD_INTERVAL_1_8, + DVBFE_DVBT_GUARD_INTERVAL_1_4, + DVBFE_DVBT_GUARD_INTERVAL_AUTO +} dvbfe_dvbt_guard_interval_t; + +typedef enum dvbfe_dvbt_hierarchy { + DVBFE_DVBT_HIERARCHY_NONE, + DVBFE_DVBT_HIERARCHY_1, + DVBFE_DVBT_HIERARCHY_2, + DVBFE_DVBT_HIERARCHY_4, + DVBFE_DVBT_HIERARCHY_AUTO +} dvbfe_dvbt_hierarchy_t; + +/** + * Structure used to store and communicate frontend parameters. + */ +struct dvbfe_parameters { + uint32_t frequency; + dvbfe_spectral_inversion_t inversion; + union { + struct { + uint32_t symbol_rate; + dvbfe_code_rate_t fec_inner; + dvbfe_polarization_t polarization; + } dvbs; + + struct { + uint32_t symbol_rate; + dvbfe_code_rate_t fec_inner; + dvbfe_dvbc_mod_t modulation; + } dvbc; + + struct { + dvbfe_dvbt_bandwidth_t bandwidth; + dvbfe_code_rate_t code_rate_HP; + dvbfe_code_rate_t code_rate_LP; + dvbfe_dvbt_const_t constellation; + dvbfe_dvbt_transmit_mode_t transmission_mode; + dvbfe_dvbt_guard_interval_t guard_interval; + dvbfe_dvbt_hierarchy_t hierarchy_information; + } dvbt; + + struct { + dvbfe_atsc_mod_t modulation; + } atsc; + } u; +}; + +/** + * Mask of values used in the dvbfe_get_info() call. + */ +typedef enum dvbfe_info_mask { + DVBFE_INFO_LOCKSTATUS = 0x01, + DVBFE_INFO_FEPARAMS = 0x02, + DVBFE_INFO_BER = 0x04, + DVBFE_INFO_SIGNAL_STRENGTH = 0x08, + DVBFE_INFO_SNR = 0x10, + DVBFE_INFO_UNCORRECTED_BLOCKS = 0x20, +} dvbfe_info_mask_t; + +/** + * Structure containing values used by the dvbfe_get_info() call. + */ +struct dvbfe_info { + dvbfe_type_t type; /* always retrieved */ + const char *name; /* always retrieved */ + unsigned int signal : 1; /* } DVBFE_INFO_LOCKSTATUS */ + unsigned int carrier : 1; /* } */ + unsigned int viterbi : 1; /* } */ + unsigned int sync : 1; /* } */ + unsigned int lock : 1; /* } */ + struct dvbfe_parameters feparams; /* DVBFE_INFO_FEPARAMS */ + uint32_t ber; /* DVBFE_INFO_BER */ + uint16_t signal_strength; /* DVBFE_INFO_SIGNAL_STRENGTH */ + uint16_t snr; /* DVBFE_INFO_SNR */ + uint32_t ucblocks; /* DVBFE_INFO_UNCORRECTED_BLOCKS */ +}; + +/** + * Frontend handle datatype. + */ +typedef void *dvbfe_handle_t; + +/** + * Open a DVB frontend. + * + * @param adapter DVB adapter ID. + * @param frontend Frontend ID of that adapter to open. + * @param readonly If 1, frontend will be opened in readonly mode only. + * @return A handle on success, or NULL on failure. + */ +extern dvbfe_handle_t dvbfe_open(int adapter, int frontend, int readonly); + +/** + * Close a DVB frontend. + * + * @param fehandle Handle opened with dvbfe_open(). + */ +extern void dvbfe_close(dvbfe_handle_t handle); + +/** + * Set the frontend tuning parameters. + * + * @param fehandle Handle opened with dvbfe_open(). + * @param params Params to set. + * @param timeout <0 => wait forever for lock. 0=>return immediately, >0=> + * number of milliseconds to wait for a lock. + * @return 0 on locked (or if timeout==0 and everything else worked), or + * nonzero on failure (including no lock). + */ +extern int dvbfe_set(dvbfe_handle_t fehandle, struct dvbfe_parameters *params, int timeout); + +/** + * Call this function regularly from a loop to maintain the frontend lock. + * + * @param fehandle Handle opened with dvbfe_open(). + */ +extern void dvbfe_poll(dvbfe_handle_t fehandle); + +/** + * Retrieve information about the frontend. + * + * @param fehandle Handle opened with dvbfe_open(). + * @param querymask ORed bitmask of desired DVBFE_INFO_* values. + * @param result Where to put the retrieved results. + * @return ORed bitmask of DVBFE_INFO_* indicating which values were read successfully. + */ +extern int dvbfe_get_info(dvbfe_handle_t fehandle, dvbfe_info_mask_t querymask, struct dvbfe_info *result); + +/** + * Execute a DISEQC command string. + * + * A diseqc command consists of a sequence of the following codes, separated by + * whitespace: + * Simple commands: + * t - turn 22kHz tone off. + * T - turn 22kHz tone on. + * _ - set voltage to 0v (i.e. off). + * v - set voltage to 13v. + * V - set voltage to 18v. + * + - Enable high LNB voltage. + * - - Disable high LNB voltage. + * A - send DISEQC mini command A. + * B - send DISEQC mini command B. + * Wii - Delay for ii milliseconds. + * + * Extended commands: + * .dishnetworks(<value>) - Send a dish networks legacy command <value> + * .D(<value> ...) - Send a raw diseqc master command. The command may be up + * to 6 bytes long. + * .Dband(<addr> <lo|hi>) - Set frequency band hi or lo. + * .Dpolarisation(<addr> <V|H|L|R>) - Set polarisation. + * .Dsatellite_position(<addr> <A|B>) - Set "satellite position" input switch. + * .Dswitch_option(<addr> <A|B>) - Set "switch option" input switch. + * .Dport_pins(<addr> <mask> <value>) - Set all input switches. Mask and value + * are hex-ascii 8 bit bytes. Only bits with a corresponding '1' in mask + * will be changed. + * .Dgoto_preset(<addr> <index>) - Set a positioner to a preset index (integer) + * .Dgoto_angle(<addr> <angle>) - Set a positioner to a given angle + * (e.g. 49.6). The angle may range between -180 to 496. It may include a + * fractional part. + * + * All integer values use standard notation - no prefix=>decimal, 0x=>hex etc. + * + * Set <addr> to 0 if you just have a simple DISEQC setup (e.g. one switch). See + * the DISEQC specification at http://www.eutelsat.org/ for full information. + * + * Comments begin with '#' - any characters after this will be ignored + * to the end of the line. + * + * Examples: + * S-19.2E 11700000 V 9750000 t v W15 .D(E0 10 38 F0) W15 A W15 t + * S-19.2E 99999999 V 10600000 t v W15 .D(E0 10 38 F1) W15 A W15 T + * S-19.2E 11700000 H 9750000 t V W15 .D(E0 10 38 F2) W15 A W15 t + * S-19.2E 99999999 H 10600000 t V W15 .D(E0 10 38 F3) W15 A W15 T + * + * @param fehandle Handle opened with dvbfe_open(). + * @param command Command to execute. + * @return 0 on success, nonzero on failure. + */ +extern int dvbfe_diseqc_command(dvbfe_handle_t fehandle, char *command); + +/** + * Read a DISEQC response from the frontend. + * + * @param fehandle Handle opened with dvbfe_open(). + * @param timeout Timeout for DISEQC response. + * @param buf Buffer to store response in. + * @param len Number of bytes in buffer. + * @return >= 0 on success (number of received bytes), <0 on failure. + */ +extern int dvbfe_diseqc_read(dvbfe_handle_t fehandle, int timeout, unsigned char *buf, unsigned int len); + +#ifdef __cplusplus +} +#endif + +#endif // LIBDVBFE_H |