diff options
Diffstat (limited to 'include')
| -rw-r--r-- | include/audio.h (renamed from include/linux/dvb/audio.h) | 67 | ||||
| -rw-r--r-- | include/ca.h (renamed from include/linux/dvb/ca.h) | 41 | ||||
| -rw-r--r-- | include/dmx.h (renamed from include/linux/dvb/dmx.h) | 59 | ||||
| -rw-r--r-- | include/frontend.h | 648 | ||||
| -rw-r--r-- | include/linux/dvb/frontend.h | 267 | ||||
| -rw-r--r-- | include/net.h (renamed from include/linux/dvb/net.h) | 24 | ||||
| -rw-r--r-- | include/osd.h (renamed from include/linux/dvb/osd.h) | 55 | ||||
| -rw-r--r-- | include/version.h (renamed from include/linux/dvb/version.h) | 2 | ||||
| -rw-r--r-- | include/video.h (renamed from include/linux/dvb/video.h) | 174 |
9 files changed, 913 insertions, 424 deletions
diff --git a/include/linux/dvb/audio.h b/include/audio.h index 58956c3..89412e1 100644 --- a/include/linux/dvb/audio.h +++ b/include/audio.h @@ -1,9 +1,9 @@ -/* +/* * audio.h * * Copyright (C) 2000 Ralph Metzler <ralph@convergence.de> * & Marcus Metzler <marcus@convergence.de> - for convergence integrated media GmbH + * for convergence integrated media GmbH * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Lesser Public License @@ -32,39 +32,41 @@ typedef enum { - AUDIO_SOURCE_DEMUX, /* Select the demux as the main source */ - AUDIO_SOURCE_MEMORY /* Select internal memory as the main source */ + AUDIO_SOURCE_DEMUX, /* Select the demux as the main source */ + AUDIO_SOURCE_MEMORY /* Select internal memory as the main source */ } audio_stream_source_t; -typedef enum { - AUDIO_STOPPED, /* Device is stopped */ - AUDIO_PLAYING, /* Device is currently playing */ - AUDIO_PAUSED /* Device is paused */ +typedef enum { + AUDIO_STOPPED, /* Device is stopped */ + AUDIO_PLAYING, /* Device is currently playing */ + AUDIO_PAUSED /* Device is paused */ } audio_play_state_t; typedef enum { - AUDIO_STEREO, - AUDIO_MONO_LEFT, - AUDIO_MONO_RIGHT + AUDIO_STEREO, + AUDIO_MONO_LEFT, + AUDIO_MONO_RIGHT, + AUDIO_MONO, + AUDIO_STEREO_SWAPPED } audio_channel_select_t; -typedef struct audio_mixer { - unsigned int volume_left; - unsigned int volume_right; +typedef struct audio_mixer { + unsigned int volume_left; + unsigned int volume_right; // what else do we need? bass, pass-through, ... } audio_mixer_t; -typedef struct audio_status { - int AV_sync_state; /* sync audio and video? */ - int mute_state; /* audio is muted */ - audio_play_state_t play_state; /* current playback state */ - audio_stream_source_t stream_source; /* current stream source */ - audio_channel_select_t channel_select; /* currently selected channel */ - int bypass_mode; /* pass on audio data to */ +typedef struct audio_status { + int AV_sync_state; /* sync audio and video? */ + int mute_state; /* audio is muted */ + audio_play_state_t play_state; /* current playback state */ + audio_stream_source_t stream_source; /* current stream source */ + audio_channel_select_t channel_select; /* currently selected channel */ + int bypass_mode; /* pass on audio data to */ audio_mixer_t mixer_state; /* current mixer state */ } audio_status_t; /* separate decoder hardware */ @@ -74,8 +76,8 @@ struct audio_karaoke{ /* if Vocal1 or Vocal2 are non-zero, they get mixed */ int vocal1; /* into left and right t at 70% each */ int vocal2; /* if both, Vocal1 and Vocal2 are non-zero, Vocal1 gets*/ int melody; /* mixed into the left channel and */ - /* Vocal2 into the right channel at 100% each. */ - /* if Melody is non-zero, the melody channel gets mixed*/ + /* Vocal2 into the right channel at 100% each. */ + /* if Melody is non-zero, the melody channel gets mixed*/ } audio_karaoke_t; /* into left and right */ @@ -88,7 +90,7 @@ typedef uint16_t audio_attributes_t; /* 7- 6 Quantization / DRC (mpeg audio: 1=DRC exists)(lpcm: 0=16bit, */ /* 5- 4 Sample frequency fs (0=48kHz, 1=96kHz) */ /* 2- 0 number of audio channels (n+1 channels) */ - + /* for GET_CAPABILITIES and SET_FORMAT, the latter should only set one bit */ #define AUDIO_CAP_DTS 1 @@ -101,7 +103,7 @@ typedef uint16_t audio_attributes_t; #define AUDIO_CAP_SDDS 128 #define AUDIO_CAP_AC3 256 -#define AUDIO_STOP _IO('o', 1) +#define AUDIO_STOP _IO('o', 1) #define AUDIO_PLAY _IO('o', 2) #define AUDIO_PAUSE _IO('o', 3) #define AUDIO_CONTINUE _IO('o', 4) @@ -121,5 +123,18 @@ typedef uint16_t audio_attributes_t; #define AUDIO_SET_ATTRIBUTES _IOW('o', 17, audio_attributes_t) #define AUDIO_SET_KARAOKE _IOW('o', 18, audio_karaoke_t) -#endif /* _DVBAUDIO_H_ */ +/** + * AUDIO_GET_PTS + * + * Read the 33 bit presentation time stamp as defined + * in ITU T-REC-H.222.0 / ISO/IEC 13818-1. + * + * The PTS should belong to the currently played + * frame if possible, but may also be a value close to it + * like the PTS of the last decoded frame or the last PTS + * extracted by the PES parser. + */ +#define AUDIO_GET_PTS _IOR('o', 19, __u64) +#define AUDIO_BILINGUAL_CHANNEL_SELECT _IO('o', 20) +#endif /* _DVBAUDIO_H_ */ diff --git a/include/linux/dvb/ca.h b/include/ca.h index 026e5c3..c18537f 100644 --- a/include/linux/dvb/ca.h +++ b/include/ca.h @@ -1,9 +1,9 @@ -/* +/* * ca.h * * Copyright (C) 2000 Ralph Metzler <ralph@convergence.de> * & Marcus Metzler <marcus@convergence.de> - for convergence integrated media GmbH + * for convergence integrated media GmbH * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Lesser Public License @@ -27,16 +27,16 @@ /* slot interface types and info */ typedef struct ca_slot_info { - int num; /* slot number */ + int num; /* slot number */ - int type; /* CA interface this slot supports */ + int type; /* CA interface this slot supports */ #define CA_CI 1 /* CI high level interface */ #define CA_CI_LINK 2 /* CI link layer level interface */ #define CA_CI_PHYS 4 /* CI physical layer level interface */ #define CA_DESCR 8 /* built-in descrambler */ #define CA_SC 128 /* simple smart card interface */ - unsigned int flags; + unsigned int flags; #define CA_CI_MODULE_PRESENT 1 /* module (or card) inserted */ #define CA_CI_MODULE_READY 2 } ca_slot_info_t; @@ -45,37 +45,37 @@ typedef struct ca_slot_info { /* descrambler types and info */ typedef struct ca_descr_info { - unsigned int num; /* number of available descramblers (keys) */ - unsigned int type; /* type of supported scrambling system */ + unsigned int num; /* number of available descramblers (keys) */ + unsigned int type; /* type of supported scrambling system */ #define CA_ECD 1 #define CA_NDS 2 #define CA_DSS 4 } ca_descr_info_t; typedef struct ca_caps { - unsigned int slot_num; /* total number of CA card and module slots */ - unsigned int slot_type; /* OR of all supported types */ - unsigned int descr_num; /* total number of descrambler slots (keys) */ - unsigned int descr_type; /* OR of all supported types */ + unsigned int slot_num; /* total number of CA card and module slots */ + unsigned int slot_type; /* OR of all supported types */ + unsigned int descr_num; /* total number of descrambler slots (keys) */ + unsigned int descr_type; /* OR of all supported types */ } ca_caps_t; /* a message to/from a CI-CAM */ typedef struct ca_msg { - unsigned int index; - unsigned int type; - unsigned int length; - unsigned char msg[256]; + unsigned int index; + unsigned int type; + unsigned int length; + unsigned char msg[256]; } ca_msg_t; typedef struct ca_descr { - unsigned int index; - unsigned int parity; /* 0 == even, 1 == odd */ - unsigned char cw[8]; + unsigned int index; + unsigned int parity; /* 0 == even, 1 == odd */ + unsigned char cw[8]; } ca_descr_t; typedef struct ca_pid { - unsigned int pid; - int index; /* -1 == disable*/ + unsigned int pid; + int index; /* -1 == disable*/ } ca_pid_t; #define CA_RESET _IO('o', 128) @@ -88,4 +88,3 @@ typedef struct ca_pid { #define CA_SET_PID _IOW('o', 135, ca_pid_t) #endif - diff --git a/include/linux/dvb/dmx.h b/include/dmx.h index 62e6217..c6a2353 100644 --- a/include/linux/dvb/dmx.h +++ b/include/dmx.h @@ -1,9 +1,9 @@ -/* +/* * dmx.h * * Copyright (C) 2000 Marcus Metzler <marcus@convergence.de> * & Ralph Metzler <ralph@convergence.de> - for convergence integrated media GmbH + * for convergence integrated media GmbH * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public License @@ -38,10 +38,10 @@ typedef enum { DMX_OUT_DECODER, /* Streaming directly to decoder. */ DMX_OUT_TAP, /* Output going to a memory buffer */ - /* (to be retrieved via the read command).*/ + /* (to be retrieved via the read command).*/ DMX_OUT_TS_TAP /* Output multiplexed into a new TS */ - /* (to be retrieved by reading from the */ - /* logical DVR device). */ + /* (to be retrieved by reading from the */ + /* logical DVR device). */ } dmx_output_t; @@ -54,25 +54,25 @@ typedef enum typedef enum { - DMX_PES_AUDIO0, + DMX_PES_AUDIO0, DMX_PES_VIDEO0, DMX_PES_TELETEXT0, DMX_PES_SUBTITLE0, DMX_PES_PCR0, - DMX_PES_AUDIO1, + DMX_PES_AUDIO1, DMX_PES_VIDEO1, DMX_PES_TELETEXT1, DMX_PES_SUBTITLE1, DMX_PES_PCR1, - DMX_PES_AUDIO2, + DMX_PES_AUDIO2, DMX_PES_VIDEO2, DMX_PES_TELETEXT2, DMX_PES_SUBTITLE2, DMX_PES_PCR2, - DMX_PES_AUDIO3, + DMX_PES_AUDIO3, DMX_PES_VIDEO3, DMX_PES_TELETEXT3, DMX_PES_SUBTITLE3, @@ -88,20 +88,6 @@ typedef enum #define DMX_PES_PCR DMX_PES_PCR0 -typedef enum -{ - DMX_SCRAMBLING_EV, - DMX_FRONTEND_EV -} dmx_event_t; - - -typedef enum -{ - DMX_SCRAMBLING_OFF, - DMX_SCRAMBLING_ON -} dmx_scrambling_status_t; - - typedef struct dmx_filter { __u8 filter[DMX_FILTER_SIZE]; @@ -112,10 +98,10 @@ typedef struct dmx_filter struct dmx_sct_filter_params { - __u16 pid; + __u16 pid; dmx_filter_t filter; - __u32 timeout; - __u32 flags; + __u32 timeout; + __u32 flags; #define DMX_CHECK_CRC 1 #define DMX_ONESHOT 2 #define DMX_IMMEDIATE_START 4 @@ -125,27 +111,16 @@ struct dmx_sct_filter_params struct dmx_pes_filter_params { - __u16 pid; + __u16 pid; dmx_input_t input; dmx_output_t output; dmx_pes_type_t pes_type; - __u32 flags; -}; - - -struct dmx_event -{ - dmx_event_t event; - time_t timeStamp; - union - { - dmx_scrambling_status_t scrambling; - } u; + __u32 flags; }; typedef struct dmx_caps { __u32 caps; - int num_decoders; + int num_decoders; } dmx_caps_t; typedef enum { @@ -166,16 +141,14 @@ struct dmx_stc { }; -#define DMX_START _IO('o', 41) +#define DMX_START _IO('o', 41) #define DMX_STOP _IO('o', 42) #define DMX_SET_FILTER _IOW('o', 43, struct dmx_sct_filter_params) #define DMX_SET_PES_FILTER _IOW('o', 44, struct dmx_pes_filter_params) #define DMX_SET_BUFFER_SIZE _IO('o', 45) -#define DMX_GET_EVENT _IOR('o', 46, struct dmx_event) #define DMX_GET_PES_PIDS _IOR('o', 47, __u16[5]) #define DMX_GET_CAPS _IOR('o', 48, dmx_caps_t) #define DMX_SET_SOURCE _IOW('o', 49, dmx_source_t) #define DMX_GET_STC _IOWR('o', 50, struct dmx_stc) #endif /*_DVBDMX_H_*/ - diff --git a/include/frontend.h b/include/frontend.h new file mode 100644 index 0000000..71abc24 --- /dev/null +++ b/include/frontend.h @@ -0,0 +1,648 @@ +/* + * frontend.h + * + * Copyright (C) 2000 Marcus Metzler <marcus@convergence.de> + * Ralph Metzler <ralph@convergence.de> + * Holger Waechtler <holger@convergence.de> + * Andre Draszik <ad@convergence.de> + * for convergence integrated media GmbH + * + * Copyright (C) Manu Abraham <abraham.manu@gmail.com> + * + * This program 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 program 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 General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + */ + +#ifndef _DVBFRONTEND_H_ +#define _DVBFRONTEND_H_ + +#include <asm/types.h> + + +typedef enum fe_type { + FE_QPSK, + FE_QAM, + FE_OFDM, + FE_ATSC +} fe_type_t; + + +typedef enum fe_caps { + FE_IS_STUPID = 0, + FE_CAN_INVERSION_AUTO = 0x1, + FE_CAN_FEC_1_2 = 0x2, + FE_CAN_FEC_2_3 = 0x4, + FE_CAN_FEC_3_4 = 0x8, + FE_CAN_FEC_4_5 = 0x10, + FE_CAN_FEC_5_6 = 0x20, + FE_CAN_FEC_6_7 = 0x40, + FE_CAN_FEC_7_8 = 0x80, + FE_CAN_FEC_8_9 = 0x100, + FE_CAN_FEC_AUTO = 0x200, + FE_CAN_QPSK = 0x400, + FE_CAN_QAM_16 = 0x800, + FE_CAN_QAM_32 = 0x1000, + FE_CAN_QAM_64 = 0x2000, + FE_CAN_QAM_128 = 0x4000, + FE_CAN_QAM_256 = 0x8000, + FE_CAN_QAM_AUTO = 0x10000, + FE_CAN_TRANSMISSION_MODE_AUTO = 0x20000, + FE_CAN_BANDWIDTH_AUTO = 0x40000, + FE_CAN_GUARD_INTERVAL_AUTO = 0x80000, + FE_CAN_HIERARCHY_AUTO = 0x100000, + FE_CAN_8VSB = 0x200000, + FE_CAN_16VSB = 0x400000, + FE_NEEDS_BENDING = 0x20000000, // not supported anymore, don't use (frontend requires frequency bending) + FE_CAN_RECOVER = 0x40000000, // frontend can recover from a cable unplug automatically + FE_CAN_MUTE_TS = 0x80000000 // frontend can stop spurious TS data output +} fe_caps_t; + + +struct dvb_frontend_info { + char name[128]; + fe_type_t type; + __u32 frequency_min; + __u32 frequency_max; + __u32 frequency_stepsize; + __u32 frequency_tolerance; + __u32 symbol_rate_min; + __u32 symbol_rate_max; + __u32 symbol_rate_tolerance; /* ppm */ + __u32 notifier_delay; /* DEPRECATED */ + fe_caps_t caps; +}; + + +/** + * Check out the DiSEqC bus spec available on http://www.eutelsat.org/ for + * the meaning of this struct... + */ +struct dvb_diseqc_master_cmd { + __u8 msg [6]; /* { framing, address, command, data [3] } */ + __u8 msg_len; /* valid values are 3...6 */ +}; + + +struct dvb_diseqc_slave_reply { + __u8 msg [4]; /* { framing, data [3] } */ + __u8 msg_len; /* valid values are 0...4, 0 means no msg */ + int timeout; /* return from ioctl after timeout ms with */ +}; /* errorcode when no message was received */ + + +typedef enum fe_sec_voltage { + SEC_VOLTAGE_13, + SEC_VOLTAGE_18, + SEC_VOLTAGE_OFF +} fe_sec_voltage_t; + + +typedef enum fe_sec_tone_mode { + SEC_TONE_ON, + SEC_TONE_OFF +} fe_sec_tone_mode_t; + + +typedef enum fe_sec_mini_cmd { + SEC_MINI_A, + SEC_MINI_B +} fe_sec_mini_cmd_t; + + +typedef enum fe_status { + FE_HAS_SIGNAL = 0x01, /* found something above the noise level */ + FE_HAS_CARRIER = 0x02, /* found a DVB signal */ + FE_HAS_VITERBI = 0x04, /* FEC is stable */ + FE_HAS_SYNC = 0x08, /* found sync bytes */ + FE_HAS_LOCK = 0x10, /* everything's working... */ + FE_TIMEDOUT = 0x20, /* no lock within the last ~2 seconds */ + FE_REINIT = 0x40 /* frontend was reinitialized, */ +} fe_status_t; /* application is recommended to reset */ + /* DiSEqC, tone and parameters */ + +typedef enum fe_spectral_inversion { + INVERSION_OFF, + INVERSION_ON, + INVERSION_AUTO +} fe_spectral_inversion_t; + + +typedef enum fe_code_rate { + FEC_NONE = 0, + FEC_1_2, + FEC_2_3, + FEC_3_4, + FEC_4_5, + FEC_5_6, + FEC_6_7, + FEC_7_8, + FEC_8_9, + FEC_AUTO +} fe_code_rate_t; + + +typedef enum fe_modulation { + QPSK, + QAM_16, + QAM_32, + QAM_64, + QAM_128, + QAM_256, + QAM_AUTO, + VSB_8, + VSB_16 +} fe_modulation_t; + +typedef enum fe_transmit_mode { + TRANSMISSION_MODE_2K, + TRANSMISSION_MODE_8K, + TRANSMISSION_MODE_AUTO +} fe_transmit_mode_t; + +typedef enum fe_bandwidth { + BANDWIDTH_8_MHZ, + BANDWIDTH_7_MHZ, + BANDWIDTH_6_MHZ, + BANDWIDTH_AUTO +} fe_bandwidth_t; + + +typedef enum fe_guard_interval { + GUARD_INTERVAL_1_32, + GUARD_INTERVAL_1_16, + GUARD_INTERVAL_1_8, + GUARD_INTERVAL_1_4, + GUARD_INTERVAL_AUTO +} fe_guard_interval_t; + + +typedef enum fe_hierarchy { + HIERARCHY_NONE, + HIERARCHY_1, + HIERARCHY_2, + HIERARCHY_4, + HIERARCHY_AUTO +} fe_hierarchy_t; + + +struct dvb_qpsk_parameters { + __u32 symbol_rate; /* symbol rate in Symbols per second */ + fe_code_rate_t fec_inner; /* forward error correction (see above) */ +}; + +struct dvb_qam_parameters { + __u32 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) */ +}; + +struct dvb_vsb_parameters { + fe_modulation_t modulation; /* modulation type (see above) */ +}; + +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; +}; + + +struct dvb_frontend_parameters { + __u32 frequency; /* (absolute) frequency in Hz for QAM/OFDM/ATSC */ + /* 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; +}; + + +/** + * When set, this flag will disable any zigzagging or other "normal" tuning + * behaviour. Additionally, there will be no automatic monitoring of the lock + * status, and hence no frontend events will be generated. If a frontend device + * is closed, this flag will be automatically turned off when the device is + * reopened read-write. + */ +#define FE_TUNE_MODE_ONESHOT 0x01 + + +#define FE_GET_INFO _IOR('o', 61, struct dvb_frontend_info) + +#define FE_DISEQC_RESET_OVERLOAD _IO('o', 62) +#define FE_DISEQC_SEND_MASTER_CMD _IOW('o', 63, struct dvb_diseqc_master_cmd) +#define FE_DISEQC_RECV_SLAVE_REPLY _IOR('o', 64, struct dvb_diseqc_slave_reply) +#define FE_DISEQC_SEND_BURST _IO('o', 65) /* fe_sec_mini_cmd_t */ + +#define FE_SET_TONE _IO('o', 66) /* fe_sec_tone_mode_t */ +#define FE_SET_VOLTAGE _IO('o', 67) /* fe_sec_voltage_t */ +#define FE_ENABLE_HIGH_LNB_VOLTAGE _IO('o', 68) /* int */ + +#define FE_READ_STATUS _IOR('o', 69, fe_status_t) +#define FE_READ_BER _IOR('o', 70, __u32) +#define FE_READ_SIGNAL_STRENGTH _IOR('o', 71, __u16) +#define FE_READ_SNR _IOR('o', 72, __u16) +#define FE_READ_UNCORRECTED_BLOCKS _IOR('o', 73, __u32) + +#define FE_SET_FRONTEND _IOW('o', 76, struct dvb_frontend_parameters) +#define FE_GET_FRONTEND _IOR('o', 77, struct dvb_frontend_parameters) +#define FE_SET_FRONTEND_TUNE_MODE _IO('o', 81) /* unsigned int */ + +#define FE_DISHNETWORK_SEND_LEGACY_CMD _IO('o', 80) /* unsigned int */ + +/* + * References: + * DVB-S : EN 300 421 + * DVB-S2: EN 302 307, TR 102 376, EN 301 210 + * DVB-C : EN 300 429 + * DVB-T : EN 300 744 + * DVB-H : EN 300 304 + * ATSC : A/53A + */ + +/* + * Delivery Systems + * needs to set/queried for multistandard frontends + */ +enum dvbfe_delsys { + DVBFE_DELSYS_DVBS = (1 << 0), + DVBFE_DELSYS_DSS = (1 << 1), + DVBFE_DELSYS_DVBS2 = (1 << 2), + DVBFE_DELSYS_DVBC = (1 << 3), + DVBFE_DELSYS_DVBT = (1 << 4), + DVBFE_DELSYS_DVBH = (1 << 5), + DVBFE_DELSYS_ATSC = (1 << 6), + DVBFE_DELSYS_DUMMY = (1 << 31) +}; pre { line-height: 125%; }
td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
.highlight .hll { background-color: #ffffcc }
.highlight .c { color: #888888 } /* Comment */
.highlight .err { color: #a61717; background-color: #e3d2d2 } /* Error */
.highlight .k { color: #008800; font-weight: bold } /* Keyword */
.highlight .ch { color: #888888 } /* Comment.Hashbang */
.highlight .cm { color: #888888 } /* Comment.Multiline */
.highlight .cp { color: #cc0000; font-weight: bold } /* Comment.Preproc */
.highlight .cpf { color: #888888 } /* Comment.PreprocFile */
.highlight .c1 { color: #888888 } /* Comment.Single */
.highlight .cs { color: #cc0000; font-weight: bold; background-color: #fff0f0 } /* Comment.Special */
.highlight .gd { color: #000000; background-color: #ffdddd } /* Generic.Deleted */
.highlight .ge { font-style: italic } /* Generic.Emph */
.highlight .gr { color: #aa0000 } /* Generic.Error */
.highlight .gh { color: #333333 } /* Generic.Heading */
.highlight .gi { color: #000000; background-color: #ddffdd } /* Generic.Inserted */
.highlight .go { color: #888888 } /* Generic.Output */
.highlight .gp { color: #555555 } /* Generic.Prompt */
.highlight .gs { font-weight: bold } /* Generic.Strong */
.highlight .gu { color: #666666 } /* Generic.Subheading */
.highlight .gt { color: #aa0000 } /* Generic.Traceback */
.highlight .kc { color: #008800; font-weight: bold } /* Keyword.Constant */
.highlight .kd { color: #008800; font-weight: bold } /* Keyword.Declaration */
.highlight .kn { color: #008800; font-weight: bold } /* Keyword.Namespace */
.highlight .kp { color: #008800 } /* Keyword.Pseudo */
.highlight .kr { color: #008800; font-weight: bold } /* Keyword.Reserved */
.highlight .kt { color: #888888; font-weight: bold } /* Keyword.Type */
.highlight .m { color: #0000DD; font-weight: bold } /* Literal.Number */
.highlight .s { color: #dd2200; background-color: #fff0f0 } /* Literal.String */
.highlight .na { color: #336699 } /* Name.Attribute */
.highlight .nb { color: #003388 } /* Name.Builtin */
.highlight .nc { color: #bb0066; font-weight: bold } /* Name.Class */
.highlight .no { color: #003366; font-weight: bold } /* Name.Constant */
.highlight .nd { color: #555555 } /* Name.Decorator */
.highlight .ne { color: #bb0066; font-weight: bold } /* Name.Exception */
.highlight .nf { color: #0066bb; font-weight: bold } /* Name.Function */
.highlight .nl { color: #336699; font-style: italic } /* Name.Label */
.highlight .nn { color: #bb0066; font-weight: bold } /* Name.Namespace */
.highlight .py { color: #336699; font-weight: bold } /* Name.Property */
.highlight .nt { color: #bb0066; font-weight: bold } /* Name.Tag */
.highlight .nv { color: #336699 } /* Name.Variable */
.highlight .ow { color: #008800 } /* Operator.Word */
.highlight .w { color: #bbbbbb } /* Text.Whitespace */
.highlight .mb { color: #0000DD; font-weight: bold } /* Literal.Number.Bin */
.highlight .mf { color: #0000DD; font-weight: bold } /* Literal.Number.Float */
.highlight .mh { color: #0000DD; font-weight: bold } /* Literal.Number.Hex */
.highlight .mi { color: #0000DD; font-weight: bold } /* Literal.Number.Integer */
.highlight .mo { color: #0000DD; font-weight: bold } /* Literal.Number.Oct */
.highlight .sa { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Affix */
.highlight .sb { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Backtick */
.highlight .sc { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Char */
.highlight .dl { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Delimiter */
.highlight .sd { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Doc */
.highlight .s2 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Double */
.highlight .se { color: #0044dd; background-color: #fff0f0 } /* Literal.String.Escape */
.highlight .sh { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Heredoc */
.highlight .si { color: #3333bb; background-color: #fff0f0 } /* Literal.String.Interpol */
.highlight .sx { color: #22bb22; background-color: #f0fff0 } /* Literal.String.Other */
.highlight .sr { color: #008800; background-color: #fff0ff } /* Literal.String.Regex */
.highlight .s1 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Single */
.highlight .ss { color: #aa6600; background-color: #fff0f0 } /* Literal.String.Symbol */
.highlight .bp { color: #003388 } /* Name.Builtin.Pseudo */
.highlight .fm { color: #0066bb; font-weight: bold } /* Name.Function.Magic */
.highlight .vc { color: #336699 } /* Name.Variable.Class */
.highlight .vg { color: #dd7700 } /* Name.Variable.Global */
.highlight .vi { color: #3333bb } /* Name.Variable.Instance */
.highlight .vm { color: #336699 } /* Name.Variable.Magic */
.highlight .il { color: #0000DD; font-weight: bold } /* Literal.Number.Integer.Long */ # $Id: lcd4linux.conf.sample 759 2007-02-04 05:55:58Z michael $
# $URL: https://ssl.bulix.org/svn/lcd4linux/branches/0.10.1/lcd4linux.conf.sample $
Variables {
tick 500
tack 100
minute 60000
}
Display G15 {
Driver 'G-15'
Font '6x8'
Contrast 10
Inverted 0
UInput '/dev/input/uinput'
SingleKeyPress 1
}
Display SerDispLib {
Driver 'serdisplib'
Port 'PAR:/dev/parports/0'
#Port '/dev/tts/0'
Model 'OPTREX323'
Options ''
}
Display Trefon {
Driver 'TREFON'
Size '16x2'
Backlight 1
Icons 1
}
Display LCD-Linux {
Driver 'LCD-Linux'
Size '20x2'
UseBusy 0
}
Display LCD2USB {
Driver 'LCD2USB'
Size '20x2'
Backlight 1
Icons 1
}
Display LCD2041 {
Driver 'MatrixOrbital'
Model 'LCD2041'
Port '/dev/tts/0'
Speed 19200
Contrast 160
}
Display LK202 {
Driver 'MatrixOrbital'
Model 'LK202-24-USB'
Port '/dev/tts/USB0'
Speed 19200
Contrast 256/2
}
Display LK204 {
Driver 'MatrixOrbital'
Model 'LK204-24-USB'
Port '/dev/usb/tts/0'
# Port '/dev/tts/0'
Speed 19200
Contrast 256/2
}
Display MI240 {
Driver 'MilfordInstruments'
Model 'MI240'
Port '/dev/tts/0'
Speed 19200
}
Display CW12232 {
Driver 'Cwlinux'
Model 'CW12232'
Port '/dev/usb/tts/0'
Speed 19200
Brightness 2
Icons 1
}
Display CF631 {
Driver 'Crystalfontz'
Model '631'
Port '/dev/tts/USB0'
Speed 115200
Contrast 95
Backlight 50
Icons 1
}
Display CF632 {
Driver 'Crystalfontz'
Model '632'
Port '/dev/tts/0'
Speed 19200
Icons 1
}
Display CF633 {
Icons 1
Driver 'Crystalfontz'
Model '633'
Port '/dev/tts/0'
Speed 19200
Contrast 16
Backlight 50
}
Display CF635 {
Icons 1
Driver 'Crystalfontz'
Model '635'
Port '/dev/ttyUSB0'
Speed 115200
Contrast 100
Backlight 128
}
Display Curses {
Driver 'Curses'
Size '20x6'
}
# generic HD44780 display (LCD4Linux wiring)
Display HD44780-generic {
Driver 'HD44780'
Model 'generic'
Port '/dev/parports/0'
Size '8x2'
asc255bug 0
GPOs 8
Wire {
RW 'GND'
RS 'AUTOFD'
ENABLE 'STROBE'
ENABLE2 'GND'
GPO 'INIT'
POWER 'GND'
}
}
# generic HD44780 display (WinAmp wiring)
Display HD44780-winamp {
Driver 'HD44780'
Model 'generic'
UseBusy 1
Port '/dev/parports/0'
Size '20x4'
asc255bug 1
Wire {
RW 'AUTOFD'
RS 'INIT'
ENABLE 'STROBE'
ENABLE2 'GND'
GPO 'GND'
POWER 'GND'
}
Timing {
# fuzz timings by value (100 = no change)
fuzz 100
# low-level communication [ns]
CY 1000 # Enable cycle time
PW 450 # Enable pulse width
AS 140 # Address setup time
AH 20 # Address hold time
# HD44780 execution timings [us]
INIT1 4100 # first init sequence: 4.1 msec
INIT2 100 # second init sequence: 100 usec
EXEC 80 # normal execution time
WRCG 120 # CG RAM Write
CLEAR 2250 # Clear Display
HOME 2250 # Return Cursor Home
ONOFF 2250 # Display On/Off Control
# GPO timing [ns]
GPO_ST 20 # 74HCT573 set-up time
GPO_PW 230 # 74HCT573 enable pulse width
# Power supply timing [ms]
POWER 500 # power-on delay
}
}
# HD44780 display 4-Bit mode
Display HD44780-4bit {
Driver 'HD44780'
Model 'generic'
Port '/dev/parports/0'
Size '16x1'
Bits 4
UseBusy 0
asc255bug 0
Wire {
RW 'GND'
RS 'DB4'
ENABLE 'DB6'
GPO 'GND'
}
}
# Dual-HD44780 display from Pollin
Display WDC2704M {
Driver 'HD44780'
Model 'generic'
Controllers 2
UseBusy 1
Port '/dev/parports/0'
Size '27x4'
Wire {
RW 'AUTOFD'
RS 'INIT'
ENABLE 'STROBE'
ENABLE2 'SLCTIN'
GPO 'GND'
POWER 'GND'
}
}
# HD44780 display from www.kernelconcepts.de
Display HD44780-kernelconcepts {
Driver 'HD44780'
Model 'HD66712'
UseBusy 1
Port '/dev/parports/0'
Size '20x4'
Wire {
RW 'AUTOFD'
RS 'INIT'
ENABLE 'STROBE'
ENABLE2 'GND'
GPO 'GND'
POWER 'GND'
}
}
Display picoLCD {
Driver 'picoLCD'
Size '20x2'
Contrast 0
Backlight 1
Icons 1
}
Display SC1602D {
Driver 'HD44780'
Port '/dev/parports/0'
Bits '8'
Size '16x2'
asc255bug 0
Icons 1
Wire {
RW 'GND'
RS 'AUTOFD'
ENABLE 'STROBE'
GPO 'INIT'
POWER 'GND'
}
}
Display LCM-162 {
Driver 'HD44780'
Model 'LCM-162'
# Bus 'parport'
Port '/dev/parports/0'
Size '16x2'
UseBusy 1
asc255bug 0
Icons 1
}
Display HD44780-I2C {
Driver 'HD44780'
Model 'generic'
Bus 'i2c'
Port '/dev/i2c-0'
Device '70'
Bits '4'
Size '20x4'
asc255bug 0
Icons 1
Wire {
RW 'DB5'
RS 'DB4'
ENABLE 'DB6'
GPO 'GND'
}
}
Display LCDTerm {
Driver 'LCDTerm
Port '/dev/tts/0'
Speed 19200
Size '20x4'
Icons 1
}
Display SimpleLCD {
Driver 'SimpleLCD'
Port '/dev/tts/0'
Speed 1200
Options 0
Size '20x2'
}
Display BA63 {
Driver 'WincorNixdorf'
Model 'BA63'
Port '/dev/tts/0'
# Port '/dev/tts/USB0'
Speed 9600
BarChar 219
SelfTest 0
}
Display M50530-24x8 {
Driver 'M50530'
Port '/dev/parports/0'
# Port '0x378'
Size '24x8'
Font '5x7'
Duty 2
Wire.RW 'INIT'
Wire.EX 'STROBE'
Wire.IOC1 'SLCTIN'
Wire.IOC2 'AUTOFD'
Wire.GPO 'GND'
UseBusy 1
Timing.fuzz 100
}
Display CT20x4 {
Driver 'Beckmann+Egle'
Model 'CT20x4'
Port '/dev/tts/0'
# Size '16x2'
# Contrast 7
# Backlight 1
Icons 1
}
Display USBLCD {
Driver 'USBLCD'
# Port '/dev/lcd0'
Port 'libusb'
Size '20x4'
asc255bug 1
Icons 1
}
Display BWCT {
Driver 'BWCT'
Size '20x4'
Contrast 220
asc255bug 1
Icons 1
}
Display T6963-240x64 {
Driver 'T6963'
Port '/dev/parports/0'
Size '240x64'
DualScan 0
Cell 6
Wire.CE 'STROBE'
Wire.CD 'SLCTIN'
Wire.RD 'AUTOFD'
Wire.WR 'INIT'
Timing.fuzz 120
Font '6x8'
}
Display T6963-240x128 {
Driver 'T6963'
Port '/dev/parports/0'
Size '240x128'
DualScan 0
Cell 6
Wire.CE 'STROBE'
Wire.CD 'SLCTIN'
Wire.RD 'AUTOFD'
Wire.WR 'INIT'
Timing.fuzz 120
Font '6x8'
}
Display T6963-240x128D {
Driver 'T6963'
Port '/dev/parports/0'
Size '240x128'
DualScan 1
Cell 6
Wire.CE 'STROBE'
Wire.CD 'SLCTIN'
Wire.RD 'AUTOFD'
Wire.WR 'INIT'
Timing.fuzz 120
Font '6x8'
}
Display LPH7508 {
Driver 'LPH7508'
Port '/dev/parports/0'
Font '6x8'
Contrast 15
Inverted 0
}
Display LPH7508-serdisplib {
Driver 'serdisplib'
Port 'PAR:/dev/parports/0'
Model 'LPH7508'
}
Display ctinclud {
Driver 'serdisplib'
Port 'USB:7c0/1501'
Model 'CTINCLUD'
Options ''
Inverted 0
}
Display XWindow {
Driver 'X11'
Size '120x32'
Font '5x8'
Pixel '4+1'
Gap '-1x-1'
Border 20
# Foreground '#000000'
# Background '#80d000'
# Halfground '#70c000'
Foreground '000000cc'
Background '00000022'
Basecolor '80d000'
}
Display Image {
Driver 'Image'
# Format 'PPM'
Format 'PNG'
Size '120x32'
Font '6x8'
Pixel '4+1'
Gap '-1x-1'
Border 20
# Foreground '#000000'
# Background '#80d000'
# Halfground '#70c000'
Foreground '000000cc'
Background '00000022'
Basecolor '80d000'
}
#Plugin KVV {
# StationID '12_701'
# Refresh 30
# Proxy 'igate'
# Port 8080;
#}
Plugin Seti {
Directory '/root/setiathome-3.08.i686-pc-linux-gnu'
}
Plugin MySQL {
server 'gsmlandia.com' # if none, localhost assumed
port 3306 # if none, MySQL default assumed
user 'lcd4linux' # if none, lcd4linux unix owner assumed
password 'lcd4linux' # if none, empty password assumed
database 'lcd4linux' # MUST be specified
}
Plugin Pop3 {
server1 'localhost'
port1 110
user1 'michael'
password1 'secret'
}
Widget OS {
class 'Text'
expression '*** '.uname('sysname').' '.uname('release').' ***'
width 20
align 'M'
style 'bold'
speed 50
update tick
}
Widget CPU {
class 'Text'
expression uname('machine')
prefix 'CPU '
width 9
align 'L'
style test::onoff(7)>0?'bold':'norm'
update tick
}
Widget CPUinfo {
class 'Text'
expression cpuinfo('model name')
prefix ''
width 20
align 'M'
speed 100
update tick
}
Widget RAM {
class 'Text'
expression meminfo('MemTotal')/1024
postfix ' MB RAM'
width 11
precision 0
align 'R'
update tick
}
Widget Busy {
class 'Text'
expression proc_stat::cpu('busy', 500)
prefix 'Busy'
postfix '%'
width 9
precision 1
align 'R'
update tick
}
Widget BusyBar {
class 'Bar'
expression proc_stat::cpu('busy', 500)
expression2 proc_stat::cpu('system', 500)
length 10
direction 'E'
update tack
}
Widget Load {
class 'Text'
expression loadavg(1)
prefix 'Load'
postfix loadavg(1)>1.0?'!':' '
width 10
precision 1
align 'R'
update tick
}
Widget LoadBar {
class 'Bar'
expression loadavg(1)
max 2.0
length 10
direction 'E'
update tack
}
Widget Disk {
class 'Text'
# disk.[rw]blk return blocks, we assume a blocksize of 512
# to get the number in kB/s we would do blk*512/1024, which is blk/2
# expression (proc_stat::disk('.*', 'rblk', 500)+proc_stat::disk('.*', 'wblk', 500))/2
# with kernel 2.6, disk_io disappeared from /proc/stat but moved to /proc/diskstat
# therefore you have to use another function called 'diskstats':
expression diskstats('hd.', 'read_sectors', 500) + diskstats('hd.', 'write_sectors', 500)
prefix 'disk'
postfix ' '
width 10
precision 0
align 'R'
update tick
}
Widget DiskBar {
class 'Bar'
#expression proc_stat::disk('.*', 'rblk', 500)
#expression2 proc_stat::disk('.*', 'wblk', 500)
# for kernel 2.6:
expression diskstats('hd.', 'read_sectors', 500)
expression2 diskstats('hd.', 'write_sectors', 500)
length 14
direction 'E'
update tack
}
Widget Eth0 {
class 'Text'
expression (netdev('eth0', 'Rx_bytes', 500)+netdev('eth0', 'Tx_bytes', 500))/1024
prefix 'eth0'
postfix ' '
width 10
precision 0
align 'R'
update tick
}
Widget Eth0Bar {
class 'Bar'
expression netdev('eth0', 'Rx_bytes', 500)
expression2 netdev('eth0', 'Tx_bytes', 500)
length 14
direction 'E'
update tack
}
Widget PPP {
class 'Text'
expression (ppp('Rx:0', 500)+ppp('Tx:0', 500))
prefix 'PPP'
width 9
precision 0
align 'R'
update tick
}
Widget Temp {
class 'Text'
expression i2c_sensors('temp_input3')*1.0324-67
prefix 'Temp'
width 9
precision 1
align 'R'
update tick
}
Widget TempBar {
class 'Bar'
expression i2c_sensors('temp_input3')*1.0324-67
min 40
max 80
length 10
direction 'E'
update tack
}
Widget MySQLtest1 {
class 'Text'
expression MySQL::query('SELECT id FROM table1')
width 20
align 'R'
prefix 'MySQL test:'
update minute
}
Widget MySQLtest2 {
class 'Text'
expression MySQL::status()
width 20
align 'M'
prefix 'Status: '
update minute
}
Widget Uptime {
class 'Text'
expression uptime('%d days %H:%M:%S')
width 20
align 'R'
prefix 'Up '
update 1000
}
# debugging widgets
Widget BarTest {
class 'Bar'
# test::bar(barno,maxval,startval,delta) - move a test value between 0 and max.
# delta= step to change value by each time it's read.
# barno - ten different test bar values can be set up, with barno=0..9
# if delta=0, just returns the value of bar n instead of changing it.
expression test::bar(0,30,25,1)
expression2 test::bar(1,30,0,1)
length 8
# max 50
direction 'E'
update 10
}
Widget BarTestVal {
class 'Text'
expression test::bar(0,100,50,0)
prefix 'Test '
width 9
update 200
}
Widget LightningTest {
class 'icon'
speed 500
visible test::onoff(0)
bitmap {
row1 '...***'
row2 '..***.'
row3 '.***..'
row4 '.****.'
row5 '..**..'
row6 '.**...'
row7 '**....'
row8 '*.....'
}
}
# Icons
Widget Heartbeat {
class 'Icon'
speed 800
Bitmap {
Row1 '.....|.....'
Row2 '.*.*.|.*.*.'
Row3 '*****|*.*.*'
Row4 '*****|*...*'
Row5 '.***.|.*.*.'
Row6 '.***.|.*.*.'
Row7 '..*..|..*..'
Row8 '.....|.....'
}
}
Widget EKG {
class 'Icon'
speed 50
Bitmap {
Row1 '.....|.....|.....|.....|.....|.....|.....|.....'
Row2 '.....|....*|...*.|..*..|.*...|*....|.....|.....'
Row3 '.....|....*|...*.|..*..|.*...|*....|.....|.....'
Row4 '.....|....*|...**|..**.|.**..|**...|*....|.....'
Row5 '.....|....*|...**|..**.|.**..|**...|*....|.....'
Row6 '.....|....*|...*.|..*.*|.*.*.|*.*..|.*...|*....'
Row7 '*****|*****|****.|***..|**..*|*..**|..***|.****'
Row8 '.....|.....|.....|.....|.....|.....|.....|.....'
}
}
Widget Karo {
class 'Icon'
speed 200
Bitmap {
Row1 '.....|.....|.....|.....|..*..|.....|.....|.....'
Row2 '.....|.....|.....|..*..|.*.*.|..*..|.....|.....'
Row3 '.....|.....|..*..|.*.*.|*...*|.*.*.|..*..|.....'
Row4 '.....|..*..|.*.*.|*...*|.....|*...*|.*.*.|..*..'
Row5 '.....|.....|..*..|.*.*.|*...*|.*.*.|..*..|.....'
Row6 '.....|.....|.....|..*..|.*.*.|..*..|.....|.....'
Row7 '.....|.....|.....|.....|..*..|.....|.....|.....'
Row8 '.....|.....|.....|.....|.....|.....|.....|.....'
}
}
Widget Heart {
class 'Icon'
speed 250
Bitmap {
Row1 '.....|.....|.....|.....|.....|.....'
Row2 '.*.*.|.....|.*.*.|.....|.....|.....'
Row3 '*****|.*.*.|*****|.*.*.|.*.*.|.*.*.'
Row4 '*****|.***.|*****|.***.|.***.|.***.'
Row5 '.***.|.***.|.***.|.***.|.***.|.***.'
Row6 '.***.|..*..|.***.|..*..|..*..|..*..'
Row7 '..*..|.....|..*..|.....|.....|.....'
Row8 '.....|.....|.....|.....|.....|.....'
}
}
Widget Blob {
class 'Icon'
speed 250
Bitmap {
Row1 '.....|.....|.....'
Row2 '.....|.....|.***.'
Row3 '.....|.***.|*...*'
Row4 '..*..|.*.*.|*...*'
Row5 '.....|.***.|*...*'
Row6 '.....|.....|.***.'
Row7 '.....|.....|.....'
Row8 '.....|.....|.....'
}
}
Widget Wave {
class 'Icon'
speed 100
Bitmap {
Row1 '..**.|.**..|**...|*....|.....|.....|.....|.....|....*|...**'
Row2 '.*..*|*..*.|..*..|.*...|*....|.....|.....|....*|...*.|..*..'
Row3 '*....|....*|...*.|..*..|.*...|*....|....*|...*.|..*..|.*...'
Row4 '*....|....*|...*.|..*..|.*...|*....|....*|...*.|..*..|.*...'
Row5 '*....|....*|...*.|..*..|.*...|*....|....*|...*.|..*..|.*...'
Row6 '.....|.....|....*|...*.|..*..|.*..*|*..*.|..*..|.*...|*....'
Row7 '.....|.....|.....|....*|...**|..**.|.**..|**...|*....|.....'
Row8 '.....|.....|.....|.....|.....|.....|.....|.....|.....|.....'
}
}
Widget Squirrel {
class 'Icon'
speed 100
Bitmap {
Row1 '.....|.....|.....|.....|.....|.....'
Row2 '.....|.....|.....|.....|.....|.....'
Row3 '.....|.....|.....|.....|.....|.....'
Row4 '**...|.**..|..**.|...**|....*|.....'
Row5 '*****|*****|*****|*****|*****|*****'
Row6 '...**|..**.|.**..|**...|*....|.....'
Row7 '.....|.....|.....|.....|.....|.....'
Row8 '.....|.....|.....|.....|.....|.....'
}
}
Widget Lightning {
class 'icon'
speed 100
visible cpu('busy', 500)-50
bitmap {
row1 '...***'
row2 '..***.'
row3 '.***..'
row4 '.****.'
row5 '..**..'
row6 '.**...'
row7 '**....'
row8 '*.....'
}
}
Widget Rain {
class 'icon'
speed 200
bitmap {
row1 '...*.|.....|.....|.*...|....*|..*..|.....|*....'
row2 '*....|...*.|.....|.....|.*...|....*|..*..|.....'
row3 '.....|*....|...*.|.....|.....|.*...|....*|..*..'
row4 '..*..|.....|*....|...*.|.....|.....|.*...|....*'
row5 '....*|..*..|.....|*....|...*.|.....|.....|.*...'
row6 '.*...|....*|..*..|.....|*....|...*.|.....|.....'
row7 '.....|.*...|....*|..*..|.....|*....|...*.|.....'
row8 '.....|.....|.*...|....*|..*..|.....|*....|...*.'
}
}
Widget Timer {
class 'Icon'
speed 50
Bitmap {
Row1 '.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|'
Row2 '.***.|.*+*.|.*++.|.*++.|.*++.|.*++.|.*++.|.*++.|.*++.|.*++.|.*++.|.*++.|.+++.|.+*+.|.+**.|.+**.|.+**.|.+**.|.+**.|.+**.|.+**.|.+**.|.+**.|.+**.|'
Row3 '*****|**+**|**++*|**+++|**++.|**++.|**+++|**+++|**+++|**+++|**+++|+++++|+++++|++*++|++**+|++***|++**.|++**.|++***|++***|++***|++***|++***|*****|'
Row4 '*****|**+**|**+**|**+**|**+++|**+++|**+++|**+++|**+++|**+++|+++++|+++++|+++++|++*++|++*++|++*++|++***|++***|++***|++***|++***|++***|*****|*****|'
Row5 '*****|*****|*****|*****|*****|***++|***++|**+++|*++++|+++++|+++++|+++++|+++++|+++++|+++++|+++++|+++++|+++**|+++**|++***|+****|*****|*****|*****|'
Row6 '.***.|.***.|.***.|.***.|.***.|.***.|.**+.|.*++.|.+++.|.+++.|.+++.|.+++.|.+++.|.+++.|.+++.|.+++.|.+++.|.+++.|.++*.|.+**.|.***.|.***.|.***.|.***.|'
Row7 '.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|'
Row8 '.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|'
}
}
Widget Test {
class 'Text'
expression '1234567890123456789012345678901234567890'
width 40
foreground 'ff0000ff'
}
Widget Test1 {
class 'Text'
expression 'ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890'
width 40
align 'M'
speed 100
}
Widget Test2 {
class 'Text'
expression '1234567890abcdefghijklmnopqrstuvwxyz'
width 40
align 'M'
speed 150
}
Widget GPO_Val1 {
class 'Text'
expression LCD::GPO(1)
prefix 'GPO#1'
width 10
precision 0
align 'R'
update tick
}
Widget GPI_Val1 {
class 'Text'
expression LCD::GPI(1)
prefix 'GPI#1'
width 10
precision 0
align 'R'
update tick
}
Widget GPO_Val4 {
class 'Text'
expression LCD::GPO(4)
prefix 'GPO#4'
width 10
precision 0
align 'R'
update tick
}
Widget GPO_Test1 {
class 'GPO'
expression 255*test::onoff(1)
update 300
}
Widget GPO_Test255 {
class 'GPO'
expression test::bar(0,255, 0, 1)
update 100
}
Widget ImageTest {
class 'Image'
file 'tux.png'
update 1000
visible 1
inverted 0
}
Widget KVV {
class 'Text'
expression kvv::line(0).' '.kvv::station(0)
width 11
align 'L'
update tick
Foreground 'ffff00'
style 'bold'
}
Widget KVV_TIME {
class 'Text'
expression kvv::time_str(0)
width 2
align 'R'
update tick
foreground kvv::time(0) < 2 ? 'FF0000' : ( kvv::time(0) < 5 ? 'FFFF00' : '00FF00' )
style 'bold'
}
Layout Default {
Row1 {
Col1 'OS'
}
Row2 {
Col1 'CPU'
Col10 'RAM'
}
Row3 {
Col1 'Busy'
Col10 'Rain'
Col11 'BusyBar'
}
Row4 {
Col1 'Load'
Col11 'LoadBar'
}
Row5 {
Col1 'Disk'
Col11 'DiskBar'
}
Row6 {
Col1 'Eth0'
Col11 'Eth0Bar'
}
}
Layout TestLayer {
Row1 {
Col1 'OS'
}
Row2 {
Col1 'CPU'
Col10 'RAM'
}
Row3 {
Col1 'Busy'
Col10 'Rain'
Col11 'BusyBar'
}
Row4 {
Col1 'Load'
Col11 'LoadBar'
}
Row5 {
Col1 'Disk'
Col11 'DiskBar'
}
Row6 {
Col1 'Eth0'
Col11 'Eth0Bar'
}
Layer 2 {
X1.Y1 'ImageTest'
}
}
Layout TestImage {
Layer 2 {
X1.Y1 'ImageTest'
}
}
Layout L24x8 {
Row1 {
Col1 'Load'
Col11 'BusyBar'
}
Row2 {
}
}
Layout L8x2 {
Row1 {
Col1 'Busy'
}
Row2 {
Col1 'BarTest'
}
}
Layout L16x1 {
Row1 {
Col1 'Busy'
Col11 'BusyBar'
}
}
Layout L16x2 {
Row1 {
Col1 'Busy'
Col11 'BusyBar'
}
Row2 {
Col1 'Disk'
#Col11 'DiskBar'
Col11 'BarTest'
}
}
Layout L20x2 {
Row1 {
Col1 'CPUinfo'
}
Row2 {
Col1 'Busy'
Col11 'BusyBar'
}
}
Layout L40x2 {
Row1 {
Col1 'OS'
Col21 'Busy'
Col31 'BusyBar'
}
Row2 {
Col1 'CPU'
Col10 'RAM'
Col21 'Load'
Col31 'LoadBar'
}
}
Layout Test {
Row01.Col1 'Test1'
Row02.Col1 'Test1'
Row03.Col1 'Test1'
Row04.Col1 'Test1'
Row05.Col1 'Test1'
Row06.Col1 'Test1'
Row07.Col1 'Test1'
Row08.Col1 'Test1'
Row09.Col1 'Test1'
Row10.Col1 'Test1'
Row11.Col1 'Test1'
Row12.Col1 'Test1'
Row13.Col1 'Test1'
Row14.Col1 'Test1'
Row15.Col1 'Test1'
Row16.Col1 'Test1'
Row17.Col1 'Test1'
Row18.Col1 'Test1'
Row19.Col1 'Test1'
Row20.Col1 'Test1'
Row21.Col1 'Test1'
Row22.Col1 'Test1'
Row23.Col1 'Test1'
Row24.Col1 'Test1'
}
Layout Test2 {
Row01.Col1 'Test1'
#Row02.Col1 'Rain'
Row02.Col1 'Test2'
Row03.Col1 'Test1'
Row04.Col1 'Test2'
Row05.Col1 'Test1'
Row06.Col1 'Test2'
Row07.Col1 'Test1'
Row08.Col1 'Test2'
}
Layout TestGPO {
Row1.Col1 'GPO_Val1'
Row1.Col10 'GPI_Val1'
Row2.Col1 'GPO_Val4'
GPO1 'GPO_Test255'
GPO4 'GPO_Test1'
}
Layout TestIcons {
Row1.Col1 'Timer'
Row1.Col2 'Rain'
Row1.Col3 'Squirrel'
Row1.Col4 'Wave'
Row1.Col5 'Blob'
Row1.Col6 'Heart'
Row1.Col7 'Karo'
Row1.Col8 'EKG'
}
Layout testMySQL {
Row1 {
Col1 'MySQLtest1'
}
Row2 {
Col1 'MySQLtest2'
}
}
Layout Debug {
#Row09.Col1 'Test'
Row09.Col1 'Heartbeat'
}
#Display 'SerDispLib'
#Display 'LCD-Linux'
#Display 'LCD2041'
#Display 'LK202'
#Display 'LK204'
#Display 'MI240'
#Display 'CW12232'
#Display 'HD44780-generic'
#Display 'HD44780-WinAmp'
#Display 'HD44780-4bit'
#Display 'WDC2704M'
#Display 'SC1602D'
#Display 'LCM-162'
#Display 'CF631'
#Display 'CF632'
#Display 'CF633'
#Display 'Curses'
#Display 'M50530-24x8'
#Display 'LCDTerm'
#Display 'SimpleLCD'
#Display 'BA63'
#Display 'CT20x4'
#Display 'T6963-240x64'
#Display 'T6963-240x128'
#Display 'T6963-240x128D'
#Display 'XWindow'
#Display 'USBLCD'
#Display 'BWCT'
#Display 'Image'
#Display 'Trefon'
#Display 'LCD2USB'
#Display 'LPH7508-serdisplib'
#Display 'LPH7508'
#Display 'ctinclud'
Display 'picoLCD'
#Layout 'Default'
#Layout 'TestLayer'
#Layout 'TestImage'
#Layout 'L8x2'
#Layout 'L16x1'
#Layout 'L16x2'
Layout 'L20x2'
#Layout 'L40x2'
#Layout 'Test'
#Layout 'Test2'
#Layout 'TestGPO'
#Layout 'Debug'
#Layout 'TestIcons'
+ __u16 pid; + __u16 if_num; +}; +#define __NET_ADD_IF_OLD _IOWR('o', 52, struct __dvb_net_if_old) +#define __NET_GET_IF_OLD _IOWR('o', 54, struct __dvb_net_if_old) + + +#endif /*_DVBNET_H_*/ diff --git a/include/linux/dvb/osd.h b/include/osd.h index 0d81439..5d2961c 100644 --- a/include/linux/dvb/osd.h +++ b/include/osd.h @@ -1,9 +1,9 @@ -/* +/* * osd.h * * Copyright (C) 2001 Ralph Metzler <ralph@convergence.de> * & Marcus Metzler <marcus@convergence.de> - for convergence integrated media GmbH + * for convergence integrated media GmbH * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Lesser Public License @@ -91,21 +91,52 @@ typedef enum { // TODO: remove "test" in final version OSD_Text, // (x0,y0,size,color,text) OSD_SetWindow, // (x0) set window with number 0<x0<8 as current - OSD_MoveWindow, // move current window to (x0, y0) + OSD_MoveWindow, // move current window to (x0, y0) + OSD_OpenRaw, // Open other types of OSD windows } OSD_Command; typedef struct osd_cmd_s { - OSD_Command cmd; - int x0; - int y0; - int x1; - int y1; - int color; - void *data; + OSD_Command cmd; + int x0; + int y0; + int x1; + int y1; + int color; + void *data; } osd_cmd_t; +/* OSD_OpenRaw: set 'color' to desired window type */ +typedef enum { + OSD_BITMAP1, /* 1 bit bitmap */ + OSD_BITMAP2, /* 2 bit bitmap */ + OSD_BITMAP4, /* 4 bit bitmap */ + OSD_BITMAP8, /* 8 bit bitmap */ + OSD_BITMAP1HR, /* 1 Bit bitmap half resolution */ + OSD_BITMAP2HR, /* 2 bit bitmap half resolution */ + OSD_BITMAP4HR, /* 4 bit bitmap half resolution */ + OSD_BITMAP8HR, /* 8 bit bitmap half resolution */ + OSD_YCRCB422, /* 4:2:2 YCRCB Graphic Display */ + OSD_YCRCB444, /* 4:4:4 YCRCB Graphic Display */ + OSD_YCRCB444HR, /* 4:4:4 YCRCB graphic half resolution */ + OSD_VIDEOTSIZE, /* True Size Normal MPEG Video Display */ + OSD_VIDEOHSIZE, /* MPEG Video Display Half Resolution */ + OSD_VIDEOQSIZE, /* MPEG Video Display Quarter Resolution */ + OSD_VIDEODSIZE, /* MPEG Video Display Double Resolution */ + OSD_VIDEOTHSIZE, /* True Size MPEG Video Display Half Resolution */ + OSD_VIDEOTQSIZE, /* True Size MPEG Video Display Quarter Resolution*/ + OSD_VIDEOTDSIZE, /* True Size MPEG Video Display Double Resolution */ + OSD_VIDEONSIZE, /* Full Size MPEG Video Display */ + OSD_CURSOR /* Cursor */ +} osd_raw_window_t; -#define OSD_SEND_CMD _IOW('o', 160, osd_cmd_t) +typedef struct osd_cap_s { + int cmd; +#define OSD_CAP_MEMSIZE 1 /* memory size */ + long val; +} osd_cap_t; -#endif +#define OSD_SEND_CMD _IOW('o', 160, osd_cmd_t) +#define OSD_GET_CAPABILITY _IOR('o', 161, osd_cap_t) + +#endif diff --git a/include/linux/dvb/version.h b/include/version.h index 54e256e..2dd76c8 100644 --- a/include/linux/dvb/version.h +++ b/include/version.h @@ -24,6 +24,6 @@ #define _DVBVERSION_H_ #define DVB_API_VERSION 3 +#define DVB_API_VERSION_MINOR 3 #endif /*_DVBVERSION_H_*/ - diff --git a/include/linux/dvb/video.h b/include/video.h index a8b6008..317ba6b 100644 --- a/include/linux/dvb/video.h +++ b/include/video.h @@ -1,9 +1,9 @@ -/* +/* * video.h * * Copyright (C) 2000 Marcus Metzler <marcus@convergence.de> * & Ralph Metzler <ralph@convergence.de> - for convergence integrated media GmbH + * for convergence integrated media GmbH * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public License @@ -27,6 +27,7 @@ #ifdef __KERNEL__ #include <linux/types.h> #else +#include <asm/types.h> #include <stdint.h> #include <time.h> #endif @@ -34,25 +35,25 @@ typedef enum { VIDEO_FORMAT_4_3, /* Select 4:3 format */ - VIDEO_FORMAT_16_9, /* Select 16:9 format. */ + VIDEO_FORMAT_16_9, /* Select 16:9 format. */ VIDEO_FORMAT_221_1 /* 2.21:1 */ } video_format_t; typedef enum { - VIDEO_SYSTEM_PAL, - VIDEO_SYSTEM_NTSC, - VIDEO_SYSTEM_PALN, - VIDEO_SYSTEM_PALNc, - VIDEO_SYSTEM_PALM, - VIDEO_SYSTEM_NTSC60, + VIDEO_SYSTEM_PAL, + VIDEO_SYSTEM_NTSC, + VIDEO_SYSTEM_PALN, + VIDEO_SYSTEM_PALNc, + VIDEO_SYSTEM_PALM, + VIDEO_SYSTEM_NTSC60, VIDEO_SYSTEM_PAL60, VIDEO_SYSTEM_PALM60 } video_system_t; -typedef enum { - VIDEO_PAN_SCAN, /* use pan and scan format */ +typedef enum { + VIDEO_PAN_SCAN, /* use pan and scan format */ VIDEO_LETTER_BOX, /* use letterbox format */ VIDEO_CENTER_CUT_OUT /* use center cut out format */ } video_displayformat_t; @@ -64,62 +65,120 @@ typedef struct { } video_size_t; typedef enum { - VIDEO_SOURCE_DEMUX, /* Select the demux as the main source */ - VIDEO_SOURCE_MEMORY /* If this source is selected, the stream - comes from the user through the write - system call */ + VIDEO_SOURCE_DEMUX, /* Select the demux as the main source */ + VIDEO_SOURCE_MEMORY /* If this source is selected, the stream + comes from the user through the write + system call */ } video_stream_source_t; typedef enum { - VIDEO_STOPPED, /* Video is stopped */ - VIDEO_PLAYING, /* Video is currently playing */ - VIDEO_FREEZED /* Video is freezed */ -} video_play_state_t; - + VIDEO_STOPPED, /* Video is stopped */ + VIDEO_PLAYING, /* Video is currently playing */ + VIDEO_FREEZED /* Video is freezed */ +} video_play_state_t; + + +/* Decoder commands */ +#define VIDEO_CMD_PLAY (0) +#define VIDEO_CMD_STOP (1) +#define VIDEO_CMD_FREEZE (2) +#define VIDEO_CMD_CONTINUE (3) + +/* Flags for VIDEO_CMD_FREEZE */ +#define VIDEO_CMD_FREEZE_TO_BLACK (1 << 0) + +/* Flags for VIDEO_CMD_STOP */ +#define VIDEO_CMD_STOP_TO_BLACK (1 << 0) +#define VIDEO_CMD_STOP_IMMEDIATELY (1 << 1) + +/* Play input formats: */ +/* The decoder has no special format requirements */ +#define VIDEO_PLAY_FMT_NONE (0) +/* The decoder requires full GOPs */ +#define VIDEO_PLAY_FMT_GOP (1) + +/* The structure must be zeroed before use by the application + This ensures it can be extended safely in the future. */ +struct video_command { + __u32 cmd; + __u32 flags; + union { + struct { + __u64 pts; + } stop; + + struct { + /* 0 or 1000 specifies normal speed, + 1 specifies forward single stepping, + -1 specifies backward single stepping, + >1: playback at speed/1000 of the normal speed, + <-1: reverse playback at (-speed/1000) of the normal speed. */ + __s32 speed; + __u32 format; + } play; + + struct { + __u32 data[16]; + } raw; + }; +}; -struct video_event { - int32_t type; -#define VIDEO_EVENT_SIZE_CHANGED 1 - time_t timestamp; +/* FIELD_UNKNOWN can be used if the hardware does not know whether + the Vsync is for an odd, even or progressive (i.e. non-interlaced) + field. */ +#define VIDEO_VSYNC_FIELD_UNKNOWN (0) +#define VIDEO_VSYNC_FIELD_ODD (1) +#define VIDEO_VSYNC_FIELD_EVEN (2) +#define VIDEO_VSYNC_FIELD_PROGRESSIVE (3) + +struct video_event { + int32_t type; +#define VIDEO_EVENT_SIZE_CHANGED 1 +#define VIDEO_EVENT_FRAME_RATE_CHANGED 2 +#define VIDEO_EVENT_DECODER_STOPPED 3 +#define VIDEO_EVENT_VSYNC 4 + time_t timestamp; union { - video_size_t size; + video_size_t size; + unsigned int frame_rate; /* in frames per 1000sec */ + unsigned char vsync_field; /* unknown/odd/even/progressive */ } u; }; -struct video_status { - int video_blank; /* blank video on freeze? */ - video_play_state_t play_state; /* current state of playback */ - video_stream_source_t stream_source; /* current source (demux/memory) */ - video_format_t video_format; /* current aspect ratio of stream*/ - video_displayformat_t display_format;/* selected cropping mode */ +struct video_status { + int video_blank; /* blank video on freeze? */ + video_play_state_t play_state; /* current state of playback */ + video_stream_source_t stream_source; /* current source (demux/memory) */ + video_format_t video_format; /* current aspect ratio of stream*/ + video_displayformat_t display_format;/* selected cropping mode */ }; struct video_still_picture { - char *iFrame; /* pointer to a single iframe in memory */ - int32_t size; + char *iFrame; /* pointer to a single iframe in memory */ + int32_t size; }; -typedef +typedef struct video_highlight { int active; /* 1=show highlight, 0=hide highlight */ uint8_t contrast1; /* 7- 4 Pattern pixel contrast */ - /* 3- 0 Background pixel contrast */ + /* 3- 0 Background pixel contrast */ uint8_t contrast2; /* 7- 4 Emphasis pixel-2 contrast */ - /* 3- 0 Emphasis pixel-1 contrast */ + /* 3- 0 Emphasis pixel-1 contrast */ uint8_t color1; /* 7- 4 Pattern pixel color */ - /* 3- 0 Background pixel color */ + /* 3- 0 Background pixel color */ uint8_t color2; /* 7- 4 Emphasis pixel-2 color */ - /* 3- 0 Emphasis pixel-1 color */ - uint32_t ypos; /* 23-22 auto action mode */ - /* 21-12 start y */ - /* 9- 0 end y */ + /* 3- 0 Emphasis pixel-1 color */ + uint32_t ypos; /* 23-22 auto action mode */ + /* 21-12 start y */ + /* 9- 0 end y */ uint32_t xpos; /* 23-22 button color number */ - /* 21-12 start x */ - /* 9- 0 end x */ + /* 21-12 start x */ + /* 9- 0 end x */ } video_highlight_t; @@ -156,21 +215,21 @@ typedef uint16_t video_attributes_t; /* bit definitions for capabilities: */ /* can the hardware decode MPEG1 and/or MPEG2? */ -#define VIDEO_CAP_MPEG1 1 +#define VIDEO_CAP_MPEG1 1 #define VIDEO_CAP_MPEG2 2 /* can you send a system and/or program stream to video device? - (you still have to open the video and the audio device but only + (you still have to open the video and the audio device but only send the stream to the video device) */ #define VIDEO_CAP_SYS 4 #define VIDEO_CAP_PROG 8 -/* can the driver also handle SPU, NAVI and CSS encoded data? +/* can the driver also handle SPU, NAVI and CSS encoded data? (CSS API is not present yet) */ #define VIDEO_CAP_SPU 16 #define VIDEO_CAP_NAVI 32 #define VIDEO_CAP_CSS 64 -#define VIDEO_STOP _IO('o', 21) +#define VIDEO_STOP _IO('o', 21) #define VIDEO_PLAY _IO('o', 22) #define VIDEO_FREEZE _IO('o', 23) #define VIDEO_CONTINUE _IO('o', 24) @@ -194,6 +253,25 @@ typedef uint16_t video_attributes_t; #define VIDEO_GET_NAVI _IOR('o', 52, video_navi_pack_t) #define VIDEO_SET_ATTRIBUTES _IO('o', 53) #define VIDEO_GET_SIZE _IOR('o', 55, video_size_t) +#define VIDEO_GET_FRAME_RATE _IOR('o', 56, unsigned int) -#endif /*_DVBVIDEO_H_*/ +/** + * VIDEO_GET_PTS + * + * Read the 33 bit presentation time stamp as defined + * in ITU T-REC-H.222.0 / ISO/IEC 13818-1. + * + * The PTS should belong to the currently played + * frame if possible, but may also be a value close to it + * like the PTS of the last decoded frame or the last PTS + * extracted by the PES parser. + */ +#define VIDEO_GET_PTS _IOR('o', 57, __u64) + +/* Read the number of displayed frames since the decoder was started */ +#define VIDEO_GET_FRAME_COUNT _IOR('o', 58, __u64) +#define VIDEO_COMMAND _IOWR('o', 59, struct video_command) +#define VIDEO_TRY_COMMAND _IOWR('o', 60, struct video_command) + +#endif /*_DVBVIDEO_H_*/ |
