source: titan/titan/tunerconfig.h @ 39653

Last change on this file since 39653 was 39653, checked in by gost, 5 years ago

[titan] dm900 fix second tuner

File size: 30.3 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                                //printf("++++ node->adapter:%i dvbnode->adapter:%i node->devnr:%i dvbnode->devnr:%i\n", node->adapter, dvbnode->adapter, node->devnr, dvbnode->devnr);
829                                if(checkbox("DM900") != 1 || dvbnode->devnr == 0)
830                                {
831                                        tmpnr = oitoa(dvbnode->adapter);
832                                        if(checkbox("DM900") != 1)
833                                                *loopstr = ostrcat(*loopstr, _("loop to Tuner"), 1, 0);
834                                        else
835                                                *loopstr = ostrcat(*loopstr, _("internal loop to Tuner"), 1, 0);
836                                        *loopstr = ostrcat(*loopstr, " ", 1, 0);
837                                        *loopstr = ostrcat(*loopstr, tmpnr, 1, 1);
838                                        *loopstr = ostrcat(*loopstr, "/", 1, 0);
839                                        tmpnr = oitoa(dvbnode->devnr);
840                                        *loopstr = ostrcat(*loopstr, tmpnr, 1, 1);
841                                        *loopstr = ostrcat(*loopstr, "\n", 1, 0);
842
843                                        *loopstr1 = ostrcat(*loopstr1, dvbnode->feshortname, 1, 0);
844                                        *loopstr1 = ostrcat(*loopstr1, "\n", 1, 0);
845                                }
846                        }
847                }
848                dvbnode = dvbnode->next;
849        }
850
851        *loopstr = ostrcat(*loopstr, _("off"), 1, 0);
852        *loopstr = ostrcat(*loopstr, "\n", 1, 0);
853        *loopstr1 = ostrcat(*loopstr1, "x\n", 1, 0);
854}
855
856//flag 0: del tunerconfig that are loop
857//flag 1: del all tunerconfig greater than maxsat
858void deltunerconfig(int flag)
859{
860        struct dvbdev* dvbnode = dvbdev;
861        int i, start = 0, end = 0;
862        char* tmpstr = NULL, *tmpnr = NULL;
863
864        while(dvbnode != NULL)
865        {
866                if(dvbnode->type == FRONTENDDEV && dvbnode->feinfo != NULL)
867                {
868                        if(flag == 0 && (getconfig(dvbnode->feshortname, NULL) == NULL || ostrcmp(getconfig(dvbnode->feshortname, NULL), "x") == 0))
869                        {
870                                dvbnode = dvbnode->next;
871                                continue;
872                        }
873                        if(flag == 0)
874                        {
875                                start = 1;
876                                end = getmaxsat(dvbnode->feshortname);
877                        }
878                        else
879                        {
880                                start = getmaxsat(dvbnode->feshortname) + 1;
881                                end = MAXSAT;
882                        }
883
884                        for(i = start; i <= end; i++)
885                        {
886                                tmpnr = oitoa(i);
887                                tmpstr = ostrcat(tmpstr, dvbnode->feshortname, 1, 0);
888                                tmpstr = ostrcat(tmpstr, "_sat", 1, 0);
889                                tmpstr = ostrcat(tmpstr, tmpnr, 1, 0);
890                                delconfig(tmpstr);
891                                free(tmpstr); tmpstr = NULL;
892
893                                tmpstr = ostrcat(tmpstr, dvbnode->feshortname, 1, 0);
894                                tmpstr = ostrcat(tmpstr, "_satnr", 1, 0);
895                                tmpstr = ostrcat(tmpstr, tmpnr, 1, 0);
896                                delconfig(tmpstr);
897                                free(tmpstr); tmpstr = NULL;
898
899                                tmpstr = ostrcat(tmpstr, dvbnode->feshortname, 1, 0);
900                                tmpstr = ostrcat(tmpstr, "_diseqc", 1, 0);
901                                tmpstr = ostrcat(tmpstr, tmpnr, 1, 0);
902                                delconfig(tmpstr);
903                                free(tmpstr); tmpstr = NULL;
904
905                                free(tmpnr); tmpnr = NULL;
906                        }
907
908                        if(flag == 0)
909                        {
910                                tmpstr = ostrcat(tmpstr, dvbnode->feshortname, 1, 0);
911                                tmpstr = ostrcat(tmpstr, "_maxsat", 1, 0);
912                                delconfig(tmpstr);
913                                free(tmpstr); tmpstr = NULL;
914                        }
915                       
916                        //del all diseqc settings on single LNB
917                        if(getmaxsat(dvbnode->feshortname) == 1)
918                        {
919                                for(i = 1; i <= MAXSAT; i++)
920                                {
921                                        tmpnr = oitoa(i);
922         
923                                        tmpstr = ostrcat(tmpstr, dvbnode->feshortname, 1, 0);
924                                        tmpstr = ostrcat(tmpstr, "_diseqc", 1, 0);
925                                        tmpstr = ostrcat(tmpstr, tmpnr, 1, 0);
926                                        delconfig(tmpstr);
927                                        free(tmpstr); tmpstr = NULL;
928 
929                                        free(tmpnr); tmpnr = NULL;
930                                }
931                        }
932                }
933                dvbnode = dvbnode->next;
934        }
935}
936
937void screentunerconfig()
938{
939        int rcret = 0, ret = 0, count = 0;
940        struct skin* tunerconfig = getscreen("tunerconfig");
941        struct skin* listbox = getscreennode(tunerconfig, "listbox");
942        struct skin* b4 = getscreennode(tunerconfig, "b4");
943       
944        struct dvbdev* dvbnode = dvbdev;
945        struct skin* tunernode = NULL;
946        char* tmpstr = NULL, *tmpstr1 = NULL;
947        struct skin* tmp = NULL;
948
949        listbox->aktline = 1;
950        listbox->aktpage = -1;
951
952        b4->hidden = YES;
953
954        if(status.recording > 0 || status.streaming > 0)
955        {
956                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);
957                return;
958        }
959
960        drawscreen(tunerconfig, 0, 0);
961
962        while(dvbnode != NULL)
963        {
964                if(dvbnode->type == FRONTENDDEV && dvbnode->feinfo != NULL)
965                {
966                        tunernode = addlistbox(tunerconfig, listbox, tunernode, 1);
967                        if(tunernode != NULL)
968                        {
969                                count++;
970                                tunernode->handle = (char*)dvbnode;     
971                                changetunername(tunernode, dvbnode->adapter, dvbnode->devnr, dvbnode->feinfo->name, dvbnode->fehyprid);
972                                tunernode->height = listbox->fontsize * 2;
973                                tunernode->valign = MIDDLE;
974                                tunernode->type = CHOICEBOX;
975                                createloopstr(dvbnode, &tmpstr, &tmpstr1);
976                                changeinput(tunernode, tmpstr);
977                                changechoiceboxvalue(tunernode, tmpstr1);
978                                free(tmpstr); tmpstr = NULL;
979                                free(tmpstr1); tmpstr1 = NULL;
980                                changename(tunernode, dvbnode->feshortname);
981
982                                setchoiceboxselection(tunernode, getconfig(dvbnode->feshortname, NULL));
983                                if(count == 1 && dvbnode->feinfo->type == FE_QPSK)
984                                        b4->hidden = NO;
985                        }
986                }
987                dvbnode = dvbnode->next;
988        }
989
990        drawscreen(tunerconfig, 0, 0);
991        addscreenrc(tunerconfig, listbox);
992
993        tmp = listbox->select;
994        while(1)
995        {
996                addscreenrc(tunerconfig, tmp);
997                rcret = waitrc(tunerconfig, 0, 0);
998                tmp =  listbox->select;
999
1000                if(listbox->select != NULL)
1001                        addconfigscreentmpcheck(listbox->select->name, listbox->select, "0");
1002
1003//              if(ostrstr(listbox->select->text, "DVB-S") != NULL || ostrstr(listbox->select->text, "STV090x") != NULL)               
1004                if(listbox->select != NULL && listbox->select->handle != NULL && ((struct dvbdev*)listbox->select->handle)->feinfo->type == FE_QPSK)           
1005                        b4->hidden = NO;
1006                else
1007                        b4->hidden = YES;       
1008
1009                drawscreen(tunerconfig, 0, 0);
1010
1011                if(rcret == getrcconfigint("rcexit", NULL)) break;
1012                if(rcret == getrcconfigint("rcred", NULL))
1013                {
1014                        if(listbox->select != NULL && listbox->select->handle != NULL && ostrcmp(listbox->select->ret, "0") == 0)
1015                        {
1016                                if(((struct dvbdev*)listbox->select->handle)->feinfo->type == FE_QPSK)
1017                                {
1018                                        clearscreen(tunerconfig);
1019                                        ret = screentunerreceptiondvbs((struct dvbdev*)listbox->select->handle);
1020                                        drawscreen(tunerconfig, 0, 0);
1021                                }
1022                                if(((struct dvbdev*)listbox->select->handle)->feinfo->type == FE_QAM)
1023                                {
1024                                        clearscreen(tunerconfig);
1025                                        if(((struct dvbdev*)listbox->select->handle)->fehyprid == NULL)
1026                                                ret = screentunerreceptiondvbc((struct dvbdev*)listbox->select->handle);
1027                                        else
1028                                                ret = screentunerreceptionhyprid((struct dvbdev*)listbox->select->handle);
1029
1030                                        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);
1031                                        drawscreen(tunerconfig, 0, 0);
1032                                }
1033                                if(((struct dvbdev*)listbox->select->handle)->feinfo->type == FE_OFDM)
1034                                {
1035                                        clearscreen(tunerconfig);
1036                                        if(((struct dvbdev*)listbox->select->handle)->fehyprid == NULL)
1037                                                ret = screentunerreceptiondvbt((struct dvbdev*)listbox->select->handle);
1038                                        else
1039                                                ret = screentunerreceptionhyprid((struct dvbdev*)listbox->select->handle);
1040       
1041                                        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);
1042                                        drawscreen(tunerconfig, 0, 0);
1043                                }
1044                        }
1045                }
1046                if(rcret == getrcconfigint("rcgreen", NULL))
1047                {
1048                        clearscreen(tunerconfig);
1049                        screenownpos();
1050                        drawscreen(tunerconfig, 0, 0);
1051                }
1052                if(rcret == getrcconfigint("rcok", NULL))
1053                {
1054                        ret = 1;
1055                        deltranspondertunablestatus();
1056                        writeconfigtmp();
1057                        deltunerconfig(0);
1058                        break;
1059                }
1060        }
1061
1062        deltunerconfig(1);
1063        delconfigtmpall();
1064        delmarkedscreennodes(tunerconfig, 1);
1065        delownerrc(tunerconfig);
1066        clearscreen(tunerconfig);
1067        settunerstatus();
1068
1069        //tune new if tunerconfig saved
1070        if(ret == 1)
1071        {
1072                ret = servicestop(status.aktservice, 1, 1);
1073                if(ret == 0)
1074                {
1075                        status.aktservice->transponder = NULL;
1076                        servicecheckret(servicestart(status.aktservice->channel, NULL, NULL, 5), 0);
1077                }
1078                resettvpic();
1079                drawscreen(tunerconfig, 0, 0);
1080                clearscreen(tunerconfig);
1081                drawscreen(skin, 0, 0);
1082        }
1083}
1084
1085#endif
Note: See TracBrowser for help on using the repository browser.