source: titan/titan/tunerconfig.h @ 37216

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

fix compiler warnings

File size: 30.0 KB
Line 
1#ifndef TUNERCONFIG_H
2#define TUNERCONFIG_H
3
4void writetunerconfigsat(struct dvbdev* tuner, struct skin* tunerreceptiondvbs)
5{
6        if(tuner == NULL) return;
7        if(tunerreceptiondvbs == NULL) return;
8
9        struct skin* child = tunerreceptiondvbs->child;
10        char* tmpstr = NULL, *tmpnr = NULL;
11
12        while(child != NULL)
13        {
14                if(child->del == 1 && child->name != NULL && ostrstr(child->name, "_lnb") == NULL)
15                {
16                        addconfigscreentmpcheck(child->name, child, "0");
17                        if(ostrstr(child->name, "_sat") != NULL && child->ret != NULL && ostrcmp(child->ret, "0") != 0)
18                        {
19                                if(child->handle != NULL)
20                                        tmpnr = oitoa((int)child->handle);
21                                tmpstr = ostrcat(tuner->feshortname, "_satnr", 0, 0);
22                                tmpstr = ostrcat(tmpstr, tmpnr, 1, 0);
23                                addconfigtmp(tmpstr, tmpnr);
24                                free(tmpstr); tmpstr = NULL;
25                                free(tmpnr); tmpnr = NULL;
26                        }
27                }
28                child = child->next;
29        }
30        writeconfigtmp();
31}
32
33void writetunerconfigcable(struct dvbdev* tuner, struct skin* tunerreceptiondvbc)
34{
35        if(tuner == NULL) return;
36        if(tunerreceptiondvbc == NULL) return;
37
38        struct skin* child = tunerreceptiondvbc->child;
39        char* tmpstr = NULL, *tmpnr = NULL;
40
41        while(child != NULL)
42        {
43                if(child->del == 1 && child->name != NULL)
44                {
45                        addconfigscreentmpcheck(child->name, child, "0");
46                        if(ostrstr(child->name, "_sat") != NULL && child->ret != NULL && ostrcmp(child->ret, "0") != 0)
47                        {
48                                if(child->handle != NULL)
49                                        tmpnr = oitoa((int)child->handle);
50                                tmpstr = ostrcat(tuner->feshortname, "_satnr", 0, 0);
51                                tmpstr = ostrcat(tmpstr, tmpnr, 1, 0);
52                                addconfigtmp(tmpstr, tmpnr);
53                                free(tmpstr); tmpstr = NULL;
54                                free(tmpnr); tmpnr = NULL;
55                        }
56                }
57                child = child->next;
58        }
59        writeconfigtmp();
60}
61
62void writetunerconfigterr(struct dvbdev* tuner, struct skin* tunerreceptiondvbt)
63{
64        if(tuner == NULL) return;
65        if(tunerreceptiondvbt == NULL) return;
66
67        struct skin* child = tunerreceptiondvbt->child;
68        char* tmpstr = NULL, *tmpnr = NULL;
69
70        while(child != NULL)
71        {
72                if(child->del == 1 && child->name != NULL)
73                {
74                        addconfigscreentmpcheck(child->name, child, "0");
75                        if(ostrstr(child->name, "_sat") != NULL && child->ret != NULL && ostrcmp(child->ret, "0") != 0)
76                        {
77                                if(child->handle != NULL)
78                                        tmpnr = oitoa((int)child->handle);
79                                tmpstr = ostrcat(tuner->feshortname, "_satnr", 0, 0);
80                                tmpstr = ostrcat(tmpstr, tmpnr, 1, 0);
81                                addconfigtmp(tmpstr, tmpnr);
82                                free(tmpstr); tmpstr = NULL;
83                                free(tmpnr); tmpnr = NULL;
84                        }
85                }
86                child = child->next;
87        }
88        writeconfigtmp();
89}
90
91void createsatlist(struct dvbdev* tuner, struct skin* tunerreceptiondvbs, struct skin* listbox, int maxsat)
92{
93        int i;
94        char* maxsatstring = NULL, *satstring = NULL;
95        char* orbitalposstring = NULL;
96        char* tmpstr = NULL, *tmpnr = NULL;
97        struct skin* tmp = NULL;
98
99        satstring = getsatstring(NULL, FE_QPSK);
100        maxsatstring = getmaxsatstring(maxsat);
101        orbitalposstring = getorbitalposstring(NULL, FE_QPSK);
102
103        tmp = addlistbox(tunerreceptiondvbs, listbox, tmp, 1);
104        if(tmp != NULL)
105        {
106                tmp->type = CHOICEBOX;
107                changetext(tmp, _("Satelite Type"));
108               
109                tmpstr = ostrcat(_("Single LNB"), "\n", 0, 0);
110                tmpstr = ostrcat(tmpstr, _("DiSEqC A/B"), 1, 0);
111                tmpstr = ostrcat(tmpstr, "\n", 1, 0);
112                tmpstr = ostrcat(tmpstr, _("DiSEqC A/B/C/D"), 1, 0);
113                tmpstr = ostrcat(tmpstr, "\n", 1, 0);
114                tmpstr = ostrcat(tmpstr, _("DiSEqC A/B/C/D/E/F/G/H"), 1, 0);
115                tmpstr = ostrcat(tmpstr, "\n", 1, 0);
116                tmpstr = ostrcat(tmpstr, _("Expert"), 1, 0);
117                changeinput(tmp, tmpstr);
118
119                changechoiceboxvalue(tmp, "0\n1\n2\n3\n4");
120                changename(tmp, "sat_type");
121
122                if(maxsat == 1)
123                        setchoiceboxselection(tmp, "0");
124                else if(maxsat == 2)
125                        setchoiceboxselection(tmp, "1");
126                else if(maxsat == 4)
127                        setchoiceboxselection(tmp, "2");
128                else if(maxsat == 8)
129                        setchoiceboxselection(tmp, "3");
130                else if(maxsat == MAXSAT)
131                        setchoiceboxselection(tmp, "4");
132
133                free(tmpstr); tmpstr = NULL;
134                tmp->del = 1;
135        }
136
137        tmp = addlistbox(tunerreceptiondvbs, listbox, tmp, 1);
138        if(tmp != NULL)
139        {
140                tmp->deaktivcol = 1;
141                tmp->height = 20;
142                tmp->del = 2;
143        }
144
145        for(i = 1; i <= maxsat; i++)
146        {
147                tmpnr = oitoa(i);
148
149                tmp = addlistbox(tunerreceptiondvbs, listbox, tmp, 1);
150                if(tmp != NULL)
151                {
152                        tmp->type = CHOICEBOX;
153                        tmpstr = ostrcat("Sat ", tmpnr, 0, 0);
154                        changetext(tmp, tmpstr);
155                        free(tmpstr); tmpstr = NULL;
156
157                        tmpstr = ostrcat(_("undefined"), "\n", 0, 0);
158                        tmpstr = ostrcat(tmpstr, satstring, 1, 0);
159                               
160                        changeinput(tmp, tmpstr);
161                        free(tmpstr); tmpstr = NULL;
162
163                        tmpstr = ostrcat("0\n", orbitalposstring, 0, 0);
164                        changechoiceboxvalue(tmp, tmpstr);
165                        free(tmpstr); tmpstr = NULL;
166
167                        tmpstr = ostrcat(tuner->feshortname, "_sat", 0, 0);
168                        tmpstr = ostrcat(tmpstr, tmpnr, 1, 0);
169                        changename(tmp, tmpstr);
170                        setchoiceboxselection(tmp, getconfig(tmpstr, NULL));
171                        free(tmpstr); tmpstr = NULL;
172               
173                        tmp->handle = (char*)i;
174                        tmp->del = 1;
175                }
176
177                if(maxsat == 2)
178                {
179                        tmp = addlistbox(tunerreceptiondvbs, listbox, tmp, 1);
180                        if(tmp != NULL)
181                        {
182                                tmp->type = CHOICEBOX;
183                                changetext(tmp, _("DiSEqC"));
184                                tmpstr = ostrcat(_("no"), "\n", 0, 0);
185                                tmpstr = ostrcat(tmpstr, maxsatstring, 1, 0);
186                                tmpstr = stringreplacecharonce(tmpstr, '1', 'A');
187                                tmpstr = stringreplacecharonce(tmpstr, '2', 'B');
188                                changechoiceboxvalue(tmp, tmpstr);
189                                changeinput(tmp, tmpstr);
190                                free(tmpstr); tmpstr = NULL;
191
192                                tmpstr = ostrcat("0\n", maxsatstring, 0, 0);
193                                changechoiceboxvalue(tmp, tmpstr);
194                                free(tmpstr); tmpstr = NULL;
195
196                                tmpstr = ostrcat(tuner->feshortname, "_diseqc", 0, 0);
197                                tmpstr = ostrcat(tmpstr, tmpnr, 1, 0);
198                                changename(tmp, tmpstr);
199                                setchoiceboxselection(tmp, getconfig(tmpstr, NULL));
200                                free(tmpstr); tmpstr = NULL;
201
202                                tmp->handle = (char*)i;
203                                tmp->del = 1;
204                        }
205                }
206                else if(maxsat == 4)
207                {
208                        tmp = addlistbox(tunerreceptiondvbs, listbox, tmp, 1);
209                        if(tmp != NULL)
210                        {
211                                tmp->type = CHOICEBOX;
212                                changetext(tmp, _("DiSEqC"));
213                                tmpstr = ostrcat(_("no"), "\n", 0, 0);
214                                tmpstr = ostrcat(tmpstr, maxsatstring, 1, 0);
215                                tmpstr = stringreplacecharonce(tmpstr, '1', 'A');
216                                tmpstr = stringreplacecharonce(tmpstr, '2', 'B');
217                                tmpstr = stringreplacecharonce(tmpstr, '3', 'C');
218                                tmpstr = stringreplacecharonce(tmpstr, '4', 'D');
219                                changechoiceboxvalue(tmp, tmpstr);
220                                changeinput(tmp, tmpstr);
221                                free(tmpstr); tmpstr = NULL;
222
223                                tmpstr = ostrcat("0\n", maxsatstring, 0, 0);
224                                changechoiceboxvalue(tmp, tmpstr);
225                                free(tmpstr); tmpstr = NULL;
226
227                                tmpstr = ostrcat(tuner->feshortname, "_diseqc", 0, 0);
228                                tmpstr = ostrcat(tmpstr, tmpnr, 1, 0);
229                                changename(tmp, tmpstr);
230                                setchoiceboxselection(tmp, getconfig(tmpstr, NULL));
231                                free(tmpstr); tmpstr = NULL;
232
233                                tmp->handle = (char*)i;
234                                tmp->del = 1;
235                        }
236                }
237                else if(maxsat == 8)
238                {
239                        tmp = addlistbox(tunerreceptiondvbs, listbox, tmp, 1);
240                        if(tmp != NULL)
241                        {
242                                tmp->type = CHOICEBOX;
243                                changetext(tmp, _("DiSEqC"));
244                                tmpstr = ostrcat(_("no"), "\n", 0, 0);
245                                tmpstr = ostrcat(tmpstr, maxsatstring, 1, 0);
246                                tmpstr = stringreplacecharonce(tmpstr, '1', 'A');
247                                tmpstr = stringreplacecharonce(tmpstr, '2', 'B');
248                                tmpstr = stringreplacecharonce(tmpstr, '3', 'C');
249                                tmpstr = stringreplacecharonce(tmpstr, '4', 'D');
250                                tmpstr = stringreplacecharonce(tmpstr, '5', 'E');
251                                tmpstr = stringreplacecharonce(tmpstr, '6', 'F');
252                                tmpstr = stringreplacecharonce(tmpstr, '7', 'G');
253                                tmpstr = stringreplacecharonce(tmpstr, '8', 'H');
254                                changechoiceboxvalue(tmp, tmpstr);
255                                changeinput(tmp, tmpstr);
256                                free(tmpstr); tmpstr = NULL;
257                                tmpstr = ostrcat("0\n", maxsatstring, 0, 0);
258                                changechoiceboxvalue(tmp, tmpstr);
259                                free(tmpstr); tmpstr = NULL;
260                                tmpstr = ostrcat(tuner->feshortname, "_diseqc", 0, 0);
261                                tmpstr = ostrcat(tmpstr, tmpnr, 1, 0);
262                                changename(tmp, tmpstr);
263                                setchoiceboxselection(tmp, getconfig(tmpstr, NULL));
264                                free(tmpstr); tmpstr = NULL;
265                               
266                                tmp->handle = (char*)i;
267                                tmp->del = 1;
268                        }
269                }
270                else if(maxsat == MAXSAT)
271                {
272                        tmp = addlistbox(tunerreceptiondvbs, listbox, tmp, 1);
273                        if(tmp != NULL)
274                        {
275                                tmp->type = CHOICEBOX;
276                                changetext(tmp, _("DiSEqC"));
277                                tmpstr = ostrcat(_("no"), "\n", 0, 0);
278                                tmpstr = ostrcat(tmpstr, maxsatstring, 1, 0);
279                                changechoiceboxvalue(tmp, tmpstr);
280                                changeinput(tmp, tmpstr);
281                                free(tmpstr); tmpstr = NULL;
282
283                                tmpstr = ostrcat("0\n", maxsatstring, 0, 0);
284                                changechoiceboxvalue(tmp, tmpstr);
285                                free(tmpstr); tmpstr = NULL;
286
287                                tmpstr = ostrcat(tuner->feshortname, "_diseqc", 0, 0);
288                                tmpstr = ostrcat(tmpstr, tmpnr, 1, 0);
289                                changename(tmp, tmpstr);
290                                setchoiceboxselection(tmp, getconfig(tmpstr, NULL));
291                                free(tmpstr); tmpstr = NULL;
292
293                                tmp->handle = (char*)i;
294                                tmp->del = 1;
295                        }
296                }
297                tmp = addlistbox(tunerreceptiondvbs, listbox, tmp, 1);
298                if(tmp != NULL)
299                {
300                        tmp->type = CHOICEBOX;
301                        changetext(tmp, _("Lnb / Unicable"));
302                        changeinput(tmp, _("press red"));
303                        changechoiceboxvalue(tmp, _("press red"));
304
305                        tmp->handle = (char*)i;
306                        tmp->del = 1;
307                }
308
309                tmp = addlistbox(tunerreceptiondvbs, listbox, tmp, 1);
310                if(tmp != NULL)
311                {
312                        tmp->deaktivcol = 1;
313                        tmp->height = 20;
314                        tmp->del = 2;
315                }
316
317                free(tmpnr);
318        }
319
320        free(satstring);
321        free(maxsatstring);
322        free(orbitalposstring);
323}
324
325void createcablelist(struct dvbdev* tuner, struct skin* tunerreceptiondvbc, struct skin* listbox)
326{
327        char *satstring = NULL;
328        char* orbitalposstring = NULL;
329        char* tmpstr = NULL;
330        struct skin* tmp = NULL;
331
332        satstring = getsatstring(NULL, FE_QAM);
333        orbitalposstring = getorbitalposstring(NULL, FE_QAM);
334
335        tmp = addlistbox(tunerreceptiondvbc, listbox, tmp, 1);
336        if(tmp != NULL)
337        {
338                tmp->type = CHOICEBOX;
339                changetext(tmp, _("Provider (DVB-C)"));
340
341                tmpstr = ostrcat(_("undefined"), "\n", 0, 0);
342                tmpstr = ostrcat(tmpstr, satstring, 1, 0);
343
344                changeinput(tmp, tmpstr);
345                free(tmpstr); tmpstr = NULL;
346
347                tmpstr = ostrcat("0\n", orbitalposstring, 0, 0);
348                changechoiceboxvalue(tmp, tmpstr);
349                free(tmpstr); tmpstr = NULL;
350
351                tmpstr = ostrcat(tuner->feshortname, "_sat", 0, 0);
352                tmpstr = ostrcat(tmpstr, "1", 1, 0);
353                changename(tmp, tmpstr);
354                setchoiceboxselection(tmp, getconfig(tmpstr, NULL));
355                free(tmpstr); tmpstr = NULL;
356
357                tmp->handle = (char*)1;
358                tmp->del = 1;
359        }
360
361        free(satstring);
362        free(orbitalposstring);
363}
364
365void createhypridlist(struct dvbdev* tuner, struct skin* tunerreceptionhyprid, struct skin* listbox)
366{
367        char *satstring = NULL;
368        char* orbitalposstring = NULL;
369        char* tmpstr = NULL;
370        struct skin* tmp = NULL;
371
372        satstring = getsatstring(NULL, FE_QAM);
373        orbitalposstring = getorbitalposstring(NULL, FE_QAM);
374
375        char* hypridlist = gethypridtunerchoices(tuner->devnr);
376        char* hypridlistvalve = gethypridtunerchoicesvalue(tuner->devnr);
377       
378        tmp = addlistbox(tunerreceptionhyprid, listbox, tmp, 1);
379        if(tmp != NULL)
380        {
381                tmp->type = CHOICEBOX;
382                changetext(tmp, _("Tuner Type"));
383               
384                changeinput(tmp, hypridlistvalve);
385                changechoiceboxvalue(tmp, hypridlist);
386
387                free(tmpstr); tmpstr = NULL;
388
389                tmpstr = ostrcat(tuner->feshortname, "_hyprid", 0, 0);
390//              tmpstr = ostrcat(tmpstr, tuner->fehyprid, 1, 0);
391                changename(tmp, tmpstr);               
392               
393                setchoiceboxselection(tmp, getconfig(tmpstr, NULL));
394
395                free(tmpstr); tmpstr = NULL;
396                tmp->del = 1;
397        }
398
399        free(satstring);
400        free(orbitalposstring);
401}
402
403void createterrlist(struct dvbdev* tuner, struct skin* tunerreceptiondvbt, struct skin* listbox)
404{
405        char *satstring = NULL;
406        char* orbitalposstring = NULL;
407        char* tmpstr = NULL;
408        struct skin* tmp = NULL;
409
410        satstring = getsatstring(NULL, FE_OFDM);
411        orbitalposstring = getorbitalposstring(NULL, FE_OFDM);
412
413        tmp = addlistbox(tunerreceptiondvbt, listbox, tmp, 1);
414        if(tmp != NULL)
415        {
416                tmp->type = CHOICEBOX;
417                changetext(tmp, _("Provider (DVB-T)"));
418
419                tmpstr = ostrcat(_("undefined"), "\n", 0, 0);
420                tmpstr = ostrcat(tmpstr, satstring, 1, 0);
421
422                changeinput(tmp, tmpstr);
423                free(tmpstr); tmpstr = NULL;
424
425                tmpstr = ostrcat("0\n", orbitalposstring, 0, 0);
426                changechoiceboxvalue(tmp, tmpstr);
427                free(tmpstr); tmpstr = NULL;
428
429                tmpstr = ostrcat(tuner->feshortname, "_sat", 0, 0);
430                tmpstr = ostrcat(tmpstr, "1", 1, 0);
431                changename(tmp, tmpstr);
432                setchoiceboxselection(tmp, getconfig(tmpstr, NULL));
433                free(tmpstr); tmpstr = NULL;
434
435                tmp->handle = (char*)1;
436                tmp->del = 1;
437        }
438
439        free(satstring);
440        free(orbitalposstring);
441}
442
443int screentunerreceptiondvbs(struct dvbdev* tuner)
444{
445        int rcret = 0, ret = 0, maxsat = 1;
446        struct skin* tunerreceptiondvbs = getscreen("tunerreceptiondvbs");
447        struct skin* listbox = getscreennode(tunerreceptiondvbs, "listbox");
448        struct skin* b3 = getscreennode(tunerreceptiondvbs, "b3");
449        struct skin* tmp = NULL;
450        char* tmpstr = NULL;
451       
452        listbox->aktline = 1;
453        listbox->aktpage = -1;
454        b3->hidden = YES;
455
456        if(tuner == NULL || tuner->feshortname == NULL)
457        {
458                err("out -> NULL detect");
459                return 0;
460        }
461
462        tmpstr = ostrcat(tuner->feshortname, "_maxsat", 0, 0);
463        maxsat = getconfigint(tmpstr, NULL);
464        free(tmpstr); tmpstr = NULL;
465        if(maxsat < 1) maxsat = 1;
466start:
467        createsatlist(tuner, tunerreceptiondvbs, listbox, maxsat);
468
469        b3->usesavebg = 1;
470        drawscreen(tunerreceptiondvbs, 2, 0);
471        b3->usesavebg = YES;
472
473        drawscreen(tunerreceptiondvbs, 0, 0);
474        addscreenrc(tunerreceptiondvbs, listbox);
475
476                       
477        tmp = listbox->select;
478        while(1)
479        {
480                addscreenrc(tunerreceptiondvbs, tmp);
481                rcret = waitrc(tunerreceptiondvbs, 0, 0);
482                tmp = listbox->select;
483
484                if(rcret == getrcconfigint("rcexit", NULL))
485                {
486                        break;
487                }
488
489                if(ostrcmp(listbox->select->text, _("Lnb / Unicable")) == 0)
490                {
491                        b3->hidden = NO;
492                        changetext(b3, _("EDIT LNB / UNICABLE"));
493                }
494                else if(ostrcmp(listbox->select->text, _("DiSEqC")) == 0)
495                {
496                        b3->hidden = NO;
497                        changetext(b3, _("EDIT DiSEqC"));
498                }
499                else
500                        b3->hidden = YES;       
501                drawscreen(tunerreceptiondvbs, 0, 0);
502                                       
503                if(ostrcmp(listbox->select->name, "sat_type") == 0)
504                {
505                        if((ostrcmp(listbox->select->ret, "0") == 0) && (maxsat != 1))
506                        {
507                                delconfigtmpall();
508                                delmarkedscreennodes(tunerreceptiondvbs, 1);
509                                delmarkedscreennodes(tunerreceptiondvbs, 2);
510                                delownerrc(tunerreceptiondvbs);
511                                clearscreen(tunerreceptiondvbs);
512                                maxsat = 1;
513                                goto start;
514                        }
515                        else if((ostrcmp(listbox->select->ret, "1") == 0) && (maxsat != 2))
516                        {
517                                delconfigtmpall();
518                                delmarkedscreennodes(tunerreceptiondvbs, 1);
519                                delmarkedscreennodes(tunerreceptiondvbs, 2);
520                                delownerrc(tunerreceptiondvbs);
521                                clearscreen(tunerreceptiondvbs);
522                                maxsat = 2;
523                                goto start;
524                        }
525                        else if((ostrcmp(listbox->select->ret, "2") == 0) && (maxsat != 4))
526                        {
527                                delconfigtmpall();
528                                delmarkedscreennodes(tunerreceptiondvbs, 1);
529                                delmarkedscreennodes(tunerreceptiondvbs, 2);
530                                delownerrc(tunerreceptiondvbs);
531                                clearscreen(tunerreceptiondvbs);
532                                maxsat = 4;
533                                goto start;
534                        }
535                        else if((ostrcmp(listbox->select->ret, "3") == 0) && (maxsat != 8))
536                        {
537                                delconfigtmpall();
538                                delmarkedscreennodes(tunerreceptiondvbs, 1);
539                                delmarkedscreennodes(tunerreceptiondvbs, 2);
540                                delownerrc(tunerreceptiondvbs);
541                                clearscreen(tunerreceptiondvbs);
542                                maxsat = 8;
543                                goto start;
544                        }
545                        else if((ostrcmp(listbox->select->ret, "4") == 0) && (maxsat != MAXSAT))
546                        {
547                                delconfigtmpall();
548                                delmarkedscreennodes(tunerreceptiondvbs, 1);
549                                delmarkedscreennodes(tunerreceptiondvbs, 2);
550                                delownerrc(tunerreceptiondvbs);
551                                clearscreen(tunerreceptiondvbs);
552                                maxsat = MAXSAT;
553                                goto start;
554                        }
555                }
556
557                if(rcret == getrcconfigint("rcred", NULL))
558                {
559                        if(listbox->select != NULL && ostrcmp(listbox->select->text, _("Lnb / Unicable")) == 0 && listbox->select->ret != NULL && ostrcmp(listbox->select->ret, "0") != 0)
560                        {
561                                clearscreen(tunerreceptiondvbs);
562                                screenlnb(tuner->feshortname, listbox->select->handle);
563                                drawscreen(tunerreceptiondvbs, 0, 0);
564                        }
565                        if(listbox->select != NULL && ostrcmp(listbox->select->text, _("DiSEqC")) == 0 && listbox->select->ret != NULL && ostrcmp(listbox->select->ret, "0") != 0)
566                        {
567                                clearscreen(tunerreceptiondvbs);
568                                screendiseqc(tuner->feshortname, listbox->select->handle);
569                                drawscreen(tunerreceptiondvbs, 0, 0);
570                        }
571                }
572                else if(rcret == getrcconfigint("rcok", NULL))
573                {
574                        ret = 1;
575                        deltranspondertunablestatus();
576                        writetunerconfigsat(tuner, tunerreceptiondvbs);
577                        tmpstr = ostrcat(tuner->feshortname, "_maxsat", 0, 0);
578                        addconfigint(tmpstr, maxsat);
579                        free(tmpstr); tmpstr = NULL;
580                        writeallconfig(1);
581// test reload tuner
582                        changedvbdev(tuner);
583
584                        break;
585                }
586        }
587
588        delconfigtmpall();
589        delmarkedscreennodes(tunerreceptiondvbs, 1);
590        delmarkedscreennodes(tunerreceptiondvbs, 2);
591        delownerrc(tunerreceptiondvbs);
592        clearscreen(tunerreceptiondvbs);
593        return ret;
594}
595
596int screentunerreceptionhyprid(struct dvbdev* tuner)
597{
598        int rcret = 0, ret = 0;
599        struct skin* tunerreceptionhyprid = getscreen("tunerreceptionhyprid");
600        struct skin* listbox = getscreennode(tunerreceptionhyprid, "listbox");
601        struct skin* tmp = NULL;
602        char* tmpstr = NULL;
603
604        listbox->aktline = 1;
605        listbox->aktpage = -1;
606
607        if(tuner == NULL || tuner->feshortname == NULL)
608        {
609                err("out -> NULL detect");
610                return 0;
611        }
612
613        createhypridlist(tuner, tunerreceptionhyprid, listbox);
614
615        drawscreen(tunerreceptionhyprid, 0, 0);
616        addscreenrc(tunerreceptionhyprid, listbox);
617
618        tmp = listbox->select;
619        while(1)
620        {
621                addscreenrc(tunerreceptionhyprid, tmp);
622                rcret = waitrc(tunerreceptionhyprid, 0, 0);
623                tmp = listbox->select;
624
625                drawscreen(tunerreceptionhyprid, 0, 0);
626
627                if(rcret == getrcconfigint("rcexit", NULL)) break;
628                if(rcret == getrcconfigint("rcok", NULL))
629                {
630                        ret = 1;
631                        deltranspondertunablestatus();
632                        writetunerconfigcable(tuner, tunerreceptionhyprid);
633       
634                        tmpstr = ostrcat(tuner->feshortname, "_hyprid", 0, 0);
635                        addconfig(tmpstr, listbox->select->ret);
636                        free(tmpstr); tmpstr = NULL;
637                        writeallconfig(1);
638
639                        clearscreen(tunerreceptionhyprid);
640                        char* realname = gethypridtunerchoicesvaluename(tuner->devnr, listbox->select->ret);
641                       
642//                      if(realname != NULL && ostrcmp(realname, "DVB-T2") == 0)
643                        if(realname != NULL && ostrstr(realname, "DVB-T") != NULL)
644                        {
645                                ret = screentunerreceptiondvbt(tuner);
646                                if(ret == 1)
647                                {
648                                        sethypridtuner(tuner->devnr, listbox->select->ret);
649//                                      free(realname) , realname = NULL;
650//                                      realname = gethypridtunername(tuner->devnr, listbox->select->ret);
651//                                      strcpy(tuner->feinfo->name, realname);
652//                                      textbox(_("Message"), _("They need to switch the tuner Hyprid restart the gui !"), _("OK"), getrcconfigint("rcok", NULL), _("EXIT"), getrcconfigint("rcexit", NULL), NULL, 0, NULL, 0, 800, 200, 0, 0);
653                                        if(checkbox("SPARK7162") == 1)
654                                        {
655                                                if(textbox(_("Message"), _("Hybrid tuner mode changed, receiver will be restarted!"), _("OK"), getrcconfigint("rcok", NULL), _("EXIT"), getrcconfigint("rcexit", NULL), NULL, 0, NULL, 0, 600, 200, 0, 0) == 1)
656                                                        oshutdown(2, 1);
657                                        }
658                                        changedvbdev(tuner);
659                                }
660                        }
661//                      else if(realname != NULL && ostrcmp(realname, "DVB-C") == 0)
662                        else if(realname != NULL && ostrstr(realname, "DVB-C") != NULL)
663                        {
664                                ret = screentunerreceptiondvbc(tuner);
665                                if(ret == 1)
666                                {
667                                        sethypridtuner(tuner->devnr, listbox->select->ret);
668//                                      free(realname) , realname = NULL;
669//                                      realname = gethypridtunername(tuner->devnr, listbox->select->ret);
670//                                      strcpy(tuner->feinfo->name, realname);
671//                                      textbox(_("Message"), _("They need to switch the tuner Hyprid restart the gui !"), _("OK"), getrcconfigint("rcok", NULL), _("EXIT"), getrcconfigint("rcexit", NULL), NULL, 0, NULL, 0, 800, 200, 0, 0);
672                                        if(checkbox("SPARK7162") == 1)
673                                        {
674                                                if(textbox(_("Message"), _("Hybrid tuner mode changed, receiver will be restarted!"), _("OK"), getrcconfigint("rcok", NULL), _("EXIT"), getrcconfigint("rcexit", NULL), NULL, 0, NULL, 0, 600, 200, 0, 0) == 1)
675                                                        oshutdown(2, 1);
676                                        }
677                                        changedvbdev(tuner);
678                                }
679                        }
680                        free(realname), realname = NULL;
681/*
682                        if(listbox->select->ret != NULL && ostrcmp(listbox->select->ret, "0") == 0)
683                                ret = screentunerreceptiondvbt(tuner);
684                        else if(listbox->select->ret != NULL && ostrcmp(listbox->select->ret, "2") == 0)
685                                ret = screentunerreceptiondvbc(tuner);
686*/
687                        //drawscreen(tunerreceptionhyprid, 0, 0);
688                       
689                        break;
690                }
691        }
692
693        delconfigtmpall();
694        delmarkedscreennodes(tunerreceptionhyprid, 1);
695        delownerrc(tunerreceptionhyprid);
696        clearscreen(tunerreceptionhyprid);
697        return ret;
698}
699
700int screentunerreceptiondvbc(struct dvbdev* tuner)
701{
702        int rcret = 0, ret = 0;
703        struct skin* tunerreceptiondvbc = getscreen("tunerreceptiondvbc");
704        struct skin* listbox = getscreennode(tunerreceptiondvbc, "listbox");
705        struct skin* tmp = NULL;
706        char* tmpstr = NULL;
707
708        listbox->aktline = 1;
709        listbox->aktpage = -1;
710
711        if(tuner == NULL || tuner->feshortname == NULL)
712        {
713                err("out -> NULL detect");
714                return 0;
715        }
716
717        createcablelist(tuner, tunerreceptiondvbc, listbox);
718
719        drawscreen(tunerreceptiondvbc, 0, 0);
720        addscreenrc(tunerreceptiondvbc, listbox);
721
722        tmp = listbox->select;
723        while(1)
724        {
725                addscreenrc(tunerreceptiondvbc, tmp);
726                rcret = waitrc(tunerreceptiondvbc, 0, 0);
727                tmp = listbox->select;
728
729                drawscreen(tunerreceptiondvbc, 0, 0);
730
731                if(rcret == getrcconfigint("rcexit", NULL)) break;
732                if(rcret == getrcconfigint("rcok", NULL))
733                {
734                        ret = 1;
735                        deltranspondertunablestatus();
736                        writetunerconfigcable(tuner, tunerreceptiondvbc);
737       
738                        tmpstr = ostrcat(tuner->feshortname, "_maxsat", 0, 0);
739                        addconfigint(tmpstr, 1);
740                        free(tmpstr); tmpstr = NULL;
741                        writeallconfig(1);
742// test reload tuner
743                        changedvbdev(tuner);
744
745                        break;
746                }
747        }
748
749        delconfigtmpall();
750        delmarkedscreennodes(tunerreceptiondvbc, 1);
751        delownerrc(tunerreceptiondvbc);
752        clearscreen(tunerreceptiondvbc);
753        return ret;
754}
755
756int screentunerreceptiondvbt(struct dvbdev* tuner)
757{
758        int rcret = 0, ret = 0;
759        struct skin* tunerreceptiondvbt = getscreen("tunerreceptiondvbt");
760        struct skin* listbox = getscreennode(tunerreceptiondvbt, "listbox");
761        struct skin* tmp = NULL;
762        char* tmpstr = NULL;
763
764        listbox->aktline = 1;
765        listbox->aktpage = -1;
766
767        if(tuner == NULL || tuner->feshortname == NULL)
768        {
769                err("out -> NULL detect");
770                return 0;
771        }
772
773        createterrlist(tuner, tunerreceptiondvbt, listbox);
774
775        drawscreen(tunerreceptiondvbt, 0, 0);
776        addscreenrc(tunerreceptiondvbt, listbox);
777
778        tmp = listbox->select;
779        while(1)
780        {
781                addscreenrc(tunerreceptiondvbt, tmp);
782                rcret = waitrc(tunerreceptiondvbt, 0, 0);
783                tmp = listbox->select;
784
785                drawscreen(tunerreceptiondvbt, 0, 0);
786
787                if(rcret == getrcconfigint("rcexit", NULL)) break;
788                if(rcret == getrcconfigint("rcok", NULL))
789                {
790                        ret = 1;
791                        deltranspondertunablestatus();
792                        writetunerconfigterr(tuner, tunerreceptiondvbt);
793
794                        tmpstr = ostrcat(tuner->feshortname, "_maxsat", 0, 0);
795                        addconfigint(tmpstr, 1);
796                        free(tmpstr); tmpstr = NULL;
797                        writeallconfig(1);
798// test reload tuner
799                        changedvbdev(tuner);
800
801                        break;
802                }
803        }
804
805        delconfigtmpall();
806        delmarkedscreennodes(tunerreceptiondvbt, 1);
807        delownerrc(tunerreceptiondvbt);
808        clearscreen(tunerreceptiondvbt);
809        return ret;
810}
811
812//create the loop string for the choicebox
813void createloopstr(struct dvbdev* node, char** loopstr, char** loopstr1)
814{
815        struct dvbdev* dvbnode = dvbdev;
816        char* tmpnr = NULL;
817
818        *loopstr = ostrcat(*loopstr, _("direct connect"), 1, 0);
819        *loopstr = ostrcat(*loopstr, "\n", 1, 0);
820        *loopstr1 = ostrcat(*loopstr1, "0\n", 1, 0);
821
822        while(dvbnode != NULL)
823        {
824                if(dvbnode->type == FRONTENDDEV && dvbnode->feinfo != NULL && dvbnode->feinfo->type == FE_QPSK && node->feinfo->type == FE_QPSK)
825                {
826                        if(node->adapter != dvbnode->adapter || node->devnr != dvbnode->devnr)
827                        {
828                                tmpnr = oitoa(dvbnode->adapter);
829                                *loopstr = ostrcat(*loopstr, _("loop to Tuner"), 1, 0);
830                                *loopstr = ostrcat(*loopstr, " ", 1, 0);
831                                *loopstr = ostrcat(*loopstr, tmpnr, 1, 1);
832                                *loopstr = ostrcat(*loopstr, "/", 1, 0);
833                                tmpnr = oitoa(dvbnode->devnr);
834                                *loopstr = ostrcat(*loopstr, tmpnr, 1, 1);
835                                *loopstr = ostrcat(*loopstr, "\n", 1, 0);
836
837                                *loopstr1 = ostrcat(*loopstr1, dvbnode->feshortname, 1, 0);
838                                *loopstr1 = ostrcat(*loopstr1, "\n", 1, 0);
839                        }
840                }
841                dvbnode = dvbnode->next;
842        }
843
844        *loopstr = ostrcat(*loopstr, _("off"), 1, 0);
845        *loopstr = ostrcat(*loopstr, "\n", 1, 0);
846        *loopstr1 = ostrcat(*loopstr1, "x\n", 1, 0);
847}
848
849//flag 0: del tunerconfig that are loop
850//flag 1: del all tunerconfig greater than maxsat
851void deltunerconfig(int flag)
852{
853        struct dvbdev* dvbnode = dvbdev;
854        int i, start = 0, end = 0;
855        char* tmpstr = NULL, *tmpnr = NULL;
856
857        while(dvbnode != NULL)
858        {
859                if(dvbnode->type == FRONTENDDEV && dvbnode->feinfo != NULL)
860                {
861                        if(flag == 0 && (getconfig(dvbnode->feshortname, NULL) == NULL || ostrcmp(getconfig(dvbnode->feshortname, NULL), "x") == 0))
862                        {
863                                dvbnode = dvbnode->next;
864                                continue;
865                        }
866                        if(flag == 0)
867                        {
868                                start = 1;
869                                end = getmaxsat(dvbnode->feshortname);
870                        }
871                        else
872                        {
873                                start = getmaxsat(dvbnode->feshortname) + 1;
874                                end = MAXSAT;
875                        }
876
877                        for(i = start; i <= end; i++)
878                        {
879                                tmpnr = oitoa(i);
880                                tmpstr = ostrcat(tmpstr, dvbnode->feshortname, 1, 0);
881                                tmpstr = ostrcat(tmpstr, "_sat", 1, 0);
882                                tmpstr = ostrcat(tmpstr, tmpnr, 1, 0);
883                                delconfig(tmpstr);
884                                free(tmpstr); tmpstr = NULL;
885
886                                tmpstr = ostrcat(tmpstr, dvbnode->feshortname, 1, 0);
887                                tmpstr = ostrcat(tmpstr, "_satnr", 1, 0);
888                                tmpstr = ostrcat(tmpstr, tmpnr, 1, 0);
889                                delconfig(tmpstr);
890                                free(tmpstr); tmpstr = NULL;
891
892                                tmpstr = ostrcat(tmpstr, dvbnode->feshortname, 1, 0);
893                                tmpstr = ostrcat(tmpstr, "_diseqc", 1, 0);
894                                tmpstr = ostrcat(tmpstr, tmpnr, 1, 0);
895                                delconfig(tmpstr);
896                                free(tmpstr); tmpstr = NULL;
897
898                                free(tmpnr); tmpnr = NULL;
899                        }
900
901                        if(flag == 0)
902                        {
903                                tmpstr = ostrcat(tmpstr, dvbnode->feshortname, 1, 0);
904                                tmpstr = ostrcat(tmpstr, "_maxsat", 1, 0);
905                                delconfig(tmpstr);
906                                free(tmpstr); tmpstr = NULL;
907                        }
908                       
909                        //del all diseqc settings on single LNB
910                        if(getmaxsat(dvbnode->feshortname) == 1)
911                        {
912                                for(i = 1; i <= MAXSAT; i++)
913                                {
914                                        tmpnr = oitoa(i);
915         
916                                        tmpstr = ostrcat(tmpstr, dvbnode->feshortname, 1, 0);
917                                        tmpstr = ostrcat(tmpstr, "_diseqc", 1, 0);
918                                        tmpstr = ostrcat(tmpstr, tmpnr, 1, 0);
919                                        delconfig(tmpstr);
920                                        free(tmpstr); tmpstr = NULL;
921 
922                                        free(tmpnr); tmpnr = NULL;
923                                }
924                        }
925                }
926                dvbnode = dvbnode->next;
927        }
928}
929
930void screentunerconfig()
931{
932        int rcret = 0, ret = 0, count = 0;
933        struct skin* tunerconfig = getscreen("tunerconfig");
934        struct skin* listbox = getscreennode(tunerconfig, "listbox");
935        struct skin* b4 = getscreennode(tunerconfig, "b4");
936       
937        struct dvbdev* dvbnode = dvbdev;
938        struct skin* tunernode = NULL;
939        char* tmpstr = NULL, *tmpstr1 = NULL;
940        struct skin* tmp = NULL;
941
942        listbox->aktline = 1;
943        listbox->aktpage = -1;
944
945        b4->hidden = YES;
946
947        if(status.recording > 0 || status.streaming > 0)
948        {
949                textbox(_("Message"), _("Tunerconfig is not allowed if record\nor stream is running !"), _("OK"), getrcconfigint("rcok", NULL), _("EXIT"), getrcconfigint("rcexit", NULL), NULL, 0, NULL, 0, 600, 200, 0, 0);
950                return;
951        }
952
953        drawscreen(tunerconfig, 0, 0);
954
955        while(dvbnode != NULL)
956        {
957                if(dvbnode->type == FRONTENDDEV && dvbnode->feinfo != NULL)
958                {
959                        tunernode = addlistbox(tunerconfig, listbox, tunernode, 1);
960                        if(tunernode != NULL)
961                        {
962                                count++;
963                                tunernode->handle = (char*)dvbnode;     
964                                changetunername(tunernode, dvbnode->adapter, dvbnode->devnr, dvbnode->feinfo->name, dvbnode->fehyprid);
965                                tunernode->height = listbox->fontsize * 2;
966                                tunernode->valign = MIDDLE;
967                                tunernode->type = CHOICEBOX;
968                                createloopstr(dvbnode, &tmpstr, &tmpstr1);
969                                changeinput(tunernode, tmpstr);
970                                changechoiceboxvalue(tunernode, tmpstr1);
971                                free(tmpstr); tmpstr = NULL;
972                                free(tmpstr1); tmpstr1 = NULL;
973                                changename(tunernode, dvbnode->feshortname);
974
975                                setchoiceboxselection(tunernode, getconfig(dvbnode->feshortname, NULL));
976                                if(count == 1 && dvbnode->feinfo->type == FE_QPSK)
977                                        b4->hidden = NO;
978                        }
979                }
980                dvbnode = dvbnode->next;
981        }
982
983        drawscreen(tunerconfig, 0, 0);
984        addscreenrc(tunerconfig, listbox);
985
986        tmp = listbox->select;
987        while(1)
988        {
989                addscreenrc(tunerconfig, tmp);
990                rcret = waitrc(tunerconfig, 0, 0);
991                tmp =  listbox->select;
992
993                if(listbox->select != NULL)
994                        addconfigscreentmpcheck(listbox->select->name, listbox->select, "0");
995
996//              if(ostrstr(listbox->select->text, "DVB-S") != NULL || ostrstr(listbox->select->text, "STV090x") != NULL)               
997                if(listbox->select != NULL && listbox->select->handle != NULL && ((struct dvbdev*)listbox->select->handle)->feinfo->type == FE_QPSK)           
998                        b4->hidden = NO;
999                else
1000                        b4->hidden = YES;       
1001
1002                drawscreen(tunerconfig, 0, 0);
1003
1004                if(rcret == getrcconfigint("rcexit", NULL)) break;
1005                if(rcret == getrcconfigint("rcred", NULL))
1006                {
1007                        if(listbox->select != NULL && listbox->select->handle != NULL && ostrcmp(listbox->select->ret, "0") == 0)
1008                        {
1009                                if(((struct dvbdev*)listbox->select->handle)->feinfo->type == FE_QPSK)
1010                                {
1011                                        clearscreen(tunerconfig);
1012                                        ret = screentunerreceptiondvbs((struct dvbdev*)listbox->select->handle);
1013                                        drawscreen(tunerconfig, 0, 0);
1014                                }
1015                                if(((struct dvbdev*)listbox->select->handle)->feinfo->type == FE_QAM)
1016                                {
1017                                        clearscreen(tunerconfig);
1018                                        if(((struct dvbdev*)listbox->select->handle)->fehyprid == NULL)
1019                                                ret = screentunerreceptiondvbc((struct dvbdev*)listbox->select->handle);
1020                                        else
1021                                                ret = screentunerreceptionhyprid((struct dvbdev*)listbox->select->handle);
1022
1023                                        changetunername(tunernode, ((struct dvbdev*)listbox->select->handle)->adapter, ((struct dvbdev*)listbox->select->handle)->devnr, ((struct dvbdev*)listbox->select->handle)->feinfo->name, ((struct dvbdev*)listbox->select->handle)->fehyprid);
1024                                        drawscreen(tunerconfig, 0, 0);
1025                                }
1026                                if(((struct dvbdev*)listbox->select->handle)->feinfo->type == FE_OFDM)
1027                                {
1028                                        clearscreen(tunerconfig);
1029                                        if(((struct dvbdev*)listbox->select->handle)->fehyprid == NULL)
1030                                                ret = screentunerreceptiondvbt((struct dvbdev*)listbox->select->handle);
1031                                        else
1032                                                ret = screentunerreceptionhyprid((struct dvbdev*)listbox->select->handle);
1033       
1034                                        changetunername(tunernode, ((struct dvbdev*)listbox->select->handle)->adapter, ((struct dvbdev*)listbox->select->handle)->devnr, ((struct dvbdev*)listbox->select->handle)->feinfo->name, ((struct dvbdev*)listbox->select->handle)->fehyprid);
1035                                        drawscreen(tunerconfig, 0, 0);
1036                                }
1037                        }
1038                }
1039                if(rcret == getrcconfigint("rcgreen", NULL))
1040                {
1041                        clearscreen(tunerconfig);
1042                        screenownpos();
1043                        drawscreen(tunerconfig, 0, 0);
1044                }
1045                if(rcret == getrcconfigint("rcok", NULL))
1046                {
1047                        ret = 1;
1048                        deltranspondertunablestatus();
1049                        writeconfigtmp();
1050                        deltunerconfig(0);
1051                        break;
1052                }
1053        }
1054
1055        deltunerconfig(1);
1056        delconfigtmpall();
1057        delmarkedscreennodes(tunerconfig, 1);
1058        delownerrc(tunerconfig);
1059        clearscreen(tunerconfig);
1060        settunerstatus();
1061
1062        //tune new if tunerconfig saved
1063        if(ret == 1)
1064        {
1065                ret = servicestop(status.aktservice, 1, 1);
1066                if(ret == 0)
1067                {
1068                        status.aktservice->transponder = NULL;
1069                        servicecheckret(servicestart(status.aktservice->channel, NULL, NULL, 5), 0);
1070                }
1071                resettvpic();
1072                drawscreen(tunerconfig, 0, 0);
1073                clearscreen(tunerconfig);
1074                drawscreen(skin, 0, 0);
1075        }
1076}
1077
1078#endif
Note: See TracBrowser for help on using the repository browser.