Merge branch 'org.openembedded.dev' of git://git.openembedded.net/openembedded into...
[vuplus_openembedded] / packages / enigma / enigma / add_blindscan_to_menu.diff
1 Index: src/enigma_scan.cpp
2 ===================================================================
3 RCS file: /cvs/tuxbox/apps/tuxbox/b/src/enigma_scan.cpp,v
4 retrieving revision 1.25
5 diff -u -r1.25 enigma_scan.cpp
6 --- a/src/enigma_scan.cpp       5 Feb 2006 23:41:01 -0000       1.25
7 +++ b/src/enigma_scan.cpp       21 Aug 2007 17:08:27 -0000
8 @@ -27,6 +27,7 @@
9  #include <scan.h>
10  #include <satfind.h>
11  #include <tpeditwindow.h>
12 +#include <enigma_plugins.h>
13  #include <lib/base/i18n.h>
14  #include <lib/dvb/edvb.h>
15  #include <lib/dvb/frontend.h>
16 @@ -63,6 +64,8 @@
17                 CONNECT((new eListBoxEntryMenu(&list, _("Automatic Multisat Scan"), eString().sprintf("(%d) %s", ++entry, _("open automatic multisat transponder scan"))))->selected, eZapScan::sel_multiScan);
18  
19         CONNECT((new eListBoxEntryMenu(&list, _("Manual Transponder Scan"), eString().sprintf("(%d) %s", ++entry, _("open manual transponder scan"))))->selected, eZapScan::sel_manualScan);
20 +       if ( eFrontend::getInstance()->canBlindScan() && eZapPlugins(2).execPluginByName("enigma_blindscan.cfg", true) == "OK" )
21 +               CONNECT((new eListBoxEntryMenu(&list, _("Satellite Blindscan"), eString().sprintf("(%d) %s", ++entry, _("open transponder blindscan"))))->selected, eZapScan::sel_blindScan);
22  }
23  
24  void eZapScan::sel_satfind()
25 @@ -111,6 +114,13 @@
26         show();
27  }
28  
29 +void eZapScan::sel_blindScan()
30 +{
31 +       hide();
32 +       eZapPlugins(2).execPluginByName("enigma_blindscan.cfg");
33 +       show();
34 +}
35 +
36  void eZapScan::sel_satconfig()
37  {
38         hide();
39 Index: src/enigma_scan.h
40 ===================================================================
41 RCS file: /cvs/tuxbox/apps/tuxbox/b/src/enigma_scan.h,v
42 retrieving revision 1.7
43 diff -u -r1.7 enigma_scan.h
44 --- a/src/enigma_scan.h 26 Oct 2003 00:41:17 -0000      1.7
45 +++ b/src/enigma_scan.h 21 Aug 2007 17:08:27 -0000
46 @@ -25,6 +25,7 @@
47         void sel_multiScan();
48         void sel_manualScan();
49         void sel_satfind();
50 +       void sel_blindScan();
51  public:
52         static eLNB* getRotorLNB(int silent);
53         eZapScan();
54 Index: src/scan.cpp
55 ===================================================================
56 RCS file: /cvs/tuxbox/apps/tuxbox/b/src/scan.cpp,v
57 retrieving revision 1.92
58 diff -u -r1.92 scan.cpp
59 --- a/src/scan.cpp      5 Feb 2006 23:41:01 -0000       1.92
60 +++ b/src/scan.cpp      21 Aug 2007 17:08:27 -0000
61 @@ -3,6 +3,7 @@
62  #include <enigma.h>
63  
64  #include <enigma_main.h>
65 +#include <enigma_plugins.h>
66  #include <lib/base/i18n.h>
67  #include <lib/dvb/frontend.h>
68  #include <lib/dvb/si.h>
69 @@ -45,6 +46,8 @@
70                 new eListBoxEntryMenuItem(list, _("Automatic Multisat Scan"), (void*)3, 0, _("open automatic multisat transponder scan") );
71         new eListBoxEntryMenuItem(list, _("manual scan.."), (void*)1, 0, _("open manual transponder scan") );
72         CONNECT(list->selected, tsSelectType::selected);
73 +       if ( eFrontend::getInstance()->canBlindScan() && eZapPlugins(2).execPluginByName("enigma_blindscan.cfg", true) == "OK" )
74 +               new eListBoxEntryMenuItem(list, _("Satellite Blindscan"), (void*)4, 0, _("open transponder blindscan") );
75  }
76  
77  void tsSelectType::selected(eListBoxEntryMenu *entry)
78 @@ -989,6 +992,22 @@
79         }
80  }
81  
82 +
83 +struct countTransponders
84 +{
85 +       int &m_cnt;
86 +       countTransponders(int &cnt)
87 +               :m_cnt(cnt)
88 +       {
89 +               m_cnt=0;
90 +       }
91 +       void operator()(eTransponder &t)
92 +       {
93 +               ++m_cnt;
94 +       }
95 +};
96 +
97 +
98  int TransponderScan::Exec()
99  {
100         tState state = stateInitial;
101 @@ -1335,6 +1354,20 @@
102                         state=stateDone;
103                         break;
104                 }
105 +               case stateBlind:
106 +               {
107 +                       int tp_count_old, tp_count_new;
108 +                       eTransponderList::getInstance()->forEachTransponder(countTransponders(tp_count_old));
109 +                       eWindow::globalCancel(eWindow::ON);
110 +                       hide();
111 +                       eZapPlugins(2).execPluginByName("enigma_blindscan.cfg");
112 +                       show();
113 +                       state=stateEnd;
114 +                       eWindow::globalCancel(eWindow::OFF);
115 +                       eTransponderList::getInstance()->forEachTransponder(countTransponders(tp_count_new));
116 +                       ret=tp_count_new > tp_count_old ? 0 : 1;
117 +                       break;
118 +               }
119                 case stateScan:
120                 {
121                         if ( eSystemInfo::getInstance()->getFEType() == eSystemInfo::feSatellite )
122 Index: src/scan.h
123 ===================================================================
124 RCS file: /cvs/tuxbox/apps/tuxbox/b/src/scan.h,v
125 retrieving revision 1.38
126 diff -u -r1.38 scan.h
127 --- a/src/scan.h        20 Feb 2007 21:57:05 -0000      1.38
128 +++ b/src/scan.h        21 Aug 2007 17:08:27 -0000
129 @@ -172,6 +172,7 @@
130                 stateManual,
131                 stateAutomatic,
132                 stateMulti,
133 +               stateBlind,
134                 stateScan,
135                 stateMultiScan,
136                 stateDone,
137 diff -Naur a/include/lib/dvb/frontend.h b/include/lib/dvb/frontend.h
138 --- a/include/lib/dvb/frontend.h        2007-08-21 22:04:22.000000000 +0200
139 +++ b/include/lib/dvb/frontend.h        2007-08-24 00:59:42.000000000 +0200
140 @@ -112,6 +112,7 @@
141                 voltage,
142                 increased;
143  ///////////////////
144 +       bool m_canBlindScan;
145  #if HAVE_DVB_API_VERSION < 3
146         FrontendParameters front;
147  #else
148 @@ -157,6 +158,7 @@
149         static eFrontend *getInstance() { return frontend; }
150  
151         int Type() { return type; }
152 +       int canBlindScan() { return m_canBlindScan; }
153  
154         int Status();
155         int Locked() { return Status()&FE_HAS_LOCK; }
156 diff -Naur a/lib/dvb/frontend.cpp b/lib/dvb/frontend.cpp
157 --- a/lib/dvb/frontend.cpp      2007-08-21 22:04:22.000000000 +0200
158 +++ b/lib/dvb/frontend.cpp      2007-08-24 01:00:13.000000000 +0200
159 @@ -42,7 +42,7 @@
160  #endif
161         checkRotorLockTimer(eApp), checkLockTimer(eApp), 
162         updateTransponderTimer(eApp), sn(0), noRotorCmd(0),
163 -       idlePowerInput_l(0), idlePowerInput_h(0)
164 +       idlePowerInput_l(0), idlePowerInput_h(0), m_canBlindScan(false)
165  {
166         CONNECT(rotorTimer1.timeout, eFrontend::RotorStartLoop );
167         CONNECT(rotorTimer2.timeout, eFrontend::RotorRunningLoop );
168 @@ -99,6 +99,27 @@
169         curContTone = curVoltage = -1;
170  #endif
171         needreset = 2;
172 +       
173 +// check if tuner can blindscan
174 +       if (type == eSystemInfo::feSatellite)
175 +       {
176 +               FILE *f=fopen("/proc/bus/nim_sockets", "rt");
177 +               while (f)
178 +               {
179 +                       char buffer[128];
180 +                       if (!fgets(buffer, 128, f))
181 +                       {
182 +                               fclose(f);
183 +                               break;
184 +                       }
185 +                       if (strstr(buffer, "Name:") && strstr(buffer, "Alps -S(STV0288)"))
186 +                       {
187 +                               m_canBlindScan=true;
188 +                               fclose(f);
189 +                               break;
190 +                       }
191 +               }
192 +       }
193  }
194  
195  void eFrontend::checkLock()