From c0e174505a59a5bf644939b4f391cf225a7acb01 Mon Sep 17 00:00:00 2001 From: internal <> Date: Fri, 5 May 2023 13:02:00 +0200 Subject: [PATCH] clean up app directory --- apps/Makefile | 22 +--- apps/citin.c | 60 ---------- apps/citout.c | 55 --------- apps/ddflash.c | 1 - apps/flashprog.c | 290 ----------------------------------------------- apps/modt.c | 36 ------ apps/pls.c | 167 --------------------------- apps/setmod.c | 33 ------ apps/setmod2.c | 128 ++++++++++++++++++++- apps/setmod3.c | 149 ------------------------ apps/tscheck.c | 105 ----------------- 11 files changed, 125 insertions(+), 921 deletions(-) delete mode 100644 apps/citin.c delete mode 100644 apps/citout.c delete mode 120000 apps/ddflash.c delete mode 100644 apps/flashprog.c delete mode 100644 apps/modt.c delete mode 100644 apps/pls.c delete mode 100644 apps/setmod.c delete mode 100644 apps/setmod3.c delete mode 100644 apps/tscheck.c diff --git a/apps/Makefile b/apps/Makefile index 882a8ea..bc42fca 100644 --- a/apps/Makefile +++ b/apps/Makefile @@ -1,4 +1,4 @@ -TARGETS = cit citin flashprog modt ddtest setmod ddflash setmod2 pls setmod3 modconfig ddinfo getiq modtest +TARGETS = cit ddtest setmod1 setmod2 modconfig ddinfo getiq modtest all: $(TARGETS) @@ -19,32 +19,14 @@ endif cit: cit.c $(CC) -o cit cit.c -lpthread -modt: modt.c - $(CC) -o modt modt.c -lpthread - -setmod: setmod.c - $(CC) -o setmod setmod.c -I../include/ - -setmod2: setmod2.c - $(CC) -o setmod2 setmod2.c -I../include/ - -setmod3: setmod3.c - $(CC) -o setmod3 setmod3.c -I../include/ - -modconfig: modconfig.c - $(CC) -o modconfig modconfig.c -I../include/ - -clean: - rm cit citin flashprog modt ddtest setmod ddflash setmod2 pls setmod3 modconfig ddinfo getiq - %: %.c $(CC) $(CFLAGS) -I../ddbridge -I../include/ $< -o $@ %.o: %.c $(CC) $(CFLAGS) -I../ddbridge -o $@ $< - clean: + rm test.ts for f in $(TARGETS) *.o *~ ; do \ if [ -e "$$f" ]; then \ rm "$$f" || exit 1; \ diff --git a/apps/citin.c b/apps/citin.c deleted file mode 100644 index 5162911..0000000 --- a/apps/citin.c +++ /dev/null @@ -1,60 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -void proc_ts(int i, uint8_t *buf) -{ - uint16_t pid=0x1fff&((buf[1]<<8)|buf[2]); - - if (buf[3]&0xc0) /* only descrambled packets */ - return; - /* only ORF */ - if (pid==160 || pid==161 || pid==1001||pid==13001 || pid==0) - write(1, buf, 188); -} - -#define TSBUFSIZE (100*188) - -void citest() -{ - uint8_t *buf; - uint8_t id; - int i, nts; - int len; - int ts=open("/dev/dvb/adapter4/ci0", O_RDONLY); - buf=(uint8_t *)malloc(TSBUFSIZE); - - - while(1) { - len=read(ts, buf, TSBUFSIZE); - if (len<0) { - continue; - } - if (buf[0]!=0x47) { - read(ts, buf, 1); - continue; - } - if (len%188) { /* should not happen */ - printf("blah\n"); - continue; - } - nts=len/188; - for (i=0; i -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#define TSBUFSIZE (100*188) - -void citest() -{ - uint8_t *buf; - uint8_t id; - int i, nts; - int len; - int ts0=open("/dev/dvb/adapter0/dvr0", O_RDONLY); - int ts1=open("/dev/dvb/adapter4/sec0", O_WRONLY); - int demux0=open("/dev/dvb/adapter0/demux0", O_RDWR); - - struct dmx_pes_filter_params pesFilterParams; - - pesFilterParams.input = DMX_IN_FRONTEND; - pesFilterParams.output = DMX_OUT_TS_TAP; - pesFilterParams.pes_type = DMX_PES_OTHER; - pesFilterParams.flags = DMX_IMMEDIATE_START; - - pesFilterParams.pid = 8192; - if (ioctl(demux0, DMX_SET_PES_FILTER, &pesFilterParams) < 0) { - printf("Could not set PES filter\n"); - return; - } - buf=(uint8_t *)malloc(TSBUFSIZE); - - while(1) { - len=read(ts0, buf, TSBUFSIZE); - if (len<=0) - break; - if (buf[0]!=0x47) - printf("oops\n"); - write(ts1, buf, len); - } -} - -int main() -{ - citest(); -} - diff --git a/apps/ddflash.c b/apps/ddflash.c deleted file mode 120000 index 0e1ae79..0000000 --- a/apps/ddflash.c +++ /dev/null @@ -1 +0,0 @@ -octonet/ddflash.c \ No newline at end of file diff --git a/apps/flashprog.c b/apps/flashprog.c deleted file mode 100644 index 0276890..0000000 --- a/apps/flashprog.c +++ /dev/null @@ -1,290 +0,0 @@ -/* -/* flashprog - Programmer for flash on Digital Devices Octopus - * - * Copyright (C) 2010-2011 Digital Devices GmbH - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * version 2 only, as published by the Free Software Foundation. - * - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * - * 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., 51 Franklin Street, Fifth Floor, Boston, MA - * 02110-1301, USA - * Or, point your browser to http://www.gnu.org/copyleft/gpl.html - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "flash.h" -#include "flash.c" - -void get_ddid(int ddb, struct ddb_id *ddbid) { - uint8_t id[4]; - - if (ioctl(ddb, IOCTL_DDB_ID, ddbid)>=0) - return; - memset(ddbid, 0, sizeof(*ddbid)); - flashread(ddb, linknr, id, 0, 4); - printf("%02x %02x %02x %02x\n", - id[0], id[1], id[2], id[3]); - ddbid->subvendor=(id[0] << 8) | id[1]; - ddbid->subdevice=(id[2] << 8) | id[3]; -} - -int sure() -{ - char c; - - printf("\n\nWARNING! Flashing a new FPGA image might make your card unusable!\n"); - printf("\n\nWARNUNG! Das Flashen eines neuen FPGA-Images kann Ihre Karte unbrauchbar machen.\n"); - printf("\n\nAre you sure? y/n?"); - printf("\n\nSind Sie sicher? y/n?"); - fflush(0); - c = getchar(); - if (c!='y') { - printf("\nFlashing aborted.\n\n"); - return -1; - } - printf("\nStarting to flash\n\n"); - return 0; -} - - -int main(int argc, char **argv) -{ - char ddbname[80]; - char *flashname; - int type = 0; - struct ddb_id ddbid; - uint8_t *buffer; - int BufferSize = 0; - int BlockErase = 0; - uint32_t FlashOffset = 0x10000; - int ddb; - int i, err; - uint32_t SectorSize=0; - uint32_t FlashSize=0; - int Flash; - - uint32_t svid=0, jump=0, dump=0; - int bin; - - int ddbnum = 0; - int force = 0; - char *fname = NULL; - - while (1) { - int option_index = 0; - int c; - static struct option long_options[] = { - {"svid", required_argument, NULL, 's'}, - {"help", no_argument , NULL, 'h'}, - {"force", no_argument , NULL, 'f'}, - {0, 0, 0, 0} - }; - c = getopt_long(argc, argv, - "d:n:s:o:l:dfhjb:", - long_options, &option_index); - if (c==-1) - break; - - switch (c) { - case 'b': - fname = optarg; - break; - case 'd': - dump = strtoul(optarg, NULL, 16); - break; - case 's': - svid = strtoul(optarg, NULL, 16); - break; - case 'o': - FlashOffset = strtoul(optarg, NULL, 16); - break; - case 'n': - ddbnum = strtol(optarg, NULL, 0); - break; - case 'l': - linknr = strtol(optarg, NULL, 0); - break; - case 'f': - force = 1; - break; - case 'j': - jump = 1; - break; - case 'h': - default: - break; - - } - } - if (optind> 16 ) & 0xFF ); - buffer[BufferSize - 256 + 0x20] = ( ( Jump >> 8 ) & 0xFF ); - buffer[BufferSize - 256 + 0x21] = ( ( Jump ) & 0xFF ); - } else if (svid) { - BufferSize = SectorSize; - FlashOffset = 0; - - buffer = malloc(BufferSize); - if (!buffer) { - printf("out of memory\n"); - return 0; - } - memset(buffer,0xFF,BufferSize); - - buffer[0] = ((svid >> 24 ) & 0xFF); - buffer[1] = ((svid >> 16 ) & 0xFF); - buffer[2] = ((svid >> 8 ) & 0xFF); - buffer[3] = ((svid ) & 0xFF); - } else { - int fh, i; - int fsize; - char *name; - - if (!fname) - fname = devid2fname(ddbid.device, &name); - if (name) - printf("Card: %s\n", name); - - fh = open(fname, O_RDONLY); - if (fh < 0 ) { - printf("File %s not found \n", fname); - return 0; - } - printf("Using bitstream %s\n", fname); - - fsize = lseek(fh,0,SEEK_END); - if( fsize > FlashSize/2 - 0x10000 || fsize < SectorSize ) - { - close(fh); - printf("Invalid File Size \n"); - return 0; - } - - if( Flash == ATMEL_AT45DB642D ) { - BlockErase = fsize >= 8192; - if( BlockErase ) - BufferSize = (fsize + 8191) & ~8191; - else - BufferSize = (fsize + 1023) & ~1023; - } else { - BufferSize = (fsize + SectorSize - 1 ) & ~(SectorSize - 1); - } - printf(" Size %08x, target %08x\n", BufferSize, FlashOffset); - - buffer = malloc(BufferSize); - - if( buffer == NULL ) { - close(fh); - printf("out of memory\n"); - return 0; - } - - memset(buffer, 0xFF, BufferSize); - lseek(fh, 0, SEEK_SET); - read(fh, buffer, fsize); - close(fh); - - if (BufferSize >= 0x10000) { - for(i = 0; i < 0x200; i += 1 ) { - if ( *(uint16_t *) (&buffer[i]) == 0xFFFF ) - break; - buffer[i] = 0xFF; - } - } - } - if (!force && sure()<0) - return 0; - switch(Flash) { - case ATMEL_AT45DB642D: - err = FlashWriteAtmel(ddb,FlashOffset,buffer,BufferSize); - break; - case SSTI_SST25VF016B: - case SSTI_SST25VF032B: - err = FlashWriteSSTI_B(ddb,FlashOffset,buffer,BufferSize); - break; - case SSTI_SST25VF064C: - err = FlashWritePageMode(ddb,FlashOffset,buffer,BufferSize,0x3C); - break; - case SPANSION_S25FL116K: - case SPANSION_S25FL164K: - case WINBOND_W25Q16JV: - case WINBOND_W25Q32JV: - err = FlashWritePageMode(ddb,FlashOffset,buffer,BufferSize,0x1C); - break; - } - - if (err < 0) - printf("Programming Error\n"); - else - printf("Programming Done\n"); - - free(buffer); - return 0; -} diff --git a/apps/modt.c b/apps/modt.c deleted file mode 100644 index 5f25835..0000000 --- a/apps/modt.c +++ /dev/null @@ -1,36 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - - -#define SNUM 1000 -//671 -void send(void) -{ - uint8_t buf[188*SNUM], *cts; - int i; - uint32_t c=0; - int fdo; - - fdo=open("/dev/dvb/adapter0/mod0", O_WRONLY); - - - while (1) { - read(0, buf, sizeof(buf)); - write(fdo, buf, 188*SNUM); - } -} - - -int main() -{ - send(); -} diff --git a/apps/pls.c b/apps/pls.c deleted file mode 100644 index b21ca59..0000000 --- a/apps/pls.c +++ /dev/null @@ -1,167 +0,0 @@ -/* - * pls.c: Convert between Gold and Root Codes for DVB-S2 PLS - * - * Copyright (C) 2017 Marcus Metzler - * Ralph Metzler - * - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * version 2 only, as published by the Free Software Foundation. - * - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * - * 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., 51 Franklin Street, Fifth Floor, Boston, MA - * 02110-1301, USA - * Or, point your browser to http://www.gnu.org/copyleft/gpl.html - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -/* According to ETSI EN 302 307 5.5.4 the PLS (Physical Layer - Scrambling) for DVB-S2 consists of a complex randomization - sequence which is ultimately derived from two recursively - defined m-sequences (=MLS or maximum length sequences) - x(i) and y(i) of polynomials over GF(2) with m=18 - (thus their length is 2^18 - 1). - These m-sequences with sequence y starting from y(0) and - sequence x starting from x(n) are combined to form a set - of 2^18 - 1 different Gold code sequences. - - This starting number n of sequence x selects which - of those 2^18 - 1 Gold code sequences to use. - As a DVB-S2 tuning parameter n is called the scrambling sequence index - (cf. ETSI EN 300 468 table 41) or Gold sequence index, - commonly also just called "Gold code". - The 18 values of the sequence x starting from x(n) - (x(n) ... x(n+17)) are also called the "Root code". - So, Gold and Root codes are not different ways of PLS, they are - just different ways to select the same sequence start point. - - The initial values for x(i), i=0..18 are x(0)=1, x(1)=0, .., x(17)=0 . - The polynomial used for the x sequence recursion is 1+x^7+x^18. - If the lower 18 bits of a variable "uint32_t X" contain x(n) ... x(n+17), - then we can simply calculate x(n+1) ... x(n+18) by doing: - X = (((X ^ (X >> 7)) & 1) << 17) | (X >> 1); - - So, if X contained the "Root code" corresponding to "Gold code" n, - it will now contain the "Root code" corresponding to "Gold code" (n+1). - Note that X=0 and n=2^18 - 1 do not exist (or rather the lattter is the same - as n = 0) and for n=0 to 2^18 - 2 and X=1 to 2^18 - 1 there is a - one-to-one correspondence (bijection). - - Note that PLS has nothing to do with encryption for DRM purposes. It is used - to minimize interference between transponders. - - - "Combo code": - There is no such thing as a combo code. It is the result of a bug in older - STV090x drivers which resulted in a crazy race condition between a Gold->Root - conversion in the STV and an ongoing I2C write. - Better forget about it and determine the proper Root or Gold code. - - */ - - -static uint32_t gold2root(uint32_t gold) -{ - uint32_t x, g; - - for (g = 0, x = 1; g < gold; g++) - x = (((x ^ (x >> 7)) & 1) << 17) | (x >> 1); - return x; -} - -static uint32_t root2gold(uint32_t root) -{ - uint32_t x, g; - - for (g = 0, x = 1; g < 0x3ffff; g++) { - if (root == x) - return g; - x = (((x ^ (x >> 7)) & 1) << 17) | (x >> 1); - } - return 0xffffffff; -} - -int main(int argc, char **argv) -{ - uint32_t gold = 0xffffffff, root = 0xffffffff; - - while (1) { - int option_index = 0; - int c; - static struct option long_options[] = { - {"gold", required_argument, 0, 'g'}, - {"root", required_argument, 0, 'r'}, - {"help", no_argument , 0, 'h'}, - {0, 0, 0, 0} - }; - c = getopt_long(argc, argv, - "r:g:h", - long_options, &option_index); - if (c==-1) - break; - - switch (c) { - case 'g': - gold = strtoul(optarg, NULL, 0); - break; - case 'r': - root = strtoul(optarg, NULL, 0); - break; - case 'h': - printf("pls -g gold_code\n"); - printf("or\n"); - printf("pls -r root_code\n"); - exit(-1); - default: - break; - - } - } - if (optind < argc) { - printf("Warning: unused arguments\n"); - } - if (gold != 0xffffffff && root != 0xffffffff) { - printf("Only specify root or gold code\n"); - exit(-1); - }; - if (gold != 0xffffffff) { - if (gold < 0x3ffff) { - root = gold2root(gold); - printf("gold = %u (0x%05x) root = %u (0x%05x)\n", - gold, gold, root, root); - } else - printf("Invalid gold code specified.\n"); - exit(0); - } - if (root != 0xffffffff) { - if (root > 0 && root < 0x40000) - gold = root2gold(root); - if (gold != 0xffffffff) - printf("gold = %llu (0x%05x) root = %llu (0x%05x)\n", - gold, gold, root, root); - else - printf("Invalid root code specified.\n"); - exit(0); - } - printf("Specify either root or gold code with -r or -g.\n"); -} diff --git a/apps/setmod.c b/apps/setmod.c deleted file mode 100644 index 41e11d5..0000000 --- a/apps/setmod.c +++ /dev/null @@ -1,33 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include - -int main() -{ - int fd; - struct dvb_mod_params mp; - struct dvb_mod_channel_params mc; - - fd = open("/dev/dvb/adapter1/mod0", O_RDONLY); - - mp.base_frequency = 722000000; - mp.attenuator = 0; - ioctl(fd, DVB_MOD_SET, &mp); - - mc.modulation = QAM_256; - mc.input_bitrate = 40000000ULL << 32; - mc.pcr_correction = 0; - ioctl(fd, DVB_MOD_CHANNEL_SET, &mc); - close(fd); -} - diff --git a/apps/setmod2.c b/apps/setmod2.c index 5d83ff7..7a26d96 100644 --- a/apps/setmod2.c +++ b/apps/setmod2.c @@ -10,6 +10,7 @@ #include #include #include +#include #include @@ -31,17 +32,134 @@ static int set_property(int fd, uint32_t cmd, uint32_t data) return 0; } -int main() +static int get_property(int fd, uint32_t cmd, uint32_t *data) +{ + struct dtv_property p; + struct dtv_properties c; + int ret; + + p.cmd = cmd; + c.num = 1; + c.props = &p; + ret = ioctl(fd, FE_GET_PROPERTY, &c); + if (ret < 0) { + fprintf(stderr, "FE_GET_PROPERTY returned %d\n", ret); + return -1; + } + *data = p.u.data; + return 0; +} + + + +int main(int argc, char*argv[]) { int fd; struct dvb_mod_params mp; struct dvb_mod_channel_params mc; + uint32_t data; + int32_t adapter = 0, channel = 0, gain = -1, att=-1, mod=-1; + int32_t base = -1, freq = -1, rate = -1, srate = -1; + char mod_name[128]; + + while (1) { + int cur_optind = optind ? optind : 1; + int option_index = 0; + int c; + static struct option long_options[] = { + {"adapter", required_argument, 0, 'a'}, + {"channel", required_argument, 0, 'c'}, + {"att", required_argument, 0, 't'}, + {"gain", required_argument, 0, 'g'}, + {"base", required_argument, 0, 'b'}, + {"frequency", required_argument, 0, 'f'}, + {"rate", required_argument, 0, 'r'}, + {"modulation", required_argument, 0, 'm'}, + {"symbolrate", required_argument, 0, 's'}, + {0, 0, 0, 0} + }; + c = getopt_long(argc, argv, + "a:c:g:b:f:r:t:m:s:", + long_options, &option_index); + if (c==-1) + break; - fd = open("/dev/dvb/adapter0/mod0", O_RDONLY); + switch (c) { + case 'a': + adapter = strtoul(optarg, NULL, 0); + break; + case 'c': + channel = strtoul(optarg, NULL, 0); + break; + case 'g': + gain = strtoul(optarg, NULL, 0); + break; + case 't': + att = strtoul(optarg, NULL, 0); + break; + case 'b': + base = strtoul(optarg, NULL, 0); + break; + case 'f': + freq = strtoul(optarg, NULL, 0); + break; + case 'm': + mod = strtoul(optarg, NULL, 0); + break; + case 's': + srate = strtoul(optarg, NULL, 0); + break; + case 'r': + if (!strcmp(optarg, "DVBT_8")) + rate = SYS_DVBT_8; + else if (!strcmp(optarg, "DVBT_7")) + rate = SYS_DVBT_7; + else if (!strcmp(optarg, "DVBT_6")) + rate = SYS_DVBT_6; + else if (!strcmp(optarg, "ISDBT_6")) + rate = SYS_ISDBT_6; + else rate = strtoul(optarg, NULL, 0); + break; + default: + break; + } + } + if (optind < argc) { + printf("too many arguments\n"); + exit(1); + } - set_property(fd, MODULATOR_MODULATION, QAM_256); - set_property(fd, MODULATOR_SYMBOL_RATE, 6900000); - set_property(fd, MODULATOR_FREQUENCY, 114000000); + snprintf(mod_name, 127, "/dev/dvb/adapter%d/mod%d", adapter, channel); + fd = open(mod_name, O_RDONLY); + + if (fd < 0) { + printf("Could not open modulator device.\n"); + exit(1); + } + + + /* gain 0-255 */ + //get_property(fd, MODULATOR_GAIN, &data); + //printf("Modulator gain = %u\n", data); + //set_property(fd, MODULATOR_GAIN, 100); + + //get_property(fd, MODULATOR_ATTENUATOR, &data); + //printf("Modulator attenuator = %u\n", data); + + if (att >= 0) + set_property(fd, MODULATOR_ATTENUATOR, att); + if (gain >= 0) + set_property(fd, MODULATOR_GAIN, gain); + if (base > 0) + set_property(fd, MODULATOR_BASE_FREQUENCY, base); + if (freq > 0) + set_property(fd, MODULATOR_FREQUENCY, freq); + if (rate > 0) + set_property(fd, MODULATOR_OUTPUT_RATE, rate); + if (mod >= 0) + set_property(fd, MODULATOR_MODULATION, mod); + if (srate > 0) + set_property(fd, MODULATOR_SYMBOL_RATE, srate); close(fd); } diff --git a/apps/setmod3.c b/apps/setmod3.c deleted file mode 100644 index fb83015..0000000 --- a/apps/setmod3.c +++ /dev/null @@ -1,149 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include - -static int set_property(int fd, uint32_t cmd, uint32_t data) -{ - struct dtv_property p; - struct dtv_properties c; - int ret; - - p.cmd = cmd; - c.num = 1; - c.props = &p; - p.u.data = data; - ret = ioctl(fd, FE_SET_PROPERTY, &c); - if (ret < 0) { - fprintf(stderr, "FE_SET_PROPERTY returned %d\n", errno); - return -1; - } - return 0; -} - -static int get_property(int fd, uint32_t cmd, uint32_t *data) -{ - struct dtv_property p; - struct dtv_properties c; - int ret; - - p.cmd = cmd; - c.num = 1; - c.props = &p; - ret = ioctl(fd, FE_GET_PROPERTY, &c); - if (ret < 0) { - fprintf(stderr, "FE_GET_PROPERTY returned %d\n", ret); - return -1; - } - *data = p.u.data; - return 0; -} - - - -int main(int argc, char*argv[]) -{ - int fd; - struct dvb_mod_params mp; - struct dvb_mod_channel_params mc; - uint32_t data; - int32_t adapter = 0, channel = 0, gain = -1; - int32_t base = -1, freq = -1, rate = -1; - char mod_name[128]; - - while (1) { - int cur_optind = optind ? optind : 1; - int option_index = 0; - int c; - static struct option long_options[] = { - {"adapter", required_argument, 0, 'a'}, - {"channel", required_argument, 0, 'c'}, - {"gain", required_argument, 0, 'g'}, - {"base", required_argument, 0, 'b'}, - {"frequency", required_argument, 0, 'f'}, - {"rate", required_argument, 0, 'r'}, - {0, 0, 0, 0} - }; - c = getopt_long(argc, argv, - "a:c:g:b:f:r:", - long_options, &option_index); - if (c==-1) - break; - - switch (c) { - case 'a': - adapter = strtoul(optarg, NULL, 0); - break; - case 'c': - channel = strtoul(optarg, NULL, 0); - break; - case 'g': - gain = strtoul(optarg, NULL, 0); - break; - case 'b': - base = strtoul(optarg, NULL, 0); - break; - case 'f': - freq = strtoul(optarg, NULL, 0); - break; - case 'r': - if (!strcmp(optarg, "DVBT_8")) - rate = SYS_DVBT_8; - else if (!strcmp(optarg, "DVBT_7")) - rate = SYS_DVBT_7; - else if (!strcmp(optarg, "DVBT_6")) - rate = SYS_DVBT_6; - else if (!strcmp(optarg, "ISDBT_6")) - rate = SYS_ISDBT_6; - else rate = strtoul(optarg, NULL, 0); - break; - default: - break; - } - } - if (optind < argc) { - printf("too many arguments\n"); - exit(1); - } - - snprintf(mod_name, 127, "/dev/dvb/adapter%d/mod%d", adapter, channel); - fd = open(mod_name, O_RDONLY); - - if (fd < 0) { - printf("Could not open modulator device.\n"); - exit(1); - } - - - /* gain 0-255 */ - //get_property(fd, MODULATOR_GAIN, &data); - //printf("Modulator gain = %u\n", data); - //set_property(fd, MODULATOR_GAIN, 100); - - //get_property(fd, MODULATOR_ATTENUATOR, &data); - //printf("Modulator attenuator = %u\n", data); - - if (gain > 0) - set_property(fd, MODULATOR_GAIN, gain); - if (base > 0) - set_property(fd, MODULATOR_BASE_FREQUENCY, base); - if (freq > 0) - set_property(fd, MODULATOR_FREQUENCY, freq); - if (rate > 0) - set_property(fd, MODULATOR_OUTPUT_RATE, rate); - - - close(fd); -} - diff --git a/apps/tscheck.c b/apps/tscheck.c deleted file mode 100644 index f3947eb..0000000 --- a/apps/tscheck.c +++ /dev/null @@ -1,105 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -char line_start[16] = ""; -char line_end[16] = "\r"; - - -uint32_t cc_errors = 0; -uint32_t packets = 0; -uint32_t payload_packets = 0; -uint32_t packet_errors = 0; - -uint8_t cc[8192] = { 0 }; - -void proc_ts(int i, uint8_t *buf) -{ - uint16_t pid= 0x1fff& ((buf[1] << 8) | buf[2]); - uint8_t ccin = buf[3] & 0x1f; - - if( buf[0] == 0x47 && (buf[1] & 0x80) == 0) { - if( pid != 8191 ) { - if (ccin & 0x10) { - if( cc[pid] != 0 ) { - // TODO: 1 repetition allowed - if ((((cc[pid] + 1) & 0x0F) != (ccin & 0x0F)) ) { - cc_errors += 1; - printf("%04x: %u != %u\n", pid, (cc[pid] + 1) & 0x0F, ccin & 0x0F); - } - } - cc[pid] = ccin; - } - payload_packets += 1; - } - } else - packet_errors += 1; - - if( (packets & 0x3FFF ) == 0) { - printf("%s Packets: %12u non null %12u, errors: %12u, CC errors: %12u%s", - line_start, packets, payload_packets, packet_errors, cc_errors, line_end); - fflush(stdout); - } - packets += 1; -} - -#define TSBUFSIZE (100*188) - -void citest(char* n) -{ - uint8_t *buf; - uint8_t id; - int i, nts; - int len; - int ts=open(n, O_RDONLY); - buf=(uint8_t *)malloc(TSBUFSIZE); - - - while(1) { - len=read(ts, buf, TSBUFSIZE); - if (len<0) { - continue; - } - if (buf[0]!=0x47) { - read(ts, buf, 1); - continue; - } - if (len%188) { /* should not happen */ - printf("blah\n"); - continue; - } - nts=len/188; - for (i=0; i| []\n"); - exit(0); - } - if( argc > 2 ) - { - int line = atoi(argv[2]); - if( line >= 0 && line < 64 ) - { - snprintf(line_start,sizeof(line_start)-1,"\0337\033[%d;0H",line); - strncpy(line_end,"\0338",sizeof(line_end)-1); - } - } - citest(argv[1]); -} -