Re: Re: v4l2 api

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]



Mark McClelland wrote:
> >
> >For the implementation of selection the antenna polarization and other
> >satellite related switches it is IMHO better to have an own struct,
> >e.g. struct v4l2_antenna and two ioctl calls for reading and setting
> >this struct. This would make the API more cleaner.
> >
> 
> You're probably right about that. Some other things could be added to
> that struct too, like rotator control. I think we should wait until we
> have a good selection of hardware to study before adding any of that to
> the API, though (the same goes for ATSC for the most part). These things
> can be implemented as driver-specific ioctls or even v4l2 controls at
> first, and then added to the official API once we have more experience.

I started writing a driver for my satellite tv card a while ago and the
problem of how to tell this tv card to select polarisation or another
satellite position in a clean way is still there. Currently these flags
are being filled in the MSB's of the tuner-frequency, which is a
quick-and-dirty solution, but allowed me to continue my work.

A possible struct and ioctl, which would make it easier for my driver
to handle satellite equipment, could be like this:

 struct v4l2_antenna 
 { 
    __u16 input;                       /* number of antenna input */ 
    __u16 capabilities; 
 #define V4L2_ANTENNA_1814V          1 /* can set 18/14V (1 = yes/18V)
*/ 
 #define V4L2_ANTENNA_22KHZ          2 /* can switch 22kHz (1 =
yes/22kHz on) */ 
 #define V4L2_ANTENNA_POWER          4 /* can switch LNB power supply (1
= yes/on) */ 
 #define V4L2_ANTENNA_12V            8 /* has a controlable 12V output
(1 = yes/on) */ 
 #define V4L2_ANTENNA_SKEW          16 /* has a magnetic polarizer (1 =
yes/set value in 'skew') */ 
 #define V4L2_ANTENNA_22KHZ_BURST   32 /* can send a 22kHz burst (1 =
yes/send data burst) */ 
 #define V4L2_ANTENNA_SIMPLE_DISEQC 64 /* can do 'Simple' DiSEqC */ 
 #define V4L2_ANTENNA_DISEQC_1     128 /* can do DiSEqC version 1.x */ 
 #define V4L2_ANTENNA_DISEQC_2     256 /* can do DiSEqC version 2.x */ 
 #define V4L2_ANTENNA_DISEQC_3     512 /* can do DiSEqC version 3.x */ 
    __u16 settings;                    /* are the same as in
'capabilities' */

    __s16 skew;                        /* set skew value for magnetic
polarizers,
                                       /* if in 'capabilities' and
'settings' 
                                       /* V4L2_ANTENNA_SKEW is true */

    __u8  diseqc[32];                  /* array for submitting DiSEqC
command bytes */
                                       /* diseqc[0] has the number of
bytes to be send */
                                       /* the command-sequence starts at
diseqc[1] */ 
 };
 #define VIDIOC_G_ANTENNA _IOR('V', 70, struct v4l2_antenna) 
 #define VIDIOC_S_ANTENNA _IOW('V', 71, struct v4l2_antenna) 

According to the documents the DiSEqC standard deals with 
'positioner commands' and this may include rotator control, too. 
There is already a lot of hardware out there which listens to 
DiSEqC commands.


cya
Peter





[Index of Archives]     [Linux DVB]     [Video Disk Recorder]     [Asterisk]     [Photo]     [DCCP]     [Netdev]     [Xorg]     [Util Linux NG]     [Xfree86]     [Free Photo Albums]     [Fedora Users]     [Fedora Women]     [ALSA Users]     [ALSA Devel]     [Linux USB]

Powered by Linux