On 10/28/11 22:12, James wrote: > diff -r d4e8bf5658ce util/femon/femon.c > --- a/util/femon/femon.c Fri Oct 07 01:26:04 2011 +0530 > +++ b/util/femon/femon.c Fri Oct 28 18:52:12 2011 -0400 > @@ -16,6 +16,9 @@ > * You should have received a copy of the GNU General Public License > * along with this program; if not, write to the Free Software > * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. > + * > + * James Lockie: Oct. 2011 > + * modified to add a switch (-2) to show signal/snr in dB > */ > > > @@ -37,11 +40,16 @@ > > #include <libdvbapi/dvbfe.h> > > +/* the s5h1409 delivers both fields in 0.1dB increments, while > + * some demods expect signal to be 0-65535 and SNR to be in 1/256 > increments Looks like thunderbird is being too helpful for us here -- by breaking a long line where it shouldn't be broken. You can see if <kernel source>/Documentation/email-clients.txt helps you any with that. > +*/ > + > #define FE_STATUS_PARAMS > (DVBFE_INFO_LOCKSTATUS|DVBFE_INFO_SIGNAL_STRENGTH|DVBFE_INFO_BER|DVBFE_INFO_SNR|DVBFE_INFO_UNCORRECTED_BLOCKS) > > static char *usage_str = > "\nusage: femon [options]\n" > - " -H : human readable output\n" > + " -H : human readable output: (signal: 0-65335, snr: > 1/256 increments)\n" > + " -2 : human readable output: (signal and snr in .1 dB > increments)\n" same problem as above. > " -A : Acoustical mode. A sound indicates the signal > quality.\n" > " -r : If 'Acoustical mode' is active it tells the > application\n" > " is called remotely via ssh. The sound is heard on > the 'real'\n" > @@ -62,7 +70,7 @@ static void usage(void) > > > static > -int check_frontend (struct dvbfe_handle *fe, int human_readable, > unsigned int count) > +int check_frontend (struct dvbfe_handle *fe, int human_readable, int > db_readable, unsigned int count) and again. > { > struct dvbfe_info fe_info; > unsigned int samples = 0; > @@ -93,31 +101,32 @@ int check_frontend (struct dvbfe_handle > fprintf(stderr, "Problem retrieving frontend information: > %m\n"); > } > > + // print the status code > + printf ("status %c%c%c%c%c | ", > + fe_info.signal ? 'S' : ' ', > + fe_info.carrier ? 'C' : ' ', > + fe_info.viterbi ? 'V' : ' ', > + fe_info.sync ? 'Y' : ' ', > + fe_info.lock ? 'L' : ' ' ); > > + if (db_readable) { > + printf ("signal %3.0fdB | snr %3.0fdB", > + (fe_info.signal_strength * 0.1), > + (fe_info.snr * 0.1) ); > + } else if (human_readable) { > + printf ("signal %3u%% | snr %3u%%", > + (fe_info.signal_strength * 100) / 0xffff, > + (fe_info.snr * 100) / 0xffff ); > + } else { > + printf ("signal %04x | snr %04x", > + fe_info.signal_strength, > + fe_info.snr ); > + } > > - if (human_readable) { > - printf ("status %c%c%c%c%c | signal %3u%% | snr > %3u%% | ber %d | unc %d | ", > - fe_info.signal ? 'S' : ' ', > - fe_info.carrier ? 'C' : ' ', > - fe_info.viterbi ? 'V' : ' ', > - fe_info.sync ? 'Y' : ' ', > - fe_info.lock ? 'L' : ' ', > - (fe_info.signal_strength * 100) / 0xffff, > - (fe_info.snr * 100) / 0xffff, > - fe_info.ber, > - fe_info.ucblocks); > - } else { > - printf ("status %c%c%c%c%c | signal %04x | snr %04x | ber > %08x | unc %08x | ", > - fe_info.signal ? 'S' : ' ', > - fe_info.carrier ? 'C' : ' ', > - fe_info.viterbi ? 'V' : ' ', > - fe_info.sync ? 'Y' : ' ', > - fe_info.lock ? 'L' : ' ', > - fe_info.signal_strength, > - fe_info.snr, > - fe_info.ber, > - fe_info.ucblocks); > - } > + /* always print ber and ucblocks */ > + printf (" | ber %08x | unc %08x | ", > + fe_info.ber, > + fe_info.ucblocks); > > if (fe_info.lock) > printf("FE_HAS_LOCK"); > @@ -145,7 +154,7 @@ int check_frontend (struct dvbfe_handle > > > static > -int do_mon(unsigned int adapter, unsigned int frontend, int > human_readable, unsigned int count) > +int do_mon(unsigned int adapter, unsigned int frontend, int > human_readable, int db_readable, unsigned int count) and again. > { > int result; > struct dvbfe_handle *fe; > @@ -175,7 +184,7 @@ int do_mon(unsigned int adapter, unsigne > } > printf("FE: %s (%s)\n", fe_info.name, fe_type); > > - result = check_frontend (fe, human_readable, count); > + result = check_frontend (fe, human_readable, db_readable, count); > > dvbfe_close(fe); > > @@ -186,9 +195,10 @@ int main(int argc, char *argv[]) > { > unsigned int adapter = 0, frontend = 0, count = 0; > int human_readable = 0; > + int db_readable = 0; > int opt; > > - while ((opt = getopt(argc, argv, "rAHa:f:c:")) != -1) { > + while ((opt = getopt(argc, argv, "rAH2a:f:c:")) != -1) { > switch (opt) > { > default: > @@ -206,6 +216,9 @@ int main(int argc, char *argv[]) > case 'H': > human_readable = 1; > break; > + case '2': > + db_readable = 1; > + break; > case 'A': > // Acoustical mode: we have to reduce the delay between > // checks in order to hear nice sound > @@ -218,7 +231,7 @@ int main(int argc, char *argv[]) > } > } > > - do_mon(adapter, frontend, human_readable, count); > + do_mon(adapter, frontend, human_readable, db_readable, count); > > return 0; > } > > -- -- ~Randy *** Remember to use Documentation/SubmitChecklist when testing your code *** -- To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html