<p>
Hello.
</p>
<p>
Here is my patch to scan utility that allows giving data for initial tuning (DVB-S) from the command line instead of a file only.
</p>
<p>
It is useful for me and maybe it will be useful for someone else.
</p>
<p>
18a19,21<br />
&gt;&nbsp; * <br />
&gt;&nbsp; * 2008-05-31 - Added -F-S-z-E console parameters for initial tuning<br />
&gt;&nbsp; *&nbsp;&nbsp;&nbsp; Added by Wmn<br />
1691c1694<br />
&lt; static int tune_initial (int frontend_fd, const char *initial)<br />
---<br />
&gt; static int tune_initial (int frontend_fd, const char *initial, unsigned int freq, unsigned int srate, char polar, char *_fec)<br />
1699,1702c1702,1801<br />
&lt; &nbsp;inif = fopen(initial, &quot;r&quot;);<br />
&lt; &nbsp;if (!inif) {<br />
&lt; &nbsp;&nbsp;error(&quot;cannot open '%s': %d %m\n&quot;, initial, errno);<br />
&lt; &nbsp;&nbsp;return -1;<br />
---<br />
&gt;&nbsp;&nbsp;&nbsp;&nbsp; if (!freq || !srate)<br />
&gt;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; inif = fopen(initial, &quot;r&quot;);<br />
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (!inif) {<br />
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; error(&quot;cannot open '%s': %d %m\n&quot;, initial, errno);<br />
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return -1;<br />
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while (fgets(buf, sizeof(buf), inif)) {<br />
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (buf[0] == '#' || buf[0] == '\n')<br />
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;<br />
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else if (sscanf(buf, &quot;S %u %1[HVLR] %u %4s\n&quot;, &amp;f, pol, &amp;sr, fec) == 4) {<br />
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; t = alloc_transponder(f);<br />
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; t-&gt;type = FE_QPSK;<br />
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; switch(pol[0]) {<br />
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case 'H':<br />
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case 'L':<br />
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; t-&gt;polarisation = POLARISATION_HORIZONTAL;<br />
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<br />
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; default:<br />
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; t-&gt;polarisation = POLARISATION_VERTICAL;;<br />
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<br />
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; t-&gt;param.inversion = spectral_inversion;<br />
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; t-&gt;param.u.qpsk.symbol_rate = sr;<br />
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; t-&gt;param.u.qpsk.fec_inner = str2fec(fec);<br />
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; info(&quot;initial transponder %u %c %u %d\n&quot;,<br />
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; t-&gt;param.frequency,<br />
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pol[0], sr,<br />
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; t-&gt;param.u.qpsk.fec_inner);<br />
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else if (sscanf(buf, &quot;C %u %u %4s %6s\n&quot;, &amp;f, &amp;sr, fec, qam) == 4) {<br />
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; t = alloc_transponder(f);<br />
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; t-&gt;type = FE_QAM;<br />
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; t-&gt;param.inversion = spectral_inversion;<br />
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; t-&gt;param.u.qam.symbol_rate = sr;<br />
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; t-&gt;param.u.qam.fec_inner = str2fec(fec);<br />
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; t-&gt;param.u.qam.modulation = str2qam(qam);<br />
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; info(&quot;initial transponder %u %u %d %d\n&quot;,<br />
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; t-&gt;param.frequency,<br />
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sr,<br />
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; t-&gt;param.u.qam.fec_inner,<br />
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; t-&gt;param.u.qam.modulation);<br />
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else if (sscanf(buf, &quot;T %u %4s %4s %4s %7s %4s %4s %4s\n&quot;,<br />
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &amp;f, bw, fec, fec2, qam, mode, guard, hier) == 8) {<br />
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; t = alloc_transponder(f);<br />
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; t-&gt;type = FE_OFDM;<br />
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; t-&gt;param.inversion = spectral_inversion;<br />
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; t-&gt;param.u.ofdm.bandwidth = str2bandwidth(bw);<br />
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; t-&gt;param.u.ofdm.code_rate_HP = str2fec(fec);<br />
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (t-&gt;param.u.ofdm.code_rate_HP == FEC_NONE)<br />
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; t-&gt;param.u.ofdm.code_rate_HP = FEC_AUTO;<br />
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; t-&gt;param.u.ofdm.code_rate_LP = str2fec(fec2);<br />
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (t-&gt;param.u.ofdm.code_rate_LP == FEC_NONE)<br />
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; t-&gt;param.u.ofdm.code_rate_LP = FEC_AUTO;<br />
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; t-&gt;param.u.ofdm.constellation = str2qam(qam);<br />
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; t-&gt;param.u.ofdm.transmission_mode = str2mode(mode);<br />
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; t-&gt;param.u.ofdm.guard_interval = str2guard(guard);<br />
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; t-&gt;param.u.ofdm.hierarchy_information = str2hier(hier);<br />
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; info(&quot;initial transponder %u %d %d %d %d %d %d %d\n&quot;,<br />
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; t-&gt;param.frequency,<br />
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; t-&gt;param.u.ofdm.bandwidth,<br />
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; t-&gt;param.u.ofdm.code_rate_HP,<br />
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; t-&gt;param.u.ofdm.code_rate_LP,<br />
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; t-&gt;param.u.ofdm.constellation,<br />
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; t-&gt;param.u.ofdm.transmission_mode,<br />
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; t-&gt;param.u.ofdm.guard_interval,<br />
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; t-&gt;param.u.ofdm.hierarchy_information);<br />
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else if (sscanf(buf, &quot;A %u %7s\n&quot;,<br />
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &amp;f,qam) == 2) {<br />
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; t = alloc_transponder(f);<br />
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; t-&gt;type = FE_ATSC;<br />
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; t-&gt;param.u.vsb.modulation = str2qam(qam);<br />
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } else<br />
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; error(&quot;cannot parse'%s'\n&quot;, buf);<br />
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&gt; <br />
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fclose(inif);<br />
&gt;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&gt;&nbsp;&nbsp;&nbsp;&nbsp; else<br />
&gt;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; t = alloc_transponder(freq);<br />
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; t-&gt;type = FE_QPSK;<br />
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; switch(polar) {<br />
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case 'H':<br />
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case 'L':<br />
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; t-&gt;polarisation = POLARISATION_HORIZONTAL;<br />
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<br />
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; default:<br />
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; t-&gt;polarisation = POLARISATION_VERTICAL;;<br />
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<br />
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; t-&gt;param.inversion = spectral_inversion;<br />
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; t-&gt;param.u.qpsk.symbol_rate = srate;<br />
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; t-&gt;param.u.qpsk.fec_inner = str2fec(_fec);<br />
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; info(&quot;initial transponder %u %c %u %d\n&quot;,<br />
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; t-&gt;param.frequency,<br />
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; polar, srate,<br />
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; t-&gt;param.u.qpsk.fec_inner);<br />
1704,1775d1802<br />
&lt; &nbsp;while (fgets(buf, sizeof(buf), inif)) {<br />
&lt; &nbsp;&nbsp;if (buf[0] == '#' || buf[0] == '\n')<br />
&lt; &nbsp;&nbsp;&nbsp;;<br />
&lt; &nbsp;&nbsp;else if (sscanf(buf, &quot;S %u %1[HVLR] %u %4s\n&quot;, &amp;f, pol, &amp;sr, fec) == 4) {<br />
&lt; &nbsp;&nbsp;&nbsp;t = alloc_transponder(f);<br />
&lt; &nbsp;&nbsp;&nbsp;t-&gt;type = FE_QPSK;<br />
&lt; &nbsp;&nbsp;&nbsp;switch(pol[0]) {<br />
&lt; &nbsp;&nbsp;&nbsp;&nbsp;case 'H':<br />
&lt; &nbsp;&nbsp;&nbsp;&nbsp;case 'L':<br />
&lt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;t-&gt;polarisation = POLARISATION_HORIZONTAL;<br />
&lt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br />
&lt; &nbsp;&nbsp;&nbsp;&nbsp;default:<br />
&lt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;t-&gt;polarisation = POLARISATION_VERTICAL;;<br />
&lt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br />
&lt; &nbsp;&nbsp;&nbsp;}<br />
&lt; &nbsp;&nbsp;&nbsp;t-&gt;param.inversion = spectral_inversion;<br />
&lt; &nbsp;&nbsp;&nbsp;t-&gt;param.u.qpsk.symbol_rate = sr;<br />
&lt; &nbsp;&nbsp;&nbsp;t-&gt;param.u.qpsk.fec_inner = str2fec(fec);<br />
&lt; &nbsp;&nbsp;&nbsp;info(&quot;initial transponder %u %c %u %d\n&quot;,<br />
&lt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;t-&gt;param.frequency,<br />
&lt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pol[0], sr,<br />
&lt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;t-&gt;param.u.qpsk.fec_inner);<br />
&lt; &nbsp;&nbsp;}<br />
&lt; &nbsp;&nbsp;else if (sscanf(buf, &quot;C %u %u %4s %6s\n&quot;, &amp;f, &amp;sr, fec, qam) == 4) {<br />
&lt; &nbsp;&nbsp;&nbsp;t = alloc_transponder(f);<br />
&lt; &nbsp;&nbsp;&nbsp;t-&gt;type = FE_QAM;<br />
&lt; &nbsp;&nbsp;&nbsp;t-&gt;param.inversion = spectral_inversion;<br />
&lt; &nbsp;&nbsp;&nbsp;t-&gt;param.u.qam.symbol_rate = sr;<br />
&lt; &nbsp;&nbsp;&nbsp;t-&gt;param.u.qam.fec_inner = str2fec(fec);<br />
&lt; &nbsp;&nbsp;&nbsp;t-&gt;param.u.qam.modulation = str2qam(qam);<br />
&lt; &nbsp;&nbsp;&nbsp;info(&quot;initial transponder %u %u %d %d\n&quot;,<br />
&lt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;t-&gt;param.frequency,<br />
&lt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sr,<br />
&lt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;t-&gt;param.u.qam.fec_inner,<br />
&lt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;t-&gt;param.u.qam.modulation);<br />
&lt; &nbsp;&nbsp;}<br />
&lt; &nbsp;&nbsp;else if (sscanf(buf, &quot;T %u %4s %4s %4s %7s %4s %4s %4s\n&quot;,<br />
&lt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp;f, bw, fec, fec2, qam, mode, guard, hier) == 8) {<br />
&lt; &nbsp;&nbsp;&nbsp;t = alloc_transponder(f);<br />
&lt; &nbsp;&nbsp;&nbsp;t-&gt;type = FE_OFDM;<br />
&lt; &nbsp;&nbsp;&nbsp;t-&gt;param.inversion = spectral_inversion;<br />
&lt; &nbsp;&nbsp;&nbsp;t-&gt;param.u.ofdm.bandwidth = str2bandwidth(bw);<br />
&lt; &nbsp;&nbsp;&nbsp;t-&gt;param.u.ofdm.code_rate_HP = str2fec(fec);<br />
&lt; &nbsp;&nbsp;&nbsp;if (t-&gt;param.u.ofdm.code_rate_HP == FEC_NONE)<br />
&lt; &nbsp;&nbsp;&nbsp;&nbsp;t-&gt;param.u.ofdm.code_rate_HP = FEC_AUTO;<br />
&lt; &nbsp;&nbsp;&nbsp;t-&gt;param.u.ofdm.code_rate_LP = str2fec(fec2);<br />
&lt; &nbsp;&nbsp;&nbsp;if (t-&gt;param.u.ofdm.code_rate_LP == FEC_NONE)<br />
&lt; &nbsp;&nbsp;&nbsp;&nbsp;t-&gt;param.u.ofdm.code_rate_LP = FEC_AUTO;<br />
&lt; &nbsp;&nbsp;&nbsp;t-&gt;param.u.ofdm.constellation = str2qam(qam);<br />
&lt; &nbsp;&nbsp;&nbsp;t-&gt;param.u.ofdm.transmission_mode = str2mode(mode);<br />
&lt; &nbsp;&nbsp;&nbsp;t-&gt;param.u.ofdm.guard_interval = str2guard(guard);<br />
&lt; &nbsp;&nbsp;&nbsp;t-&gt;param.u.ofdm.hierarchy_information = str2hier(hier);<br />
&lt; &nbsp;&nbsp;&nbsp;info(&quot;initial transponder %u %d %d %d %d %d %d %d\n&quot;,<br />
&lt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;t-&gt;param.frequency,<br />
&lt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;t-&gt;param.u.ofdm.bandwidth,<br />
&lt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;t-&gt;param.u.ofdm.code_rate_HP,<br />
&lt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;t-&gt;param.u.ofdm.code_rate_LP,<br />
&lt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;t-&gt;param.u.ofdm.constellation,<br />
&lt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;t-&gt;param.u.ofdm.transmission_mode,<br />
&lt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;t-&gt;param.u.ofdm.guard_interval,<br />
&lt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;t-&gt;param.u.ofdm.hierarchy_information);<br />
&lt; &nbsp;&nbsp;}<br />
&lt; &nbsp;&nbsp;else if (sscanf(buf, &quot;A %u %7s\n&quot;,<br />
&lt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp;f,qam) == 2) {<br />
&lt; &nbsp;&nbsp;&nbsp;t = alloc_transponder(f);<br />
&lt; &nbsp;&nbsp;&nbsp;t-&gt;type = FE_ATSC;<br />
&lt; &nbsp;&nbsp;&nbsp;t-&gt;param.u.vsb.modulation = str2qam(qam);<br />
&lt; &nbsp;&nbsp;} else<br />
&lt; &nbsp;&nbsp;&nbsp;error(&quot;cannot parse'%s'\n&quot;, buf);<br />
&lt; &nbsp;}<br />
&lt; <br />
&lt; &nbsp;fclose(inif);<br />
1858c1885<br />
&lt; static void scan_network (int frontend_fd, const char *initial)<br />
---<br />
&gt; static void scan_network (int frontend_fd, const char *initial, unsigned int freq, unsigned int srate, char polar, char *fec)<br />
1860c1887<br />
&lt; &nbsp;if (tune_initial (frontend_fd, initial) &lt; 0) {<br />
---<br />
&gt; &nbsp;if (tune_initial (frontend_fd, initial, freq, srate, polar, fec) &lt; 0) {<br />
2054c2081<br />
&lt; &nbsp;&quot;usage: %s [options...] [-c | initial-tuning-data-file]\n&quot;<br />
---<br />
&gt; &nbsp;&quot;usage: %s [options...] [-c | -F-S[-z-E] | initial-tuning-data-file]\n&quot;<br />
2084c2111,2117<br />
&lt; &nbsp;&quot;&nbsp;-U&nbsp;Uniquely name unknown services\n&quot;;<br />
---<br />
&gt; &nbsp;&quot;&nbsp;-U&nbsp;Uniquely name unknown services\n&quot;<br />
&gt; &nbsp;&quot;\n&quot;<br />
&gt; &nbsp;&quot;&nbsp;Initial tune data:\n&quot;<br />
&gt; &nbsp;&quot;&nbsp;-F N&nbsp;Frequency for initial tune\n&quot;<br />
&gt; &nbsp;&quot;&nbsp;-S N&nbsp;Symbol-rate for initial tune\n&quot;<br />
&gt; &nbsp;&quot;&nbsp;-z &lt;V=default|H|R|L&gt; Polarization for initial tune\n&quot;<br />
&gt; &nbsp;&quot;&nbsp;-E &lt;NONE|1/2|2/3|3/4|4/5|5/6|6/7|7/8|8/9|AUTO=default&gt; FEC for initial tune\n&quot;;<br />
2122a2156,2158<br />
&gt;&nbsp;&nbsp;&nbsp;&nbsp; unsigned int srate = 0, freq = 0;<br />
&gt;&nbsp;&nbsp;&nbsp;&nbsp; char polar = 'V';<br />
&gt;&nbsp;&nbsp;&nbsp;&nbsp; char fec[] = &quot;AUTO&quot;;<br />
2132c2168<br />
&lt; &nbsp;while ((opt = getopt(argc, argv, &quot;5cnpa:f:d:s:o:x:e:t:i:l:vquPA:U&quot;)) != -1) {<br />
---<br />
&gt; &nbsp;while ((opt = getopt(argc, argv, &quot;5cnpa:f:d:s:o:x:e:t:i:l:vquPA:US:F:z:E:&quot;)) != -1) {<br />
2207d2242<br />
&lt; <br />
2211a2247,2259<br />
&gt; &nbsp;&nbsp;case 'S':<br />
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; srate = strtoul(optarg, NULL, 0);<br />
&gt; &nbsp;&nbsp;&nbsp;break;<br />
&gt; &nbsp;&nbsp;case 'F':<br />
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; freq = strtoul(optarg, NULL, 0);<br />
&gt; &nbsp;&nbsp;&nbsp;break;<br />
&gt; &nbsp;&nbsp;case 'z':<br />
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; polar = optarg[0];<br />
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<br />
&gt; &nbsp;&nbsp;case 'E':<br />
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; strncpy (fec, optarg, 4);<br />
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fec[4] = '\0';<br />
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<br />
2220c2268<br />
&lt; &nbsp;if ((!initial &amp;&amp; !current_tp_only) || (initial &amp;&amp; current_tp_only) ||<br />
---<br />
&gt; &nbsp;if ((((!freq || !srate) &amp;&amp; !initial) &amp;&amp; !current_tp_only) || (((freq &amp;&amp; srate) || initial) &amp;&amp; current_tp_only) ||<br />
2269c2317<br />
&lt; &nbsp;&nbsp;scan_network (frontend_fd, initial);<br />
---<br />
&gt; &nbsp;&nbsp;scan_network (frontend_fd, initial, freq, srate, polar, fec); 
</p>