diff options
author | Mauro Carvalho Chehab <mchehab@infradead.org> | 2008-01-09 11:47:32 -0200 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@infradead.org> | 2008-01-09 11:47:32 -0200 |
commit | 4c923cc75d486f3050defab73c86a1b50fa47449 (patch) | |
tree | 9af3e8468931c0a9f7f84686a61d290a9f798586 /v4l_experimental/rds-saa6588.c | |
parent | 06a93cdefdb54b93017c0cc7fa3f67d28198fad5 (diff) | |
parent | 569fda25980e17a63c2a66b9271840a90502b5a5 (diff) | |
download | mediapointer-dvb-s2-4c923cc75d486f3050defab73c86a1b50fa47449.tar.gz mediapointer-dvb-s2-4c923cc75d486f3050defab73c86a1b50fa47449.tar.bz2 |
merge: http://linuxtv.org/hg/~mkrufky/tda18271-fix
From: Mauro Carvalho Chehab <mchehab@infradead.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
Diffstat (limited to 'v4l_experimental/rds-saa6588.c')
-rw-r--r-- | v4l_experimental/rds-saa6588.c | 136 |
1 files changed, 0 insertions, 136 deletions
diff --git a/v4l_experimental/rds-saa6588.c b/v4l_experimental/rds-saa6588.c deleted file mode 100644 index 69d66e5f1..000000000 --- a/v4l_experimental/rds-saa6588.c +++ /dev/null @@ -1,136 +0,0 @@ -/* - * $Id: rds-saa6588.c,v 1.3 2005/06/12 04:19:19 mchehab Exp $ - * - * poll i2c RDS receiver [Philips saa6588] - * - */ -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <unistd.h> -#include <fcntl.h> -#include <errno.h> -#include <sys/ioctl.h> -#include <linux/types.h> -#include <linux/i2c.h> - -int debug; - -/* ----------------------------------------------------------------- */ - -char rds_psn[9]; -char rds_txt[65]; - -void rds_decode(int blkno,int b1, int b2) -{ - static int group,spare,c1,c2; - - switch (blkno) { - case 0: - if (debug) - fprintf(stderr,"block A - id=%d\n", - (b1 << 8) | b2); - break; - case 1: - if (debug) - fprintf(stderr,"block B - group=%d%c tp=%d pty=%d spare=%d\n", - (b1 >> 4) & 0x0f, - ((b1 >> 3) & 0x01) + 'A', - (b1 >> 2) & 0x01, - ((b1 << 3) & 0x18) | ((b2 >> 5) & 0x07), - b2 & 0x1f); - group = (b1 >> 3) & 0x1f; - spare = b2 & 0x1f; - break; - case 2: - if (debug) - fprintf(stderr,"block C - 0x%02x 0x%02x\n",b1,b2); - c1 = b1; - c2 = b2; - break; - case 3: - if (debug) - fprintf(stderr,"block D - 0x%02x 0x%02x\n",b1,b2); - switch (group) { - case 0: - rds_psn[2*(spare & 0x03)+0] = b1; - rds_psn[2*(spare & 0x03)+1] = b2; - if ((spare & 0x03) == 0x03) - fprintf(stderr,"PSN #>%s<#\n",rds_psn); - break; - case 4: - rds_txt[4*(spare & 0x0f)+0] = c1; - rds_txt[4*(spare & 0x0f)+1] = c2; - rds_txt[4*(spare & 0x0f)+2] = b1; - rds_txt[4*(spare & 0x0f)+3] = b2; - if ((spare & 0x0f) == 0x0f) - fprintf(stderr,"TXT #>%s<#\n",rds_txt); - break; - } - break; - default: - fprintf(stderr,"unknown block [%d]\n",blkno); - } -} - -int -main(int argc, char *argv[]) -{ - int c,f,rc, no, lastno = -1; - unsigned char b[40]; - char *device = "/dev/i2c-0"; - - /* parse options */ - while (-1 != (c=getopt(argc,argv,"hvd:"))) { - switch (c){ - case 'd': - if (optarg) - device = optarg; - break; - case 'v': - debug = 1; - break; - case 'h': - default: - printf("poll i2c RDS receiver [saa6588] via chardev\n"); - printf("usage: %s [ -d i2c-device ]\n",argv[0]); - exit(1); - } - } - - if (-1 == (f = open(device,O_RDWR))) { - fprintf(stderr,"open %s: %s\n",device,strerror(errno)); - exit(1); - } - ioctl(f,I2C_SLAVE,0x20 >> 1); - for (;;) { - memset(b,0,sizeof(b)); - rc = read(f,b,6); - if (6 != rc) { - fprintf(stderr,"oops: read: rc=%d, expected 6 [%s]\n", - rc,strerror(errno)); - break; - } - if (0 == (b[0] & 0x10)) { - fprintf(stderr,"no signal\r"); - continue; - } - if (1 == (b[0] & 0x08)) { - fprintf(stderr,"overflow detected\n"); - } - if (1 == (b[0] & 0x04)) { - fprintf(stderr,"reset detected\n"); - } - if (debug) - fprintf(stderr,"raw: 0x%02x 0x%02x 0x%02x 0x%02x 0x%02x 0x%02x\n", - b[0],b[1],b[2],b[3],b[4],b[5]); - no = b[0] >> 5; - if (lastno != no) { - rds_decode(no, b[1], b[2]); - lastno = no; - } - usleep(10*1000); - } - close(f); - exit(0); -} |