diff options
Diffstat (limited to 'receiver.c')
-rw-r--r-- | receiver.c | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/receiver.c b/receiver.c new file mode 100644 index 0000000..04f9847 --- /dev/null +++ b/receiver.c @@ -0,0 +1,55 @@ +/* + * receiver.c: The basic receiver interface + * + * See the main source file 'vdr.c' for copyright information and + * how to reach the author. + * + * $Id: receiver.c 1.1 2002/06/08 09:58:29 kls Exp $ + */ + +#include <stdarg.h> +#include <stdio.h> +#include "receiver.h" + +cReceiver::cReceiver(int Ca, int Priority, int NumPids, ...) +{ + device = NULL; + ca = Ca; + priority = Priority; + if (NumPids) { + va_list ap; + va_start(ap, NumPids); + int n = 0; + while (n < MAXRECEIVEPIDS && NumPids--) { + if ((pids[n] = va_arg(ap, int)) != 0) + n++; + } + va_end(ap); + } + else + esyslog("ERROR: cReceiver called without a PID!"); +} + +cReceiver::~cReceiver() +{ + Detach(); +} + +bool cReceiver::WantsPid(int Pid) +{ + if (Pid) { + for (int i = 0; i < MAXRECEIVEPIDS; i++) { + if (pids[i] == Pid) + return true; + if (!pids[i]) + break; + } + } + return false; +} + +void cReceiver::Detach(void) +{ + if (device) + device->Detach(this); +} |