You've already forked linux-apfs
mirror of
https://github.com/linux-apfs/linux-apfs.git
synced 2026-05-01 15:00:59 -07:00
Merge tag 'media/v4.8-5' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media
Pull media DocBook removal and some fixups from Mauro Carvalho Chehab: - removal of the media DocBook (since it's all in Sphinx now) - videobuf2: Fix an allocation regression - a few fixes related to the CEC drivers * tag 'media/v4.8-5' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media: [media] cec: fix off-by-one memset [media] staging: add MEDIA_SUPPORT dependency [media] vivid: don't handle CEC_MSG_SET_STREAM_PATH [media] media: adv7180: Fix broken interrupt register access [media] vb2: Fix allocation size of dma_parms [media] vim2m: copy the other colorspace-related fields as well [media] adv7511: fix VIC autodetect doc-rst: Remove the media docbook
This commit is contained in:
@@ -16,11 +16,9 @@ DOCBOOKS := z8530book.xml device-drivers.xml \
|
|||||||
genericirq.xml s390-drivers.xml uio-howto.xml scsi.xml \
|
genericirq.xml s390-drivers.xml uio-howto.xml scsi.xml \
|
||||||
80211.xml debugobjects.xml sh.xml regulator.xml \
|
80211.xml debugobjects.xml sh.xml regulator.xml \
|
||||||
alsa-driver-api.xml writing-an-alsa-driver.xml \
|
alsa-driver-api.xml writing-an-alsa-driver.xml \
|
||||||
tracepoint.xml media_api.xml w1.xml \
|
tracepoint.xml w1.xml \
|
||||||
writing_musb_glue_layer.xml crypto-API.xml iio.xml
|
writing_musb_glue_layer.xml crypto-API.xml iio.xml
|
||||||
|
|
||||||
include Documentation/DocBook/media/Makefile
|
|
||||||
|
|
||||||
###
|
###
|
||||||
# The build process is as follows (targets):
|
# The build process is as follows (targets):
|
||||||
# (xmldocs) [by docproc]
|
# (xmldocs) [by docproc]
|
||||||
@@ -49,7 +47,6 @@ pdfdocs: $(PDF)
|
|||||||
HTML := $(sort $(patsubst %.xml, %.html, $(BOOKS)))
|
HTML := $(sort $(patsubst %.xml, %.html, $(BOOKS)))
|
||||||
htmldocs: $(HTML)
|
htmldocs: $(HTML)
|
||||||
$(call cmd,build_main_index)
|
$(call cmd,build_main_index)
|
||||||
$(call install_media_images)
|
|
||||||
|
|
||||||
MAN := $(patsubst %.xml, %.9, $(BOOKS))
|
MAN := $(patsubst %.xml, %.9, $(BOOKS))
|
||||||
mandocs: $(MAN)
|
mandocs: $(MAN)
|
||||||
@@ -219,9 +216,6 @@ silent_gen_xml = :
|
|||||||
|
|
||||||
else
|
else
|
||||||
|
|
||||||
# Needed, due to cleanmediadocs
|
|
||||||
include Documentation/DocBook/media/Makefile
|
|
||||||
|
|
||||||
htmldocs:
|
htmldocs:
|
||||||
pdfdocs:
|
pdfdocs:
|
||||||
psdocs:
|
psdocs:
|
||||||
@@ -269,7 +263,7 @@ clean-files := $(DOCBOOKS) \
|
|||||||
|
|
||||||
clean-dirs := $(patsubst %.xml,%,$(DOCBOOKS)) man
|
clean-dirs := $(patsubst %.xml,%,$(DOCBOOKS)) man
|
||||||
|
|
||||||
cleandocs: cleanmediadocs
|
cleandocs:
|
||||||
$(Q)rm -f $(call objectify, $(clean-files))
|
$(Q)rm -f $(call objectify, $(clean-files))
|
||||||
$(Q)rm -rf $(call objectify, $(clean-dirs))
|
$(Q)rm -rf $(call objectify, $(clean-dirs))
|
||||||
|
|
||||||
|
|||||||
@@ -1 +0,0 @@
|
|||||||
!*.svg
|
|
||||||
@@ -1,427 +0,0 @@
|
|||||||
###
|
|
||||||
# Media build rules - Auto-generates media contents/indexes and *.h xml's
|
|
||||||
#
|
|
||||||
|
|
||||||
SHELL=/bin/bash
|
|
||||||
|
|
||||||
MEDIA_OBJ_DIR=$(objtree)/Documentation/DocBook/
|
|
||||||
MEDIA_SRC_DIR=$(srctree)/Documentation/DocBook/media
|
|
||||||
|
|
||||||
MEDIA_TEMP = media-entities.tmpl \
|
|
||||||
media-indices.tmpl \
|
|
||||||
videodev2.h.xml \
|
|
||||||
v4l2.xml \
|
|
||||||
audio.h.xml \
|
|
||||||
ca.h.xml \
|
|
||||||
dmx.h.xml \
|
|
||||||
frontend.h.xml \
|
|
||||||
net.h.xml \
|
|
||||||
video.h.xml \
|
|
||||||
|
|
||||||
IMGFILES := $(patsubst %.b64,%, $(notdir $(shell ls $(MEDIA_SRC_DIR)/*.b64)))
|
|
||||||
OBJIMGFILES := $(addprefix $(MEDIA_OBJ_DIR)/, $(IMGFILES))
|
|
||||||
GENFILES := $(addprefix $(MEDIA_OBJ_DIR)/, $(MEDIA_TEMP))
|
|
||||||
|
|
||||||
PHONY += cleanmediadocs
|
|
||||||
|
|
||||||
cleanmediadocs:
|
|
||||||
-@rm -f `find $(MEDIA_OBJ_DIR) -type l` $(GENFILES) $(OBJIMGFILES) 2>/dev/null
|
|
||||||
|
|
||||||
$(obj)/media_api.xml: $(GENFILES) FORCE
|
|
||||||
|
|
||||||
#$(MEDIA_OBJ_DIR)/media_api.html: $(MEDIA_OBJ_DIR)/media_api.xml
|
|
||||||
#$(MEDIA_OBJ_DIR)/media_api.pdf: $(MEDIA_OBJ_DIR)/media_api.xml
|
|
||||||
#$(MEDIA_OBJ_DIR)/media_api.ps: $(MEDIA_OBJ_DIR)/media_api.xml
|
|
||||||
|
|
||||||
V4L_SGMLS = \
|
|
||||||
$(shell ls $(MEDIA_SRC_DIR)/v4l/*.xml|perl -ne 'print "$$1 " if (m,.*/(.*)\n,)') \
|
|
||||||
capture.c.xml \
|
|
||||||
keytable.c.xml \
|
|
||||||
v4l2grab.c.xml
|
|
||||||
|
|
||||||
DVB_SGMLS = \
|
|
||||||
$(shell ls $(MEDIA_SRC_DIR)/dvb/*.xml|perl -ne 'print "$$1 " if (m,.*/(.*)\n,)')
|
|
||||||
|
|
||||||
MEDIA_SGMLS = $(addprefix ./,$(V4L_SGMLS)) $(addprefix ./,$(DVB_SGMLS)) $(addprefix ./,$(MEDIA_TEMP))
|
|
||||||
|
|
||||||
FUNCS = \
|
|
||||||
close \
|
|
||||||
ioctl \
|
|
||||||
mmap \
|
|
||||||
munmap \
|
|
||||||
open \
|
|
||||||
poll \
|
|
||||||
read \
|
|
||||||
select \
|
|
||||||
write \
|
|
||||||
|
|
||||||
IOCTLS = \
|
|
||||||
$(shell perl -ne 'print "$$1 " if /\#define\s+([^\s]+)\s+_IO/' $(srctree)/include/uapi/linux/videodev2.h) \
|
|
||||||
$(shell perl -ne 'print "$$1 " if /\#define\s+([^\s]+)\s+_IO/' $(srctree)/include/uapi/linux/dvb/audio.h) \
|
|
||||||
$(shell perl -ne 'print "$$1 " if /\#define\s+([^\s]+)\s+_IO/' $(srctree)/include/uapi/linux/dvb/ca.h) \
|
|
||||||
$(shell perl -ne 'print "$$1 " if /\#define\s+([^\s]+)\s+_IO/' $(srctree)/include/uapi/linux/dvb/dmx.h) \
|
|
||||||
$(shell perl -ne 'print "$$1 " if /\#define\s+([^\s]+)\s+_IO/' $(srctree)/include/uapi/linux/dvb/frontend.h) \
|
|
||||||
$(shell perl -ne 'print "$$1 " if /\#define\s+([A-Z][^\s]+)\s+_IO/' $(srctree)/include/uapi/linux/dvb/net.h) \
|
|
||||||
$(shell perl -ne 'print "$$1 " if /\#define\s+([^\s]+)\s+_IO/' $(srctree)/include/uapi/linux/dvb/video.h) \
|
|
||||||
$(shell perl -ne 'print "$$1 " if /\#define\s+([^\s]+)\s+_IO/' $(srctree)/include/uapi/linux/media.h) \
|
|
||||||
$(shell perl -ne 'print "$$1 " if /\#define\s+([^\s]+)\s+_IO/' $(srctree)/include/linux/cec.h) \
|
|
||||||
$(shell perl -ne 'print "$$1 " if /\#define\s+([^\s]+)\s+_IO/' $(srctree)/include/uapi/linux/v4l2-subdev.h) \
|
|
||||||
|
|
||||||
DEFINES = \
|
|
||||||
$(shell perl -ne 'print "$$1 " if /\#define\s+(DTV_[^\s]+)\s+/' $(srctree)/include/uapi/linux/dvb/frontend.h) \
|
|
||||||
|
|
||||||
TYPES = \
|
|
||||||
$(shell perl -ne 'print "$$1 " if /^typedef\s+.*\s+(\S+)\;/' $(srctree)/include/uapi/linux/videodev2.h) \
|
|
||||||
$(shell perl -ne 'print "$$1 " if /^typedef\s+.*\s+(\S+)\;/' $(srctree)/include/uapi/linux/dvb/frontend.h)
|
|
||||||
|
|
||||||
ENUMS = \
|
|
||||||
$(shell perl -ne 'print "$$1 " if /^enum\s+([^\s]+)\s+/' \
|
|
||||||
$(srctree)/include/uapi/linux/videodev2.h \
|
|
||||||
$(srctree)/include/uapi/linux/dvb/audio.h \
|
|
||||||
$(srctree)/include/uapi/linux/dvb/ca.h \
|
|
||||||
$(srctree)/include/uapi/linux/dvb/dmx.h \
|
|
||||||
$(srctree)/include/uapi/linux/dvb/frontend.h \
|
|
||||||
$(srctree)/include/uapi/linux/dvb/net.h \
|
|
||||||
$(srctree)/include/uapi/linux/dvb/video.h \
|
|
||||||
$(srctree)/include/uapi/linux/media.h \
|
|
||||||
$(srctree)/include/uapi/linux/v4l2-mediabus.h \
|
|
||||||
$(srctree)/include/uapi/linux/v4l2-subdev.h)
|
|
||||||
|
|
||||||
ENUM_DEFS = \
|
|
||||||
$(shell perl -e 'open IN,"cat @ARGV| cpp -fpreprocessed |"; while (<IN>) { if ($$enum) {print "$$1\n" if (/\s*([A-Z]\S+)\b/); } $$enum = 0 if ($$enum && /^\}/); $$enum = 1 if(/^\s*enum\s/); }; close IN;' \
|
|
||||||
$(srctree)/include/uapi/linux/dvb/dmx.h \
|
|
||||||
$(srctree)/include/uapi/linux/dvb/frontend.h)
|
|
||||||
|
|
||||||
STRUCTS = \
|
|
||||||
$(shell perl -ne 'print "$$1 " if /^struct\s+([^\s]+)\s+/' $(srctree)/include/uapi/linux/videodev2.h) \
|
|
||||||
$(shell perl -ne 'print "$$1 " if (/^struct\s+([^\s\{]+)\s*/)' $(srctree)/include/uapi/linux/dvb/audio.h) \
|
|
||||||
$(shell perl -ne 'print "$$1 " if (/^struct\s+([^\s]+)\s+/)' $(srctree)/include/uapi/linux/dvb/ca.h) \
|
|
||||||
$(shell perl -ne 'print "$$1 " if (/^struct\s+([^\s]+)\s+/)' $(srctree)/include/uapi/linux/dvb/dmx.h) \
|
|
||||||
$(shell perl -ne 'print "$$1 " if (!/dtv\_cmds\_h/ && /^struct\s+([^\s]+)\s+/)' $(srctree)/include/uapi/linux/dvb/frontend.h) \
|
|
||||||
$(shell perl -ne 'print "$$1 " if (/^struct\s+([^\s]+)\s+/ && !/_old/)' $(srctree)/include/uapi/linux/dvb/net.h) \
|
|
||||||
$(shell perl -ne 'print "$$1 " if (/^struct\s+([^\s]+)\s+/)' $(srctree)/include/uapi/linux/dvb/video.h) \
|
|
||||||
$(shell perl -ne 'print "$$1 " if /^struct\s+([^\s]+)\s+/' $(srctree)/include/uapi/linux/media.h) \
|
|
||||||
$(shell perl -ne 'print "$$1 " if /^struct\s+([^\s]+)\s+/' $(srctree)/include/linux/cec.h) \
|
|
||||||
$(shell perl -ne 'print "$$1 " if /^struct\s+([^\s]+)\s+/' $(srctree)/include/uapi/linux/v4l2-subdev.h) \
|
|
||||||
$(shell perl -ne 'print "$$1 " if /^struct\s+([^\s]+)\s+/' $(srctree)/include/uapi/linux/v4l2-mediabus.h)
|
|
||||||
|
|
||||||
ERRORS = \
|
|
||||||
E2BIG \
|
|
||||||
EACCES \
|
|
||||||
EAGAIN \
|
|
||||||
EBADF \
|
|
||||||
EBADFD \
|
|
||||||
EBADR \
|
|
||||||
EBADRQC \
|
|
||||||
EBUSY \
|
|
||||||
ECHILD \
|
|
||||||
ECONNRESET \
|
|
||||||
EDEADLK \
|
|
||||||
EDOM \
|
|
||||||
EEXIST \
|
|
||||||
EFAULT \
|
|
||||||
EFBIG \
|
|
||||||
EILSEQ \
|
|
||||||
EINIT \
|
|
||||||
EINPROGRESS \
|
|
||||||
EINTR \
|
|
||||||
EINVAL \
|
|
||||||
EIO \
|
|
||||||
EMFILE \
|
|
||||||
ENFILE \
|
|
||||||
ENOBUFS \
|
|
||||||
ENODATA \
|
|
||||||
ENODEV \
|
|
||||||
ENOENT \
|
|
||||||
ENOIOCTLCMD \
|
|
||||||
ENOMEM \
|
|
||||||
ENOSPC \
|
|
||||||
ENOSR \
|
|
||||||
ENOSYS \
|
|
||||||
ENOTSUP \
|
|
||||||
ENOTSUPP \
|
|
||||||
ENOTTY \
|
|
||||||
ENXIO \
|
|
||||||
EOPNOTSUPP \
|
|
||||||
EOVERFLOW \
|
|
||||||
EPERM \
|
|
||||||
EPIPE \
|
|
||||||
EPROTO \
|
|
||||||
ERANGE \
|
|
||||||
EREMOTE \
|
|
||||||
EREMOTEIO \
|
|
||||||
ERESTART \
|
|
||||||
ERESTARTSYS \
|
|
||||||
ESHUTDOWN \
|
|
||||||
ESPIPE \
|
|
||||||
ETIME \
|
|
||||||
ETIMEDOUT \
|
|
||||||
EUSERS \
|
|
||||||
EWOULDBLOCK \
|
|
||||||
EXDEV \
|
|
||||||
|
|
||||||
ESCAPE = \
|
|
||||||
-e "s/&/\\&/g" \
|
|
||||||
-e "s/</\\</g" \
|
|
||||||
-e "s/>/\\>/g"
|
|
||||||
|
|
||||||
FILENAME = \
|
|
||||||
-e s,"^[^\/]*/",, \
|
|
||||||
-e s/"\\.xml"// \
|
|
||||||
-e s/"\\.tmpl"// \
|
|
||||||
-e s/\\\./-/g \
|
|
||||||
-e s/"^func-"// \
|
|
||||||
-e s/"^pixfmt-"// \
|
|
||||||
-e s/"^vidioc-"//
|
|
||||||
|
|
||||||
# Generate references to these structs in videodev2.h.xml.
|
|
||||||
DOCUMENTED = \
|
|
||||||
-e "s/\(enum *\)v4l2_mpeg_cx2341x_video_\([a-z]*_spatial_filter_type\)/\1<link linkend=\"\2\">v4l2_mpeg_cx2341x_video_\2<\/link>/g" \
|
|
||||||
-e "s/\(\(enum\|struct\) *\)\(v4l2_[a-zA-Z0-9_]*\)/\1<link linkend=\"\3\">\3<\/link>/g" \
|
|
||||||
-e "s/\(V4L2_PIX_FMT_[A-Z0-9_]\+\)\(\s\+v4l2_fourcc\)/<link linkend=\"\1\">\1<\/link>\2/g" \
|
|
||||||
-e ":a;s/\(linkend=\".*\)_\(.*\">\)/\1-\2/;ta" \
|
|
||||||
-e "s/v4l2\-mpeg\-vbi\-ITV0/v4l2-mpeg-vbi-itv0-1/g"
|
|
||||||
|
|
||||||
DVB_DOCUMENTED = \
|
|
||||||
-e "s,\(struct\s\+\)\([a-z0-9_]\+\)\(\s\+{\),\1\<link linkend=\"\2\">\2\<\/link\>\3,g" \
|
|
||||||
-e "s,\(}\s\+\)\([a-z0-9_]\+_t\+\),\1\<link linkend=\"\2\">\2\<\/link\>,g" \
|
|
||||||
-e "s,\(define\s\+\)\(DTV_[A-Z0-9_]\+\)\(\s\+[0-9]\+\),\1\<link linkend=\"\2\">\2\<\/link\>\3,g" \
|
|
||||||
-e "s,<link\s\+linkend=\".*\">\(DTV_IOCTL_MAX_MSGS\|dtv_cmds_h\|__.*_old\)<\/link>,\1,g" \
|
|
||||||
-e ":a;s/\(linkend=\".*\)_\(.*\">\)/\1-\2/;ta" \
|
|
||||||
-e "s,\(audio-mixer\|audio-karaoke\|audio-status\|ca-slot-info\|ca-descr-info\|ca-caps\|ca-msg\|ca-descr\|ca-pid\|dmx-filter\|dmx-caps\|video-system\|video-highlight\|video-spu\|video-spu-palette\|video-navi-pack\)-t,\1,g" \
|
|
||||||
-e "s,DTV-ISDBT-LAYER[A-C],DTV-ISDBT-LAYER,g" \
|
|
||||||
-e "s,\(define\s\+\)\([A-Z0-9_]\+\)\(\s\+_IO\),\1\<link linkend=\"\2\">\2\<\/link\>\3,g" \
|
|
||||||
-e "s,\(define\s\+\)\(DTV_[A-Z0-9_]\+\)\(\s\+\),\1\<link linkend=\"\2\">\2\<\/link\>\3,g" \
|
|
||||||
-e "s,<link\s\+linkend=\".*\">\(__.*_OLD\)<\/link>,\1,g" \
|
|
||||||
-e "s/\(linkend\=\"\)FE_SET_PROPERTY/\1FE_GET_PROPERTY/g" \
|
|
||||||
-e "s,<link\s\+linkend=\".*\">\(DTV_ISDBS_TS_ID_LEGACY\|DTV_MAX_COMMAND\|DTV_IOCTL_MAX_MSGS\)<\/link>,\1,g" \
|
|
||||||
|
|
||||||
#
|
|
||||||
# Media targets and dependencies
|
|
||||||
#
|
|
||||||
|
|
||||||
install_media_images = \
|
|
||||||
$(Q)if [ "x$(findstring media_api.xml,$(DOCBOOKS))" != "x" ]; then \
|
|
||||||
mkdir -p $(MEDIA_OBJ_DIR)/media_api; \
|
|
||||||
cp $(OBJIMGFILES) $(MEDIA_SRC_DIR)/*.svg $(MEDIA_SRC_DIR)/v4l/*.svg $(MEDIA_OBJ_DIR)/media_api; \
|
|
||||||
fi
|
|
||||||
|
|
||||||
$(MEDIA_OBJ_DIR)/%: $(MEDIA_SRC_DIR)/%.b64
|
|
||||||
$(Q)base64 -d $< >$@
|
|
||||||
|
|
||||||
$(MEDIA_OBJ_DIR)/v4l2.xml: $(OBJIMGFILES)
|
|
||||||
@$($(quiet)gen_xml)
|
|
||||||
@(ln -sf `cd $(MEDIA_SRC_DIR) && /bin/pwd`/v4l/*xml $(MEDIA_OBJ_DIR)/)
|
|
||||||
@(ln -sf `cd $(MEDIA_SRC_DIR) && /bin/pwd`/dvb/*xml $(MEDIA_OBJ_DIR)/)
|
|
||||||
|
|
||||||
$(MEDIA_OBJ_DIR)/videodev2.h.xml: $(srctree)/include/uapi/linux/videodev2.h $(MEDIA_OBJ_DIR)/v4l2.xml
|
|
||||||
@$($(quiet)gen_xml)
|
|
||||||
@( \
|
|
||||||
echo "<programlisting>") > $@
|
|
||||||
@( \
|
|
||||||
expand --tabs=8 < $< | \
|
|
||||||
sed $(ESCAPE) $(DOCUMENTED) | \
|
|
||||||
sed 's/i\.e\./&ie;/') >> $@
|
|
||||||
@( \
|
|
||||||
echo "</programlisting>") >> $@
|
|
||||||
|
|
||||||
$(MEDIA_OBJ_DIR)/audio.h.xml: $(srctree)/include/uapi/linux/dvb/audio.h $(MEDIA_OBJ_DIR)/v4l2.xml
|
|
||||||
@$($(quiet)gen_xml)
|
|
||||||
@( \
|
|
||||||
echo "<programlisting>") > $@
|
|
||||||
@( \
|
|
||||||
expand --tabs=8 < $< | \
|
|
||||||
sed $(ESCAPE) $(DVB_DOCUMENTED) | \
|
|
||||||
sed 's/i\.e\./&ie;/') >> $@
|
|
||||||
@( \
|
|
||||||
echo "</programlisting>") >> $@
|
|
||||||
|
|
||||||
$(MEDIA_OBJ_DIR)/ca.h.xml: $(srctree)/include/uapi/linux/dvb/ca.h $(MEDIA_OBJ_DIR)/v4l2.xml
|
|
||||||
@$($(quiet)gen_xml)
|
|
||||||
@( \
|
|
||||||
echo "<programlisting>") > $@
|
|
||||||
@( \
|
|
||||||
expand --tabs=8 < $< | \
|
|
||||||
sed $(ESCAPE) $(DVB_DOCUMENTED) | \
|
|
||||||
sed 's/i\.e\./&ie;/') >> $@
|
|
||||||
@( \
|
|
||||||
echo "</programlisting>") >> $@
|
|
||||||
|
|
||||||
$(MEDIA_OBJ_DIR)/dmx.h.xml: $(srctree)/include/uapi/linux/dvb/dmx.h $(MEDIA_OBJ_DIR)/v4l2.xml
|
|
||||||
@$($(quiet)gen_xml)
|
|
||||||
@( \
|
|
||||||
echo "<programlisting>") > $@
|
|
||||||
@( \
|
|
||||||
for ident in $(ENUM_DEFS) ; do \
|
|
||||||
entity=`echo $$ident | tr _ -` ; \
|
|
||||||
r="$$r s/([^\w\-])$$ident([^\w\-])/\1\&$$entity\;\2/g;";\
|
|
||||||
done; \
|
|
||||||
expand --tabs=8 < $< | \
|
|
||||||
sed $(ESCAPE) $(DVB_DOCUMENTED) | \
|
|
||||||
sed 's/i\.e\./&ie;/' | \
|
|
||||||
perl -ne "$$r print $$_;") >> $@
|
|
||||||
@( \
|
|
||||||
echo "</programlisting>") >> $@
|
|
||||||
|
|
||||||
$(MEDIA_OBJ_DIR)/frontend.h.xml: $(srctree)/include/uapi/linux/dvb/frontend.h $(MEDIA_OBJ_DIR)/v4l2.xml
|
|
||||||
@$($(quiet)gen_xml)
|
|
||||||
@( \
|
|
||||||
echo "<programlisting>") > $@
|
|
||||||
@( \
|
|
||||||
for ident in $(ENUM_DEFS) ; do \
|
|
||||||
entity=`echo $$ident | tr _ -` ; \
|
|
||||||
r="$$r s/([^\w\-])$$ident([^\w\-])/\1\&$$entity\;\2/g;";\
|
|
||||||
done; \
|
|
||||||
expand --tabs=8 < $< | \
|
|
||||||
sed $(ESCAPE) $(DVB_DOCUMENTED) | \
|
|
||||||
sed 's/i\.e\./&ie;/' | \
|
|
||||||
perl -ne "$$r print $$_;") >> $@
|
|
||||||
@( \
|
|
||||||
echo "</programlisting>") >> $@
|
|
||||||
|
|
||||||
$(MEDIA_OBJ_DIR)/net.h.xml: $(srctree)/include/uapi/linux/dvb/net.h $(MEDIA_OBJ_DIR)/v4l2.xml
|
|
||||||
@$($(quiet)gen_xml)
|
|
||||||
@( \
|
|
||||||
echo "<programlisting>") > $@
|
|
||||||
@( \
|
|
||||||
expand --tabs=8 < $< | \
|
|
||||||
sed $(ESCAPE) $(DVB_DOCUMENTED) | \
|
|
||||||
sed 's/i\.e\./&ie;/') >> $@
|
|
||||||
@( \
|
|
||||||
echo "</programlisting>") >> $@
|
|
||||||
|
|
||||||
$(MEDIA_OBJ_DIR)/video.h.xml: $(srctree)/include/uapi/linux/dvb/video.h $(MEDIA_OBJ_DIR)/v4l2.xml
|
|
||||||
@$($(quiet)gen_xml)
|
|
||||||
@( \
|
|
||||||
echo "<programlisting>") > $@
|
|
||||||
@( \
|
|
||||||
expand --tabs=8 < $< | \
|
|
||||||
sed $(ESCAPE) $(DVB_DOCUMENTED) | \
|
|
||||||
sed 's/i\.e\./&ie;/') >> $@
|
|
||||||
@( \
|
|
||||||
echo "</programlisting>") >> $@
|
|
||||||
|
|
||||||
$(MEDIA_OBJ_DIR)/media-entities.tmpl: $(MEDIA_OBJ_DIR)/v4l2.xml
|
|
||||||
@$($(quiet)gen_xml)
|
|
||||||
@( \
|
|
||||||
echo "<!-- Generated file! Do not edit. -->") >$@
|
|
||||||
@( \
|
|
||||||
echo -e "\n<!-- Functions -->") >>$@
|
|
||||||
@( \
|
|
||||||
for ident in $(FUNCS) ; do \
|
|
||||||
entity=`echo $$ident | tr _ -` ; \
|
|
||||||
echo "<!ENTITY func-$$entity \"<link" \
|
|
||||||
"linkend='func-$$entity'><function>$$ident()</function></link>\">" \
|
|
||||||
>>$@ ; \
|
|
||||||
done)
|
|
||||||
@( \
|
|
||||||
echo -e "\n<!-- Ioctls -->") >>$@
|
|
||||||
@( \
|
|
||||||
for ident in `echo $(IOCTLS) | sed -e "s,VIDIOC_RESERVED,,"`; do\
|
|
||||||
entity=`echo $$ident | tr _ -` ; \
|
|
||||||
id=`grep -e "<refname>$$ident" -e "<section id=\"$$ident\"" $$(find $(MEDIA_SRC_DIR) -name *.xml -type f)| sed -r s,"^.*/(.*).xml.*","\1",` ; \
|
|
||||||
if [ "$$id" != "" ]; then echo "<!ENTITY $$entity \"<link" \
|
|
||||||
"linkend='$$id'><constant>$$ident</constant></link>\">" \
|
|
||||||
>>$@ ; else \
|
|
||||||
echo "Warning: undocumented ioctl: $$ident. Please document it at the media DocBook!" >&2; \
|
|
||||||
fi; \
|
|
||||||
done)
|
|
||||||
@( \
|
|
||||||
echo -e "\n<!-- Defines -->") >>$@
|
|
||||||
@( \
|
|
||||||
for ident in $(DEFINES) ; do \
|
|
||||||
entity=`echo $$ident | tr _ -` ; \
|
|
||||||
echo "<!ENTITY $$entity \"<link" \
|
|
||||||
"linkend='$$entity'><constant>$$ident</constant></link>\">" \
|
|
||||||
>>$@ ; \
|
|
||||||
done)
|
|
||||||
@( \
|
|
||||||
echo -e "\n<!-- Types -->") >>$@
|
|
||||||
@( \
|
|
||||||
for ident in $(TYPES) ; do \
|
|
||||||
entity=`echo $$ident | tr _ -` ; \
|
|
||||||
echo "<!ENTITY $$entity \"<link" \
|
|
||||||
"linkend='$$entity'>$$ident</link>\">" >>$@ ; \
|
|
||||||
done)
|
|
||||||
@( \
|
|
||||||
echo -e "\n<!-- Enums -->") >>$@
|
|
||||||
@( \
|
|
||||||
for ident in $(ENUMS) ; do \
|
|
||||||
entity=`echo $$ident | sed -e "s/v4l2_mpeg_cx2341x_video_\([a-z]*_spatial_filter_type\)/\1/" | tr _ -` ; \
|
|
||||||
echo "<!ENTITY $$entity \"enum <link" \
|
|
||||||
"linkend='$$entity'>$$ident</link>\">" >>$@ ; \
|
|
||||||
done)
|
|
||||||
@( \
|
|
||||||
echo -e "\n<!-- Enum definitions -->") >>$@
|
|
||||||
@( \
|
|
||||||
for ident in $(ENUM_DEFS) ; do \
|
|
||||||
entity=`echo $$ident | tr _ -` ; \
|
|
||||||
echo "<!ENTITY $$entity \"<link" \
|
|
||||||
"linkend='$$entity'><constant>$$ident</constant></link>\">" \
|
|
||||||
>>$@ ; \
|
|
||||||
done)
|
|
||||||
@( \
|
|
||||||
echo -e "\n<!-- Structures -->") >>$@
|
|
||||||
@( \
|
|
||||||
for ident in $(STRUCTS) ; do \
|
|
||||||
entity=`echo $$ident | tr _ - | sed s/v4l2-mpeg-vbi-ITV0/v4l2-mpeg-vbi-itv0-1/g` ; \
|
|
||||||
echo "<!ENTITY $$entity \"struct <link" \
|
|
||||||
"linkend='$$entity'>$$ident</link>\">" >>$@ ; \
|
|
||||||
done)
|
|
||||||
@( \
|
|
||||||
echo -e "\n<!-- Error Codes -->") >>$@
|
|
||||||
@( \
|
|
||||||
for ident in $(ERRORS) ; do \
|
|
||||||
echo "<!ENTITY $$ident \"<errorcode>$$ident</errorcode>" \
|
|
||||||
"error code\">" >>$@ ; \
|
|
||||||
done)
|
|
||||||
@( \
|
|
||||||
echo -e "\n<!-- Subsections -->") >>$@
|
|
||||||
@( \
|
|
||||||
for file in $(MEDIA_SGMLS) ; do \
|
|
||||||
entity=`echo "$$file" | sed $(FILENAME) -e s/"^([^-]*)"/sub\1/` ; \
|
|
||||||
if ! echo "$$file" | \
|
|
||||||
grep -q -E -e '^(func|vidioc|pixfmt)-' ; then \
|
|
||||||
echo "<!ENTITY sub-$$entity SYSTEM \"$$file\">" >>$@ ; \
|
|
||||||
fi ; \
|
|
||||||
done)
|
|
||||||
@( \
|
|
||||||
echo -e "\n<!-- Function Reference -->") >>$@
|
|
||||||
@( \
|
|
||||||
for file in $(MEDIA_SGMLS) ; do \
|
|
||||||
if echo "$$file" | \
|
|
||||||
grep -q -E -e '(func|vidioc|pixfmt)-' ; then \
|
|
||||||
entity=`echo "$$file" |sed $(FILENAME)` ; \
|
|
||||||
echo "<!ENTITY $$entity SYSTEM \"$$file\">" >>$@ ; \
|
|
||||||
fi ; \
|
|
||||||
done)
|
|
||||||
|
|
||||||
# Jade can auto-generate a list-of-tables, which includes all structs,
|
|
||||||
# but we only want data types, all types, and sorted please.
|
|
||||||
$(MEDIA_OBJ_DIR)/media-indices.tmpl: $(MEDIA_OBJ_DIR)/v4l2.xml
|
|
||||||
@$($(quiet)gen_xml)
|
|
||||||
@( \
|
|
||||||
echo "<!-- Generated file! Do not edit. -->") >$@
|
|
||||||
@( \
|
|
||||||
echo -e "\n<index><title>List of Types</title>") >>$@
|
|
||||||
@( \
|
|
||||||
for ident in $(TYPES) ; do \
|
|
||||||
id=`echo $$ident | tr _ -` ; \
|
|
||||||
echo "<indexentry><primaryie><link" \
|
|
||||||
"linkend='$$id'>$$ident</link></primaryie></indexentry>" >>$@ ; \
|
|
||||||
done)
|
|
||||||
@( \
|
|
||||||
for ident in $(ENUMS) ; do \
|
|
||||||
id=`echo $$ident | sed -e "s/v4l2_mpeg_cx2341x_video_\([a-z]*_spatial_filter_type\)/\1/" | tr _ -`; \
|
|
||||||
echo "<indexentry><primaryie>enum <link" \
|
|
||||||
"linkend='$$id'>$$ident</link></primaryie></indexentry>" >>$@ ; \
|
|
||||||
done)
|
|
||||||
@( \
|
|
||||||
for ident in $(STRUCTS) ; do \
|
|
||||||
id=`echo $$ident | tr _ - | sed s/v4l2-mpeg-vbi-ITV0/v4l2-mpeg-vbi-itv0-1/g` ; \
|
|
||||||
echo "<indexentry><primaryie>struct <link" \
|
|
||||||
"linkend='$$id'>$$ident</link></primaryie></indexentry>" >>$@ ; \
|
|
||||||
done)
|
|
||||||
@( \
|
|
||||||
echo "</index>") >>$@
|
|
||||||
|
|
||||||
@@ -1,171 +0,0 @@
|
|||||||
iVBORw0KGgoAAAANSUhEUgAAAlgAAACqCAMAAABGfcHVAAAAAXNSR0IArs4c6QAAAwBQTFRFAAIA
|
|
||||||
CAICAAQVEQEBAgsAJgECAAogAwsTAQopHQYBNAEAAAxNARQAERIQAhoDABwAABZEHRQKGRYKQw0F
|
|
||||||
ACMBACUAERwpHR4cVRAFBR5rZhADACR2JiIhBDAGAiWGgQ4AcxQABDYACSeQMSYlJykmESxYlQ4A
|
|
||||||
PSYZIS05OSsJHS5JOC8kAEMDUC8SADXLNDUzADbEAEsAADX/2RABCFIAAD/qxB0AAD//BFgAK0Vp
|
|
||||||
WT4r3hwA3RsTRERAAEf/5CIA2iYCCUv+WUgz7iIAOk5g3CgVSU5SiD8uB2sABm8AE1X/U1RQOFyL
|
|
||||||
4jkfIlz/RV98M1j+G2H/fVk23jtD4T0pXl9ieFtGcV894UIiYWJfAIwA50gOV2p+4kssO2j+dGZx
|
|
||||||
bG1qVmj/OHH/aHJzfnBX5lQ7B50AZnahdXd0AKUG5V1ARnz/6mErCqgAAKsAent46GBIW4GhAK0A
|
|
||||||
AK8B42FtALIOin9/ALUAiIOBALkAVIf/6WxWg4eBi4SKJrEAmoVtdY2geoP/rYVXhoyOqYVuJbUh
|
|
||||||
IrgWX5D/jo6J7nszP7gAsI9S63xnN70zZqO/fZzCOb4+cZr+64dy8otYnJ6b7ImDRcM56IqcWMEo
|
|
||||||
oJb/N8ZoTMRL7Y9/QchcsaOTo6eohaj/7ZqKXspXj6v9xal+oK+7d7vTUM+Afco5r7CumLTVStKV
|
|
||||||
bs9ukbb/9qx/9q9l8queoLv/e9R66beG7rDImNRhi9aDwsPAs8bWzcK2cd67jtqP5MWUodyB8b+1
|
|
||||||
tMr/z8L/j9+kbOXWnN2ZstD7yc7Rzs7Ly9xb183UwdD/+si/qeOmvuKIx9fj4tPCtuWiqOrL+tS2
|
|
||||||
y9v++NPK2dvZt+m0ueq80+Wo3OeSwuy/yezG+d7f/eS/z/DS3uf/6Ono4PC71O39xPb02vPZ/+nR
|
|
||||||
+Ori6e399+vt+PGz+ur65fL55/Xb4vbh7ffX/PPY8vP9+vLy6Pf36fjr/PfM8vjr//f+/vn48P36
|
|
||||||
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
|
|
||||||
@@ -1,59 +0,0 @@
|
|||||||
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
|
|
||||||
RU5ErkJggg==
|
|
||||||
@@ -1,105 +0,0 @@
|
|||||||
R0lGODlhuQJGAeMAAAAAAH9/fwCvAP8AANEA0dEAAK8Ar////wCOAAAA0QAA////////////////
|
|
||||||
/////ywAAAAAuQJGAQAE/vDISau9OOvNu/9gKI5kaZ5oqq5s675wLM90bd94ru987//AoHBILBqP
|
|
||||||
yKRyyWw6n9CodEqtWq/YrHbL7Xq/4LB4TC6bz+i0es1uu9/wuHxOr9vv+Lx+z+/7/4CBgoOEhYaH
|
|
||||||
iImKi4yNjo+QkZKTlJWWl5iZmpucnZ6foKGio6SlpqeoqaqrrK2ur7CxsrO0tba3uLm6gQC9vr/A
|
|
||||||
wcLDxMXGx8jJysvMzc7P0NHS09TV1tfYxbth2d3e3+DRAePk5ebn6Onl4ezt7u3q8fLqANtg7/j5
|
|
||||||
+s/z/f4B+wIKHAjsn8F09ex5IciwobuDEM1Bi0ixosWLGDNqrJhQIZdk/htDihxJsiTJiSZTqlzJ
|
|
||||||
MmNHj1q+tRznsKbNmzhzDoz3EiYWmTN7+vQJgOfQmN5mAjzKtCg9pj+TBoU61ClCqlaAthSKVZdV
|
|
||||||
dFy7NtHKMqxYW1/PmT2bhOzKtWxlpZUYF4pblXDrvpq7Tq+Tu+UGCB5MuLDhw4gTK17MuLHjx5Aj
|
|
||||||
S55MubLly5gza95MmVxev0EAkxsg8jNoVXNJ0zy9RPQ41RtNsz6V2vPstlLTwdYo+zap2qt9G3Ed
|
|
||||||
YLdL4bGAL0VOhLhxjL2Zf1IeXboM56Wtt6KuPXRudM8vVu+eiTt5H9hDjj9vyfyIXrTW80gfO4OC
|
|
||||||
+/jz69/Pv7///wAG/ijggAQWaOCBCCao4IIMNujggRe4J4IwBxBg4YUYZqjhhhx26OGHIIYo4ogk
|
|
||||||
loihMBbi1k084VlklgLsWQKjBRJqgIwEBJRyY4UqZsNidhjMGOMkQlLgnjERwkdBjuVpk2QFTB5B
|
|
||||||
H2/2DUlJkRNYhWQKUTKyJQpdFjHlcUFaSaQxo9nGQph/fCkDm0OMCV2VZh7iZpbnwCYfBnDKcecO
|
|
||||||
fXq3ojotckRnnXr8SQGWEtQIphuKEhEoEHKKdygHCUiQ6QEJdDrEphWA2oGo3UXaAaMHOHrCpFmY
|
|
||||||
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
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
!*.xml
|
|
||||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -1,156 +0,0 @@
|
|||||||
<partinfo>
|
|
||||||
<authorgroup>
|
|
||||||
<author>
|
|
||||||
<firstname>Ralph</firstname>
|
|
||||||
<surname>Metzler</surname>
|
|
||||||
<othername role="mi">J. K.</othername>
|
|
||||||
<affiliation><address><email>rjkm@metzlerbros.de</email></address></affiliation>
|
|
||||||
</author>
|
|
||||||
<author>
|
|
||||||
<firstname>Marcus</firstname>
|
|
||||||
<surname>Metzler</surname>
|
|
||||||
<othername role="mi">O. C.</othername>
|
|
||||||
<affiliation><address><email>rjkm@metzlerbros.de</email></address></affiliation>
|
|
||||||
</author>
|
|
||||||
</authorgroup>
|
|
||||||
<authorgroup>
|
|
||||||
<author>
|
|
||||||
<firstname>Mauro</firstname>
|
|
||||||
<othername role="mi">Carvalho</othername>
|
|
||||||
<surname>Chehab</surname>
|
|
||||||
<affiliation><address><email>m.chehab@samsung.com</email></address></affiliation>
|
|
||||||
<contrib>Ported document to Docbook XML.</contrib>
|
|
||||||
</author>
|
|
||||||
</authorgroup>
|
|
||||||
<copyright>
|
|
||||||
<year>2002</year>
|
|
||||||
<year>2003</year>
|
|
||||||
<holder>Convergence GmbH</holder>
|
|
||||||
</copyright>
|
|
||||||
<copyright>
|
|
||||||
<year>2009-2015</year>
|
|
||||||
<holder>Mauro Carvalho Chehab</holder>
|
|
||||||
</copyright>
|
|
||||||
|
|
||||||
<revhistory>
|
|
||||||
<!-- Put document revisions here, newest first. -->
|
|
||||||
<revision>
|
|
||||||
<revnumber>2.1.0</revnumber>
|
|
||||||
<date>2015-05-29</date>
|
|
||||||
<authorinitials>mcc</authorinitials>
|
|
||||||
<revremark>
|
|
||||||
DocBook improvements and cleanups, in order to document the
|
|
||||||
system calls on a more standard way and provide more description
|
|
||||||
about the current DVB API.
|
|
||||||
</revremark>
|
|
||||||
</revision>
|
|
||||||
<revision>
|
|
||||||
<revnumber>2.0.4</revnumber>
|
|
||||||
<date>2011-05-06</date>
|
|
||||||
<authorinitials>mcc</authorinitials>
|
|
||||||
<revremark>
|
|
||||||
Add more information about DVB APIv5, better describing the frontend GET/SET props ioctl's.
|
|
||||||
</revremark>
|
|
||||||
</revision>
|
|
||||||
<revision>
|
|
||||||
<revnumber>2.0.3</revnumber>
|
|
||||||
<date>2010-07-03</date>
|
|
||||||
<authorinitials>mcc</authorinitials>
|
|
||||||
<revremark>
|
|
||||||
Add some frontend capabilities flags, present on kernel, but missing at the specs.
|
|
||||||
</revremark>
|
|
||||||
</revision>
|
|
||||||
<revision>
|
|
||||||
<revnumber>2.0.2</revnumber>
|
|
||||||
<date>2009-10-25</date>
|
|
||||||
<authorinitials>mcc</authorinitials>
|
|
||||||
<revremark>
|
|
||||||
documents FE_SET_FRONTEND_TUNE_MODE and FE_DISHETWORK_SEND_LEGACY_CMD ioctls.
|
|
||||||
</revremark>
|
|
||||||
</revision>
|
|
||||||
<revision>
|
|
||||||
<revnumber>2.0.1</revnumber>
|
|
||||||
<date>2009-09-16</date>
|
|
||||||
<authorinitials>mcc</authorinitials>
|
|
||||||
<revremark>
|
|
||||||
Added ISDB-T test originally written by Patrick Boettcher
|
|
||||||
</revremark>
|
|
||||||
</revision>
|
|
||||||
<revision>
|
|
||||||
<revnumber>2.0.0</revnumber>
|
|
||||||
<date>2009-09-06</date>
|
|
||||||
<authorinitials>mcc</authorinitials>
|
|
||||||
<revremark>Conversion from LaTex to DocBook XML. The
|
|
||||||
contents is the same as the original LaTex version.</revremark>
|
|
||||||
</revision>
|
|
||||||
<revision>
|
|
||||||
<revnumber>1.0.0</revnumber>
|
|
||||||
<date>2003-07-24</date>
|
|
||||||
<authorinitials>rjkm</authorinitials>
|
|
||||||
<revremark>Initial revision on LaTEX.</revremark>
|
|
||||||
</revision>
|
|
||||||
</revhistory>
|
|
||||||
</partinfo>
|
|
||||||
|
|
||||||
|
|
||||||
<title>LINUX DVB API</title>
|
|
||||||
<subtitle>Version 5.10</subtitle>
|
|
||||||
<!-- ADD THE CHAPTERS HERE -->
|
|
||||||
<chapter id="dvb_introdution">
|
|
||||||
&sub-intro;
|
|
||||||
</chapter>
|
|
||||||
<chapter id="dvb_frontend">
|
|
||||||
&sub-frontend;
|
|
||||||
</chapter>
|
|
||||||
<chapter id="dvb_demux">
|
|
||||||
&sub-demux;
|
|
||||||
</chapter>
|
|
||||||
<chapter id="dvb_ca">
|
|
||||||
&sub-ca;
|
|
||||||
</chapter>
|
|
||||||
<chapter id="net">
|
|
||||||
&sub-net;
|
|
||||||
</chapter>
|
|
||||||
<chapter id="legacy_dvb_apis">
|
|
||||||
<title>DVB Deprecated APIs</title>
|
|
||||||
<para>The APIs described here are kept only for historical reasons. There's
|
|
||||||
just one driver for a very legacy hardware that uses this API. No
|
|
||||||
modern drivers should use it. Instead, audio and video should be using
|
|
||||||
the V4L2 and ALSA APIs, and the pipelines should be set using the
|
|
||||||
Media Controller API</para>
|
|
||||||
<section id="dvb_video">
|
|
||||||
&sub-video;
|
|
||||||
</section>
|
|
||||||
<section id="dvb_audio">
|
|
||||||
&sub-audio;
|
|
||||||
</section>
|
|
||||||
</chapter>
|
|
||||||
<chapter id="dvb_examples">
|
|
||||||
&sub-examples;
|
|
||||||
</chapter>
|
|
||||||
<!-- END OF CHAPTERS -->
|
|
||||||
<appendix id="audio_h">
|
|
||||||
<title>DVB Audio Header File</title>
|
|
||||||
&sub-audio-h;
|
|
||||||
</appendix>
|
|
||||||
<appendix id="ca_h">
|
|
||||||
<title>DVB Conditional Access Header File</title>
|
|
||||||
&sub-ca-h;
|
|
||||||
</appendix>
|
|
||||||
<appendix id="dmx_h">
|
|
||||||
<title>DVB Demux Header File</title>
|
|
||||||
&sub-dmx-h;
|
|
||||||
</appendix>
|
|
||||||
<appendix id="frontend_h">
|
|
||||||
<title>DVB Frontend Header File</title>
|
|
||||||
&sub-frontend-h;
|
|
||||||
</appendix>
|
|
||||||
<appendix id="net_h">
|
|
||||||
<title>DVB Network Header File</title>
|
|
||||||
&sub-net-h;
|
|
||||||
</appendix>
|
|
||||||
<appendix id="video_h">
|
|
||||||
<title>DVB Video Header File</title>
|
|
||||||
&sub-video-h;
|
|
||||||
</appendix>
|
|
||||||
|
|
||||||
File diff suppressed because it is too large
Load Diff
Binary file not shown.
@@ -1,367 +0,0 @@
|
|||||||
<title>Examples</title>
|
|
||||||
<para>In this section we would like to present some examples for using the DVB API.
|
|
||||||
</para>
|
|
||||||
<para>NOTE: This section is out of date, and the code below won't even
|
|
||||||
compile. Please refer to the
|
|
||||||
<ulink url="https://linuxtv.org/docs/libdvbv5/index.html">libdvbv5</ulink>
|
|
||||||
for updated/recommended examples.
|
|
||||||
</para>
|
|
||||||
|
|
||||||
<section id="tuning">
|
|
||||||
<title>Tuning</title>
|
|
||||||
<para>We will start with a generic tuning subroutine that uses the frontend and SEC, as well as
|
|
||||||
the demux devices. The example is given for QPSK tuners, but can easily be adjusted for
|
|
||||||
QAM.
|
|
||||||
</para>
|
|
||||||
<programlisting>
|
|
||||||
#include <sys/ioctl.h>
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <stdint.h>
|
|
||||||
#include <sys/types.h>
|
|
||||||
#include <sys/stat.h>
|
|
||||||
#include <fcntl.h>
|
|
||||||
#include <time.h>
|
|
||||||
#include <unistd.h>
|
|
||||||
|
|
||||||
#include <linux/dvb/dmx.h>
|
|
||||||
#include <linux/dvb/frontend.h>
|
|
||||||
#include <linux/dvb/sec.h>
|
|
||||||
#include <sys/poll.h>
|
|
||||||
|
|
||||||
#define DMX "/dev/dvb/adapter0/demux1"
|
|
||||||
#define FRONT "/dev/dvb/adapter0/frontend1"
|
|
||||||
#define SEC "/dev/dvb/adapter0/sec1"
|
|
||||||
|
|
||||||
/⋆ routine for checking if we have a signal and other status information⋆/
|
|
||||||
int FEReadStatus(int fd, fe_status_t ⋆stat)
|
|
||||||
{
|
|
||||||
int ans;
|
|
||||||
|
|
||||||
if ( (ans = ioctl(fd,FE_READ_STATUS,stat) < 0)){
|
|
||||||
perror("FE READ STATUS: ");
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (⋆stat & FE_HAS_POWER)
|
|
||||||
printf("FE HAS POWER\n");
|
|
||||||
|
|
||||||
if (⋆stat & FE_HAS_SIGNAL)
|
|
||||||
printf("FE HAS SIGNAL\n");
|
|
||||||
|
|
||||||
if (⋆stat & FE_SPECTRUM_INV)
|
|
||||||
printf("SPEKTRUM INV\n");
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/⋆ tune qpsk ⋆/
|
|
||||||
/⋆ freq: frequency of transponder ⋆/
|
|
||||||
/⋆ vpid, apid, tpid: PIDs of video, audio and teletext TS packets ⋆/
|
|
||||||
/⋆ diseqc: DiSEqC address of the used LNB ⋆/
|
|
||||||
/⋆ pol: Polarisation ⋆/
|
|
||||||
/⋆ srate: Symbol Rate ⋆/
|
|
||||||
/⋆ fec. FEC ⋆/
|
|
||||||
/⋆ lnb_lof1: local frequency of lower LNB band ⋆/
|
|
||||||
/⋆ lnb_lof2: local frequency of upper LNB band ⋆/
|
|
||||||
/⋆ lnb_slof: switch frequency of LNB ⋆/
|
|
||||||
|
|
||||||
int set_qpsk_channel(int freq, int vpid, int apid, int tpid,
|
|
||||||
int diseqc, int pol, int srate, int fec, int lnb_lof1,
|
|
||||||
int lnb_lof2, int lnb_slof)
|
|
||||||
{
|
|
||||||
struct secCommand scmd;
|
|
||||||
struct secCmdSequence scmds;
|
|
||||||
struct dmx_pes_filter_params pesFilterParams;
|
|
||||||
FrontendParameters frp;
|
|
||||||
struct pollfd pfd[1];
|
|
||||||
FrontendEvent event;
|
|
||||||
int demux1, demux2, demux3, front;
|
|
||||||
|
|
||||||
frequency = (uint32_t) freq;
|
|
||||||
symbolrate = (uint32_t) srate;
|
|
||||||
|
|
||||||
if((front = open(FRONT,O_RDWR)) < 0){
|
|
||||||
perror("FRONTEND DEVICE: ");
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
if((sec = open(SEC,O_RDWR)) < 0){
|
|
||||||
perror("SEC DEVICE: ");
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (demux1 < 0){
|
|
||||||
if ((demux1=open(DMX, O_RDWR|O_NONBLOCK))
|
|
||||||
< 0){
|
|
||||||
perror("DEMUX DEVICE: ");
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (demux2 < 0){
|
|
||||||
if ((demux2=open(DMX, O_RDWR|O_NONBLOCK))
|
|
||||||
< 0){
|
|
||||||
perror("DEMUX DEVICE: ");
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (demux3 < 0){
|
|
||||||
if ((demux3=open(DMX, O_RDWR|O_NONBLOCK))
|
|
||||||
< 0){
|
|
||||||
perror("DEMUX DEVICE: ");
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (freq < lnb_slof) {
|
|
||||||
frp.Frequency = (freq - lnb_lof1);
|
|
||||||
scmds.continuousTone = SEC_TONE_OFF;
|
|
||||||
} else {
|
|
||||||
frp.Frequency = (freq - lnb_lof2);
|
|
||||||
scmds.continuousTone = SEC_TONE_ON;
|
|
||||||
}
|
|
||||||
frp.Inversion = INVERSION_AUTO;
|
|
||||||
if (pol) scmds.voltage = SEC_VOLTAGE_18;
|
|
||||||
else scmds.voltage = SEC_VOLTAGE_13;
|
|
||||||
|
|
||||||
scmd.type=0;
|
|
||||||
scmd.u.diseqc.addr=0x10;
|
|
||||||
scmd.u.diseqc.cmd=0x38;
|
|
||||||
scmd.u.diseqc.numParams=1;
|
|
||||||
scmd.u.diseqc.params[0] = 0xF0 | ((diseqc ⋆ 4) & 0x0F) |
|
|
||||||
(scmds.continuousTone == SEC_TONE_ON ? 1 : 0) |
|
|
||||||
(scmds.voltage==SEC_VOLTAGE_18 ? 2 : 0);
|
|
||||||
|
|
||||||
scmds.miniCommand=SEC_MINI_NONE;
|
|
||||||
scmds.numCommands=1;
|
|
||||||
scmds.commands=&scmd;
|
|
||||||
if (ioctl(sec, SEC_SEND_SEQUENCE, &scmds) < 0){
|
|
||||||
perror("SEC SEND: ");
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (ioctl(sec, SEC_SEND_SEQUENCE, &scmds) < 0){
|
|
||||||
perror("SEC SEND: ");
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
frp.u.qpsk.SymbolRate = srate;
|
|
||||||
frp.u.qpsk.FEC_inner = fec;
|
|
||||||
|
|
||||||
if (ioctl(front, FE_SET_FRONTEND, &frp) < 0){
|
|
||||||
perror("QPSK TUNE: ");
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
pfd[0].fd = front;
|
|
||||||
pfd[0].events = POLLIN;
|
|
||||||
|
|
||||||
if (poll(pfd,1,3000)){
|
|
||||||
if (pfd[0].revents & POLLIN){
|
|
||||||
printf("Getting QPSK event\n");
|
|
||||||
if ( ioctl(front, FE_GET_EVENT, &event)
|
|
||||||
|
|
||||||
== -EOVERFLOW){
|
|
||||||
perror("qpsk get event");
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
printf("Received ");
|
|
||||||
switch(event.type){
|
|
||||||
case FE_UNEXPECTED_EV:
|
|
||||||
printf("unexpected event\n");
|
|
||||||
return -1;
|
|
||||||
case FE_FAILURE_EV:
|
|
||||||
printf("failure event\n");
|
|
||||||
return -1;
|
|
||||||
|
|
||||||
case FE_COMPLETION_EV:
|
|
||||||
printf("completion event\n");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
pesFilterParams.pid = vpid;
|
|
||||||
pesFilterParams.input = DMX_IN_FRONTEND;
|
|
||||||
pesFilterParams.output = DMX_OUT_DECODER;
|
|
||||||
pesFilterParams.pes_type = DMX_PES_VIDEO;
|
|
||||||
pesFilterParams.flags = DMX_IMMEDIATE_START;
|
|
||||||
if (ioctl(demux1, DMX_SET_PES_FILTER, &pesFilterParams) < 0){
|
|
||||||
perror("set_vpid");
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
pesFilterParams.pid = apid;
|
|
||||||
pesFilterParams.input = DMX_IN_FRONTEND;
|
|
||||||
pesFilterParams.output = DMX_OUT_DECODER;
|
|
||||||
pesFilterParams.pes_type = DMX_PES_AUDIO;
|
|
||||||
pesFilterParams.flags = DMX_IMMEDIATE_START;
|
|
||||||
if (ioctl(demux2, DMX_SET_PES_FILTER, &pesFilterParams) < 0){
|
|
||||||
perror("set_apid");
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
pesFilterParams.pid = tpid;
|
|
||||||
pesFilterParams.input = DMX_IN_FRONTEND;
|
|
||||||
pesFilterParams.output = DMX_OUT_DECODER;
|
|
||||||
pesFilterParams.pes_type = DMX_PES_TELETEXT;
|
|
||||||
pesFilterParams.flags = DMX_IMMEDIATE_START;
|
|
||||||
if (ioctl(demux3, DMX_SET_PES_FILTER, &pesFilterParams) < 0){
|
|
||||||
perror("set_tpid");
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
return has_signal(fds);
|
|
||||||
}
|
|
||||||
|
|
||||||
</programlisting>
|
|
||||||
<para>The program assumes that you are using a universal LNB and a standard DiSEqC
|
|
||||||
switch with up to 4 addresses. Of course, you could build in some more checking if
|
|
||||||
tuning was successful and maybe try to repeat the tuning process. Depending on the
|
|
||||||
external hardware, i.e. LNB and DiSEqC switch, and weather conditions this may be
|
|
||||||
necessary.
|
|
||||||
</para>
|
|
||||||
</section>
|
|
||||||
|
|
||||||
<section id="the_dvr_device">
|
|
||||||
<title>The DVR device</title>
|
|
||||||
<para>The following program code shows how to use the DVR device for recording.
|
|
||||||
</para>
|
|
||||||
<programlisting>
|
|
||||||
#include <sys/ioctl.h>
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <stdint.h>
|
|
||||||
#include <sys/types.h>
|
|
||||||
#include <sys/stat.h>
|
|
||||||
#include <fcntl.h>
|
|
||||||
#include <time.h>
|
|
||||||
#include <unistd.h>
|
|
||||||
|
|
||||||
#include <linux/dvb/dmx.h>
|
|
||||||
#include <linux/dvb/video.h>
|
|
||||||
#include <sys/poll.h>
|
|
||||||
#define DVR "/dev/dvb/adapter0/dvr1"
|
|
||||||
#define AUDIO "/dev/dvb/adapter0/audio1"
|
|
||||||
#define VIDEO "/dev/dvb/adapter0/video1"
|
|
||||||
|
|
||||||
#define BUFFY (188⋆20)
|
|
||||||
#define MAX_LENGTH (1024⋆1024⋆5) /⋆ record 5MB ⋆/
|
|
||||||
|
|
||||||
|
|
||||||
/⋆ switch the demuxes to recording, assuming the transponder is tuned ⋆/
|
|
||||||
|
|
||||||
/⋆ demux1, demux2: file descriptor of video and audio filters ⋆/
|
|
||||||
/⋆ vpid, apid: PIDs of video and audio channels ⋆/
|
|
||||||
|
|
||||||
int switch_to_record(int demux1, int demux2, uint16_t vpid, uint16_t apid)
|
|
||||||
{
|
|
||||||
struct dmx_pes_filter_params pesFilterParams;
|
|
||||||
|
|
||||||
if (demux1 < 0){
|
|
||||||
if ((demux1=open(DMX, O_RDWR|O_NONBLOCK))
|
|
||||||
< 0){
|
|
||||||
perror("DEMUX DEVICE: ");
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (demux2 < 0){
|
|
||||||
if ((demux2=open(DMX, O_RDWR|O_NONBLOCK))
|
|
||||||
< 0){
|
|
||||||
perror("DEMUX DEVICE: ");
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
pesFilterParams.pid = vpid;
|
|
||||||
pesFilterParams.input = DMX_IN_FRONTEND;
|
|
||||||
pesFilterParams.output = DMX_OUT_TS_TAP;
|
|
||||||
pesFilterParams.pes_type = DMX_PES_VIDEO;
|
|
||||||
pesFilterParams.flags = DMX_IMMEDIATE_START;
|
|
||||||
if (ioctl(demux1, DMX_SET_PES_FILTER, &pesFilterParams) < 0){
|
|
||||||
perror("DEMUX DEVICE");
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
pesFilterParams.pid = apid;
|
|
||||||
pesFilterParams.input = DMX_IN_FRONTEND;
|
|
||||||
pesFilterParams.output = DMX_OUT_TS_TAP;
|
|
||||||
pesFilterParams.pes_type = DMX_PES_AUDIO;
|
|
||||||
pesFilterParams.flags = DMX_IMMEDIATE_START;
|
|
||||||
if (ioctl(demux2, DMX_SET_PES_FILTER, &pesFilterParams) < 0){
|
|
||||||
perror("DEMUX DEVICE");
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/⋆ start recording MAX_LENGTH , assuming the transponder is tuned ⋆/
|
|
||||||
|
|
||||||
/⋆ demux1, demux2: file descriptor of video and audio filters ⋆/
|
|
||||||
/⋆ vpid, apid: PIDs of video and audio channels ⋆/
|
|
||||||
int record_dvr(int demux1, int demux2, uint16_t vpid, uint16_t apid)
|
|
||||||
{
|
|
||||||
int i;
|
|
||||||
int len;
|
|
||||||
int written;
|
|
||||||
uint8_t buf[BUFFY];
|
|
||||||
uint64_t length;
|
|
||||||
struct pollfd pfd[1];
|
|
||||||
int dvr, dvr_out;
|
|
||||||
|
|
||||||
/⋆ open dvr device ⋆/
|
|
||||||
if ((dvr = open(DVR, O_RDONLY|O_NONBLOCK)) < 0){
|
|
||||||
perror("DVR DEVICE");
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
/⋆ switch video and audio demuxes to dvr ⋆/
|
|
||||||
printf ("Switching dvr on\n");
|
|
||||||
i = switch_to_record(demux1, demux2, vpid, apid);
|
|
||||||
printf("finished: ");
|
|
||||||
|
|
||||||
printf("Recording %2.0f MB of test file in TS format\n",
|
|
||||||
MAX_LENGTH/(1024.0⋆1024.0));
|
|
||||||
length = 0;
|
|
||||||
|
|
||||||
/⋆ open output file ⋆/
|
|
||||||
if ((dvr_out = open(DVR_FILE,O_WRONLY|O_CREAT
|
|
||||||
|O_TRUNC, S_IRUSR|S_IWUSR
|
|
||||||
|S_IRGRP|S_IWGRP|S_IROTH|
|
|
||||||
S_IWOTH)) < 0){
|
|
||||||
perror("Can't open file for dvr test");
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
pfd[0].fd = dvr;
|
|
||||||
pfd[0].events = POLLIN;
|
|
||||||
|
|
||||||
/⋆ poll for dvr data and write to file ⋆/
|
|
||||||
while (length < MAX_LENGTH ) {
|
|
||||||
if (poll(pfd,1,1)){
|
|
||||||
if (pfd[0].revents & POLLIN){
|
|
||||||
len = read(dvr, buf, BUFFY);
|
|
||||||
if (len < 0){
|
|
||||||
perror("recording");
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
if (len > 0){
|
|
||||||
written = 0;
|
|
||||||
while (written < len)
|
|
||||||
written +=
|
|
||||||
write (dvr_out,
|
|
||||||
buf, len);
|
|
||||||
length += len;
|
|
||||||
printf("written %2.0f MB\r",
|
|
||||||
length/1024./1024.);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
</programlisting>
|
|
||||||
|
|
||||||
</section>
|
|
||||||
@@ -1,78 +0,0 @@
|
|||||||
<refentry id="FE_DISEQC_RECV_SLAVE_REPLY">
|
|
||||||
<refmeta>
|
|
||||||
<refentrytitle>ioctl FE_DISEQC_RECV_SLAVE_REPLY</refentrytitle>
|
|
||||||
&manvol;
|
|
||||||
</refmeta>
|
|
||||||
|
|
||||||
<refnamediv>
|
|
||||||
<refname>FE_DISEQC_RECV_SLAVE_REPLY</refname>
|
|
||||||
<refpurpose>Receives reply from a DiSEqC 2.0 command</refpurpose>
|
|
||||||
</refnamediv>
|
|
||||||
|
|
||||||
<refsynopsisdiv>
|
|
||||||
<funcsynopsis>
|
|
||||||
<funcprototype>
|
|
||||||
<funcdef>int <function>ioctl</function></funcdef>
|
|
||||||
<paramdef>int <parameter>fd</parameter></paramdef>
|
|
||||||
<paramdef>int <parameter>request</parameter></paramdef>
|
|
||||||
<paramdef>struct dvb_diseqc_slave_reply *<parameter>argp</parameter></paramdef>
|
|
||||||
</funcprototype>
|
|
||||||
</funcsynopsis>
|
|
||||||
</refsynopsisdiv>
|
|
||||||
|
|
||||||
<refsect1>
|
|
||||||
<title>Arguments</title>
|
|
||||||
<variablelist>
|
|
||||||
<varlistentry>
|
|
||||||
<term><parameter>fd</parameter></term>
|
|
||||||
<listitem>
|
|
||||||
<para>&fe_fd;</para>
|
|
||||||
</listitem>
|
|
||||||
</varlistentry>
|
|
||||||
<varlistentry>
|
|
||||||
<term><parameter>request</parameter></term>
|
|
||||||
<listitem>
|
|
||||||
<para>FE_DISEQC_RECV_SLAVE_REPLY</para>
|
|
||||||
</listitem>
|
|
||||||
</varlistentry>
|
|
||||||
<varlistentry>
|
|
||||||
<term><parameter>argp</parameter></term>
|
|
||||||
<listitem>
|
|
||||||
<para>pointer to &dvb-diseqc-slave-reply;</para>
|
|
||||||
</listitem>
|
|
||||||
</varlistentry>
|
|
||||||
</variablelist>
|
|
||||||
</refsect1>
|
|
||||||
|
|
||||||
<refsect1>
|
|
||||||
<title>Description</title>
|
|
||||||
|
|
||||||
<para>Receives reply from a DiSEqC 2.0 command.</para>
|
|
||||||
&return-value-dvb;
|
|
||||||
|
|
||||||
<table pgwide="1" frame="none" id="dvb-diseqc-slave-reply">
|
|
||||||
<title>struct <structname>dvb_diseqc_slave_reply</structname></title>
|
|
||||||
<tgroup cols="3">
|
|
||||||
&cs-str;
|
|
||||||
<tbody valign="top">
|
|
||||||
<row>
|
|
||||||
<entry>uint8_t</entry>
|
|
||||||
<entry>msg[4]</entry>
|
|
||||||
<entry>DiSEqC message (framing, data[3])</entry>
|
|
||||||
</row><row>
|
|
||||||
<entry>uint8_t</entry>
|
|
||||||
<entry>msg_len</entry>
|
|
||||||
<entry>Length of the DiSEqC message. Valid values are 0 to 4,
|
|
||||||
where 0 means no msg</entry>
|
|
||||||
</row><row>
|
|
||||||
<entry>int</entry>
|
|
||||||
<entry>timeout</entry>
|
|
||||||
<entry>Return from ioctl after timeout ms with errorcode when no
|
|
||||||
message was received</entry>
|
|
||||||
</row>
|
|
||||||
</tbody>
|
|
||||||
</tgroup>
|
|
||||||
</table>
|
|
||||||
|
|
||||||
</refsect1>
|
|
||||||
</refentry>
|
|
||||||
@@ -1,51 +0,0 @@
|
|||||||
<refentry id="FE_DISEQC_RESET_OVERLOAD">
|
|
||||||
<refmeta>
|
|
||||||
<refentrytitle>ioctl FE_DISEQC_RESET_OVERLOAD</refentrytitle>
|
|
||||||
&manvol;
|
|
||||||
</refmeta>
|
|
||||||
|
|
||||||
<refnamediv>
|
|
||||||
<refname>FE_DISEQC_RESET_OVERLOAD</refname>
|
|
||||||
<refpurpose>Restores the power to the antenna subsystem, if it was powered
|
|
||||||
off due to power overload.</refpurpose>
|
|
||||||
</refnamediv>
|
|
||||||
|
|
||||||
<refsynopsisdiv>
|
|
||||||
<funcsynopsis>
|
|
||||||
<funcprototype>
|
|
||||||
<funcdef>int <function>ioctl</function></funcdef>
|
|
||||||
<paramdef>int <parameter>fd</parameter></paramdef>
|
|
||||||
<paramdef>int <parameter>request</parameter></paramdef>
|
|
||||||
<paramdef>NULL</paramdef>
|
|
||||||
</funcprototype>
|
|
||||||
</funcsynopsis>
|
|
||||||
</refsynopsisdiv>
|
|
||||||
|
|
||||||
<refsect1>
|
|
||||||
<title>Arguments</title>
|
|
||||||
<variablelist>
|
|
||||||
<varlistentry>
|
|
||||||
<term><parameter>fd</parameter></term>
|
|
||||||
<listitem>
|
|
||||||
<para>&fe_fd;</para>
|
|
||||||
</listitem>
|
|
||||||
</varlistentry>
|
|
||||||
<varlistentry>
|
|
||||||
<term><parameter>request</parameter></term>
|
|
||||||
<listitem>
|
|
||||||
<para>FE_DISEQC_RESET_OVERLOAD</para>
|
|
||||||
</listitem>
|
|
||||||
</varlistentry>
|
|
||||||
</variablelist>
|
|
||||||
</refsect1>
|
|
||||||
|
|
||||||
<refsect1>
|
|
||||||
<title>Description</title>
|
|
||||||
|
|
||||||
<para>If the bus has been automatically powered off due to power overload, this ioctl
|
|
||||||
call restores the power to the bus. The call requires read/write access to the
|
|
||||||
device. This call has no effect if the device is manually powered off. Not all
|
|
||||||
DVB adapters support this ioctl.</para>
|
|
||||||
&return-value-dvb;
|
|
||||||
</refsect1>
|
|
||||||
</refentry>
|
|
||||||
@@ -1,89 +0,0 @@
|
|||||||
<refentry id="FE_DISEQC_SEND_BURST">
|
|
||||||
<refmeta>
|
|
||||||
<refentrytitle>ioctl FE_DISEQC_SEND_BURST</refentrytitle>
|
|
||||||
&manvol;
|
|
||||||
</refmeta>
|
|
||||||
|
|
||||||
<refnamediv>
|
|
||||||
<refname>FE_DISEQC_SEND_BURST</refname>
|
|
||||||
<refpurpose>Sends a 22KHz tone burst for 2x1 mini DiSEqC satellite selection.</refpurpose>
|
|
||||||
</refnamediv>
|
|
||||||
|
|
||||||
<refsynopsisdiv>
|
|
||||||
<funcsynopsis>
|
|
||||||
<funcprototype>
|
|
||||||
<funcdef>int <function>ioctl</function></funcdef>
|
|
||||||
<paramdef>int <parameter>fd</parameter></paramdef>
|
|
||||||
<paramdef>int <parameter>request</parameter></paramdef>
|
|
||||||
<paramdef>enum fe_sec_mini_cmd *<parameter>tone</parameter></paramdef>
|
|
||||||
</funcprototype>
|
|
||||||
</funcsynopsis>
|
|
||||||
</refsynopsisdiv>
|
|
||||||
|
|
||||||
<refsect1>
|
|
||||||
<title>Arguments</title>
|
|
||||||
<variablelist>
|
|
||||||
<varlistentry>
|
|
||||||
<term><parameter>fd</parameter></term>
|
|
||||||
<listitem>
|
|
||||||
<para>&fe_fd;</para>
|
|
||||||
</listitem>
|
|
||||||
</varlistentry>
|
|
||||||
<varlistentry>
|
|
||||||
<term><parameter>request</parameter></term>
|
|
||||||
<listitem>
|
|
||||||
<para>FE_DISEQC_SEND_BURST</para>
|
|
||||||
</listitem>
|
|
||||||
</varlistentry>
|
|
||||||
<varlistentry>
|
|
||||||
<term><parameter>tone</parameter></term>
|
|
||||||
<listitem>
|
|
||||||
<para>pointer to &fe-sec-mini-cmd;</para>
|
|
||||||
</listitem>
|
|
||||||
</varlistentry>
|
|
||||||
</variablelist>
|
|
||||||
</refsect1>
|
|
||||||
|
|
||||||
<refsect1>
|
|
||||||
<title>Description</title>
|
|
||||||
|
|
||||||
<para>This ioctl is used to set the generation of a 22kHz tone burst for mini
|
|
||||||
DiSEqC satellite
|
|
||||||
selection for 2x1 switches.
|
|
||||||
This call requires read/write permissions.</para>
|
|
||||||
<para>It provides support for what's specified at
|
|
||||||
<ulink url="http://www.eutelsat.com/files/contributed/satellites/pdf/Diseqc/associated%20docs/simple_tone_burst_detec.pdf">Digital Satellite Equipment Control
|
|
||||||
(DiSEqC) - Simple "ToneBurst" Detection Circuit specification.</ulink>
|
|
||||||
</para>
|
|
||||||
&return-value-dvb;
|
|
||||||
</refsect1>
|
|
||||||
|
|
||||||
<refsect1 id="fe-sec-mini-cmd-t">
|
|
||||||
<title>enum fe_sec_mini_cmd</title>
|
|
||||||
|
|
||||||
<table pgwide="1" frame="none" id="fe-sec-mini-cmd">
|
|
||||||
<title>enum fe_sec_mini_cmd</title>
|
|
||||||
<tgroup cols="2">
|
|
||||||
&cs-def;
|
|
||||||
<thead>
|
|
||||||
<row>
|
|
||||||
<entry>ID</entry>
|
|
||||||
<entry>Description</entry>
|
|
||||||
</row>
|
|
||||||
</thead>
|
|
||||||
<tbody valign="top">
|
|
||||||
<row>
|
|
||||||
<entry align="char" id="SEC-MINI-A"><constant>SEC_MINI_A</constant></entry>
|
|
||||||
<entry align="char">Sends a mini-DiSEqC 22kHz '0' Tone Burst to
|
|
||||||
select satellite-A</entry>
|
|
||||||
</row><row>
|
|
||||||
<entry align="char" id="SEC-MINI-B"><constant>SEC_MINI_B</constant></entry>
|
|
||||||
<entry align="char">Sends a mini-DiSEqC 22kHz '1' Data Burst to
|
|
||||||
select satellite-B</entry>
|
|
||||||
</row>
|
|
||||||
</tbody>
|
|
||||||
</tgroup>
|
|
||||||
</table>
|
|
||||||
</refsect1>
|
|
||||||
|
|
||||||
</refentry>
|
|
||||||
@@ -1,72 +0,0 @@
|
|||||||
<refentry id="FE_DISEQC_SEND_MASTER_CMD">
|
|
||||||
<refmeta>
|
|
||||||
<refentrytitle>ioctl FE_DISEQC_SEND_MASTER_CMD</refentrytitle>
|
|
||||||
&manvol;
|
|
||||||
</refmeta>
|
|
||||||
|
|
||||||
<refnamediv>
|
|
||||||
<refname>FE_DISEQC_SEND_MASTER_CMD</refname>
|
|
||||||
<refpurpose>Sends a DiSEqC command</refpurpose>
|
|
||||||
</refnamediv>
|
|
||||||
|
|
||||||
<refsynopsisdiv>
|
|
||||||
<funcsynopsis>
|
|
||||||
<funcprototype>
|
|
||||||
<funcdef>int <function>ioctl</function></funcdef>
|
|
||||||
<paramdef>int <parameter>fd</parameter></paramdef>
|
|
||||||
<paramdef>int <parameter>request</parameter></paramdef>
|
|
||||||
<paramdef>struct dvb_diseqc_master_cmd *<parameter>argp</parameter></paramdef>
|
|
||||||
</funcprototype>
|
|
||||||
</funcsynopsis>
|
|
||||||
</refsynopsisdiv>
|
|
||||||
|
|
||||||
<refsect1>
|
|
||||||
<title>Arguments</title>
|
|
||||||
<variablelist>
|
|
||||||
<varlistentry>
|
|
||||||
<term><parameter>fd</parameter></term>
|
|
||||||
<listitem>
|
|
||||||
<para>&fe_fd;</para>
|
|
||||||
</listitem>
|
|
||||||
</varlistentry>
|
|
||||||
<varlistentry>
|
|
||||||
<term><parameter>request</parameter></term>
|
|
||||||
<listitem>
|
|
||||||
<para>FE_DISEQC_SEND_MASTER_CMD</para>
|
|
||||||
</listitem>
|
|
||||||
</varlistentry>
|
|
||||||
<varlistentry>
|
|
||||||
<term><parameter>argp</parameter></term>
|
|
||||||
<listitem>
|
|
||||||
<para>pointer to &dvb-diseqc-master-cmd;</para>
|
|
||||||
</listitem>
|
|
||||||
</varlistentry>
|
|
||||||
</variablelist>
|
|
||||||
</refsect1>
|
|
||||||
|
|
||||||
<refsect1>
|
|
||||||
<title>Description</title>
|
|
||||||
|
|
||||||
<para>Sends a DiSEqC command to the antenna subsystem.</para>
|
|
||||||
&return-value-dvb;
|
|
||||||
|
|
||||||
<table pgwide="1" frame="none" id="dvb-diseqc-master-cmd">
|
|
||||||
<title>struct <structname>dvb_diseqc_master_cmd</structname></title>
|
|
||||||
<tgroup cols="3">
|
|
||||||
&cs-str;
|
|
||||||
<tbody valign="top">
|
|
||||||
<row>
|
|
||||||
<entry>uint8_t</entry>
|
|
||||||
<entry>msg[6]</entry>
|
|
||||||
<entry>DiSEqC message (framing, address, command, data[3])</entry>
|
|
||||||
</row><row>
|
|
||||||
<entry>uint8_t</entry>
|
|
||||||
<entry>msg_len</entry>
|
|
||||||
<entry>Length of the DiSEqC message. Valid values are 3 to 6</entry>
|
|
||||||
</row>
|
|
||||||
</tbody>
|
|
||||||
</tgroup>
|
|
||||||
</table>
|
|
||||||
|
|
||||||
</refsect1>
|
|
||||||
</refentry>
|
|
||||||
@@ -1,61 +0,0 @@
|
|||||||
<refentry id="FE_ENABLE_HIGH_LNB_VOLTAGE">
|
|
||||||
<refmeta>
|
|
||||||
<refentrytitle>ioctl FE_ENABLE_HIGH_LNB_VOLTAGE</refentrytitle>
|
|
||||||
&manvol;
|
|
||||||
</refmeta>
|
|
||||||
|
|
||||||
<refnamediv>
|
|
||||||
<refname>FE_ENABLE_HIGH_LNB_VOLTAGE</refname>
|
|
||||||
<refpurpose>Select output DC level between normal LNBf voltages or higher
|
|
||||||
LNBf voltages.</refpurpose>
|
|
||||||
</refnamediv>
|
|
||||||
|
|
||||||
<refsynopsisdiv>
|
|
||||||
<funcsynopsis>
|
|
||||||
<funcprototype>
|
|
||||||
<funcdef>int <function>ioctl</function></funcdef>
|
|
||||||
<paramdef>int <parameter>fd</parameter></paramdef>
|
|
||||||
<paramdef>int <parameter>request</parameter></paramdef>
|
|
||||||
<paramdef>unsigned int <parameter>high</parameter></paramdef>
|
|
||||||
</funcprototype>
|
|
||||||
</funcsynopsis>
|
|
||||||
</refsynopsisdiv>
|
|
||||||
|
|
||||||
<refsect1>
|
|
||||||
<title>Arguments</title>
|
|
||||||
<variablelist>
|
|
||||||
<varlistentry>
|
|
||||||
<term><parameter>fd</parameter></term>
|
|
||||||
<listitem>
|
|
||||||
<para>&fe_fd;</para>
|
|
||||||
</listitem>
|
|
||||||
</varlistentry>
|
|
||||||
<varlistentry>
|
|
||||||
<term><parameter>request</parameter></term>
|
|
||||||
<listitem>
|
|
||||||
<para>FE_ENABLE_HIGH_LNB_VOLTAGE</para>
|
|
||||||
</listitem>
|
|
||||||
</varlistentry>
|
|
||||||
<varlistentry>
|
|
||||||
<term><parameter>high</parameter></term>
|
|
||||||
<listitem>
|
|
||||||
<para>Valid flags:</para>
|
|
||||||
<itemizedlist>
|
|
||||||
<listitem><para>0 - normal 13V and 18V.</para></listitem>
|
|
||||||
<listitem><para>>0 - enables slightly higher voltages instead of
|
|
||||||
13/18V, in order to compensate for long antenna cables.</para></listitem>
|
|
||||||
</itemizedlist>
|
|
||||||
</listitem>
|
|
||||||
</varlistentry>
|
|
||||||
</variablelist>
|
|
||||||
</refsect1>
|
|
||||||
|
|
||||||
<refsect1>
|
|
||||||
<title>Description</title>
|
|
||||||
|
|
||||||
<para>Select output DC level between normal LNBf voltages or higher
|
|
||||||
LNBf voltages between 0 (normal) or a value grater than 0 for higher
|
|
||||||
voltages.</para>
|
|
||||||
&return-value-dvb;
|
|
||||||
</refsect1>
|
|
||||||
</refentry>
|
|
||||||
@@ -1,266 +0,0 @@
|
|||||||
<refentry id="FE_GET_INFO">
|
|
||||||
<refmeta>
|
|
||||||
<refentrytitle>ioctl FE_GET_INFO</refentrytitle>
|
|
||||||
&manvol;
|
|
||||||
</refmeta>
|
|
||||||
|
|
||||||
<refnamediv>
|
|
||||||
<refname>FE_GET_INFO</refname>
|
|
||||||
<refpurpose>Query DVB frontend capabilities and returns information about
|
|
||||||
the front-end. This call only requires read-only access to the device</refpurpose>
|
|
||||||
</refnamediv>
|
|
||||||
|
|
||||||
<refsynopsisdiv>
|
|
||||||
<funcsynopsis>
|
|
||||||
<funcprototype>
|
|
||||||
<funcdef>int <function>ioctl</function></funcdef>
|
|
||||||
<paramdef>int <parameter>fd</parameter></paramdef>
|
|
||||||
<paramdef>int <parameter>request</parameter></paramdef>
|
|
||||||
<paramdef>struct dvb_frontend_info *<parameter>argp</parameter></paramdef>
|
|
||||||
</funcprototype>
|
|
||||||
</funcsynopsis>
|
|
||||||
</refsynopsisdiv>
|
|
||||||
|
|
||||||
<refsect1>
|
|
||||||
<title>Arguments</title>
|
|
||||||
<variablelist>
|
|
||||||
<varlistentry>
|
|
||||||
<term><parameter>fd</parameter></term>
|
|
||||||
<listitem>
|
|
||||||
<para>&fe_fd;</para>
|
|
||||||
</listitem>
|
|
||||||
</varlistentry>
|
|
||||||
<varlistentry>
|
|
||||||
<term><parameter>request</parameter></term>
|
|
||||||
<listitem>
|
|
||||||
<para>FE_GET_INFO</para>
|
|
||||||
</listitem>
|
|
||||||
</varlistentry>
|
|
||||||
<varlistentry>
|
|
||||||
<term><parameter>argp</parameter></term>
|
|
||||||
<listitem>
|
|
||||||
<para>pointer to struct &dvb-frontend-info;</para>
|
|
||||||
</listitem>
|
|
||||||
</varlistentry>
|
|
||||||
</variablelist>
|
|
||||||
</refsect1>
|
|
||||||
|
|
||||||
<refsect1>
|
|
||||||
<title>Description</title>
|
|
||||||
|
|
||||||
<para>All DVB frontend devices support the
|
|
||||||
<constant>FE_GET_INFO</constant> ioctl. It is used to identify
|
|
||||||
kernel devices compatible with this specification and to obtain
|
|
||||||
information about driver and hardware capabilities. The ioctl takes a
|
|
||||||
pointer to dvb_frontend_info which is filled by the driver. When the
|
|
||||||
driver is not compatible with this specification the ioctl returns an error.
|
|
||||||
</para>
|
|
||||||
&return-value-dvb;
|
|
||||||
|
|
||||||
<table pgwide="1" frame="none" id="dvb-frontend-info">
|
|
||||||
<title>struct <structname>dvb_frontend_info</structname></title>
|
|
||||||
<tgroup cols="3">
|
|
||||||
&cs-str;
|
|
||||||
<tbody valign="top">
|
|
||||||
<row>
|
|
||||||
<entry>char</entry>
|
|
||||||
<entry>name[128]</entry>
|
|
||||||
<entry>Name of the frontend</entry>
|
|
||||||
</row><row>
|
|
||||||
<entry>fe_type_t</entry>
|
|
||||||
<entry>type</entry>
|
|
||||||
<entry><emphasis role="bold">DEPRECATED</emphasis>. DVBv3 type. Should not be used on modern programs, as a
|
|
||||||
frontend may have more than one type. So, the DVBv5 API should
|
|
||||||
be used instead to enumerate and select the frontend type.</entry>
|
|
||||||
</row><row>
|
|
||||||
<entry>uint32_t</entry>
|
|
||||||
<entry>frequency_min</entry>
|
|
||||||
<entry>Minimal frequency supported by the frontend</entry>
|
|
||||||
</row><row>
|
|
||||||
<entry>uint32_t</entry>
|
|
||||||
<entry>frequency_max</entry>
|
|
||||||
<entry>Maximal frequency supported by the frontend</entry>
|
|
||||||
</row><row>
|
|
||||||
<entry>uint32_t</entry>
|
|
||||||
<entry>frequency_stepsize</entry>
|
|
||||||
<entry>Frequency step - all frequencies are multiple of this value</entry>
|
|
||||||
</row><row>
|
|
||||||
<entry>uint32_t</entry>
|
|
||||||
<entry>frequency_tolerance</entry>
|
|
||||||
<entry>Tolerance of the frequency</entry>
|
|
||||||
</row><row>
|
|
||||||
<entry>uint32_t</entry>
|
|
||||||
<entry>symbol_rate_min</entry>
|
|
||||||
<entry>Minimal symbol rate (for Cable/Satellite systems), in bauds</entry>
|
|
||||||
</row><row>
|
|
||||||
<entry>uint32_t</entry>
|
|
||||||
<entry>symbol_rate_max</entry>
|
|
||||||
<entry>Maximal symbol rate (for Cable/Satellite systems), in bauds</entry>
|
|
||||||
</row><row>
|
|
||||||
<entry>uint32_t</entry>
|
|
||||||
<entry>symbol_rate_tolerance</entry>
|
|
||||||
<entry>Maximal symbol rate tolerance, in ppm</entry>
|
|
||||||
</row><row>
|
|
||||||
<entry>uint32_t</entry>
|
|
||||||
<entry>notifier_delay</entry>
|
|
||||||
<entry><emphasis role="bold">DEPRECATED</emphasis>. Not used by any driver.</entry>
|
|
||||||
</row><row>
|
|
||||||
<entry>&fe-caps;</entry>
|
|
||||||
<entry>caps</entry>
|
|
||||||
<entry>Capabilities supported by the frontend</entry>
|
|
||||||
</row>
|
|
||||||
</tbody>
|
|
||||||
</tgroup>
|
|
||||||
</table>
|
|
||||||
|
|
||||||
<para>NOTE: The frequencies are specified in Hz for Terrestrial and Cable
|
|
||||||
systems. They're specified in kHz for Satellite systems</para>
|
|
||||||
</refsect1>
|
|
||||||
|
|
||||||
<refsect1 id="fe-caps-t">
|
|
||||||
<title>frontend capabilities</title>
|
|
||||||
|
|
||||||
<para>Capabilities describe what a frontend can do. Some capabilities are
|
|
||||||
supported only on some specific frontend types.</para>
|
|
||||||
|
|
||||||
<table pgwide="1" frame="none" id="fe-caps">
|
|
||||||
<title>enum fe_caps</title>
|
|
||||||
<tgroup cols="2">
|
|
||||||
&cs-def;
|
|
||||||
<thead>
|
|
||||||
<row>
|
|
||||||
<entry>ID</entry>
|
|
||||||
<entry>Description</entry>
|
|
||||||
</row>
|
|
||||||
</thead>
|
|
||||||
<tbody valign="top">
|
|
||||||
<row>
|
|
||||||
<entry id="FE-IS-STUPID"><constant>FE_IS_STUPID</constant></entry>
|
|
||||||
<entry>There's something wrong at the frontend, and it can't
|
|
||||||
report its capabilities</entry>
|
|
||||||
</row>
|
|
||||||
<row>
|
|
||||||
<entry id="FE-CAN-INVERSION-AUTO"><constant>FE_CAN_INVERSION_AUTO</constant></entry>
|
|
||||||
<entry>The frontend is capable of auto-detecting inversion</entry>
|
|
||||||
</row>
|
|
||||||
<row>
|
|
||||||
<entry id="FE-CAN-FEC-1-2"><constant>FE_CAN_FEC_1_2</constant></entry>
|
|
||||||
<entry>The frontend supports FEC 1/2</entry>
|
|
||||||
</row>
|
|
||||||
<row>
|
|
||||||
<entry id="FE-CAN-FEC-2-3"><constant>FE_CAN_FEC_2_3</constant></entry>
|
|
||||||
<entry>The frontend supports FEC 2/3</entry>
|
|
||||||
</row>
|
|
||||||
<row>
|
|
||||||
<entry id="FE-CAN-FEC-3-4"><constant>FE_CAN_FEC_3_4</constant></entry>
|
|
||||||
<entry>The frontend supports FEC 3/4</entry>
|
|
||||||
</row>
|
|
||||||
<row>
|
|
||||||
<entry id="FE-CAN-FEC-4-5"><constant>FE_CAN_FEC_4_5</constant></entry>
|
|
||||||
<entry>The frontend supports FEC 4/5</entry>
|
|
||||||
</row>
|
|
||||||
<row>
|
|
||||||
<entry id="FE-CAN-FEC-5-6"><constant>FE_CAN_FEC_5_6</constant></entry>
|
|
||||||
<entry>The frontend supports FEC 5/6</entry>
|
|
||||||
</row>
|
|
||||||
<row>
|
|
||||||
<entry id="FE-CAN-FEC-6-7"><constant>FE_CAN_FEC_6_7</constant></entry>
|
|
||||||
<entry>The frontend supports FEC 6/7</entry>
|
|
||||||
</row>
|
|
||||||
<row>
|
|
||||||
<entry id="FE-CAN-FEC-7-8"><constant>FE_CAN_FEC_7_8</constant></entry>
|
|
||||||
<entry>The frontend supports FEC 7/8</entry>
|
|
||||||
</row>
|
|
||||||
<row>
|
|
||||||
<entry id="FE-CAN-FEC-8-9"><constant>FE_CAN_FEC_8_9</constant></entry>
|
|
||||||
<entry>The frontend supports FEC 8/9</entry>
|
|
||||||
</row>
|
|
||||||
<row>
|
|
||||||
<entry id="FE-CAN-FEC-AUTO"><constant>FE_CAN_FEC_AUTO</constant></entry>
|
|
||||||
<entry>The frontend can autodetect FEC.</entry>
|
|
||||||
</row>
|
|
||||||
<row>
|
|
||||||
<entry id="FE-CAN-QPSK"><constant>FE_CAN_QPSK</constant></entry>
|
|
||||||
<entry>The frontend supports QPSK modulation</entry>
|
|
||||||
</row>
|
|
||||||
<row>
|
|
||||||
<entry id="FE-CAN-QAM-16"><constant>FE_CAN_QAM_16</constant></entry>
|
|
||||||
<entry>The frontend supports 16-QAM modulation</entry>
|
|
||||||
</row>
|
|
||||||
<row>
|
|
||||||
<entry id="FE-CAN-QAM-32"><constant>FE_CAN_QAM_32</constant></entry>
|
|
||||||
<entry>The frontend supports 32-QAM modulation</entry>
|
|
||||||
</row>
|
|
||||||
<row>
|
|
||||||
<entry id="FE-CAN-QAM-64"><constant>FE_CAN_QAM_64</constant></entry>
|
|
||||||
<entry>The frontend supports 64-QAM modulation</entry>
|
|
||||||
</row>
|
|
||||||
<row>
|
|
||||||
<entry id="FE-CAN-QAM-128"><constant>FE_CAN_QAM_128</constant></entry>
|
|
||||||
<entry>The frontend supports 128-QAM modulation</entry>
|
|
||||||
</row>
|
|
||||||
<row>
|
|
||||||
<entry id="FE-CAN-QAM-256"><constant>FE_CAN_QAM_256</constant></entry>
|
|
||||||
<entry>The frontend supports 256-QAM modulation</entry>
|
|
||||||
</row>
|
|
||||||
<row>
|
|
||||||
<entry id="FE-CAN-QAM-AUTO"><constant>FE_CAN_QAM_AUTO</constant></entry>
|
|
||||||
<entry>The frontend can autodetect modulation</entry>
|
|
||||||
</row>
|
|
||||||
<row>
|
|
||||||
<entry id="FE-CAN-TRANSMISSION-MODE-AUTO"><constant>FE_CAN_TRANSMISSION_MODE_AUTO</constant></entry>
|
|
||||||
<entry>The frontend can autodetect the transmission mode</entry>
|
|
||||||
</row>
|
|
||||||
<row>
|
|
||||||
<entry id="FE-CAN-BANDWIDTH-AUTO"><constant>FE_CAN_BANDWIDTH_AUTO</constant></entry>
|
|
||||||
<entry>The frontend can autodetect the bandwidth</entry>
|
|
||||||
</row>
|
|
||||||
<row>
|
|
||||||
<entry id="FE-CAN-GUARD-INTERVAL-AUTO"><constant>FE_CAN_GUARD_INTERVAL_AUTO</constant></entry>
|
|
||||||
<entry>The frontend can autodetect the guard interval</entry>
|
|
||||||
</row>
|
|
||||||
<row>
|
|
||||||
<entry id="FE-CAN-HIERARCHY-AUTO"><constant>FE_CAN_HIERARCHY_AUTO</constant></entry>
|
|
||||||
<entry>The frontend can autodetect hierarch</entry>
|
|
||||||
</row>
|
|
||||||
<row>
|
|
||||||
<entry id="FE-CAN-8VSB"><constant>FE_CAN_8VSB</constant></entry>
|
|
||||||
<entry>The frontend supports 8-VSB modulation</entry>
|
|
||||||
</row>
|
|
||||||
<row>
|
|
||||||
<entry id="FE-CAN-16VSB"><constant>FE_CAN_16VSB</constant></entry>
|
|
||||||
<entry>The frontend supports 16-VSB modulation</entry>
|
|
||||||
</row>
|
|
||||||
<row>
|
|
||||||
<entry id="FE-HAS-EXTENDED-CAPS"><constant>FE_HAS_EXTENDED_CAPS</constant></entry>
|
|
||||||
<entry>Currently, unused</entry>
|
|
||||||
</row>
|
|
||||||
<row>
|
|
||||||
<entry id="FE-CAN-MULTISTREAM"><constant>FE_CAN_MULTISTREAM</constant></entry>
|
|
||||||
<entry>The frontend supports multistream filtering</entry>
|
|
||||||
</row>
|
|
||||||
<row>
|
|
||||||
<entry id="FE-CAN-TURBO-FEC"><constant>FE_CAN_TURBO_FEC</constant></entry>
|
|
||||||
<entry>The frontend supports turbo FEC modulation</entry>
|
|
||||||
</row>
|
|
||||||
<row>
|
|
||||||
<entry id="FE-CAN-2G-MODULATION"><constant>FE_CAN_2G_MODULATION</constant></entry>
|
|
||||||
<entry>The frontend supports "2nd generation modulation" (DVB-S2/T2)></entry>
|
|
||||||
</row>
|
|
||||||
<row>
|
|
||||||
<entry id="FE-NEEDS-BENDING"><constant>FE_NEEDS_BENDING</constant></entry>
|
|
||||||
<entry>Not supported anymore, don't use it</entry>
|
|
||||||
</row>
|
|
||||||
<row>
|
|
||||||
<entry id="FE-CAN-RECOVER"><constant>FE_CAN_RECOVER</constant></entry>
|
|
||||||
<entry>The frontend can recover from a cable unplug automatically</entry>
|
|
||||||
</row>
|
|
||||||
<row>
|
|
||||||
<entry id="FE-CAN-MUTE-TS"><constant>FE_CAN_MUTE_TS</constant></entry>
|
|
||||||
<entry>The frontend can stop spurious TS data output</entry>
|
|
||||||
</row>
|
|
||||||
</tbody>
|
|
||||||
</tgroup>
|
|
||||||
</table>
|
|
||||||
</refsect1>
|
|
||||||
</refentry>
|
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user