Commit 93f8ec56 authored by Rémi Denis-Courmont's avatar Rémi Denis-Courmont

dtv: implement ACCESS_GET_PRIVATE_ID_STATE control

parent 6dac806b
...@@ -585,7 +585,14 @@ static int Control (access_t *access, int query, va_list args) ...@@ -585,7 +585,14 @@ static int Control (access_t *access, int query, va_list args)
break; break;
} }
#endif #endif
/*case ACCESS_GET_PRIVATE_ID_STATE: TODO? */ case ACCESS_GET_PRIVATE_ID_STATE:
{
unsigned pid = va_arg (args, int);
bool *on = va_arg (args, bool *);
*on = likely(pid <= 0x1FFF) ? dvb_get_pid_state(dev, pid) : false;
return VLC_SUCCESS;
}
default: default:
return VLC_EGENERIC; return VLC_EGENERIC;
......
...@@ -167,6 +167,11 @@ void dvb_remove_pid (dvb_device_t *, uint16_t) ...@@ -167,6 +167,11 @@ void dvb_remove_pid (dvb_device_t *, uint16_t)
{ {
} }
bool dvb_get_pid_state (const dvb_device_t *, uint16_t)
{
return true;
}
unsigned dvb_enum_systems (dvb_device_t *d) unsigned dvb_enum_systems (dvb_device_t *d)
{ {
return d->module->EnumSystems( ); return d->module->EnumSystems( );
......
...@@ -50,6 +50,7 @@ ssize_t dvb_read (dvb_device_t *, void *, size_t); ...@@ -50,6 +50,7 @@ ssize_t dvb_read (dvb_device_t *, void *, size_t);
int dvb_add_pid (dvb_device_t *, uint16_t); int dvb_add_pid (dvb_device_t *, uint16_t);
void dvb_remove_pid (dvb_device_t *, uint16_t); void dvb_remove_pid (dvb_device_t *, uint16_t);
bool dvb_get_pid_state (const dvb_device_t *, uint16_t);
unsigned dvb_enum_systems (dvb_device_t *); unsigned dvb_enum_systems (dvb_device_t *);
float dvb_get_signal_strength (dvb_device_t *); float dvb_get_signal_strength (dvb_device_t *);
......
...@@ -450,6 +450,18 @@ void dvb_remove_pid (dvb_device_t *d, uint16_t pid) ...@@ -450,6 +450,18 @@ void dvb_remove_pid (dvb_device_t *d, uint16_t pid)
#endif #endif
} }
bool dvb_get_pid_state (const dvb_device_t *d, uint16_t pid)
{
if (d->budget)
return true;
for (size_t i = 0; i < MAX_PIDS; i++)
if (d->pids[i].pid == pid)
return true;
return false;
}
/** Finds a frontend of the correct type */ /** Finds a frontend of the correct type */
static int dvb_open_frontend (dvb_device_t *d) static int dvb_open_frontend (dvb_device_t *d)
{ {
......
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