Commit 0c9d696d authored by Rémi Denis-Courmont's avatar Rémi Denis-Courmont

Linux DVB: show libvlc and kernel API versions in debug

parent 2013440e
...@@ -435,12 +435,13 @@ void dvb_remove_pid (dvb_device_t *d, uint16_t pid) ...@@ -435,12 +435,13 @@ void dvb_remove_pid (dvb_device_t *d, uint16_t pid)
static unsigned dvb_probe_frontend (dvb_device_t *d, int fd) static unsigned dvb_probe_frontend (dvb_device_t *d, int fd)
{ {
#if DVBv5(5) #if DVBv5(5)
struct dtv_property prop = { struct dtv_property prop[2] = {
.cmd = DTV_ENUM_DELSYS { .cmd = DTV_API_VERSION },
{ .cmd = DTV_ENUM_DELSYS },
}; };
struct dtv_properties props = { struct dtv_properties props = {
.num = 1, .num = 2,
.props = &prop .props = prop
}; };
if (ioctl (fd, FE_GET_PROPERTY, &props) < 0) if (ioctl (fd, FE_GET_PROPERTY, &props) < 0)
...@@ -472,11 +473,13 @@ static unsigned dvb_probe_frontend (dvb_device_t *d, int fd) ...@@ -472,11 +473,13 @@ static unsigned dvb_probe_frontend (dvb_device_t *d, int fd)
}; };
unsigned systems = 0; unsigned systems = 0;
msg_Dbg (d->obj, "probing frontend"); msg_Dbg (d->obj, "probing frontend (kernel API v%u.%u, user API v%u.%u)",
prop[0].u.data >> 8, prop[0].u.data & 0xFF,
DVB_API_VERSION, DVB_API_VERSION_MINOR);
for (size_t i = 0; i < prop.u.buffer.len; i++) for (size_t i = 0; i < prop[1].u.buffer.len; i++)
{ {
unsigned sys = prop.u.buffer.data[i]; unsigned sys = prop[1].u.buffer.data[i];
if (sys >= (sizeof (systab) / sizeof (systab[0])) || !systab[sys]) if (sys >= (sizeof (systab) / sizeof (systab[0])) || !systab[sys])
{ {
...@@ -487,15 +490,30 @@ static unsigned dvb_probe_frontend (dvb_device_t *d, int fd) ...@@ -487,15 +490,30 @@ static unsigned dvb_probe_frontend (dvb_device_t *d, int fd)
systems |= systab[sys]; systems |= systab[sys];
} }
#else #else
struct dvb_frontend_info info; struct dtv_property prop[1] = {
{ .cmd = DTV_API_VERSION },
};
struct dtv_properties props = {
.num = 1,
.props = prop
};
if (ioctl (fd, FE_GET_PROPERTY, &props) < 0)
{
msg_Err (d->obj, "unsupported kernel DVB version 3 or older (%m)");
return 0;
}
msg_Dbg (d->obj, "probing frontend (kernel API v%u.%u, user API v%u.%u)",
prop[0].u.data >> 8, prop[0].u.data & 0xFF,
DVB_API_VERSION, DVB_API_VERSION_MINOR);
struct dvb_frontend_info info;
if (ioctl (fd, FE_GET_INFO, &info) < 0) if (ioctl (fd, FE_GET_INFO, &info) < 0)
{ {
msg_Err (d->obj, "cannot get frontend info: %m"); msg_Err (d->obj, "cannot get frontend info: %m");
return 0; return 0;
} }
msg_Dbg (d->obj, " name %s", info.name);
msg_Dbg (d->obj, "probing frontend: %s", info.name);
msg_Dbg (d->obj, " type %u, capabilities 0x%08X", info.type, info.caps); msg_Dbg (d->obj, " type %u, capabilities 0x%08X", info.type, info.caps);
msg_Dbg (d->obj, " frequencies %10"PRIu32" to %10"PRIu32, msg_Dbg (d->obj, " frequencies %10"PRIu32" to %10"PRIu32,
info.frequency_min, info.frequency_max); info.frequency_min, info.frequency_max);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment