source: titan/titan/struct.h @ 20107

Last change on this file since 20107 was 20107, checked in by nit, 8 years ago

[titan] fix epgscan wakeup

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