From a2e46ed40d1aadc3417fa44af1f6071aa2ccc4d5 Mon Sep 17 00:00:00 2001 From: Mauro Carvalho Chehab Date: Sun, 16 Feb 2014 18:01:44 +0900 Subject: [PATCH] dvb: add support for LNA setting at scan and zap Add a new parameter to allow to explicitly enable or disable LNA while zapping or scanning. Signed-off-by: Mauro Carvalho Chehab --- utils/dvb/dvbv5-scan.c | 22 +++++++++++++++++++++- utils/dvb/dvbv5-zap.c | 22 +++++++++++++++++++++- 2 files changed, 42 insertions(+), 2 deletions(-) diff --git a/utils/dvb/dvbv5-scan.c b/utils/dvb/dvbv5-scan.c index 8d3dbbe..d47ac57 100644 --- a/utils/dvb/dvbv5-scan.c +++ b/utils/dvb/dvbv5-scan.c @@ -47,7 +47,7 @@ const char *argp_program_bug_address = "Mauro Carvalho Chehab demux = strtoul(optarg, NULL, 0); args->adapter_dmx = args->adapter; break; + case 'w': + if (!strcasecmp(optarg,"on")) { + args->lna = 1; + } else if (!strcasecmp(optarg,"off")) { + args->lna = 0; + } else if (!strcasecmp(optarg,"auto")) { + args->lna = LNA_AUTO; + } else { + int val = strtoul(optarg, NULL, 0); + if (!val) + args->lna = 0; + else if (val > 0) + args->lna = 1; + else + args->lna = LNA_AUTO; + } + break; case 'l': args->lnb_name = optarg; break; @@ -403,6 +421,7 @@ int main(int argc, char **argv) args.output_format = FILE_DVBV5; args.timeout_multiply = 1; args.adapter = (unsigned)-1; + args.lna = LNA_AUTO; argp_parse(&argp, argc, argv, 0, &idx, &args); if (args.timeout_multiply == 0) @@ -459,6 +478,7 @@ int main(int argc, char **argv) parms->sat_number = args.sat_number % 3; parms->diseqc_wait = args.diseqc_wait; parms->freq_bpf = args.freq_bpf; + parms->lna = args.lna; timeout_flag = &parms->abort; signal(SIGTERM, do_timeout); diff --git a/utils/dvb/dvbv5-zap.c b/utils/dvb/dvbv5-zap.c index 186fd1c..cffac98 100644 --- a/utils/dvb/dvbv5-zap.c +++ b/utils/dvb/dvbv5-zap.c @@ -52,7 +52,7 @@ struct arguments { char *confname, *lnb_name, *output, *demux_dev, *dvr_dev; char *filename; unsigned adapter, frontend, demux, get_detected, get_nit; - int force_dvbv3, lnb, sat_number; + int force_dvbv3, lna, lnb, sat_number; unsigned diseqc_wait, silent, verbose, frontend_only, freq_bpf; unsigned timeout, dvr, rec_psi, exit_after_tuning; unsigned record; @@ -73,6 +73,7 @@ static const struct argp_option options[] = { {"demux", 'd', "demux#", 0, "use given demux (default 0)", 0}, {"frontend", 'f', "frontend#", 0, "use given frontend (default 0)", 0}, {"input-format", 'I', "format", 0, "Input format: ZAP, CHANNEL, DVBV5 (default: DVBV5)", 0}, + {"lna", 'w', "LNA (0, 1, -1)", 0, "enable/disable/auto LNA power", 0}, {"lnbf", 'l', "LNBf_type", 0, "type of LNBf to use. 'help' lists the available ones", 0}, {"search", 'L', NULL, 0, "search/look for a string inside the traffic", 0}, {"monitor", 'm', NULL, 0, "monitors de DVB traffic", 0}, @@ -471,6 +472,23 @@ static error_t parse_opt(int k, char *optarg, struct argp_state *state) case 'c': args->confname = strdup(optarg); break; + case 'w': + if (!strcasecmp(optarg,"on")) { + args->lna = 1; + } else if (!strcasecmp(optarg,"off")) { + args->lna = 0; + } else if (!strcasecmp(optarg,"auto")) { + args->lna = LNA_AUTO; + } else { + int val = strtoul(optarg, NULL, 0); + if (!val) + args->lna = 0; + else if (val > 0) + args->lna = 1; + else + args->lna = LNA_AUTO; + } + break; case 'l': args->lnb_name = strdup(optarg); break; @@ -684,6 +702,7 @@ int main(int argc, char **argv) memset(&args, 0, sizeof(args)); args.sat_number = -1; + args.lna = LNA_AUTO; argp_parse(&argp, argc, argv, 0, &idx, &args); @@ -744,6 +763,7 @@ int main(int argc, char **argv) parms->sat_number = args.sat_number % 3; parms->diseqc_wait = args.diseqc_wait; parms->freq_bpf = args.freq_bpf; + parms->lna = args.lna; if (parse(&args, parms, channel, &vpid, &apid, &sid)) goto err; -- 2.7.4