linuxdvb: make the status period (read times) configurable
This commit is contained in:
parent
f157e1818d
commit
dafea1a693
3 changed files with 20 additions and 3 deletions
|
@ -76,6 +76,14 @@ The rows have the following functions
|
||||||
<dt><b>Input Buffer (Bytes)</b></dt>
|
<dt><b>Input Buffer (Bytes)</b></dt>
|
||||||
<dd>By default, linuxdvb input buffer is 18800 bytes long. The accepted
|
<dd>By default, linuxdvb input buffer is 18800 bytes long. The accepted
|
||||||
range is 18800-1880000 bytes.</dd>
|
range is 18800-1880000 bytes.</dd>
|
||||||
|
<p>
|
||||||
|
<dt><b>Status Period</b></dt>
|
||||||
|
<dd>By default, linuxdvb status read period is 1000ms (one second). The
|
||||||
|
accepted range is 250ms to 8000ms. Note that for some hardware /
|
||||||
|
drivers (like USB), the status operations takes too much time and CPU.
|
||||||
|
In this case, increase the default value. For fast hardware, this value
|
||||||
|
might be descreased to make the decision of the re-tune algorithm
|
||||||
|
based on the signal status faster.</dd>
|
||||||
</dl>
|
</dl>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
|
|
|
@ -113,6 +113,13 @@ const idclass_t linuxdvb_frontend_class =
|
||||||
.opts = PO_ADVANCED,
|
.opts = PO_ADVANCED,
|
||||||
.off = offsetof(linuxdvb_frontend_t, lfe_ibuf_size),
|
.off = offsetof(linuxdvb_frontend_t, lfe_ibuf_size),
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
.type = PT_U32,
|
||||||
|
.id = "status_period",
|
||||||
|
.name = "Status Period (ms)",
|
||||||
|
.opts = PO_ADVANCED,
|
||||||
|
.off = offsetof(linuxdvb_frontend_t, lfe_status_period),
|
||||||
|
},
|
||||||
{}
|
{}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
@ -491,6 +498,7 @@ linuxdvb_frontend_monitor ( void *aux )
|
||||||
streaming_message_t sm;
|
streaming_message_t sm;
|
||||||
service_t *s;
|
service_t *s;
|
||||||
int logit = 0, retune;
|
int logit = 0, retune;
|
||||||
|
uint32_t period = MIN(MAX(250, lfe->lfe_status_period), 8000);
|
||||||
#if DVB_VER_ATLEAST(5,10)
|
#if DVB_VER_ATLEAST(5,10)
|
||||||
struct dtv_property fe_properties[6];
|
struct dtv_property fe_properties[6];
|
||||||
struct dtv_properties dtv_prop;
|
struct dtv_properties dtv_prop;
|
||||||
|
@ -526,7 +534,7 @@ linuxdvb_frontend_monitor ( void *aux )
|
||||||
if (!mmi || !lfe->lfe_ready) return;
|
if (!mmi || !lfe->lfe_ready) return;
|
||||||
|
|
||||||
/* re-arm */
|
/* re-arm */
|
||||||
gtimer_arm(&lfe->lfe_monitor_timer, linuxdvb_frontend_monitor, lfe, 1);
|
gtimer_arm_ms(&lfe->lfe_monitor_timer, linuxdvb_frontend_monitor, lfe, period);
|
||||||
|
|
||||||
/* Get current status */
|
/* Get current status */
|
||||||
if (ioctl(lfe->lfe_fe_fd, FE_READ_STATUS, &fe_status) == -1) {
|
if (ioctl(lfe->lfe_fe_fd, FE_READ_STATUS, &fe_status) == -1) {
|
||||||
|
@ -609,10 +617,9 @@ linuxdvb_frontend_monitor ( void *aux )
|
||||||
lfe->lfe_monitor = dispatch_clock + 1;
|
lfe->lfe_monitor = dispatch_clock + 1;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
/* Monitor 1 per sec */
|
|
||||||
if (dispatch_clock < lfe->lfe_monitor)
|
if (dispatch_clock < lfe->lfe_monitor)
|
||||||
return;
|
return;
|
||||||
lfe->lfe_monitor = dispatch_clock + 1;
|
lfe->lfe_monitor = dispatch_clock + (period + 999) / 1000;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Statistics - New API */
|
/* Statistics - New API */
|
||||||
|
@ -1441,6 +1448,7 @@ linuxdvb_frontend_create
|
||||||
strncpy(lfe->lfe_name, name, sizeof(lfe->lfe_name));
|
strncpy(lfe->lfe_name, name, sizeof(lfe->lfe_name));
|
||||||
lfe->lfe_name[sizeof(lfe->lfe_name)-1] = '\0';
|
lfe->lfe_name[sizeof(lfe->lfe_name)-1] = '\0';
|
||||||
lfe->lfe_ibuf_size = 18800;
|
lfe->lfe_ibuf_size = 18800;
|
||||||
|
lfe->lfe_status_period = 1000;
|
||||||
lfe = (linuxdvb_frontend_t*)mpegts_input_create0((mpegts_input_t*)lfe, idc, uuid, conf);
|
lfe = (linuxdvb_frontend_t*)mpegts_input_create0((mpegts_input_t*)lfe, idc, uuid, conf);
|
||||||
if (!lfe) return NULL;
|
if (!lfe) return NULL;
|
||||||
|
|
||||||
|
|
|
@ -117,6 +117,7 @@ struct linuxdvb_frontend
|
||||||
int lfe_tune_repeats;
|
int lfe_tune_repeats;
|
||||||
uint32_t lfe_skip_bytes;
|
uint32_t lfe_skip_bytes;
|
||||||
uint32_t lfe_ibuf_size;
|
uint32_t lfe_ibuf_size;
|
||||||
|
uint32_t lfe_status_period;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Satconf (DVB-S only)
|
* Satconf (DVB-S only)
|
||||||
|
|
Loading…
Add table
Reference in a new issue