From: Mauro Carvalho Chehab Date: Thu, 5 Jan 2012 13:07:09 +0000 (-0200) Subject: utils/dvb: add support for setting the frontend type X-Git-Tag: v4l-utils-0.9.0-test1~115 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=c6bbb944adcf6d2d9bd772d904fc60c912de40cf;p=platform%2Fupstream%2Fv4l-utils.git utils/dvb: add support for setting the frontend type Signed-off-by: Mauro Carvalho Chehab --- diff --git a/utils/dvb/dvb-fe-tool.c b/utils/dvb/dvb-fe-tool.c index 4290ad5..329e030 100644 --- a/utils/dvb/dvb-fe-tool.c +++ b/utils/dvb/dvb-fe-tool.c @@ -19,6 +19,7 @@ static const struct argp_option options[] = { {"verbose", 'v', 0, 0, "enables debug messages", 0}, {"adapter", 'a', "ADAPTER", 0, "dvb adapter", 0}, {"frontend", 'f', "FRONTEND", 0, "dvb frontend", 0}, + {"set-delsys", 'd', "PARAMS", 0, "set delivery system", 0}, {"set", 's', "PARAMS", 0, "set frontend", 0}, {"get", 'g', 0, 0, "get frontend", 0}, {"dvbv3", '3', 0, 0, "Use DVBv3 only", 0}, @@ -28,12 +29,15 @@ static const struct argp_option options[] = { static int adapter = 0; static int frontend = 0; static unsigned get = 0; -char *set_params = NULL; +static char *set_params = NULL; static int verbose = 1; /* FIXME */ static int dvbv3 = 0; +static int delsys = 0; static error_t parse_opt(int k, char *arg, struct argp_state *state) { + int i; + switch (k) { case 'a': adapter = atoi(arg); @@ -41,6 +45,26 @@ static error_t parse_opt(int k, char *arg, struct argp_state *state) case 'f': frontend = atoi(arg); break; + case 'd': + for (i = 0; i < ARRAY_SIZE(delivery_system_name); i++) + if (delivery_system_name[i] && + !strcasecmp(arg, delivery_system_name[i])) + break; + if (i < ARRAY_SIZE(delivery_system_name)) { + delsys = i; + break; + } + /* Not found. Print all possible values */ + fprintf(stderr, "Delivery system %s is not known. Valid values are:\n", + arg); + for (i = 0; i < ARRAY_SIZE(delivery_system_name) - 1; i++) { + fprintf(stderr, "%-15s", delivery_system_name[i]); + if (!((i + 1) % 5)) + fprintf(stderr, "\n"); + } + fprintf(stderr, "\n"); + return ARGP_ERR_UNKNOWN; + break; case 's': set_params = arg; break; @@ -73,6 +97,12 @@ int main(int argc, char *argv[]) parms = dvb_fe_open(adapter, frontend, verbose, dvbv3); + if (delsys) { + printf("Changing delivery system to: %s\n", + delivery_system_name[delsys]); + dvb_set_sys(parms, delsys); + } + #if 0 if (set_params) do_something(); diff --git a/utils/dvb/dvb-fe.h b/utils/dvb/dvb-fe.h index a166008..96dd7e2 100644 --- a/utils/dvb/dvb-fe.h +++ b/utils/dvb/dvb-fe.h @@ -116,3 +116,4 @@ int dvb_fe_diseqc_reply(struct dvb_v5_fe_parms *parms, unsigned *len, char *buf, extern const unsigned fe_bandwidth_name[8]; extern const char *dvb_v5_name[46]; extern const void *dvbv5_attr_names[]; +extern const char *delivery_system_name[20];