diff options
| author | etobi <git@e-tobi.net> | 2013-09-03 09:48:38 +0200 | 
|---|---|---|
| committer | etobi <git@e-tobi.net> | 2013-09-03 09:48:38 +0200 | 
| commit | 6e40287e2f39a80fc72bd8d0fbc1a8334d688c2d (patch) | |
| tree | 024bef311226653bdd1da4fa588becf5098bcff7 /util/lib | |
| download | linux-dvb-apps-6e40287e2f39a80fc72bd8d0fbc1a8334d688c2d.tar.gz | |
Imported Upstream version 1.1.0upstream/1.1.0
Diffstat (limited to 'util/lib')
| -rw-r--r-- | util/lib/Makefile | 20 | ||||
| -rw-r--r-- | util/lib/lnb.c | 101 | ||||
| -rw-r--r-- | util/lib/lnb.h | 24 | 
3 files changed, 145 insertions, 0 deletions
| diff --git a/util/lib/Makefile b/util/lib/Makefile new file mode 100644 index 0000000..5f55636 --- /dev/null +++ b/util/lib/Makefile @@ -0,0 +1,20 @@ + +CC = gcc +CFLAGS = -MD -g -Wall -O2 -I../../include -I. +LFLAGS = -g -Wall + +OBJS = lnb.o +SRCS = $(OBJS:.o=.c) + +TARGET = lnb.o + +$(TARGET): $(SRCS) + +.c.o: +	$(CC) $(CFLAGS) -c $< -o $@ + +clean: +	$(RM) *.o *.d $(TARGET) + +-include $(wildcard *.d) dummy + diff --git a/util/lib/lnb.c b/util/lib/lnb.c new file mode 100644 index 0000000..d082181 --- /dev/null +++ b/util/lib/lnb.c @@ -0,0 +1,101 @@ +#include <stdlib.h> +#include <string.h> +#include <ctype.h> +#include "lnb.h" + +static char *univ_desc[] = { +		"Europe", +		"10800 to 11800 MHz and 11600 to 12700 Mhz", +		"Dual LO, loband 9750, hiband 10600 MHz", +		(char *)NULL }; + +static char *dbs_desc[] = { +		"Expressvu, North America", +		"12200 to 12700 MHz", +		"Single LO, 11250 MHz",	 +		(char *)NULL }; + +static char *standard_desc[] = { +		"10945 to 11450 Mhz", +		"Single LO, 10000 Mhz", +		(char *)NULL }; + +static char *enhan_desc[] = { +		"Astra", +		"10700 to 11700 MHz", +		"Single LO, 9750 MHz", +		(char *)NULL }; + +static char *cband_desc[] = { +		"Big Dish", +		"3700 to 4200 MHz", +		"Single LO, 5150 Mhz", +		(char *)NULL }; + +static struct lnb_types_st lnbs[] = { +	{"UNIVERSAL",	univ_desc,		9750, 10600, 11700 }, + 	{"DBS",		dbs_desc, 		11250, 0, 0 }, +	{"STANDARD",	standard_desc,		10000, 0, 0 }, +	{"ENHANCED",	enhan_desc,		9750, 0, 0 }, +	{"C-BAND",	cband_desc,		5150, 0, 0 } +}; + +/* Enumerate through standard types of LNB's until NULL returned. + * Increment curno each time + */ + +struct lnb_types_st * +lnb_enum(int curno) +{ +	if (curno >= sizeof(lnbs) / sizeof(lnbs[0])) +		return (struct lnb_types_st *)NULL; +	return &lnbs[curno]; +} + +/* Decode an lnb type, for example given on a command line + * If alpha and standard type, e.g. "Universal" then match that + * otherwise low[,high[,switch]] + */ + +int +lnb_decode(char *str, struct lnb_types_st *lnbp) +{ +int i; +char *cp, *np; + +	memset(lnbp, 0, sizeof(*lnbp)); +	cp = str; +	while(*cp && isspace(*cp)) +		cp++; +	if (isalpha(*cp)) { +		for(i = 0; i < (sizeof(lnbs) / sizeof(lnbs[0])); i++) { +			if (!strcasecmp(lnbs[i].name, cp)) { +				*lnbp = lnbs[i]; +				return 1; +			} +		} +		return -1; +	} +	if (*cp == '\0' || !isdigit(*cp)) +		return -1; +	lnbp->low_val = strtoul(cp, &np, 0); +	if (lnbp->low_val == 0) +		return -1; +	cp = np; +	while(*cp && (isspace(*cp) || *cp == ',')) +		cp++; +	if (*cp == '\0') +		return 1; +	if (!isdigit(*cp)) +		return -1; +	lnbp->high_val = strtoul(cp, &np, 0); +	cp = np; +	while(*cp && (isspace(*cp) || *cp == ',')) +		cp++; +	if (*cp == '\0') +		return 1; +	if (!isdigit(*cp)) +		return -1; +	lnbp->switch_val = strtoul(cp, NULL, 0); +	return 1; +} diff --git a/util/lib/lnb.h b/util/lib/lnb.h new file mode 100644 index 0000000..f78b7a6 --- /dev/null +++ b/util/lib/lnb.h @@ -0,0 +1,24 @@ + +struct lnb_types_st { +	char	*name; +	char	**desc; +	unsigned long	low_val; +	unsigned long	high_val;	/* zero indicates no hiband */ +	unsigned long	switch_val;	/* zero indicates no hiband */ +}; + +/* Enumerate through standard types of LNB's until NULL returned. + * Increment curno each time + */ + +struct lnb_types_st * +lnb_enum(int curno); + +/* Decode an lnb type, for example given on a command line + * If alpha and standard type, e.g. "Universal" then match that + * otherwise low[,high[,switch]] + */ + +int +lnb_decode(char *str, struct lnb_types_st *lnbp); + | 
