source: titan/titan/struct.h @ 24697

Last change on this file since 24697 was 24697, checked in by nit, 7 years ago

fix

File size: 37.3 KB
Line 
1/*****************************************************/
2/* this file is part of the tiTan / tiTanNIT Project */
3/* and allowed only for use with this.               */
4/*                                                   */
5/* copyright by NIT                                  */
6/*****************************************************/
7
8#ifndef STRUCT_H
9#define STRUCT_H
10
11#define _GNU_SOURCE
12
13#ifdef SIMULATE
14#include <mcheck.h>
15#endif
16
17#include <stdio.h>
18#include <stdlib.h>
19#include <stdint.h>
20#include <string.h>
21#include <libgen.h>
22#include <fcntl.h>
23#include <ctype.h>
24#include <linux/fb.h>
25#include <sys/ioctl.h>
26#include <sys/mman.h>
27#include <png.h>
28#include <jpeglib.h>
29#include <libintl.h>
30#include <locale.h>
31#include <math.h>
32#include <linux/input.h>
33#include <sys/wait.h>
34#include <time.h>
35#include <dirent.h>
36#include <fnmatch.h>
37#include <dlfcn.h>
38#include <pthread.h>
39#include <linux/dvb/frontend.h>
40#include <linux/dvb/dmx.h>
41#include <linux/dvb/audio.h>
42#include <linux/dvb/video.h>
43#include <sys/vfs.h>
44#include <inttypes.h>
45#include <sys/socket.h>
46#include <sys/un.h>
47#include <unistd.h>
48#include <zlib.h>
49#include <net/if.h>
50#include <netinet/in.h>
51#include <arpa/inet.h>
52#include <netdb.h>
53#include <errno.h>
54#include <linux/dvb/version.h>
55#include <setjmp.h>
56#include <sys/mount.h>
57#include <execinfo.h>
58#include <ifaddrs.h>
59#include <linux/dvb/ca.h>
60#include <poll.h>
61#include <sys/utsname.h>
62#include <regex.h>
63#include <mntent.h>
64#include <termios.h>
65
66//for freetype
67#include <ft2build.h>
68#include FT_FREETYPE_H
69#include FT_CACHE_H
70
71//for eplayer
72#ifdef EPLAYER3
73#include <common.h>
74#include <subtitle.h>
75#endif
76
77#ifdef EPLAYER4
78#include <gst/gst.h>
79#include <gst/pbutils/missing-plugins.h>
80#endif
81
82#ifdef DVDPLAYER
83#include <ddvdlib.h>
84#endif
85
86
87#define OVERSION "1.40"
88#define PROGNAME "titan"
89#define COPYRIGHT "NIT"
90#define CRONTRIBUT "obi, black, dvboxer, oxygen, gost"
91#define PLUGINVERSION 0
92
93#define _(x) gettext(x)
94#define MINMALLOC 4096
95#define SCROLLBARWIDTH 15
96#define SCROLLBARBORDERSIZE 1
97#define FONTPOSYOFFSET -3
98#define FB "fb0"
99#define FB1 "fb1"
100#define SKINFB "skinfb"
101#define ACCELFB "accelfb"
102#define CONFIGFILE PROGNAME".cfg"
103#define KILLPROG "killall -9 "PROGNAME
104#define REBOOT "init 6"
105#define FILELISTDELMARK 255
106#define PLUGINDELMARK 254
107#define MAXDVBADAPTER 1
108#define MAXFRONTENDDEV 2
109#define MAXDEMUXDEV 4
110#define MAXDEMUXDEVOPEN 10
111#define MAXAUDIODEV 1
112#define MAXVIDEODEV 2
113#define MAXCIDEV 4
114#define MAXCADEV 4
115#define MAXDVRDEV 4
116#define MAXSCDEV 2
117#define RCTIMEOUT 999999
118#define RCTHREADSTANDBY 999998
119#define MAXSERVICETYPE 10
120#define CHANNELCACHEMAX 1000
121#define MEDIADBCACHEMAX 1000
122#define TRANSPONDERCACHEMAX 500
123#define MAXHTTPDCONN 20
124#define MAXHTMLLINE 300
125#define MAXRGUIDCONN 1
126#define LISTHASHSIZE 27
127#define MAXCASESSION 16
128#define MAXCASERVICE 20
129#define MAXLONGKEY 10
130#define MAXSAT 64
131#define MAXBGDOWNLOAD 5
132#define EPGSCANLOG "/tmp/epgscan.log"
133#define MAXCHANNELHISTORY 6
134#define HILO(x) (x##_hi << 8 | x##_lo)
135#define HILO32(x) (x##_hi << 24 | x##_mh << 16 | x##_ml << 8 | x##_lo)
136#define SERIALDEV "/dev/ttyAS0"
137#define MAXTOKENS 256
138#define MAXSTACKTRACE 30
139#define MAXSTACKTRACEFUNC 20
140
141#define USBDEVICE_SUPER_MAGIC 0x9fa2
142#define EXT2_SUPER_MAGIC 0xEF53
143#define EXT3_SUPER_MAGIC 0xEF53
144#define SMB_SUPER_MAGIC 0x517B
145#define NFS_SUPER_MAGIC 0x6969
146#define MSDOS_SUPER_MAGIC 0x4d44
147
148//Start Function Entry Point
149#define STARTFUNC
150
151//CA Defines
152#define T_SB 0x80               //sb (h<--m)
153#define T_RCV 0x81              //receive (h-->m)
154#define T_CREATE_T_C 0x82       //create transport connection (h-->m)
155#define T_C_T_C_REPLY 0x83      //ctc reply (h<--m)
156#define T_DELETE_T_C 0x84       //delete tc (h<->m)
157#define T_D_T_C_REPLY 0x85      //dtc reply (h<->m)
158#define T_REQUEST_T_C 0x86      //request transport connection (h<--m)
159#define T_NEW_T_C 0x87          //new tc - reply to t_request (h-->m)
160#define T_T_C_ERROR 0x77        //error creating tc (h-->m)
161#define T_DATA_LAST 0xA0        //convey data from higher (h<->m)
162#define T_DATA_MORE 0xA1        //convey data from higher (h<->m)
163
164//Alarm Signal used as timeout
165#define ALARMTIMEOUT 1
166#define ALARMSTARTTIME(x) if(ALARMTIMEOUT == 1) {alarm(x);}
167#define ALARMSTOPTIME if(ALARMTIMEOUT == 1) {alarm(0);}
168
169// VFD icons supported (more or less) on all boxes:
170typedef enum { VFD_USB = 0x10, VFD_HD, VFD_HDD, VFD_LOCK, VFD_BT, VFD_MP3, VFD_MUSIC, VFD_DD, VFD_MAIL, VFD_MUTE, VFD_PLAY, VFD_PAUSE, VFD_FF, VFD_FR, VFD_REC, VFD_CLOCK } vfdicons;
171
172#define OMIN(a,b) (a < b ? a : b)
173#define OMAX(a,b) (a > b ? a : b)
174
175#define bcdtoint(i) ((((i & 0xf0) >> 4) * 10) + (i & 0x0f))
176
177#define alpha_composite(composite, fg, alpha, ralpha, bg) { (composite) = ((fg)*(alpha) + (bg)*(ralpha)) >> 8; }
178
179enum {LEFT=20000, CENTER, RIGHT, TEXTCENTER, TEXTRIGHT};
180enum {TOP=20000, MIDDLE, BOTTOM, TEXTMIDDLE, TEXTBOTTOM};
181enum {BOTTOMLEFT, BOTTOMRIGHT, TOPLEFT, TOPRIGHT};
182enum {LEFTRIGHT=1, TOPBOTTOM, LEFTMIDDLE, TOPMIDDLE};
183enum {NO, YES, AUTONO, AUTOYES};
184enum {UNDEF=0, LISTBOX=1, TEXTBOX=2, CHOICEBOX=4, INPUTBOX=8, INPUTBOXNUM=16, FILELIST=32, PROGRESSBAR=64, MENU=128, MULTIPROGRESSBAR=256, GRID=512, GRIDBR=1024, PASSWORD=2048};
185enum {FRONTENDDEV, DEMUXDEV, VIDEODEV, AUDIODEV, CADEV, CIDEV, FRONTENDDEVDUMMY, DVRDEV, SCDEV};
186enum {TV, RADIO};
187enum {RECDIRECT, RECTIMER, RECTIMESHIFT, RECSTREAM, RECPLAY};
188enum {AC3 = 0, MPEGA = 1, DTS = 2, LPCM = 6, AAC = 8, AACHE = 9};
189enum {MPEGV = 0, MPEG4V = 4, H264 = 1, VC1 = 10};
190enum {ALLCHANNEL, SATCHANNEL, PROVIDERCHANNEL, AZCHANNEL, BOUQUETCHANNEL, SATLIST, PROVIDERLIST, AZLIST, MAINBOUQUETLIST};
191enum {NOMODE, MVMODE, RMMODE, CPMODE, PROTECTMODE, EDITMODE};
192enum {NOTHING, CHANNEL, STILLPIC, RECORDDIRECT, RECORDTIMER, RECORDTIMESHIFT, RECORDSTREAM, TMPOTHER, RECORDPLAY};
193enum {START, PAUSE, STOP};
194enum {DEACTIVE, ACTIVE, INPAUSE, ERROR};
195enum {FUNCTEXT, FUNCPIC, FUNCPROGRESS};
196enum {CASESSIONCREATE, CASESSIONBUSY, CASESSIONDEL, CASESSIONSTART, CASESSIONFINAL, CARESFIRSTENQUIRY, CARESCHANGE, CARESENQUIRY, CADATETIMESEND, CAMMIIDLE, CAMMIDISPLAYREPLAY, CAMMIFAKEOK};
197
198#ifdef BETA
199struct stacktrace
200{
201        int pos;
202        pthread_t thread;
203        void* func[MAXSTACKTRACEFUNC];
204};
205struct stacktrace stacktrace[MAXSTACKTRACE];
206#endif
207
208struct lastsubtitle
209{
210        uint64_t transponderid;
211        int serviceid;
212        int16_t subtitlepid;
213        int16_t subtitleid1;
214        int16_t subtitleid2;
215        struct lastsubtitle* next;
216};
217
218struct newsletter
219{
220        unsigned long nr;
221        char* date;
222        char* title;
223        char* text;
224        struct newsletter* next;
225};
226
227struct oldentry
228{
229        void* entry;
230        //0 = epg
231        int type;
232        time_t del;
233        struct oldentry* next;
234};
235
236struct unicable
237{
238        char* manufacturer;
239        char* product;
240        int scr1;
241        int scr2;
242        int scr3;
243        int scr4;
244        int scr5;
245        int scr6;
246        int scr7;
247        int scr8;
248        int lofl;
249        int lofh;
250        struct unicable* next;
251        struct unicable* prev;
252};
253
254struct id3tag
255{
256        int version;
257        char* title;
258        char* artist;
259        char* album;
260        char* year;
261        char* comment;
262        char* genrecode;
263        char* genretext;
264        char* poster;
265        int track;
266        int len;
267        int picturetype;
268        unsigned int picturepos;
269        unsigned int picturelen;
270};
271
272struct id3genre
273{
274        int code;
275        char text[30];
276};
277
278struct regex
279{
280        char* match1;
281        char* match2;
282        char* match3;
283        char* match4;
284        char* match5;
285        char* match6;
286        char* match7;
287        char* match8;
288        char* match9;
289        char* match10;
290};
291
292struct imdb
293{
294        char* title;
295        char* year;
296        char* rated;
297        char* released;
298        char* genre;
299        char* director;
300        char* writer;
301        char* actors;
302        char* plot;
303        char* poster;
304        char* runtime;
305        char* rating;
306        char* votes;
307        char* id;
308        char* thumb;
309};
310
311struct imdbapi
312{
313        char* title;
314        char* year;
315        char* rated;
316        char* released;
317        char* genre;
318        char* director;
319        char* writer;
320        char* actors;
321        char* plot;
322        char* poster;
323        char* runtime;
324        char* rating;
325        char* votes;
326        char* id;
327};
328
329struct tmdb
330{
331        char* title;
332        char* year;
333        char* rated;
334        char* released;
335        char* genre;
336        char* runtime;
337        char* plot;
338        char* postermid;
339        char* rating;
340        char* votes;
341        char* id;
342        char* backdrop;
343        char* imdbid;
344        char* orgname;
345        char* language;
346        char* type;
347        char* score;
348        char* cover;
349        char* thumb;
350        char* mvi;
351        struct tmdb* prev;
352        struct tmdb* next;
353};
354
355struct mediadbfilter
356{
357        struct mediadb* node;
358        int count;
359        struct mediadbfilter* prev;
360        struct mediadbfilter* next;
361};
362
363struct mediadbcategory
364{
365        int type;
366        char* name;
367        struct mediadbcategory* prev;
368        struct mediadbcategory* next;
369};
370
371struct mediadb
372{
373        char* id;
374        int type;
375        char* title;
376        int year;
377        char* released;
378        char* runtime;
379        char* genre;
380        char* director;
381        char* writer;
382        char* actors;
383        char* plot;
384        char* poster;
385        int rating;
386        int votes;
387        char* path;
388        char* file;
389        char* shortname;
390        char* fileinfo;
391        time_t timestamp;
392        //bit 31: manual change
393        int flag;
394        int backdropcount;
395        struct mediadb* prev;
396        struct mediadb* next;
397};
398
399struct mediadbcache
400{
401        char* path;
402        char* file;
403        struct mediadb* mediadbnode;
404        struct mediadbcache* next;
405};
406
407struct mostzap
408{
409        int serviceid;
410        uint64_t transponderid;
411        int count;
412        struct mostzap* prev;
413        struct mostzap* next;
414};
415
416struct menulist
417{
418        char* name;
419        char* text;
420        char* pic;
421        char* param;
422        char* param1;
423        char* param2;
424        char* param3;
425        int deaktiv;
426        int defaultentry;
427        struct menulist* next;
428};
429
430struct channelhistory
431{
432        struct channel* chnode;
433        char* channellist;
434};
435
436struct queue
437{
438        //0-99 for ca module
439        //101 for thumb thread
440        int type;
441        int flag;
442        int len;
443        void* data;
444        void* data1;
445        struct queue* prev;
446        struct queue* next;
447};
448
449struct casession
450{
451        int inuse;
452        int sessionnr;
453        int action;
454        int state;
455        int mmimanager;
456        int camanager;
457        int datetimemanager;
458        int appmanager;
459        int resmanager;
460        char* mmititle;
461        char* mmisubtitle;
462        char* mmitext;
463        char* mmibottom;
464};
465
466struct caslot
467{
468        struct casession casession[MAXCASESSION];
469        int connid;
470        int poll;
471        int status;
472        int rlen;
473        unsigned char* rbuf;
474        char* name;
475        int fastrun;
476        char* caids;
477};
478
479struct hdd
480{
481        char* device;
482        int partition;
483        unsigned long size;
484        char* filesystem;
485        char* label;
486        char* uuid;
487        char* vendor;
488        char* model;
489        int removable;
490        int read;
491        int write;
492        int sleeptime;
493        int notchanged;
494        struct hdd* prev;
495        struct hdd* next;
496};
497
498struct scaninfo
499{
500        struct dvbdev* fenode;
501        struct transponder* tpnode;
502        struct skin* scanscreen;
503        struct skin* listbox;
504        int threadend;
505        int scantype;
506        int fetype;
507        int orbitalpos;
508        int timeout;
509        int onlyfree;
510        int networkscan;
511        int clear;
512        int blindscan;
513        char* satname;
514        int tpcount;
515        int tpmax;
516        int tpnew;
517        int tvcount;
518        int newtvcount;
519        int radiocount;
520        int newradiocount;
521        int datacount;
522        int newdatacount;
523        int blindcount;
524        int newblindcount;
525        int changename;
526        unsigned int blindmax;
527} scaninfo;
528
529struct screensaver
530{
531        int type;
532        int speed;
533        int newposx;
534        int newposy;
535        int flag;
536        struct skin* screen;
537        struct skin* screennode;
538        struct skin* filelist;
539        struct skin* aktnode;
540        struct pic* pic;
541        char* value;
542        char* path;
543};
544
545struct playlist
546{
547        char* file;
548        struct playlist* prev;
549        struct playlist* next;
550};
551
552struct mainplaylist
553{
554        char* name;
555        char* filename;
556        struct playlist* playlist;
557        struct mainplaylist* prev;
558        struct mainplaylist* next;
559};
560
561struct epgrecord
562{
563        time_t begin;
564        time_t end;
565        int posx;
566        int size;
567        struct epgrecord* prev;
568        struct epgrecord* next;
569};
570
571struct download
572{
573        char* host;
574        char* page;
575        int port;
576        char* filename;
577        char* auth;
578        int connfd;
579        int proz;
580        unsigned int maxkb;
581        unsigned int aktkb;
582        int ret;
583        int timeout;
584        int flag;
585};
586
587struct copyfile
588{
589        char* from;
590        char* to;
591        int proz;
592        int filecount;
593        int maxfilecount;
594        off64_t maxkb;
595        off64_t aktkb;
596        int stop;
597        int ret;
598        int flag;
599};
600
601struct epgscanlist
602{
603        int serviceid;
604        uint64_t transponderid;
605        time_t scantime;
606        struct epgscanlist* prev;
607        struct epgscanlist* next;
608        char* name;
609};
610
611struct rgba
612{
613        char r;
614        char g;
615        char b;
616        char a;
617};
618
619struct subclutentry
620{
621        unsigned char Y, Cr, Cb, T;
622        unsigned char valid;
623};
624
625struct subclut
626{
627        unsigned char clutid;
628        unsigned char clutversionnumber;
629        struct subclutentry entries2bit[4];
630        struct subclutentry entries4bit[16];
631        struct subclutentry entries8bit[256];
632        struct subclut *next;
633};
634
635struct subpagereg
636{
637        int regid;
638        int reghorizontaladdress;
639        int regverticaladdress;
640        int scaleposx, scaleposy;
641        struct subpagereg *next;
642};
643
644struct subregobj
645{
646        int objid;
647        int objtype;
648        int objproviderflag;
649        int objhorizontalpos;
650        int objverticalpos;
651        // not supported right now...
652        int foregroundpixel;
653        int backgroundpixel;
654        struct subregobj *next;
655};
656
657struct subreg
658{
659        int regid;
660        int versionnumber;
661        int height, width;
662        int scaleheight, scalewidth;
663        int depth;
664        unsigned char *buf;
665        struct rgba *palette;
666        int clutid;
667        int committed;
668        struct subregobj *objects;
669        struct subreg *next;
670};
671
672struct subpage
673{
674        int pageid;
675        time_t pagetimeout;
676        int pageversionnumber;
677        int state;
678        int pcssize;
679        struct subpagereg *pageregions;
680        struct subreg *regions;
681        struct subclut *cluts;
682        struct subpage *next;
683};
684
685struct bitstream
686{
687        unsigned char *data;
688        int size;
689        int avail;
690        int consumed;
691};
692
693//there are a copyrectimer function
694//if you change the struct you must change this funktion
695struct rectimer
696{
697        char* name;
698        char* timestamp;
699        time_t begin;
700        time_t end;
701        int repeate;
702        int afterevent;
703        char* pincode;
704        int disabled;
705        int justplay;
706        char* recpath;
707        int servicetype;
708        char* channellist;
709        int serviceid;
710        //0 = nothing
711        //1 = running
712        //2 = end
713        //3 = error
714        //4 = epgscan timer activ
715        //5 = epgscan timer not activ
716        int status;
717        char* errstr;
718        struct service* servicenode;
719        uint64_t transponderid;
720        struct rectimer *prev;
721        struct rectimer *next;
722};
723
724struct inetwork
725{
726        char* device;
727        char* ip;
728        char* netmask;
729        char* mac;
730        char* broadcast;
731        //0 = static
732        //1 = dhcp
733        //2 = off
734        int type;
735        int found;
736        //flag 1 = used in titan
737        int flag;
738        struct inetwork *prev;
739        struct inetwork *next;
740};
741
742struct rcmap
743{
744        char* name;
745        int key;
746        int newkey;
747        struct rcmap* next;
748};
749
750struct splitstr
751{
752        char* part;
753};
754
755struct channelcache
756{
757        int serviceid;
758        uint64_t transponderid;
759        struct channel* chnode;
760        struct channelcache* next;
761};
762
763struct transpondercache
764{
765        uint64_t transponderid;
766        struct transponder* tpnode;
767        struct transpondercache* next;
768};
769
770struct filelist
771{
772        int type;
773        int view;
774        off64_t size;
775        time_t date;
776};
777
778struct skin
779{
780        char* name;
781        unsigned int type;
782        uint8_t wrap;
783        uint8_t bordersize;
784        uint8_t scrollbar;
785        uint16_t halign;
786        uint16_t valign;
787        int16_t posx;
788        int16_t posy;
789        int16_t width;
790        int16_t height;
791        long bordercol;
792        long deaktivcol;
793        long shadowcol;
794        uint8_t shadowsize;
795        uint8_t shadowpos;
796        uint8_t fontsize;
797        uint8_t fontsize2;
798        long fontcol;
799        long fontcol2;
800        char* font;
801        int16_t zorder;
802        int16_t titlealign;
803        char* title;
804        char* text;
805        char* text2;
806        long bgcol;
807        long bgcol2;
808        long titlebgcol;
809        long titlebgcol2;
810        long progresscol;
811        char* selectpic;
812        char* pic;
813        int16_t picwidth;
814        int16_t picheight;
815        uint16_t hspace;
816        uint16_t vspace;
817        char* (*skinfunc)(struct skin*, void*, void*);
818        char* param1;
819        char* param2;
820        char* parent;
821        char* input;
822        char* mask;
823        uint16_t textposx;
824        uint16_t textposx2;
825        int16_t gradient;
826        int16_t titlegradient;
827        uint8_t transparent;
828        uint8_t hidden;
829        uint8_t funcrettype;
830        int8_t charspace;
831        int8_t bordertype;
832        int16_t borderradius;
833        uint16_t bgspace;
834        uint8_t picquality;
835
836        uint8_t titlesize;
837        struct filelist* filelist;
838        struct skin* parentpointer;
839        char* ret;
840        char* choiceboxvalue;
841        unsigned int linecount;
842        unsigned int pagecount;
843        unsigned int poscount;
844        unsigned int gridcol;
845        int aktpage;
846        int aktline;
847        uint8_t scrollbarbordersize;
848        uint8_t prozposx;
849        uint8_t prozposy;
850        uint8_t prozwidth;
851        uint8_t prozheight;
852        uint8_t picprozwidth;
853        uint8_t del;
854        uint8_t picprozheight;
855        int16_t scrollbarheight;
856        int16_t progresssize;
857        int16_t scrollbarwidth;
858        int16_t scrollbarpos;
859        int16_t rposx;
860        int16_t rposy;
861        int16_t rwidth;
862        int16_t rheight;
863        int16_t rpicwidth;
864        int16_t rpicheight;
865        int16_t iposx;
866        int16_t iposy;
867        int16_t iwidth;
868        int16_t iheight;
869        char* handle;
870        char* handle1;
871        struct epgrecord* epgrecord;
872        char* pluginhandle;
873        uint8_t locked;
874        uint8_t picmem;
875        //bit 0: 1 = node is drawed
876        uint8_t flag;
877        struct skin *select;
878        struct skin *child;
879        struct skin *prev;
880        struct skin *next;
881};
882
883struct style
884{
885        char* name;
886        int16_t posx;
887        int16_t posy;
888        int16_t width;
889        int16_t height;
890        int16_t picwidth;
891        int16_t picheight;
892        uint16_t textposx;
893        uint16_t textposx2;
894        uint16_t halign;
895        uint16_t valign;
896        uint16_t hspace;
897        uint16_t vspace;
898        uint16_t bgspace;
899        int16_t borderradius;
900        int16_t titlealign;
901        int16_t zorder;
902        int16_t gradient;
903        int16_t titlegradient;
904        uint8_t picquality;
905        uint8_t hidden;
906        uint8_t wrap;
907        uint8_t scrollbar;
908        uint8_t bordersize;
909        int8_t bordertype;
910        uint8_t shadowsize;
911        uint8_t shadowpos;
912        uint8_t fontsize;
913        uint8_t fontsize2;
914        int8_t charspace;
915        uint8_t transparent;
916        uint8_t prozposx;
917        uint8_t prozposy;
918        uint8_t prozwidth;
919        uint8_t prozheight;
920        uint8_t picprozwidth;
921        uint8_t picprozheight;
922        uint8_t funcrettype;
923        uint8_t picmem;
924        long bordercol;
925        long deaktivcol;
926        long progresscol;
927        long shadowcol;
928        long fontcol;
929        long fontcol2;
930        long titlebgcol;
931        long titlebgcol2;
932        long bgcol;
933        long bgcol2;
934        char* font;
935        char* pic;
936        char* param1;
937        char* param2;
938        char* input;
939        char* mask;
940        char* (*skinfunc)(struct skin*, void*, void*);
941        struct style* next;
942};
943
944struct epg
945{
946        int eventid;
947        int version;
948        time_t starttime;
949        time_t endtime;
950        char* title;
951        char* subtitle;
952        char* desc;
953        int desclen;
954        int desccomplen;
955        int parentalrating;
956        struct epg* prev;
957        struct epg* next;
958};
959
960struct shutdowntimer
961{
962        int active,type; //type: 0=DeepStandby, 1=Standby
963        long long shutdown_time;
964};
965
966struct dvbdev
967{
968        char* dev;
969        int fd;
970        uint8_t type;
971        uint8_t adapter;
972        uint8_t devnr;
973        uint8_t felock;
974        uint8_t deactive;
975        struct transponder* felasttransponder;
976        struct transponder* feakttransponder;
977        int feunicable;
978        unsigned int feloffrequency;
979        int feaktband;
980        int feaktpolarization;
981        fe_sec_voltage_t feaktvolt;
982        fe_sec_tone_mode_t feakttone;
983        int fedmxsource;
984        char* feaktnr;
985        char* feshortname;
986        struct dvb_frontend_info* feinfo;
987        struct caslot* caslot;
988        struct dvbdev *next;
989};
990
991//there are a copytransponder and createtransponder function
992//if you change this struct you must change the function
993struct transponder
994{
995        uint64_t id;
996        uint8_t fetype;
997        uint8_t polarization;
998        uint8_t modulation;
999        uint8_t fec;
1000        uint8_t pilot;
1001        uint8_t rolloff;
1002        uint8_t inversion;
1003        uint8_t system;
1004        uint8_t flag;
1005        // 0 = unknown
1006        // 1 = tunable
1007        // 2 = not tunable
1008        uint8_t tunablestatus;
1009        int orbitalpos;
1010        unsigned int frequency;
1011        unsigned int symbolrate;
1012        int encoding;
1013        time_t lastepg;
1014        struct transponder *next;
1015};
1016
1017struct provider
1018{
1019        int providerid;
1020        char* name;
1021        int flag;
1022        struct provider *prev;
1023        struct provider *next;
1024};
1025
1026struct subtitle
1027{
1028        char* name;
1029        int16_t subtype;
1030        int16_t pid;
1031        int16_t type;
1032        int16_t id1;
1033        int16_t id2;
1034        struct subtitle* next;
1035};
1036
1037struct esinfo
1038{
1039        int streamtype;
1040        int pid;
1041        struct esinfo* next;
1042};
1043
1044struct cadesc
1045{
1046        int pid;
1047        int len;
1048        int systemid;
1049        int reserved;
1050        int capid;
1051        char* privat;
1052        struct cadesc* next;
1053};
1054
1055struct pmt
1056{
1057        int programnumber;
1058        int versionnumber;
1059        int currentnextindicator;
1060};
1061
1062struct audiotrack
1063{
1064        char* name;
1065        uint8_t audiocodec;
1066        int16_t audiopid;
1067        int16_t rdspid;
1068        struct audiotrack* next;
1069};
1070
1071struct linkedchannel
1072{
1073        uint64_t transponderid;
1074        int serviceid;
1075        time_t starttime;
1076        time_t endtime;
1077        struct linkedchannel* next;
1078};
1079
1080//there are a createchannel function
1081//if you change this struct you must change the function
1082struct channel
1083{
1084        char* name;
1085        uint64_t transponderid;
1086        int providerid;
1087        int serviceid;
1088        int servicetype;
1089        uint8_t flag;
1090        uint8_t crypt;
1091        int8_t videocodec;
1092        int8_t audiocodec;
1093        int16_t videopid;
1094        int16_t audiopid;
1095        int16_t ac3audiopid;
1096        int16_t txtpid;
1097        int16_t pcrpid;
1098        int16_t pmtpid;
1099        int16_t aitpid;
1100        uint8_t protect;
1101        char* hbbtvurl;
1102        struct transponder *transponder;
1103        struct provider *provider;
1104        struct audiotrack *audiotrack;
1105        struct subtitle *subtitle;
1106        struct linkedchannel *linkedchannel;
1107        struct pmt *pmt;
1108        struct cadesc *cadesc;
1109        struct esinfo *esinfo;
1110        struct epg *epg;
1111        struct channel *prev;
1112        struct channel *next;
1113};
1114
1115struct sat
1116{
1117        char* name;
1118        int orbitalpos;
1119        int flag;
1120        int fetype;
1121        int scan;
1122        struct sat *prev;
1123        struct sat *next;
1124};
1125
1126struct service
1127{
1128        int type;
1129        char* channellist;
1130        struct dvbdev *fedev;
1131        struct dvbdev *dmxaudiodev;
1132        struct dvbdev *dmxvideodev;
1133        struct dvbdev *dmxpcrdev;
1134        struct dvbdev *dmxsubtitledev;
1135        struct dvbdev *audiodev;
1136        struct dvbdev *videodev;
1137        struct transponder *transponder;
1138        struct channel *channel;
1139        unsigned char *pmtbuf;
1140        int pmtlen;
1141        int recdmxstart;
1142        int recdstfd;
1143        int recsrcfd;
1144        time_t recendtime;
1145        char* rectimestamp;
1146        size_t reclastsync;
1147        off64_t rectotal;
1148        int reccount;
1149        int tssize;
1150        char* recname;
1151        unsigned long long lenpts;
1152        unsigned long long startpts;
1153        unsigned long long endpts;
1154        unsigned long long bitrate;
1155        off64_t endoffile;
1156        struct service *next;
1157};
1158
1159struct caservice
1160{
1161        struct service* service;
1162        struct channel* channel;
1163        int count;
1164        int camsockfd;
1165        struct caslot* caslot;
1166        int camanager;
1167        char* capmt;
1168        int capmtlen;
1169        int cmdpos;
1170};
1171
1172struct stimerthread
1173{
1174        int delay;
1175        int count;
1176        int notfirst;
1177        pthread_attr_t attr;
1178        pthread_t thread;
1179        int status;
1180        int aktion;
1181        //bit 0: 1 = stop allwas on titan end
1182        int flag;
1183        void* param1;
1184        void* param2;
1185        void* (*func)(struct stimerthread*, void*, void*);
1186        struct stimerthread* next;
1187};
1188
1189struct hddparm
1190{
1191        char* device;
1192        int read;
1193        int write;
1194        int sleeptime;
1195        int notchanged;
1196};
1197
1198struct marker
1199{
1200        off64_t pos;
1201        off64_t time;
1202        char* timetext;
1203        struct marker* prev;
1204        struct marker* next;
1205};
1206
1207struct status
1208{
1209        int longkeycode[MAXLONGKEY];
1210        //aktivate extra featers
1211        int expertmodus;
1212        //http user:passwd
1213        char* httpauth;
1214        //set to 1 if channellist or channelnr open
1215        int channelswitch;
1216        //deaktivates child protect if greater then akttime
1217        time_t protecttime;
1218        char* boxtype;
1219        pthread_t mainthread;
1220        //videosize from stream
1221        video_size_t videosize;
1222        time_t videosizevalid;
1223        //radius for rounded border
1224        int borderradius;
1225        int picbordersize;
1226        int titlelinesize;
1227        //0 border
1228        //1 fullbar
1229        int listboxselecttype;
1230        //0 camd.socket
1231        //1 pmt.tmp
1232        int pmtmode;
1233        //timer for del old epg entrys
1234        time_t deloldepg;
1235        //write epg periodic to medium
1236        time_t writeperiodicepg;
1237        //0 dektiv
1238        //1 only scan
1239        //2 only whitlist
1240        //3 scan and whitelist
1241        int epglistmode;
1242        // 1 manual
1243        // 2 from standby
1244        int startmode;
1245        jmp_buf longjumpbuf;
1246        pthread_mutex_t drawingmutex;
1247        pthread_mutex_t rectimermutex;
1248        pthread_mutex_t servicemutex;
1249        pthread_mutex_t epgmutex;
1250        pthread_mutex_t channelmutex;
1251        pthread_mutex_t timerthreadmutex;
1252        pthread_mutex_t audiotrackmutex;
1253        pthread_mutex_t subtitlemutex;
1254        pthread_mutex_t linkedchannelmutex;
1255        pthread_mutex_t dmxdevmutex;
1256        pthread_mutex_t rcmutex;
1257        pthread_mutex_t queuemutex;
1258        pthread_mutex_t clistmutex;
1259        pthread_mutex_t hddmutex;
1260        pthread_mutex_t tsseekmutex;
1261        pthread_mutex_t accelfbmutex;
1262        pthread_mutex_t mediadbmutex;
1263        pthread_mutex_t oldentrymutex;
1264        pthread_mutex_t newslettermutex;
1265        pthread_mutex_t tithekmutex;
1266        pthread_mutex_t inetworkmutex;
1267        pthread_mutex_t textboxmutex;
1268        pthread_mutex_t setaktresmutex;
1269        pthread_mutex_t waitrcmutex;
1270        // mutex for VFD handling
1271        pthread_mutex_t vfdmutex;
1272        off64_t recsplitsize;
1273        char* gateway;
1274        char* dnsserver1;
1275        char* dnsserver2;
1276        int fasttextrender;
1277        // 1 release all menus
1278        int menurelease;
1279        int play;
1280        int pause;
1281        int playspeed;
1282        int slowspeed;
1283        int random;
1284        int repeat;
1285        int epgdays;
1286        int spinnertime;
1287        int spinnerspeed;
1288        int hangtime;
1289        int timeupdatecount;
1290        int markmodus;
1291        // 1 from main prog
1292        // 2 from a thread
1293        int standby;
1294        char* tmp;
1295        // rc filedescriptor
1296        int fdrc;
1297        // rc filedescriptor for tuxtxt
1298        int fdrctxt;
1299        int writeconfig;
1300        int writeownconfig;
1301        int writercconfig;
1302        int writeskinconfig;
1303        int writechannel;
1304        int writetransponder;
1305        int writeprovider;
1306        int writemainbouquet;
1307        int writebouquet;
1308        int writemainplaylist;
1309        int writeplaylist;
1310        int writesat;
1311        int writerectimer;
1312        int writeepgscanlist;
1313        int writemostzap;
1314        int writemediadb;
1315        int writelastsubtitle;
1316        int writechannelslot;
1317        // 1 mute is aktiv
1318        int mute;
1319        // 1 spinner is aktiv
1320        int spinner;
1321        // 1 infobar is aktiv
1322        // 2 infobar is aktiv (with wait befor show)
1323        // 3 infobar is aktiv (no autohide)
1324        int infobar;
1325        // with infobar to display
1326        int infobarnr;
1327        // 0 is for mute screen
1328        struct skin *drawallways[1];
1329        char* drawallwaysbg[1];
1330        int usedirectfb;
1331        // count how long last rcwait (shows spinner if to long)
1332        time_t sec;
1333        // if set to a value != 0, rcwait returns this number
1334        int rckey;
1335        struct skin* skinerr;
1336        pthread_attr_t timerthreadattr;
1337        pthread_t timerthread;
1338        int timerthreadstatus;
1339        int timerthreadaktion;
1340        pthread_attr_t subthreadattr;
1341        pthread_t subthread;
1342        int subthreadstatus;
1343        int subthreadaktion;
1344        int subthreadpid;
1345        int subthreadid1;
1346        int subthreadid2;
1347        // epg thread pointer
1348        struct stimerthread* epgthread;
1349        // epgscanlist thread pointer
1350        struct stimerthread* epgscanlistthread;
1351        // httpd thread pointer
1352        struct stimerthread* httpthread;
1353        // rguid thread pointer
1354        struct stimerthread* rguithread;
1355        // mediadb thread pointer
1356        struct stimerthread* mediadbthread;
1357        // newsletter thread pointer
1358        struct stimerthread* newsletterthread;
1359        // thumb thread pointer
1360        struct stimerthread* thumbthread;
1361        // rectimer thread
1362        struct stimerthread* rectimerthread;
1363        // rguid sock filedescriptor for rguid
1364        int rguidfd;
1365        struct service* aktservice;
1366        struct service* lastservice;
1367        struct service* pipservice;
1368        struct channel* markedchannel;
1369        //if we are in a epg screen, this is the showen channel
1370        struct channel* epgchannel;
1371        char* configfile;
1372        // for bouquet channel numbering
1373        int bouquetnr[MAXSERVICETYPE];
1374        int servicetype;
1375        struct shutdowntimer *sd_timer;
1376        // akt pos in channel cache
1377        int channelcachepos;
1378        // aktivate/deaktivate auto updatevfd
1379        int updatevfd;
1380        // count for recording
1381        int recording;
1382        // count for streaming
1383        int streaming;
1384        // timeshift running = 1, ending = 2
1385        int timeshift;
1386        // 0 = normal, 1 = permanent timeshift
1387        int timeshifttype;
1388        // position in timeshiftfile to seek
1389        off64_t timeshiftpos;
1390        // ask if timeshift is running and switch channel
1391        int asktimeshift;
1392        // ts playing running = 1
1393        int playing;
1394        // if set to a skin (screenpointer) only this screen has rc
1395        struct skin* rcowner;
1396        struct skin* rcstandby;
1397        // timerstuktur fuer autores
1398        struct stimerthread* restimer;
1399        // spindown USB/HDD
1400        struct hddparm hdd[3];
1401        struct stimerthread* addhddall;
1402        // save old rotor position
1403        int rotoroldorbitalpos;
1404        // security check
1405        int security;
1406        // set to 1 if tvpic size is changed
1407        int tvpic;
1408        // timestamp for rc action
1409        time_t lastrcaction;
1410        // show timeline in channellist for each channel
1411        int showchanneltimeline;
1412        // see player.h for details
1413        int playercan;
1414                //Code von infobar.h aktiv = 1
1415        int infobaraktiv;
1416        //Name der Datei die abgespielt wird
1417        char* playfile;
1418        //Code MC aktiv = 1
1419        int mcaktiv;
1420        //greater 0 aktivate screen animation
1421        int screenanim;
1422        int screenanimspeed;
1423        //for auto increase audio vol
1424        int volautochange;
1425        int volautochangevalue;
1426        //for powerofftimer
1427        time_t fixpowerofftime;
1428        //for write FB in File
1429        int write_png;
1430        int write_jpg;
1431        //holds oversize value for blitter
1432        int leftoffset;
1433        int rightoffset;
1434        int topoffset;
1435        int bottomoffset;
1436        //background picture for all screens
1437        char* bgpic;
1438        //time for next picmem timeout check
1439        time_t picmemtimeout;
1440        time_t defpicmemtimeout;
1441        //show not tunable channel hidden (0)) or deaktive (1) in channellist
1442        int channellistview;
1443        //for blockmove in channellist
1444        int moveblockcount;
1445        //name ob file who played from webig
1446        char* webplayfile;
1447        //status of mediadbthread
1448        int mediadbthreadstatus;
1449        //for save mediadb in scan
1450        time_t mediadbsavetime;
1451        //colors / pic for selection
1452        long markcol;
1453        long filelistselectcol;
1454        long listboxselectcol;
1455        char* selectpic;
1456        //check if cam can decrypt channel
1457        int checkcamdecrypt;
1458        //don't send privat part of cadescriptor in capmt
1459        int caskipprivat;
1460        //send all caids or only caids cam can
1461        int casendallcaids;
1462        //show hidden files in filelist
1463        int showhiddenfiles;
1464        //mediadb
1465        int mediadbfiles;
1466        //show infobar on program change
1467        int infobarprogram;
1468        //for auto increase audio vol (mute)
1469        int volmute;
1470        int secondzap;
1471        //pointer to marker for recordings
1472        struct marker* playmarker;
1473        int autosubtitle;
1474        //save timeshift start time
1475        time_t timeshiftstart;
1476        int crosscontrol;
1477        int autochangechannelname;
1478        //tuxtext is running
1479        int tuxtxt;
1480        //on some fat32 hdd it takes very long to get free size
1481        int showrecfreesize;
1482        int firstunicablewait;
1483        //path for imdbfolder
1484        char* imdbfolderpath;
1485        int virtualzap;
1486        int fontsizeadjust;
1487        //count for drawing screen
1488        unsigned int drawscreencount;
1489} status;
1490
1491struct fb
1492{
1493        int dev;
1494        char *name;
1495        int fd;
1496        unsigned char *fb;
1497        unsigned long *fblong;
1498        int width;
1499        int height;
1500        int pitch;
1501        unsigned long fixfbsize;
1502        unsigned long varfbsize;
1503        int colbytes;
1504        struct fb *next;
1505};
1506
1507struct rc
1508{
1509        int key;
1510        void (*rcfunc)(struct skin*, struct skin*, int screencalc, int filelistview, int flag);
1511        struct skin *screen;
1512        struct skin *screennode;
1513        struct skin *owner;
1514        struct rc *next;
1515};
1516
1517struct clist
1518{
1519        char *key;
1520        char *value;
1521        char *def;
1522        char *tmp;
1523        struct clist *next;
1524};
1525
1526struct bouquet
1527{
1528        int nr;
1529        int serviceid;
1530        uint64_t transponderid;
1531        struct channel *channel;
1532        struct bouquet *prev;
1533        struct bouquet *next;
1534};
1535
1536struct channelslot
1537{
1538        int slot;
1539        int serviceid;
1540        uint64_t transponderid;
1541        struct channelslot *next;
1542};
1543
1544struct mainbouquet
1545{
1546        char *name;
1547        int type;
1548        char *filename;
1549        struct bouquet *bouquet;
1550        struct mainbouquet *prev;
1551        struct mainbouquet *next;
1552};
1553
1554struct pic
1555{
1556        char* name;
1557        unsigned char* picbuf;
1558        // < 0 when picbuf is normal mem (hw jpg)
1559        int memfd;
1560        unsigned long width;
1561        unsigned long height;
1562        unsigned long rowbytes;
1563        int channels;
1564  int timeout;
1565  time_t lastaccess;
1566        int del;
1567        struct pic* next;
1568};
1569
1570struct font
1571{
1572        char *name;
1573        FT_Error error;
1574        FTC_Manager manager;
1575        FTC_SBitCache cache;
1576        FTC_ImageTypeRec desc;
1577        FT_Face face;
1578        FT_UInt prev_glyphindex;
1579        FT_Bool use_kerning;
1580        struct font *next;
1581};
1582
1583//structure for write fb to File
1584struct writeFBfile
1585{
1586        unsigned char* ActBuf;
1587        unsigned char* buf1;
1588        unsigned char* buf2;
1589} writeFBfile;
1590
1591struct eit
1592{
1593        u_char table_id                               /*:8*/;
1594        u_char section_length_hi                      :4;
1595        u_char                                        :3;
1596        u_char section_syntax_indicator               :1;
1597        u_char section_length_lo                      /*:8*/;
1598        u_char service_id_hi                          /*:8*/;
1599        u_char service_id_lo                          /*:8*/;
1600        u_char current_next_indicator                 :1;
1601        u_char version_number                         :5;
1602        u_char                                        :2;
1603        u_char section_number                         /*:8*/;
1604        u_char last_section_number                    /*:8*/;
1605        u_char transport_stream_id_hi                 /*:8*/;
1606        u_char transport_stream_id_lo                 /*:8*/;
1607        u_char original_network_id_hi                 /*:8*/;
1608        u_char original_network_id_lo                 /*:8*/;
1609        u_char segment_last_section_number            /*:8*/;
1610        u_char segment_last_table_id                  /*:8*/;
1611        u_char data[]; /* struct eitevent */
1612};
1613#define EITLEN sizeof(struct eit)
1614#define GETEITSECLEN(x) HILO(((struct eit*)(x))->section_length)
1615
1616struct eitevent
1617{
1618        u_char event_id_hi                            /*:8*/;
1619        u_char event_id_lo                            /*:8*/;
1620        u_char mjd_hi                                 /*:8*/;
1621        u_char mjd_lo                                 /*:8*/;
1622        u_char start_time_h                           /*:8*/;
1623        u_char start_time_m                           /*:8*/;
1624        u_char start_time_s                           /*:8*/;
1625        u_char duration_h                             /*:8*/;
1626        u_char duration_m                             /*:8*/;
1627        u_char duration_s                             /*:8*/;
1628        u_char descriptors_loop_length_hi             :4;
1629        u_char free_ca_mode                           :1;
1630        u_char running_status                         :3;
1631        u_char descriptors_loop_length_lo             /*:8*/;
1632        u_char data[];
1633};
1634#define EITEVENTLEN sizeof(struct eitevent)
1635#define GETEITDESCLEN(x) HILO(((struct eitevent *)x)->descriptors_loop_length)
1636
1637struct eitshortevent
1638{
1639        u_char descriptor_tag                         /*:8*/;
1640        u_char descriptor_length                      /*:8*/;
1641        u_char lang_code1                             /*:8*/;
1642        u_char lang_code2                             /*:8*/;
1643        u_char lang_code3                             /*:8*/;
1644        u_char event_name_length                      /*:8*/;
1645        u_char data[];
1646};
1647#define EITSHORTEVENTLEN sizeof(struct eitshortevent)
1648
1649struct eitlongevent
1650{
1651        u_char descriptor_tag                         /*:8*/;
1652        u_char descriptor_length                      /*:8*/;
1653        u_char last_descriptor_number                 :4;
1654        u_char descriptor_number                      :4;
1655        u_char lang_code1                             /*:8*/;
1656        u_char lang_code2                             /*:8*/;
1657        u_char lang_code3                             /*:8*/;
1658        u_char length_of_items                        /*:8*/;
1659        u_char data[]; /* struct eitlongeventitem */
1660};
1661#define EITLONGEVENTLEN sizeof(struct eitlongevent)
1662
1663struct eitlongeventitem
1664{
1665        u_char item_description_length               /*:8*/;
1666        u_char data[];
1667};
1668#define EITLONGEVENTITEMLEN sizeof(struct eitlongeventitem)
1669
1670struct eitlinkage
1671{
1672        u_char descriptor_tag                 /*:8*/;
1673        u_char descriptor_length              /*:8*/;
1674        u_char transport_stream_id_hi         /*:8*/;
1675        u_char transport_stream_id_lo         /*:8*/;
1676        u_char original_network_id_hi         /*:8*/;
1677        u_char original_network_id_lo         /*:8*/;
1678        u_char service_id_hi                  /*:8*/;
1679        u_char service_id_lo                  /*:8*/;
1680        u_char linkage_type                   /*:8*/;
1681};
1682#define EITLLINKAGELEN sizeof(struct eitlinkage)
1683
1684struct parentalrating
1685{
1686        u_char descriptor_tag                 /*:8*/;
1687        u_char descriptor_length              /*:8*/;
1688        u_char data[]; //struct parental_rating_item
1689};
1690#define PARENTALRATINGLEN sizeof(struct parentalrating)
1691
1692struct parentalratingitem
1693{ 
1694        u_char lang_code1                    /*:8*/;
1695        u_char lang_code2                    /*:8*/;
1696        u_char lang_code3                    /*:8*/;
1697        u_char rating                        /*:8*/;
1698};
1699#define PARENTALRATINGITEMLEN sizeof(struct parentalratingitem)
1700
1701struct rst //table id 0x71
1702{ 
1703        u_char table_id                     /*:8*/;
1704        u_char section_syntax_indicator         :1;
1705        u_char reserved_1                       :1;
1706        u_char reserved_2                       :2;
1707        u_int section_length                   :12;
1708};
1709#define RSTLEN sizeof(struct rst)
1710
1711struct rstitem
1712{ 
1713        u_char transponder_stream_id_hi     /*:8*/;
1714        u_char transponder_stream_id_lo     /*:8*/;
1715        u_char original_network_id_hi       /*:8*/;
1716        u_char original_network_id_lo       /*:8*/;
1717        u_char service_id_hi                /*:8*/;
1718        u_char service_id_lo                /*:8*/;
1719        u_char event_id_hi                  /*:8*/;
1720        u_char event_id_lo                  /*:8*/;
1721        u_char reserved_1                       :5;
1722        u_char running_status                   :3;
1723};
1724#define RSTITEMLEN sizeof(struct rstitem)
1725
1726struct mhwchannel
1727{
1728        u_char  network_id_hi;
1729        u_char  network_id_lo;
1730        u_char  transponder_id_hi;
1731        u_char  transponder_id_lo;
1732        u_char  channel_id_hi;
1733        u_char  channel_id_lo;
1734        u_char  name[16];
1735};
1736#define MHWCHANNELLEN sizeof(struct mhwchannel)
1737
1738struct mhwtitle
1739{
1740        u_char table_id                       :8;
1741        u_char section_length_hi              :4;
1742        u_char                                :2;
1743        u_char dummy                          :1;
1744        u_char section_syntax_indicator       :1;
1745        u_char section_length_lo              :8;
1746        u_char channel_id                     :8;
1747        u_char theme_id                       :8;
1748        u_char hours                                  :5;
1749        u_char day                            :3;
1750        u_char summary_available              :1;
1751        u_char                                      :1;
1752        u_char minutes                        :6;
1753        u_char                                :8;
1754        u_char                                :8;
1755        u_char duration_hi                    :8;
1756        u_char duration_lo                    :8;
1757        u_char title                          [23];
1758        u_char ppv_id_hi                      :8;
1759        u_char ppv_id_mh                      :8;
1760        u_char ppv_id_ml                      :8;
1761        u_char ppv_id_lo                      :8;
1762        u_char program_id_hi                  :8;
1763        u_char program_id_mh                  :8;
1764        u_char program_id_ml                  :8;
1765        u_char program_id_lo                  :8;
1766        u_char                                :8;
1767        u_char                                :8;
1768        u_char                                :8;
1769        u_char                                :8;
1770};
1771#define MHWTITLELEN sizeof(struct mhwtitle)
1772
1773struct mhwsummary
1774{
1775        u_char table_id                       :8;
1776        u_char section_length_hi              :4;
1777        u_char                                :2;
1778        u_char dummy                          :1;
1779        u_char section_syntax_indicator       :1;
1780        u_char section_length_lo              :8;
1781        u_char program_id_hi                  :8;
1782        u_char program_id_mh                  :8;
1783        u_char program_id_ml                  :8;
1784        u_char program_id_lo                  :8;
1785        u_char                                :8;
1786        u_char                                :8;
1787        u_char                                :8;
1788        u_char nb_replays                     :8;
1789};
1790#define MHWSUMMARYLEN sizeof(struct mhwsummary)
1791
1792struct mhw2channel
1793{
1794        u_char network_id_hi;
1795        u_char network_id_lo;
1796        u_char transponder_id_hi;
1797        u_char transponder_id_lo;
1798        u_char channel_id_hi;
1799        u_char channel_id_lo;
1800        u_char                                :8;
1801        u_char                                :8;
1802};
1803
1804struct extepgcache
1805{
1806        long id;
1807        struct epg* epgnode;
1808        struct extepgcache* next;
1809};
1810
1811struct extepgchannel
1812{
1813        long id;
1814        int serviceid;
1815        uint64_t transponderid;
1816        struct extepgchannel* next;
1817};
1818
1819struct extepgconfig
1820{
1821        uint64_t transponderid;
1822        int type;
1823        char* file;
1824        int channelpid;
1825        int titlepid[8];
1826        int summarypid[8];
1827        struct extepgconfig* next;
1828};
1829
1830struct blacklist
1831{
1832  char* file;
1833  struct splitstr* splitstr;
1834  int count;
1835};
1836
1837typedef struct sci_modes
1838{
1839        int emv2000;
1840        int dma;
1841        int man_act;
1842        int rw_mode;
1843} scimodes;
1844
1845typedef struct sci_parameters
1846{
1847        u_char T;
1848        unsigned long fs;
1849        unsigned long ETU;
1850        unsigned long WWT;
1851        unsigned long CWT;
1852        unsigned long BWT;
1853        unsigned long EGT;
1854        unsigned long clock_stop_polarity;
1855        u_char check;
1856        u_char P;
1857        u_char I;
1858        u_char U;
1859} sciparameters;
1860
1861#endif
Note: See TracBrowser for help on using the repository browser.