Mailing List archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[linux-dvb] Re: Are frontend events queued?
> On Wed, Jul 21, 2004 at 07:31:36PM +0200, Wolfgang Fritz wrote:
> > Hello,
> >
> > I'm trying to get some facts about the infamous "video data stream
> > broken" error in VDR.
> >
> > The following modified code from VDR-1.3.10/dvbdevice.c
cDvbTuner::Action
> >
> > active = true;
> > while (active) {
> > ....
> > if (tunerStatus == tsTuned) {
> > fe_status_t status = fe_status_t(0);
> > CHECK(ioctl(fd_frontend, FE_READ_STATUS, &status));
> > if (status & FE_HAS_LOCK) {
> > tunerStatus = tsLocked;
> > dsyslog ("Frontend %d locked", cardIndex);
> > }
> > }
> > if (tunerStatus != tsIdle) {
> > dvb_frontend_event event;
> > if (ioctl(fd_frontend, FE_GET_EVENT, &event) == 0) {
> > dsyslog ("Event on frontend %d: %02x", cardIndex, event.status);
> > if (event.status & FE_REINIT) {
> > tunerStatus = tsSet;
> > esyslog("ERROR: frontend %d was reinitialized -
> > re-tuning", cardIndex);
> > continue;
> > }
> > }
> > }
> > ....
> > bool fast = (tunerStatus == tsTuned) || (ciHandler &&
> > (time(NULL) - startTime < 20));
> > newSet.TimedWait(mutex, fast ? 100 : 1000);
> > }
> >
> > sometimes gives the following output:
> >
> > Jul 21 19:06:21 vdr vdr[1697]: Event on frontend 1: 00
> > Jul 21 19:06:21 vdr vdr[1697]: Frontend 1 locked
> > Jul 21 19:06:21 vdr vdr[1697]: Event on frontend 1: 03
> > Jul 21 19:06:22 vdr vdr[1697]: Event on frontend 1: 1f
> >
> > What does this mean?
> >
> > - Did the frontend really lose lock for a short time?
> >
> > Or
> >
> > - Are the frontend events queued so that the event "03"
> > in fact occured before the "Frontend 1 locked"?
>
> Events are queued. You are supposed to use poll() and read
> events as soon as they are generated, or let FE_GET_EVENT
> block waiting for events. To fix up vdr you could also
> open the frontend with O_NONBLOCK and loop until
> FE_GET_EVENT returns -EGAIN, discarding old events.
>
> Once upon a time szap did something like that:
>
http://linuxtv.org/cgi-bin/cvsweb.cgi/DVB/apps/szap/szap.c?rev=1.3.2.1&content-type=text/plain
>
Hi,
i have some other question;)
I see every second FE_GET_EVENT an diseqc ioctl in my logs. Is that normal?
Jul 21 19:32:30 amd-linux kernel: dvb_frontend_ioctl : case FE_GET_EVENT
Jul 21 19:32:30 amd-linux kernel: flexcop_diseqc_ioctl: diseqc ioctl init
Jul 21 19:32:30 amd-linux kernel: flexcop_diseqc_ioctl: Not supported
Jul 21 19:32:31 amd-linux kernel: DVB (dvb_dmxdev_filter_start)
DMX_TYPE_SEC: PID=300
Jul 21 19:32:31 amd-linux kernel: DVB (dvb_dmxdev_filter_start)
DMX_TYPE_SEC: PID=1034
Jul 21 19:32:31 amd-linux kernel: dvb_frontend_ioctl : case FE_GET_EVENT
Jul 21 19:32:31 amd-linux kernel: DVB (dvb_dmxdev_filter_start)
DMX_TYPE_SEC: PID=400
Jul 21 19:32:31 amd-linux kernel: DVB (dvb_dmxdev_filter_start)
DMX_TYPE_SEC: PID=1021
Jul 21 19:32:31 amd-linux kernel: DVB (dvb_dmxdev_filter_start)
DMX_TYPE_SEC: PID=100
Jul 21 19:32:31 amd-linux kernel: dvb_frontend_ioctl : case FE_GET_EVENT
Jul 21 19:32:31 amd-linux kernel: flexcop_diseqc_ioctl: diseqc ioctl init
Jul 21 19:32:31 amd-linux kernel: flexcop_diseqc_ioctl: Not supported
and so one....
Andreas
Home |
Main Index |
Thread Index