source: titan/titan/moduleconfig.h @ 38741

Last change on this file since 38741 was 38741, checked in by obi, 6 years ago

update modulteconfig add hex view

File size: 15.1 KB
Line 
1#ifndef MODULECONFIG_H
2#define MODULECONFIG_H
3
4void createchannelslotlist(struct skin* channelslotlist, struct skin* listbox, int slot)
5{
6        struct channelslot *node = channelslot;
7        struct skin* tmp = NULL;
8
9        while(node != NULL)
10        {
11                if(node->slot == slot)
12                {
13                        struct channel* chnode = getchannel(node->serviceid, node->transponderid);
14                        if(chnode != NULL)
15                        {
16                                tmp = addlistbox(channelslotlist, listbox, tmp, 1);
17                                if(tmp != NULL)
18                                {
19                                        changetext(tmp, chnode->name);
20                                        tmp->handle = (char*)node;
21                                }
22                        }
23                }
24                node = node->next;
25        }
26}
27
28void screenchannelslot(int slot)
29{
30        int rcret = 0;
31        struct skin* channelslotlist = getscreen("channelslotlist");
32        struct skin* listbox = getscreennode(channelslotlist, "listbox");
33        char* tmpstr = NULL, *tmpchannellist = NULL;
34
35        if(status.servicetype == 0)
36                tmpchannellist = ostrcat(getconfig("channellist", NULL), NULL, 0, 0);
37        else
38                tmpchannellist = ostrcat(getconfig("rchannellist", NULL), NULL, 0, 0);
39
40        channelslotlist->aktline = 1;
41        channelslotlist->aktpage = -1;
42
43        createchannelslotlist(channelslotlist, listbox, slot);
44
45        drawscreen(channelslotlist, 0, 0);
46        addscreenrc(channelslotlist, listbox);
47
48        while(1)
49        {
50                rcret = waitrc(channelslotlist, 0, 0);
51
52                if(rcret == getrcconfigint("rcok", NULL)) break;
53                if(rcret == getrcconfigint("rcred", NULL) && listbox->select != NULL && listbox->select->handle != NULL)
54                {
55                        if(delchannelslot(((struct channelslot*)listbox->select->handle)->serviceid, ((struct channelslot*)listbox->select->handle)->transponderid) == 0)
56                        {
57                                listbox->aktline--;
58                                listbox->aktpage = -1;
59                                delmarkedscreennodes(channelslotlist, 1);
60                                createchannelslotlist(channelslotlist, listbox, slot);
61                                drawscreen(channelslotlist, 0, 0);
62                        }
63                }
64                if(rcret == getrcconfigint("rcgreen", NULL))
65                {
66                        clearscreen(channelslotlist);
67                        int saveservicetype = status.servicetype;
68                        struct channel* tmpchnode = NULL;
69
70                        screenchannellist(&tmpchnode, &tmpchannellist, 1);
71                        status.servicetype = saveservicetype;
72
73                        if(tmpchnode != NULL && getchannelslot(tmpchnode->serviceid, tmpchnode->transponderid) == NULL)
74                        {
75                                tmpstr = ostrcat(oitoa(tmpchnode->transponderid), "#", 1, 0);
76                                tmpstr = ostrcat(tmpstr, ollutoa(tmpchnode->serviceid), 1, 1);
77                                tmpstr = ostrcat(tmpstr, "#", 1, 0);
78                                tmpstr = ostrcat(tmpstr, oitoa(slot), 1, 1);
79                                if(addchannelslot(tmpstr, 1, NULL) != NULL)
80                                {
81                                        delmarkedscreennodes(channelslotlist, 1);
82                                        createchannelslotlist(channelslotlist, listbox, slot);
83                                }
84                                free(tmpstr); tmpstr = NULL;
85                        }
86
87                        drawscreen(channelslotlist, 0, 0);
88                }
89                if(rcret == getrcconfigint("rcyellow", NULL))
90                {
91                        clearscreen(channelslotlist);
92                        struct mainbouquet* mbouquet = screenmainbouquet();
93                       
94                        mainbouquet2channelslot(mbouquet, slot);
95                        delmarkedscreennodes(channelslotlist, 1);
96                        createchannelslotlist(channelslotlist, listbox, slot);
97                       
98                        drawscreen(channelslotlist, 0, 0);
99                }
100        }
101
102        delmarkedscreennodes(channelslotlist, 1);
103        delownerrc(channelslotlist);
104        clearscreen(channelslotlist);
105}
106
107int checkdoublecaid(struct dvbdev* excdvbnode, char* caid)
108{
109        struct dvbdev* dvbnode = dvbdev;
110
111        if(caid == NULL) return 0;
112
113        while(dvbnode != NULL)
114        {
115                if(dvbnode->type == CIDEV && dvbnode->caslot != NULL && dvbnode->caslot->caids != NULL && dvbnode != excdvbnode)
116                {
117                        if(ostrstr(dvbnode->caslot->caids, caid) != NULL)
118                                return 1;
119
120                }
121                dvbnode = dvbnode->next;
122        }
123        return 0;
124}
125
126void dw2hex(unsigned int num,char* buffer)
127{
128        for(unsigned int i=7,tmp;!(i&0x80000000);i--)
129        {
130                tmp = num&0xf;
131                buffer[i]= (tmp<10)?(tmp+0x30):(tmp+0x37);
132                num = num>>4;           
133        }
134        buffer[8]=0;
135}
136
137void screencaidlock(struct dvbdev* dvbnode)
138{
139        int rcret = -1, count = 0, i = 0;
140        struct skin* caidlock = getscreen("caidlock");
141        struct skin* listbox = getscreennode(caidlock, "listbox");
142        struct skin* tmp = NULL;
143        char* tmpstr = NULL, *configname = NULL, *caids = NULL;
144        struct splitstr* ret = NULL;
145
146        listbox->aktline = 1;
147        listbox->aktpage = -1;
148
149        if(dvbnode == NULL || dvbnode->caslot == NULL || dvbnode->caslot->caids == NULL) return;
150
151        configname = ostrcat("camblacklist_", oitoa(dvbnode->devnr), 0, 1);
152        char* lockcaids = getconfig(configname, NULL);
153
154        caids = ostrcat(dvbnode->caslot->caids, NULL, 0, 0);
155        ret = strsplit(caids, "#", &count);
156
157        if(ret != NULL)
158        {
159                for(i = 0; i < count; i++)
160                {
161                        tmp = addlistbox(caidlock, listbox, tmp, 1);
162                        if(tmp != NULL)
163                        {
164                                tmp->type = CHOICEBOX;
165
166                                // show caid in hex
167                                char* caid_hex = ostrcat(ret[i].part, NULL, 0, 0);
168                                int caid_dec = atoi(ret[i].part);
169                                sprintf(caid_hex, "%x", caid_dec);
170
171                                if(checkdoublecaid(dvbnode, ret[i].part) == 1)
172                                {
173                                        tmpstr = ostrcat(tmpstr, ret[i].part, 1, 0);
174                                        if(caid_hex != NULL)
175                                        {
176                                                tmpstr = ostrcat(tmpstr, " (0x", 1, 0);
177                                                tmpstr = ostrcat(tmpstr, caid_hex, 1, 0);
178                                                tmpstr = ostrcat(tmpstr, ") (", 1, 0);
179                                        }
180                                        else
181                                                tmpstr = ostrcat(tmpstr, " (", 1, 0);
182
183                                        tmpstr = ostrcat(tmpstr, _("double"), 1, 0);
184                                        tmpstr = ostrcat(tmpstr, ")", 1, 0);
185                                }
186                                else
187                                {
188                                        tmpstr = ostrcat(tmpstr, ret[i].part, 1, 0);
189                                        if(caid_hex != NULL)
190                                        {
191                                                tmpstr = ostrcat(tmpstr, " (0x", 1, 0);
192                                                tmpstr = ostrcat(tmpstr, caid_hex, 1, 0);
193                                                tmpstr = ostrcat(tmpstr, ")", 1, 0);
194                                        }
195                                }
196                                free(caid_hex);
197
198                                changetext(tmp, tmpstr);
199                                free(tmpstr); tmpstr = NULL;
200
201                                addchoicebox(tmp, "0", _("activate"));
202                                addchoicebox(tmp, "1", _("deactivate"));
203                                if(ostrstr(lockcaids, ret[i].part) != NULL)
204                                        setchoiceboxselection(tmp, "1");
205                                else
206                                        setchoiceboxselection(tmp, "0");
207                                changename(tmp, ret[i].part);
208                        }
209                }
210        }
211
212        free(caids); caids = NULL;
213        free(ret); ret = NULL;
214        drawscreen(caidlock, 0, 0);
215        addscreenrc(caidlock, listbox);
216
217        tmp = listbox->select;
218        while(1)
219        {
220                addscreenrc(caidlock, tmp);
221                rcret = waitrc(caidlock, 0, 0);
222                tmp = listbox->select;
223
224                if(rcret == getrcconfigint("rcexit", NULL)) break;
225                if(rcret == getrcconfigint("rcok", NULL))
226                {
227                        tmp = listbox;
228                        while(tmp != NULL)
229                        {
230                                if(tmp->del == 1 && ostrcmp(tmp->ret, "1") == 0)
231                                {
232                                        tmpstr = ostrcat(tmpstr, "#", 1, 0);
233                                        tmpstr = ostrcat(tmpstr, tmp->name, 1, 0);
234                                        tmpstr = ostrcat(tmpstr, "#", 1, 0);
235                                }
236                                tmp = tmp->next;
237                        }
238
239                        if(tmpstr != NULL)
240                                addconfig(configname, tmpstr);
241                        else
242                                delconfig(configname);
243
244                        free(tmpstr); tmpstr = NULL;
245                        break;
246                }
247        }
248
249        free(configname); configname = NULL;
250        delmarkedscreennodes(caidlock, 1);
251        delownerrc(caidlock);
252        clearscreen(caidlock);
253}
254
255void screenmoduleadjust()
256{
257        int rcret = 0;
258
259        struct skin* moduleadjust = getscreen("moduleadjust");
260        struct skin* listbox = getscreennode(moduleadjust, "listbox");
261        struct skin* nocamsg = getscreennode(moduleadjust, "nocamsg");
262        struct skin* camwait = getscreennode(moduleadjust, "camwait");
263        struct skin* checkcamdecrypt = getscreennode(moduleadjust, "checkcamdecrypt");
264        struct skin* caskipprivat = getscreennode(moduleadjust, "caskipprivat");
265        struct skin* casendallcaids = getscreennode(moduleadjust, "casendallcaids");
266        struct skin* extmoduldetect = getscreennode(moduleadjust, "extmoduldetect");
267
268        struct skin* tmp = NULL;
269
270        if(checkbox("ATEMIO7600") == 1 || checkbox("ATEMIO510") == 1 || checkbox("ATEVIO700") == 1 || checkbox("ATEVIO7000") == 1 || checkbox("WHITEBOX") == 1 || checkbox("ATEMIO520") == 1 || checkbox("ATEMIO530") == 1)
271                extmoduldetect->hidden = NO;
272        else
273                extmoduldetect->hidden = YES;
274
275        addchoicebox(nocamsg, "0", _("yes"));
276        addchoicebox(nocamsg, "1", _("no"));
277        setchoiceboxselection(nocamsg, getconfig("nocamsg", NULL));
278
279        addchoicebox(camwait, "25", _("slow"));
280        addchoicebox(camwait, "15", _("middle"));
281        addchoicebox(camwait, "5", _("fast"));
282        setchoiceboxselection(camwait, getconfig("camwait", NULL));
283
284        addchoicebox(checkcamdecrypt, "0", _("no"));
285        addchoicebox(checkcamdecrypt, "1", _("yes"));
286        setchoiceboxselection(checkcamdecrypt, getconfig("checkcamdecrypt", NULL));
287
288        addchoicebox(caskipprivat, "0", _("no"));
289        addchoicebox(caskipprivat, "1", _("yes"));
290        setchoiceboxselection(caskipprivat, getconfig("caskipprivat", NULL));
291
292        addchoicebox(casendallcaids, "0", _("no"));
293        addchoicebox(casendallcaids, "1", _("yes"));
294        setchoiceboxselection(casendallcaids, getconfig("casendallcaids", NULL));
295
296        addchoicebox(extmoduldetect, "0", _("no"));
297        addchoicebox(extmoduldetect, "1", _("yes"));
298        setchoiceboxselection(extmoduldetect, getownconfig("extmoduldetect"));
299
300        drawscreen(moduleadjust, 0, 0);
301        addscreenrc(moduleadjust, listbox);
302
303        tmp = listbox->select;
304        while(1)
305        {
306                addscreenrc(moduleadjust, tmp);
307                rcret = waitrc(moduleadjust, 0, 0);
308                tmp = listbox->select;
309
310                if(rcret == getrcconfigint("rcexit", NULL)) break;
311                if(rcret == getrcconfigint("rcok", NULL))
312                {
313                        addconfigscreencheck("nocamsg", nocamsg, "0");
314                        addconfigscreencheck("camwait", camwait, "25");
315                        addconfigscreencheck("checkcamdecrypt", checkcamdecrypt, "0");
316                        addconfigscreencheck("caskipprivat", caskipprivat, "0");
317                        status.caskipprivat = getconfigint("caskipprivat", NULL);
318                        addconfigscreencheck("casendallcaids", casendallcaids, "0");
319                        status.casendallcaids = getconfigint("casendallcaids", NULL);
320
321                        if(checkbox("ATEMIO7600") == 1 || checkbox("ATEMIO510") == 1 || checkbox("ATEVIO700") == 1 || checkbox("ATEVIO7000") == 1 || checkbox("WHITEBOX") == 1 || checkbox("ATEMIO520") == 1 || checkbox("ATEMIO530") == 1)
322                        {
323                                if(extmoduldetect->ret != NULL)
324                                        addownconfig("extmoduldetect", extmoduldetect->ret);
325                        }
326
327                        break;
328                }
329        }
330
331        delownerrc(moduleadjust);
332        clearscreen(moduleadjust);
333}
334
335void screenmoduleconfig()
336{
337        int rcret = 0, i = 0, reset = 0, allready = 1;
338        struct skin* moduleconfig = getscreen("moduleconfig");
339        struct skin* listbox = getscreennode(moduleconfig, "listbox");
340        struct skin* b3 = getscreennode(moduleconfig, "b3");
341        struct skin* b4 = getscreennode(moduleconfig, "b4");
342        struct skin* b5 = getscreennode(moduleconfig, "b5");
343        struct skin* b6 = getscreennode(moduleconfig, "b6");
344        struct skin* load = getscreen("loading");
345        struct skin* tmp = NULL;
346        struct dvbdev* dvbnode = NULL;
347        char* tmpstr = NULL, *tmpnr = NULL;
348
349        listbox->aktline = 1;
350        listbox->aktpage = -1;
351
352        b3->usesavebg = 1;
353        b4->usesavebg = 1;
354        b5->usesavebg = 1;
355        b6->usesavebg = 1;
356
357start:
358        i = 0, allready = 1;
359        dvbnode = dvbdev;
360        tmp = NULL;
361        delmarkedscreennodes(moduleconfig, 1);
362
363        while(dvbnode != NULL)
364        {
365                if(dvbnode->type == CIDEV)
366                {
367                        i++;
368                        tmp = addlistbox(moduleconfig, listbox, tmp, 1);
369                        if(tmp != NULL)
370                        {
371                                tmpstr = ostrcat(tmpstr, _("Slot "), 1, 0);
372                                tmpnr = oitoa(i);
373                                tmpstr = ostrcat(tmpstr, tmpnr, 1, 1);
374                                tmpstr = ostrcat(tmpstr, ": ", 1, 0);
375                                if(dvbnode->caslot != NULL)
376                                {
377                                        if(dvbnode->caslot->name == NULL || dvbnode->caslot->status == 0)
378                                                tmpstr = ostrcat(tmpstr, _("unknown"), 1, 0);
379                                        else
380                                                tmpstr = ostrcat(tmpstr, dvbnode->caslot->name, 1, 0);
381                                }
382                                tmpstr = ostrcat(tmpstr, "\n", 1, 0);
383                                tmpstr = ostrcat(tmpstr, _("Status: "), 1, 0);
384                                if(dvbnode->caslot != NULL)
385                                {
386                                        if(dvbnode->caslot->status == 0 || dvbnode->caslot->status == 100)
387                                                tmpstr = ostrcat(tmpstr, _("empty"), 1, 0);
388                                        if(dvbnode->caslot->status == 1)
389                                                tmpstr = ostrcat(tmpstr, _("initializing"), 1, 0);
390                                        if(dvbnode->caslot->status == 2)
391                                                tmpstr = ostrcat(tmpstr, _("ready"), 1, 0);
392                                }
393                                if(dvbnode->caslot->status != 2) allready = 0;
394                                changetext(tmp, tmpstr);
395                                free(tmpstr); tmpstr = NULL;
396                                tmp->height = (listbox->fontsize * 2) + (2 * 2);
397                                tmp->type = TEXTBOX;
398                                tmp->handle = (void*)dvbnode;
399                        }
400                        tmp = addlistbox(moduleconfig, listbox, tmp, 1);
401                        if(tmp != NULL)
402                        {
403                                tmpstr = ostrcat(tmpstr, "camtype_", 1, 0);
404                                tmpstr = ostrcat(tmpstr, oitoa(i - 1), 1, 1);
405                                tmp->type = CHOICEBOX;
406                                changetext(tmp, _("Module Type"));
407                                addchoicebox(tmp, "0", _("Single Service"));
408                                addchoicebox(tmp, "1", _("Multiple Service"));
409                                setchoiceboxselection(tmp, getconfig(tmpstr, NULL));
410                                changename(tmp, tmpstr);
411                                free(tmpstr); tmpstr = NULL;
412                        }
413                        tmp = addlistbox(moduleconfig, listbox, tmp, 1);
414                        if(tmp != NULL)
415                        {
416                                tmp->height = 20;
417                                tmp->deaktivcol = 1;
418                        }
419                }
420                dvbnode = dvbnode->next;
421        }
422        if(allready == 1) reset = 0;
423
424
425        clearscreen(load);
426        drawscreen(moduleconfig, 0, 0);
427        if(reset > 0)
428        {
429                reset--;
430                drawscreen(load, 0, 0);
431        }
432        addscreenrc(moduleconfig, listbox);
433
434        tmp = listbox->select;
435        int count = 0;
436        while(1)
437        {
438                if(listbox->select != NULL && (listbox->select->type & CHOICEBOX))
439                        addscreenrc(moduleconfig, tmp);
440                rcret = waitrc(moduleconfig, 2000, 0);
441                tmp = listbox->select;
442               
443                printf("listbox->select->text: %s\n",listbox->select->text);
444                printf("listbox->select->name: %s\n",listbox->select->name);
445
446                if(listbox->select != NULL && listbox->select->handle != NULL && ostrstr(listbox->select->text, "Status: empty") == NULL)
447//              if(listbox->select != NULL && listbox->select->handle != NULL)
448                {
449                        b3->hidden = NO;
450                        b4->hidden = NO;
451                        b5->hidden = NO;
452                        b6->hidden = NO;
453                }
454                else
455                {
456                        b3->hidden = YES;
457                        b4->hidden = YES;
458                        b5->hidden = YES;
459                        b6->hidden = YES;
460                }
461                count++;
462                printf("count: %d\n",count);
463                printf("reset: %d\n",reset);
464
465                clearscreen(load);
466                drawscreen(moduleconfig, 0, 0);
467                if(reset > 0) drawscreen(load, 0, 0);
468
469                if(rcret == getrcconfigint("rcexit", NULL)) break;
470                if(rcret == getrcconfigint("rcok", NULL))
471                {
472                        tmp = listbox;
473                        while(tmp != NULL)
474                        {
475                                if(ostrncmp("camtype_", tmp->name, 8) == 0)
476                                        addconfigscreencheck(tmp->name, tmp, "0");
477                                tmp = tmp->next;
478                        }
479                        break;
480                }
481                if(listbox->select != NULL && listbox->select->handle != NULL && rcret == getrcconfigint("rcred", NULL))
482                {
483                        if(((struct dvbdev*)listbox->select->handle)->caslot != NULL)
484                        {
485                                ((struct dvbdev*)listbox->select->handle)->caslot->status = 100;
486                                reset = 5;
487                                drawscreen(load, 0, 0);
488                        }
489                }
490                if(listbox->select != NULL && listbox->select->handle != NULL && rcret == getrcconfigint("rcgreen", NULL))
491                {
492                        if((struct dvbdev*)listbox->select->handle != NULL)
493                        {
494                                drawscreen(load, 0, 0);
495                                caappmenu((struct dvbdev*)listbox->select->handle);
496                                sleep(7);
497                                reset = 0;
498                        }
499                }
500                if(listbox->select != NULL && listbox->select->handle != NULL && rcret == getrcconfigint("rcyellow", NULL))
501                {
502                        if((struct dvbdev*)listbox->select->handle != NULL)
503                        {
504                                screencaidlock((struct dvbdev*)listbox->select->handle);
505                                reset = 0;
506                        }
507                }
508                if(listbox->select != NULL && listbox->select->handle != NULL && rcret == getrcconfigint("rcblue", NULL))
509                {
510                        clearscreen(moduleconfig);
511                        screenchannelslot(((struct dvbdev*)listbox->select->handle)->devnr);
512                        drawscreen(moduleconfig, 0, 0);
513                }
514                if(rcret == getrcconfigint("rcmenu", NULL))
515                {
516                        screenmoduleadjust();
517                        reset = 0;
518                        drawscreen(moduleconfig, 0, 0);
519                }
520               
521                if(rcret == RCTIMEOUT) goto start;
522        }
523
524        delmarkedscreennodes(moduleconfig, 1);
525        delownerrc(moduleconfig);
526        clearscreen(load);
527        clearscreen(moduleconfig);
528}
529
530#endif
Note: See TracBrowser for help on using the repository browser.