source: titan/titan/struct.h @ 10876

Last change on this file since 10876 was 10876, checked in by nit, 11 years ago

[titan] change caslot struct

File size: 24.2 KB
Line 
1#ifndef STRUCT_H
2#define STRUCT_H
3
4#define _GNU_SOURCE
5
6#ifdef SIMULATE
7#include <mcheck.h>
8#endif
9
10#include <stdio.h>
11#include <stdlib.h>
12#include <stdint.h>
13#include <string.h>
14#include <libgen.h>
15#include <fcntl.h>
16#include <ctype.h>
17#include <linux/fb.h>
18#include <sys/ioctl.h>
19#include <sys/mman.h>
20#include <bpamem.h>
21#include <png.h>
22#include <jpeglib.h>
23#include <libmmeimage.h>
24#include <libintl.h>
25#include <locale.h>
26#include <math.h>
27#include <linux/input.h>
28#include <sys/wait.h>
29#include <time.h>
30#include <dirent.h>
31#include <fnmatch.h>
32#include <dlfcn.h>
33#include <pthread.h>
34#include <linux/dvb/frontend.h>
35#include <linux/dvb/dmx.h>
36#include <linux/dvb/audio.h>
37#include <linux/dvb/video.h>
38#include <sys/vfs.h>
39#include <inttypes.h>
40#include <sys/socket.h>
41#include <sys/un.h>
42#include <unistd.h>
43#include <zlib.h>
44#include <net/if.h>
45#include <netinet/in.h>
46#include <arpa/inet.h>
47#include <netdb.h>
48#include <errno.h>
49#include <linux/dvb/version.h>
50#include <setjmp.h>
51#include <sys/mount.h>
52#include <execinfo.h>
53#include <ifaddrs.h>
54#include <linux/dvb/ca.h>
55#include <poll.h>
56
57#ifndef SIMULATE
58#include <linux/stmfb.h>
59#endif
60
61//for freetype
62#include <ft2build.h>
63#include FT_FREETYPE_H
64#include FT_CACHE_H
65
66//for eplayer
67#ifdef EPLAYER3
68#include <common.h>
69#endif
70
71#ifdef EPLAYER4
72#include <gst/gst.h>
73#include <gst/pbutils/missing-plugins.h>
74#endif
75
76#define VERSION "1.2"
77#define PROGNAME "titan"
78#define COPYRIGHT "NIT"
79#define CRONTRIBUT "obi, black, dvboxer, oxygen, gost"
80
81#define _(x) gettext(x)
82#define MINMALLOC 4096
83#define SCROLLBARWIDTH 15
84#define SCROLLBARBORDERSIZE 1
85#define FONTPOSYOFFSET -3
86#define FB "fb0"
87#define FB1 "fb1"
88#define SKINFB "skinfb"
89#define ACCELFB "accelfb"
90#define CONFIGFILE PROGNAME".cfg"
91#define KILLPROG "killall -9 "PROGNAME
92#define REBOOT "init 6"
93#define FILELISTDELMARK 255
94#define PLUGINDELMARK 254
95#define MAXDVBADAPTER 2
96#define MAXFRONTENDDEV 4
97#define MAXDEMUXDEV 4
98#define MAXDEMUXDEVOPEN 10
99#define MAXAUDIODEV 4
100#define MAXVIDEODEV 4
101#define MAXCIDEV 4
102#define MAXCADEV 4
103#define MAXDVRDEV 4
104#define RCTIMEOUT 999999
105#define RCTHREADSTANDBY 999998
106#define MAXSERVICETYPE 10
107#define TSSIZE 188
108#define CHANNELCACHEMAX 1000
109#define MAXHTTPDCONN 20
110#define MAXHTMLLINE 300
111#define LISTHASHSIZE 27
112#define MAXCASESSION 16
113
114//CA Defines
115#define T_SB 0x80               //sb (h<--m)
116#define T_RCV 0x81              //receive (h-->m)
117#define T_CREATE_T_C 0x82       //create transport connection (h-->m)
118#define T_C_T_C_REPLY 0x83      //ctc reply (h<--m)
119#define T_DELETE_T_C 0x84       //delete tc (h<->m)
120#define T_D_T_C_REPLY 0x85      //dtc reply (h<->m)
121#define T_REQUEST_T_C 0x86      //request transport connection (h<--m)
122#define T_NEW_T_C 0x87          //new tc - reply to t_request (h-->m)
123#define T_T_C_ERROR 0x77        //error creating tc (h-->m)
124#define T_DATA_LAST 0xA0        //convey data from higher (h<->m)
125#define T_DATA_MORE 0xA1        //convey data from higher (h<->m)
126
127// VFD icons supported (more or less) on all boxes:
128typedef 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;
129
130#define MIN(a,b) (a < b ? a : b)
131#define MAX(a,b) (a > b ? a : b)
132
133#define bcdtoint(i) ((((i & 0xf0) >> 4) * 10) + (i & 0x0f))
134
135#define alpha_composite(composite, fg, alpha, bg) { \
136unsigned short temp = ((unsigned short)(fg)*(unsigned short)(alpha) +   \
137(unsigned short)(bg)*(unsigned short)(255 - (unsigned short)(alpha)) +  \
138(unsigned short)128);  \
139(composite) = (unsigned char)((temp + (temp >> 8)) >> 8); }
140
141enum {LEFT=20000, CENTER, RIGHT};
142enum {TOP=20000, MIDDLE, BOTTOM};
143enum {BOTTOMLEFT, BOTTOMRIGHT, TOPLEFT, TOPRIGHT};
144enum {LEFTRIGHT=1, TOPBOTTOM, LEFTMIDDLE, TOPMIDDLE};
145enum {NO, YES, AUTONO, AUTOYES};
146enum {UNDEF, LISTBOX, TEXTBOX, CHOICEBOX, INPUTBOX, INPUTBOXNUM, FILELIST, PROGRESSBAR, MENU, MULTIPROGRESSBAR, GRID, GRIDBR, TEXTBOXGRIDBR};
147enum {FRONTENDDEV, DEMUXDEV, VIDEODEV, AUDIODEV, CADEV, CIDEV, FRONTENDDEVDUMMY, DVRDEV};
148enum {TV, RADIO};
149enum {RECDIRECT, RECTIMER, RECTIMESHIFT, RECSTREAM, RECPLAY};
150enum {AC3 = 0, MPEGA = 1, DTS = 2, LPCM = 6, AAC = 8, AACHE = 9};
151enum {MPEGV = 0, MPEG4V = 4, H264 = 1};
152enum {ALLCHANNEL, SATCHANNEL, PROVIDERCHANNEL, AZCHANNEL, BOUQUETCHANNEL, SATLIST, PROVIDERLIST, AZLIST, MAINBOUQUETLIST};
153enum {NOMODE, MVMODE, RMMODE, CPMODE, PROTECTMODE};
154enum {NOTHING, CHANNEL, STILLPIC, RECORDDIRECT, RECORDTIMER, RECORDTIMESHIFT, RECORDSTREAM, TMPOTHER, RECORDPLAY};
155enum {START, PAUSE, STOP};
156enum {DEACTIVE, ACTIVE, INPAUSE, ERROR};
157enum {FUNCTEXT, FUNCPIC, FUNCPROGRESS};
158enum {CASESSIONCREATE, CASESSIONBUSY, CASESSIONDEL, CASESSIONSTART, CASESSIONFINAL, CARESFIRSTENQUIRY, CARESCHANGE, CARESENQUIRY, CADATETIMESEND, CAMMIIDLE, CAMMIDISPLAYREPLAY, CAMMIFAKEOK};
159
160struct queue
161{
162        //0-99 for ca module
163        int type;
164        int flag;
165        int len;
166        void* data;
167        struct queue* prev;
168        struct queue* next;
169};
170
171struct casession
172{
173        int inuse;
174        int sessionnr;
175        int action;
176        int state;
177};
178
179struct caslot
180{
181        struct casession casession[MAXCASESSION];
182        int connid;
183        int poll;
184        int capmtsend;
185        int status;
186        int rlen;
187        unsigned char* rbuf;
188        char* name;
189        int fastrun;
190        int mmiopen;
191        int mmimanager;
192        int camanager;
193        int datetimemanager;
194        int appmanager;
195        int resmanager;
196        char* caids;
197};
198
199struct hdd
200{
201        char* device;
202        int partition;
203        unsigned long size;
204        char* filesystem;
205        char* label;
206        char* uuid;
207        char* vendor;
208        char* model;
209        int removable;
210        struct hdd* prev;
211        struct hdd* next;
212};
213
214struct scaninfo
215{
216        struct dvbdev* fenode;
217        struct transponder* tpnode;
218        struct skin* scanscreen;
219        struct skin* listbox;
220        int threadend;
221        int scantype;
222        int fetype;
223        int orbitalpos;
224        int timeout;
225        int onlyfree;
226        int clear;
227        char* satname;
228        int tpcount;
229        int tvcount;
230        int newtvcount;
231        int radiocount;
232        int newradiocount;
233        int datacount;
234        int newdatacount;
235} scaninfo;
236
237struct screensaver
238{
239        int type;
240        int speed;
241        int newposx;
242        int newposy;
243        struct skin* screen;
244        struct skin* screennode;
245        struct skin* filelist;
246        struct skin* aktnode;
247        struct pic* pic;
248        char* value;
249};
250
251struct playlist
252{
253        char* file;
254        struct playlist* prev;
255        struct playlist* next;
256};
257
258struct mainplaylist
259{
260        char* name;
261        char* filename;
262        struct playlist* playlist;
263        struct mainplaylist* prev;
264        struct mainplaylist* next;
265};
266
267struct epgrecord
268{
269        time_t begin;
270        time_t end;
271        int posx;
272        int size;
273        struct epgrecord* prev;
274        struct epgrecord* next;
275};
276
277struct download
278{
279        char* host;
280        char* page;
281        int port;
282        char* filename;
283        int connfd;
284        int proz;
285        unsigned int maxkb;
286        unsigned int aktkb;
287        int ret;
288};
289
290struct epgscanlist
291{
292        int serviceid;
293        unsigned long transponderid;
294        time_t scantime;
295        struct epgscanlist* prev;
296        struct epgscanlist* next;
297};
298
299struct rgba
300{
301        char r;
302        char g;
303        char b;
304        char a;
305};
306
307struct subclutentry
308{
309        unsigned char Y, Cr, Cb, T;
310        unsigned char valid;
311};
312
313struct subclut
314{
315        unsigned char clutid;
316        unsigned char clutversionnumber;
317        struct subclutentry entries2bit[4];
318        struct subclutentry entries4bit[16];
319        struct subclutentry entries8bit[256];
320        struct subclut *next;
321};
322
323struct subpagereg
324{
325        int regid;
326        int reghorizontaladdress;
327        int regverticaladdress;
328        int scaleposx, scaleposy;
329        struct subpagereg *next;
330};
331
332struct subregobj
333{
334        int objid;
335        int objtype;
336        int objproviderflag;
337        int objhorizontalpos;
338        int objverticalpos;
339        // not supported right now...
340        int foregroundpixel;
341        int backgroundpixel;
342        struct subregobj *next;
343};
344
345struct subreg
346{
347        int regid;
348        int versionnumber;
349        int height, width;
350        int scaleheight, scalewidth;
351        int depth;
352        unsigned char *buf;
353        struct rgba *palette;
354        int clutid;
355        int committed;
356        struct subregobj *objects;
357        struct subreg *next;
358};
359
360struct subpage
361{
362        int pageid;
363        time_t pagetimeout;
364        int pageversionnumber;
365        int state;
366        int pcssize;
367        struct subpagereg *pageregions;
368        struct subreg *regions;
369        struct subclut *cluts;
370        struct subpage *next;
371};
372
373struct bitstream
374{
375        unsigned char *data;
376        int size;
377        int avail;
378        int consumed;
379};
380
381//there are a copyrectimer function
382//if you change the struct you must change this funktion
383struct rectimer
384{
385        char* name;
386        time_t begin;
387        time_t end;
388        int repeate;
389        int afterevent;
390        char* pincode;
391        int disabled;
392        int justplay;
393        char* recpath;
394        int servicetype;
395        char* channellist;
396        int serviceid;
397        //0 = nothing
398        //1 = running
399        //2 = end
400        //3 = error
401        int status;
402        char* errstr;
403        struct service* servicenode;
404        unsigned long transponderid;
405        struct rectimer *prev;
406        struct rectimer *next;
407};
408
409struct inetwork
410{
411        int id;
412        char* device;
413        char* ip;
414        char* netmask;
415        char* mac;
416        char* broadcast;
417        int dhcp;
418        struct inetwork *prev;
419        struct inetwork *next;
420};
421
422struct rcmap
423{
424        char* name;
425        int key;
426        int newkey;
427        struct rcmap* next;
428};
429
430struct splitstr
431{
432        char* part;
433};
434
435struct channelcache
436{
437        int serviceid;
438        unsigned long transponderid;
439        struct channel* chnode;
440        struct channelcache* next;
441};
442
443struct filelist
444{
445        int type;
446        char* name;
447        char* shortname;
448        char* path;
449        char* imdbpath;
450        off64_t size;
451        time_t date;
452};
453
454struct skin
455{
456        char* name;
457        uint8_t type;
458        uint8_t wrap;
459        uint8_t bordersize;
460        uint8_t scrollbar;
461        uint16_t halign;
462        uint16_t valign;
463        int16_t posx;
464        int16_t posy;
465        int16_t width;
466        int16_t height;
467        long bordercol;
468        long deaktivcol;
469        long shadowcol;
470        uint8_t shadowsize;
471        uint8_t shadowpos;
472        uint8_t fontsize;
473        uint8_t fontsize2;
474        long fontcol;
475        long fontcol2;
476        char* font;
477        int16_t zorder;
478        int16_t titlealign;
479        char* title;
480        char* text;
481        char* text2;
482        long bgcol;
483        long bgcol2;
484        long titlebgcol;
485        long titlebgcol2;
486        long progresscol;
487        char* pic;
488        int16_t picwidth;
489        int16_t picheight;
490        uint16_t hspace;
491        uint16_t vspace;
492        char* (*skinfunc)(void*, void*);
493        char* param1;
494        char* param2;
495        char* parent;
496        char* input;
497        char* mask;
498        uint16_t textposx;
499        uint16_t textposx2;
500        int16_t gradient;
501        int16_t titlegradient;
502        uint8_t transparent;
503        uint8_t hidden;
504        uint8_t funcrettype;
505        int8_t charspace;
506        int8_t bordertype;
507        int16_t borderradius;
508        uint16_t bgspace;
509
510        uint8_t titlesize;
511        struct filelist* filelist;
512        struct skin* parentpointer;
513        char* ret;
514        char* choiceboxvalue;
515        unsigned int linecount;
516        unsigned int pagecount;
517        unsigned int poscount;
518        unsigned int gridcol;
519        int aktpage;
520        int aktline;
521        uint8_t scrollbarbordersize;
522        uint8_t prozposx;
523        uint8_t prozposy;
524        uint8_t prozwidth;
525        uint8_t prozheight;
526        uint8_t picprozwidth;
527        uint8_t del;
528        uint8_t picprozheight;
529        int16_t scrollbarheight;
530        int16_t progresssize;
531        int16_t scrollbarwidth;
532        int16_t scrollbarpos;
533        int16_t rposx;
534        int16_t rposy;
535        int16_t rwidth;
536        int16_t rheight;
537        int16_t rpicwidth;
538        int16_t rpicheight;
539        int16_t iposx;
540        int16_t iposy;
541        int16_t iwidth;
542        int16_t iheight;
543        char* handle;
544        char* handle1;
545        struct epgrecord* epgrecord;
546        char* pluginhandle;
547        struct skin *select;
548        struct skin *child;
549        struct skin *prev;
550        struct skin *next;
551};
552
553struct epg
554{
555        int eventid;
556        int version;
557        time_t starttime;
558        time_t endtime;
559        char* title;
560        char* subtitle;
561        char* desc;
562        int desclen;
563        int desccomplen;
564        int parentalrating;
565        struct epg* prev;
566        struct epg* next;
567};
568
569struct shutdowntimer
570{
571        int active,type; //type: 0=DeepStandby, 1=Standby
572        long long shutdown_time;
573};
574
575struct dvbdev
576{
577        char* dev;
578        int fd;
579        uint8_t type;
580        uint8_t adapter;
581        uint8_t devnr;
582        uint8_t felock;
583        struct transponder* felasttransponder;
584        struct transponder* feakttransponder;
585        int feloffrequency;
586        int feaktband;
587        int feaktpolarization;
588        int fedmxsource;
589        char* feaktlnb;
590        char* feaktdiseqc;
591        char* feshortname;
592        struct dvb_frontend_info* feinfo;
593        struct caslot* caslot;
594        struct dvbdev *next;
595};
596
597//there are a copytransponder and createtransponder function
598//if you change this struct you must change the function
599struct transponder
600{
601        unsigned long id;
602        uint8_t fetype;
603        uint8_t polarization;
604        uint8_t modulation;
605        uint8_t fec;
606        uint8_t pilot;
607        uint8_t rolloff;
608        uint8_t inversion;
609        uint8_t system;
610        uint8_t flag;
611        // 0 = unknown
612        // 1 = tunable
613        // 2 = not tunable
614        uint8_t tunablestatus;
615        int orbitalpos;
616        unsigned int frequency;
617        int symbolrate;
618        struct transponder *next;
619};
620
621struct provider
622{
623        int providerid;
624        char* name;
625        int flag;
626        struct provider *prev;
627        struct provider *next;
628};
629
630struct subtitle
631{
632        char* name;
633        int16_t pid;
634        int16_t type;
635        int16_t id1;
636        int16_t id2;
637        struct subtitle* next;
638};
639
640struct esinfo
641{
642        int streamtype;
643        int reserved1;
644        int pid;
645        int reserved2;
646        struct esinfo* next;
647};
648
649struct cadesc
650{
651        int len;
652        int systemid;
653        int reserved;
654        int pid;
655        char* privat;
656        struct cadesc* next;
657};
658
659struct pmt
660{
661        int programnumber;
662        int reserved1;
663        int versionnumber;
664        int currentnextindicator;
665        int reserved2;
666};
667
668struct audiotrack
669{
670        char* name;
671        uint8_t audiocodec;
672        int16_t audiopid;
673        struct audiotrack* next;
674};
675
676//there are a createchannel function
677//if you change this struct you must change the function
678struct channel
679{
680        char* name;
681        unsigned long transponderid;
682        int providerid;
683        int serviceid;
684        int servicetype;
685        uint8_t flag;
686        uint8_t crypt;
687        int8_t videocodec;
688        int8_t audiocodec;
689        int16_t videopid;
690        int16_t audiopid;
691        int16_t ac3audiopid;
692        int16_t txtpid;
693        int16_t pcrpid;
694        int16_t pmtpid;
695        uint8_t protect;
696        struct transponder *transponder;
697        struct provider *provider;
698        struct audiotrack *audiotrack;
699        struct subtitle *subtitle;
700        struct pmt *pmt;
701        struct cadesc *cadesc;
702        struct esinfo *esinfo;
703        struct epg *epg;
704        struct channel *prev;
705        struct channel *next;
706};
707
708struct sat
709{
710        char* name;
711        int orbitalpos;
712        int flag;
713        int fetype;
714        int scan;
715        struct sat *prev;
716        struct sat *next;
717};
718
719struct service
720{
721        int type;
722        char* channellist;
723        struct dvbdev *fedev;
724        struct dvbdev *dmxaudiodev;
725        struct dvbdev *dmxvideodev;
726        struct dvbdev *dmxpcrdev;
727        struct dvbdev *dmxsubtitledev;
728        struct dvbdev *audiodev;
729        struct dvbdev *videodev;
730        struct transponder *transponder;
731        struct channel *channel;
732        unsigned char *pmtbuf;
733        int pmtlen;
734        int recdmxstart;
735        int recdstfd;
736        int recsrcfd;
737        int camsockfd;
738        time_t recendtime;
739        size_t reclastsync;
740        off64_t rectotal;
741        int reccount;
742        char* recname;
743        struct service *next;
744};
745
746struct stimerthread
747{
748        int delay;
749        int count;
750        int notfirst;
751        pthread_attr_t attr;
752        pthread_t thread;
753        int status;
754        int aktion;
755        void* param1;
756        void* param2;
757        void* (*func)(struct stimerthread*, void*, void*);
758        struct stimerthread* next;
759};
760
761struct hddparm
762{
763        char* device;
764        int read;
765        int write;
766        int sleeptime;
767        int notchanged;
768};
769
770struct status
771{
772        //set to 1 if channellist or channelnr open
773        int channelswitch;
774        //deaktivates child protect if greater then akttime
775        time_t protecttime;
776        char* boxtype;
777        pthread_t mainthread;
778        //videosize from stream
779        video_size_t videosize;
780        time_t videosizevalid;
781        //radius for rounded border
782        int borderradius;
783        int picbordersize;
784        int titlelinesize;
785        //0 border
786        //1 fullbar
787        int listboxselecttype;
788        //0 camd.socket
789        //1 pmt.tmp
790        int pmtmode;
791        //timer for del old epg entrys
792        time_t deloldepg;
793        //0 dektiv
794        //1 only scan
795        //2 only whitlist
796        //3 scan and whitelist
797        int epglistmode;
798        // 1 manual
799        // 2 from standby
800        int startmode;
801        jmp_buf longjumpbuf;
802        pthread_mutex_t drawingmutex;
803        pthread_mutex_t rectimermutex;
804        pthread_mutex_t servicemutex;
805        pthread_mutex_t epgmutex;
806        pthread_mutex_t channelmutex;
807        pthread_mutex_t timerthreadmutex;
808        pthread_mutex_t audiotrackmutex;
809        pthread_mutex_t subtitlemutex;
810        pthread_mutex_t dmxdevmutex;
811        pthread_mutex_t rcmutex;
812        pthread_mutex_t queuemutex;
813        pthread_mutex_t clistmutex;
814        pthread_mutex_t hddmutex;
815        // mutex for VFD handling
816        pthread_mutex_t vfdmutex;
817        off64_t recsplitsize;
818        char* gateway;
819        char* dnsserver1;
820        char* dnsserver2;
821        int fasttextrender;
822        // 1 release all menus
823        int menurelease;
824        int play;
825        int pause;
826        int playspeed;
827        int random;
828        int repeat;
829        int epgdays;
830        int spinnertime;
831        int spinnerspeed;
832        int hangtime;
833        int timeupdatecount;
834        int maxsat;
835        int markmodus;
836        // 1 from main prog
837        // 2 from a thread
838        int standby;
839        char* tmp;
840        // rc filedescriptor
841        int fdrc;
842        // rc filedescriptor for simulating keypress (fifo)
843        int fdrcsim;
844        int writeconfig;
845        int writeownconfig;
846        int writercconfig;
847        int writeskinconfig;
848        int writechannel;
849        int writetransponder;
850        int writeprovider;
851        int writemainbouquet;
852        int writebouquet;
853        int writemainplaylist;
854        int writeplaylist;
855        int writesat;
856        int writerectimer;
857        int writeepgscanlist;
858        // 1 mute is aktiv
859        int mute;
860        // 1 spinner is aktiv
861        int spinner;
862        // 1 infobar is aktiv
863        // 2 infobar is aktiv (with wait befor show)
864        // 3 infobar is aktiv (no autohide)
865        int infobar;
866        // with infobar to display
867        int infobarnr;
868        // 0 is for mute screen
869        struct skin *drawallways[1];
870        char* drawallwaysbg[1];
871        int usedirectfb;
872        // count how long last rcwait (shows spinner if to long)
873        time_t sec;
874        // if set to a value != 0, rcwait returns this number
875        int rckey;
876        struct skin* skinerr;
877        // 0 calc and draw
878        // 1 calc only without hidden nodes
879        // 2 calc only with hidden nodes
880        int screencalc;
881        // 0 deaktiv
882        // 1 struct filelist filled
883        // 2 struct filelist and show filesize
884        // 3 struct filelist and show filedate
885        int filelistextend;
886        pthread_attr_t timerthreadattr;
887        pthread_t timerthread;
888        int timerthreadstatus;
889        int timerthreadaktion;
890        pthread_attr_t subthreadattr;
891        pthread_t subthread;
892        int subthreadstatus;
893        int subthreadaktion;
894        int subthreadpid;
895        // epg thread pointer
896        struct stimerthread* epgthread;
897        // epgscanlist thread pointer
898        struct stimerthread* epgscanlistthread;
899        // httpd thread pointer
900        struct stimerthread* httpthread;
901        struct service* aktservice;
902        struct service* lastservice;
903        struct channel* markedchannel;
904        char* configfile;
905        // for bouquet channel numbering
906        int bouquetnr[MAXSERVICETYPE];
907        int servicetype;
908        struct shutdowntimer *sd_timer;
909        // akt pos in channel cache
910        int channelcachepos;
911        // aktivate/deaktivate auto updatevfd
912        int updatevfd;
913        // count for recording
914        int recording;
915        // count for streaming
916        int streaming;
917        // timeshift running = 1
918        int timeshift;
919        // ts playing running = 1
920        int playing;
921        // if set to a skin (screenpointer) only this screen has rc
922        struct skin* rcowner;
923        // timerstuktur fuer autores
924        struct stimerthread* restimer;
925        //spindown USB/HDD
926        struct hddparm hdd[3];
927        struct stimerthread* hddsleeptimer;
928
929} status;
930
931struct fb
932{
933        int dev;
934        char *name;
935        int fd;
936        unsigned char *fb;
937        unsigned long *fblong;
938        int width;
939        int height;
940        int pitch;
941        unsigned long fixfbsize;
942        unsigned long varfbsize;
943        int colbytes;
944        struct fb *next;
945};
946
947struct rc
948{
949        int key;
950        void (*rcfunc)(struct skin*, struct skin*);
951        struct skin *screen;
952        struct skin *screennode;
953        struct skin *owner;
954        struct rc *next;
955};
956
957struct clist
958{
959        char *key;
960        char *value;
961        char *def;
962        char *tmp;
963        struct clist *next;
964};
965
966struct bouquet
967{
968        int nr;
969        int serviceid;
970        unsigned long transponderid;
971        struct channel *channel;
972        struct bouquet *prev;
973        struct bouquet *next;
974};
975
976struct mainbouquet
977{
978        char *name;
979        int type;
980        char *filename;
981        struct bouquet *bouquet;
982        struct mainbouquet *prev;
983        struct mainbouquet *next;
984};
985
986struct pic
987{
988        char* name;
989        unsigned char* picbuf;
990        // < 0 when picbuf is normal mem (hw jpg)
991        int memfd;
992        unsigned long width;
993        unsigned long height;
994        unsigned long rowbytes;
995        int channels;
996        int del;
997        struct pic* next;
998};
999
1000struct font
1001{
1002        char *name;
1003        FT_Error error;
1004        FTC_Manager manager;
1005        FTC_SBitCache cache;
1006        FTC_ImageTypeRec desc;
1007        FT_Face face;
1008        FT_UInt prev_glyphindex;
1009        FT_Bool use_kerning;
1010        struct font *next;
1011};
1012
1013#define HILO(x) (x##_hi << 8 | x##_lo)
1014
1015/*
1016#define HILO2(x) (x##1 << 8 | x##2)
1017#define HILO3(x) (x##1 << 16 | x##2 << 8 | x##3)
1018#define HILO4(x) (x##4 << 24 | x##2 << 16 | x##3 << 8 | x##4)
1019
1020#define MjdToEpochTime(x) ((HILO(x)-40587)*86400)
1021#define BcdTimeToSeconds(x) ((3600 * ((10*((x##_h & 0xF0)>>4)) + (x##_h & 0xF))) + \
1022                             (60 * ((10*((x##_m & 0xF0)>>4)) + (x##_m & 0xF))) + \
1023                             ((10*((x##_s & 0xF0)>>4)) + (x##_s & 0xF)))
1024#define BcdTimeToMinutes(x) ((60 * ((10*((x##_h & 0xF0)>>4)) + (x##_h & 0xF))) + \
1025                             (((10*((x##_m & 0xF0)>>4)) + (x##_m & 0xF))))
1026#define BcdCharToInt(x) (10*((x & 0xF0)>>4) + (x & 0xF))
1027#define CheckBcdChar(x) ((((x & 0xF0)>>4) <= 9) && \
1028                         ((x & 0x0F) <= 9))
1029#define CheckBcdSignedChar(x) ((((x & 0xF0)>>4) >= 0) && (((x & 0xF0)>>4) <= 9) && \
1030                         ((x & 0x0F) >= 0) && ((x & 0x0F) <= 9))
1031
1032#define GetSectionLength(x) HILO(((si_tab_t *)(x))->section_length)
1033#define GetServiceId(x) HILO(((eit_t *)(x))->service_id)
1034#define GetLastTableId(x) ((eit_t *)(x))->segment_last_table_id
1035#define GetSegmentLastSectionNumber(x) ((eit_t *)(x))->segment_last_section_number
1036#define GetPrivateDataSpecifier(x) HILO4(((descr_private_data_specifier_t *)x)->private_data_specifier)
1037*/
1038
1039struct eit
1040{
1041        u_char table_id                               /*:8*/;
1042        u_char section_length_hi                      :4;
1043        u_char                                        :3;
1044        u_char section_syntax_indicator               :1;
1045        u_char section_length_lo                      /*:8*/;
1046        u_char service_id_hi                          /*:8*/;
1047        u_char service_id_lo                          /*:8*/;
1048        u_char current_next_indicator                 :1;
1049        u_char version_number                         :5;
1050        u_char                                        :2;
1051        u_char section_number                         /*:8*/;
1052        u_char last_section_number                    /*:8*/;
1053        u_char transport_stream_id_hi                 /*:8*/;
1054        u_char transport_stream_id_lo                 /*:8*/;
1055        u_char original_network_id_hi                 /*:8*/;
1056        u_char original_network_id_lo                 /*:8*/;
1057        u_char segment_last_section_number            /*:8*/;
1058        u_char segment_last_table_id                  /*:8*/;
1059        u_char data[]; /* struct eitevent */
1060};
1061#define EITLEN sizeof(struct eit)
1062#define GETEITSECLEN(x) HILO(((struct eit*)(x))->section_length)
1063
1064struct eitevent
1065{
1066        u_char event_id_hi                            /*:8*/;
1067        u_char event_id_lo                            /*:8*/;
1068        u_char mjd_hi                                 /*:8*/;
1069        u_char mjd_lo                                 /*:8*/;
1070        u_char start_time_h                           /*:8*/;
1071        u_char start_time_m                           /*:8*/;
1072        u_char start_time_s                           /*:8*/;
1073        u_char duration_h                             /*:8*/;
1074        u_char duration_m                             /*:8*/;
1075        u_char duration_s                             /*:8*/;
1076        u_char descriptors_loop_length_hi             :4;
1077        u_char free_ca_mode                           :1;
1078        u_char running_status                         :3;
1079        u_char descriptors_loop_length_lo             /*:8*/;
1080        u_char data[];
1081};
1082#define EITEVENTLEN sizeof(struct eitevent)
1083#define GETEITDESCLEN(x) HILO(((struct eitevent *)x)->descriptors_loop_length)
1084
1085struct eitshortevent
1086{
1087        u_char descriptor_tag                         /*:8*/;
1088        u_char descriptor_length                      /*:8*/;
1089        u_char lang_code1                             /*:8*/;
1090        u_char lang_code2                             /*:8*/;
1091        u_char lang_code3                             /*:8*/;
1092        u_char event_name_length                      /*:8*/;
1093        u_char data[];
1094};
1095#define EITSHORTEVENTLEN sizeof(struct eitshortevent)
1096
1097struct eitlongevent
1098{
1099        u_char descriptor_tag                         /*:8*/;
1100        u_char descriptor_length                      /*:8*/;
1101        u_char last_descriptor_number                 :4;
1102        u_char descriptor_number                      :4;
1103        u_char lang_code1                             /*:8*/;
1104        u_char lang_code2                             /*:8*/;
1105        u_char lang_code3                             /*:8*/;
1106        u_char length_of_items                        /*:8*/;
1107        u_char data[]; /* struct eitlongeventitem */
1108};
1109#define EITLONGEVENTLEN sizeof(struct eitlongevent)
1110
1111struct eitlongeventitem
1112{
1113        u_char item_description_length               /*:8*/;
1114        u_char data[];
1115};
1116#define EITLONGEVENTITEMLEN sizeof(struct eitlongeventitem)
1117
1118struct eitlinkage
1119{
1120        u_char descriptor_tag                 /*:8*/;
1121        u_char descriptor_length              /*:8*/;
1122        u_char transport_stream_id_hi         /*:8*/;
1123        u_char transport_stream_id_lo         /*:8*/;
1124        u_char original_network_id_hi         /*:8*/;
1125        u_char original_network_id_lo         /*:8*/;
1126        u_char service_id_hi                  /*:8*/;
1127        u_char service_id_lo                  /*:8*/;
1128        u_char linkage_type                   /*:8*/;
1129};
1130#define EITLLINKAGELEN sizeof(struct eitlinkage)
1131
1132struct parentalrating
1133{
1134        u_char descriptor_tag                 /*:8*/;
1135        u_char descriptor_length              /*:8*/;
1136        u_char data[]; //struct parental_rating_item
1137};
1138#define PARENTALRATINGLEN sizeof(struct parentalrating)
1139
1140struct parentalratingitem
1141{
1142   u_char lang_code1                          /*:8*/;
1143   u_char lang_code2                          /*:8*/;
1144   u_char lang_code3                          /*:8*/;
1145   u_char rating                              /*:8*/;
1146};
1147#define PARENTALRATINGITEMLEN sizeof(struct parentalratingitem)
1148
1149#endif
Note: See TracBrowser for help on using the repository browser.