summaryrefslogtreecommitdiff
path: root/libdvbmpeg/devices.hh
diff options
context:
space:
mode:
authorSascha Volkenandt <sascha@akv-soft.de>2004-01-02 23:13:00 +0100
committerSascha Volkenandt <sascha@akv-soft.de>2004-01-02 23:13:00 +0100
commit4a775c82c82597c65345b3b1fdad71792ef2e486 (patch)
treed3a5fc2a34e6746f8d7ee51e793ff3645bf3e814 /libdvbmpeg/devices.hh
downloadvdr-plugin-osdpip-4a775c82c82597c65345b3b1fdad71792ef2e486.tar.gz
vdr-plugin-osdpip-4a775c82c82597c65345b3b1fdad71792ef2e486.tar.bz2
Release version 0.0.1v0.0.1
- Initial revision.
Diffstat (limited to 'libdvbmpeg/devices.hh')
-rw-r--r--libdvbmpeg/devices.hh310
1 files changed, 310 insertions, 0 deletions
diff --git a/libdvbmpeg/devices.hh b/libdvbmpeg/devices.hh
new file mode 100644
index 0000000..02c62cd
--- /dev/null
+++ b/libdvbmpeg/devices.hh
@@ -0,0 +1,310 @@
+#ifndef _channel_hh
+#define _channel_hh
+
+using namespace std;
+#include <stdint.h>
+
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+
+#include <iostream>
+#include <fstream>
+#include <sstream>
+
+#include "DVB.hh"
+
+#define MAXNAM 80
+#define MAXKEY 15
+
+const int maxname=80;
+const int MAXAPIDS=32;
+const uint32_t UNSET=0xffffffff;
+const uint16_t NOID=0xffff;
+const uint16_t NOPID=0xffff;
+
+class Transponder {
+public:
+ uint16_t id;
+ uint16_t onid;
+ uint16_t satid;
+ int type;
+ char name[maxname+1];
+ uint32_t freq;
+ int pol;
+ int qam;
+ uint32_t srate;
+ int fec;
+ int band;
+ int hp_rate;
+ int lp_rate;
+ int mod;
+ int transmode;
+ int guard;
+ int hierarchy;
+
+ struct Sat *sat;
+
+ Transponder() {
+ name[0]='\0';
+ id = NOID;
+ onid = NOID;
+ satid = NOID;
+ type = 0;
+ }
+
+ friend ostream &operator<<(ostream &stream, Transponder &x);
+ friend istream &operator>>(istream &stream, Transponder &x);
+};
+
+class Sat {
+public:
+ uint16_t id;
+ char name[maxname+1];
+ unsigned int lnbid;
+ struct Lnb *lnb;
+ unsigned int rotorid;
+ unsigned int fmin;
+ unsigned int fmax;
+
+ Sat() {
+ id=NOID;
+ name[0]='\0';
+ lnb=NULL;
+ rotorid=NOID;
+ lnbid=NOID;
+ fmin=fmax=0;
+ };
+ int set(int sid, char *sname, int slnbid, int srotorid) {
+ return 0;
+ };
+
+ friend ostream &operator<<(ostream &stream, Sat &x);
+ friend istream &operator>>(istream &stream, Sat &x);
+};
+
+
+class Lnb {
+public:
+ Sat *sat;
+ uint16_t id;
+ struct DVB *dvbd;
+ char name[maxname+1];
+ int type;
+ unsigned int lof1;
+ unsigned int lof2;
+ unsigned int slof;
+ int diseqcnr;
+ uint16_t diseqcid;
+ uint16_t swiid;
+
+
+ void cpy (const Lnb &olnb){
+ this->id=olnb.id;
+ this->type=olnb.type;
+ this->lof1=olnb.lof1;
+ this->lof2=olnb.lof2;
+ this->slof=olnb.slof;
+ this->diseqcnr=olnb.diseqcnr;
+ this->diseqcid=olnb.diseqcid;
+ this->swiid=olnb.swiid;
+ strncpy(this->name,olnb.name,maxname);
+ }
+
+ void init(int t, uint l1, uint l2, uint sl,
+ int dnr, int disid, int sw) {
+ type=t;
+ lof1=l1;
+ lof2=l2;
+ slof=sl;
+ diseqcnr=dnr;
+ diseqcid=disid;
+ swiid=sw;
+ dvbd=0;
+ name[0]='\0';
+ }
+
+ Lnb () {
+ lof1=lof2=slof=0;
+ swiid=NOID;
+ diseqcid=NOID;
+ diseqcnr=-1;
+ name[0]='\0';
+ }
+
+ Lnb (const Lnb &olnb){
+ cpy(olnb);
+ }
+
+
+
+ friend ostream &operator<<(ostream &stream, Lnb &x);
+ friend istream &operator>>(istream &stream, Lnb &x);
+};
+
+struct diseqcmsg {
+ int burst;
+ int len;
+ unsigned char msg[8];
+};
+
+class DiSEqC {
+public:
+ uint16_t id;
+ char name[maxname+1];
+ diseqcmsg msgs[4];
+
+ friend ostream &operator<<(ostream &stream, DiSEqC &x);
+ friend istream &operator>>(istream &stream, DiSEqC &x);
+};
+
+class Rotor {
+public:
+ uint16_t id;
+ char name[maxname+1];
+ diseqcmsg msgs[4];
+
+ friend ostream &operator<<(ostream &stream, Rotor &x);
+ friend istream &operator>>(istream &stream, Rotor &x);
+};
+
+class Switch {
+public:
+ uint16_t id;
+ int switchid;
+ char name[maxname+1];
+ diseqcmsg msg;
+
+ friend ostream &operator<<(ostream &stream, Switch &x);
+ friend istream &operator>>(istream &stream, Switch &x);
+};
+
+class Network {
+public:
+ uint16_t id;
+ char name[maxname+1];
+
+ friend ostream &operator<<(ostream &stream, Network &x);
+ friend istream &operator>>(istream &stream, Network &x);
+};
+
+class Bouquet {
+public:
+ uint16_t id;
+ char name[maxname+1];
+
+ friend ostream &operator<<(ostream &stream, Bouquet &x);
+ friend istream &operator>>(istream &stream, Bouquet &x);
+};
+
+
+#define MAX_ECM 16
+#define MAX_ECM_DESC 256
+typedef struct ecm_struct {
+ int num;
+ uint16_t sysid[MAX_ECM];
+ uint16_t pid[MAX_ECM];
+ uint16_t length[MAX_ECM];
+ uint8_t data[MAX_ECM*MAX_ECM_DESC];
+} ecm_t;
+
+
+
+class Channel{
+public:
+ Channel *next;
+ uint32_t id;
+ char name[maxname+1];
+ int32_t type;
+ int checked;
+
+ uint16_t pnr;
+ uint16_t vpid;
+ uint16_t apids[MAXAPIDS];
+ char apids_name[MAXAPIDS*4];
+ int32_t apidnum;
+ int last_apidn;
+ uint16_t ac3pid;
+ uint16_t ttpid;
+ uint16_t pmtpid;
+ uint16_t pcrpid;
+ uint16_t casystem;
+ uint16_t capid;
+
+ ecm_t ecm;
+ int (*ecm_callback)(Channel *chan);
+
+ int has_eit;
+ int pres_follow;
+
+ uint16_t satid;
+ uint16_t tpid;
+ uint16_t onid;
+ uint16_t bid;
+ int8_t eit_ver_n;
+ int8_t eit_ver_c;
+
+ void clearall(void) {
+ id=UNSET;
+ name[0]='\0';
+ type=0;
+ checked = 0;
+ has_eit = -1;
+ pres_follow = -1;
+ eit_ver_c = -1;
+ eit_ver_n = -1;
+
+ pnr=NOPID;
+ vpid=NOPID;
+ memset(apids, 0, sizeof(uint16_t)*MAXAPIDS);
+ memset(apids_name, 0, sizeof(char)*MAXAPIDS*4);
+ apidnum=0;
+ last_apidn=-1;
+ ac3pid=NOPID;
+ ttpid=NOPID;
+ pmtpid=NOPID;
+ pcrpid=NOPID;
+ capid=NOPID;
+
+ satid=NOID;
+ tpid=NOID;
+ onid=NOID;
+ bid=NOID;
+ ecm_callback = NULL;
+ memset(&ecm,0, sizeof(ecm_t));
+ };
+
+ Channel() {
+ clearall();
+ }
+
+ Channel(int cid, char *nam, int ty, int prognr,
+ int vid, int aid, int tid) {
+ int l=strlen(nam);
+
+ clearall();
+ if (l>maxname){
+ cerr << "" << endl;
+ l=maxname;
+ }
+ strncpy(name, nam, l);
+ name[l]='\0';
+ type=ty;
+ pnr=prognr;
+ vpid=vid;
+ apids[0]=aid;
+ }
+
+#ifdef DEBUG
+ ~Channel(){
+ cerr <<"Channel " << name << " destroyed" << endl;
+ }
+#endif
+
+ friend ostream &operator<<(ostream &stream, Channel &x);
+ friend istream &operator>>(istream &stream, Channel &x);
+};
+
+int findkey(char *name, char *keys[]);
+void getname(char *name,istream &ins);
+#endif /*channel.h*/