From owner-freebsd-multimedia Sat Jun 28 09:47:05 1997 Return-Path: Received: (from root@localhost) by hub.freebsd.org (8.8.5/8.8.5) id JAA26294 for multimedia-outgoing; Sat, 28 Jun 1997 09:47:05 -0700 (PDT) Received: from delphi.cs.ucla.edu (Delphi.CS.UCLA.EDU [131.179.240.10]) by hub.freebsd.org (8.8.5/8.8.5) with ESMTP id JAA26288 for ; Sat, 28 Jun 1997 09:47:02 -0700 (PDT) Received: from rain.cs.ucla.edu by delphi.cs.ucla.edu (2.1) with ESMTP id JAA27012; Sat, 28 Jun 1997 09:47:01 -0700 (PDT) Received: from localhost by rain.cs.ucla.edu (8.8.3/UCLACS-1.0) with SMTP id JAA19582; Sat, 28 Jun 1997 09:43:33 -0700 (PDT) Date: Sat, 28 Jun 1997 09:43:33 -0700 (PDT) From: Yixin Jin To: Kenneth Merry cc: smp@csn.net, rhh@ct.picker.com, multimedia@freebsd.org Subject: Re: Fxtv In-Reply-To: <199706271922.PAA19130@housing1.stucen.gatech.edu> Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Sender: owner-multimedia@freebsd.org X-Loop: FreeBSD.org Precedence: bulk Hi there Here is what I used to make Bt848 driver work for HRC cable. In file "pci/brooktree848.c", you add: /* * North American Cable Channels, HRC: * * 2: 54 mHz - 4: 66 mHz * 5: 78 mHz - 6: 84 mHz * 7: 174 mHz - 13: 210 mHz * 14: 120 mHz - 22: 168 mHz * 23: 216 mHz - 94: 642 mHz * 95: 90 mHz - 99: 114 mHz * * IF freq: 45.75 mHz */ #define OFFSET 6.00 int hrccable[] = { 99, (int)( 45.75 * FREQFACTOR), 0, 95, (int)( 90.00 * FREQFACTOR), (int)(OFFSET * FREQFACTOR), 23, (int)( 216.00 * FREQFACTOR), (int)(OFFSET * FREQFACTOR), 14, (int)( 120.00 * FREQFACTOR), (int)(OFFSET * FREQFACTOR), 7, (int)( 174.00 * FREQFACTOR), (int)(OFFSET * FREQFACTOR), 5, (int)( 78.00 * FREQFACTOR), (int)(OFFSET * FREQFACTOR), 2, (int)( 54.00 * FREQFACTOR), (int)(OFFSET * FREQFACTOR), 0 }; #undef OFFSET Originally, hrccable[] is defined as several 0's. Now, change it to this. Fxtv works beautifully for HRC cable. regards Yixin On Fri, 27 Jun 1997, Kenneth Merry wrote: > Kenneth Merry wrote... > > Steve Passe wrote... > > > >However, still HRC is not supported, but at this time even > > > >channel 2 doesn't show up. I change to IRC. Then I can change the > > > >channels, but only channel 5 and channel 6 can be received correctly. > > > >And It seems that I can receive the voice of other channels, but not > > > >video. > > > > > > There is no support for HRC, primarily because I didn't have a clue to what > > > frequencies it uses. > > > > [ ... ] > > > I created a table of channels and frequencies, and made a little > > command line tuner program based on freq.c that changed channels for me. > > > > The reason I'm being so vague here is that my computer is boxed up > > (I'm moving) and I won't be able to get to it for a couple of weeks. If > > y'all are still in the dark about HRC frequencies in a week or two, let me > > know and I'll forward out my frequency table. (and the slightly modified > > version of freq.c as well..) > > Okay, here is my tuner program. The structure contains the > frequencies for the various HRC channels. So if there's anyone out there > on a HRC cable system, you might want to try this out and see if it works > for you. > > Ken > -- > Kenneth Merry > ken@gt.ed.net > > > > #include > #include > #include > #include > #include > > #include > #include > > #define DEVICE "/dev/tuner0" > > typedef struct { > float frequency; > int channel; > } chaninfo_t; > > chaninfo_t chaninfo[] = > { > { 73.25, 1 }, > { 55.25, 2 }, > { 61.25, 3 }, > { 67.25, 4 }, > { 77.25, 5 }, > { 83.25, 6 }, > { 175.25, 7 }, > { 181.25, 8 }, > { 187.25, 9 }, > { 193.25, 10 }, > { 199.25, 11 }, > { 205.25, 12 }, > { 211.25, 13 }, > { 121.25, 14 }, > { 127.25, 15 }, > { 133.25, 16 }, > { 139.25, 17 }, > { 145.25, 18 }, > { 151.25, 19 }, > { 157.25, 20 }, > { 163.25, 21 }, > { 169.25, 22 }, > { 217.25, 23 }, > { 223.25, 24 }, > { 229.25, 25 }, > { 235.25, 26 }, > { 241.25, 27 }, > { 247.25, 28 }, > { 253.25, 29 }, > { 259.25, 30 }, > { 265.25, 31 }, > { 271.25, 32 }, > { 277.25, 33 }, > /* { 293.25, 34 }, */ > { 283.25, 34 }, > { 289.25, 35 }, > { 295.25, 36 }, > { 301.25, 37 }, > { 307.25, 38 }, > { 313.25, 39 }, > { 319.25, 40 }, > { 325.25, 41 }, > { 331.25, 42 }, > { 337.25, 43 }, > { 343.25, 44 }, > { 349.25, 45 }, > { 355.25, 46 }, > { 361.25, 47 }, > { 367.25, 48 }, > { 373.25, 49 }, > { 379.25, 50 }, > { 385.25, 51 }, > { 391.25, 52 }, > { 397.25, 53 }, > { 403.25, 54 }, > { 409.25, 55 }, > { 415.25, 56 }, > { 421.25, 57 }, > { 427.25, 58 }, > { 433.25, 59 }, > { 439.25, 60 }, > { 445.25, 61 }, > { 451.25, 62 }, > { 457.25, 63 }, > { 463.25, 64 }, > { 469.25, 65 }, > { 475.25, 66 }, > { 481.25, 67 }, > { 487.25, 68 }, > { 493.25, 69 }, > { 499.25, 70 }, > { 505.25, 71 }, > { 511.25, 72 }, > { 517.25, 73 }, > { 523.25, 74 }, > { 529.25, 75 }, > { 535.25, 76 }, > { 541.25, 77 }, > { 547.25, 78 }, > { 553.25, 79 }, > { 559.25, 80 }, > { 565.25, 81 }, > { 571.25, 82 }, > { 577.25, 83 }, > { 583.25, 84 }, > { 589.25, 85 }, > { 595.25, 86 }, > { 601.25, 87 }, > { 607.25, 88 }, > { 613.25, 89 }, > { 619.25, 90 }, > { 625.25, 91 }, > { 631.25, 92 }, > { 637.25, 93 }, > { 643.25, 94 }, > { 91.25, 95 }, > { 97.25, 96 }, > { 103.25, 97 }, > { 109.25, 98 }, > { 115.25, 99 }, > { 649.25, 100 }, > { 655.25, 101 }, > { 661.25, 102 }, > { 667.25, 103 }, > { 673.25, 104 }, > { 679.25, 105 }, > { 685.25, 106 }, > { 691.25, 107 }, > { 697.25, 108 }, > { 703.25, 109 }, > { 709.25, 110 }, > { 715.25, 111 }, > { 721.25, 112 }, > { 727.25, 113 }, > { 733.25, 114 }, > { 739.25, 115 }, > { 745.25, 116 }, > { 751.25, 117 }, > { 757.25, 118 }, > { 763.25, 119 }, > { 769.25, 120 }, > { 775.25, 121 }, > { 781.25, 122 }, > { 787.25, 123 }, > { 793.25, 124 }, > { 799.25, 125 } > }; > > void > byebye( int fd ) > { > fprintf( stderr, "ioctl failed: %s\n", strerror(errno) ); > close( fd ); > exit( 1 ); > } > > > main(int ac, char **av) > { > int x, ch; > char s[ 128 ]; > int video; > int n = 0; > float foo; > float newfreq; > > if ((video = open( DEVICE, O_RDONLY)) < 0) > byebye( video ); > > fprintf (stdout, "freq(%d)> ", n++); > while ( fgets( s, 128, stdin ) ) { > switch ( s[0] ) { > case 'b': > if (ioctl(video, BT848_CCBARS, &x) < 0) > byebye( video ); > break; > > case 'B': > if (ioctl(video, BT848_SCBARS, &x) < 0) > byebye( video ); > break; > > case 'f': > if (ioctl(video, TVTUNER_GETFREQ, &x) < 0) > byebye( video ); > else { > foo = x / 16; > fprintf(stderr, "frequency: %f\n", foo); > } > > if (ioctl(video, TVTUNER_GETSTATUS, &x) < 0) > byebye( video ); > else > fprintf(stderr, "status: 0x%02x\n", x ); > break; > > case 'F': > x = strtol( &s[ 2 ], NULL, 10 ); > newfreq = atof (&s[ 2 ]); > fprintf( stderr, "freq: %f\n", newfreq); > x = newfreq * 16; > if (ioctl(video, TVTUNER_SETFREQ, &x) < 0) > byebye( video ); > sleep( 1 ); > if (ioctl(video, TVTUNER_GETSTATUS, &x) < 0) > byebye( video ); > else > fprintf(stderr, "status: 0x%02x\n", x ); > break; > > case 's': > x = 0; > if (ioctl(video, BT848_GSTATUS, &x) < 0) > byebye( video ); > else > fprintf(stderr, "bt848 status: 0x%08x\n", x ); > > if (ioctl(video, TVTUNER_GETSTATUS, &x) < 0) > byebye( video ); > else > fprintf(stderr, "tuner status: 0x%02x\n", x ); > break; > > case 't': > x = strtol( &s[ 2 ], NULL, 10 ); > if (ioctl(video, TVTUNER_SETTYPE, &x) < 0) > byebye( video ); > > sleep( 1 ); > if (ioctl(video, TVTUNER_GETSTATUS, &x) < 0) > byebye( video ); > else > fprintf(stderr, "status: 0x%02x\n", x ); > break; > > case 'q': > close (video); > exit (0); > break; > > default: > x = atoi( s ); > if ((x < 2) || (x > 125)) { > fprintf (stderr, "channel %d out of range\n", x); > } > else { > /* > if (ioctl(video, TVTUNER_SETCHNL, &x) < 0) > byebye( video ); > */ > newfreq = chaninfo[x - 1].frequency - 1.25; > x = newfreq * 16; > if (ioctl(video, TVTUNER_SETFREQ, &x) < 0) > byebye(video); > } > break; > } > fprintf (stdout, "freq(%d)> ", n++); > } > > close(video); > exit(0); > } >