Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 27 Jun 1997 15:22:14 -0400 (EDT)
From:      Kenneth Merry <ken@gt.ed.net>
To:        ken@gt.ed.net (Kenneth Merry)
Cc:        smp@csn.net, rhh@ct.picker.com, yjin@cs.ucla.edu, multimedia@FreeBSD.ORG
Subject:   Re: Fxtv
Message-ID:  <199706271922.PAA19130@housing1.stucen.gatech.edu>
In-Reply-To: <199706180334.XAA25346@housing1.stucen.gatech.edu> from Kenneth Merry at "Jun 17, 97 11:34:56 pm"

next in thread | previous in thread | raw e-mail | index | archive | help
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 <stdio.h>
#include <stdlib.h>
#include <sys/fcntl.h>
#include <unistd.h>
#include <errno.h>

#include <machine/ioctl_meteor.h>
#include <machine/ioctl_bt848.h>

#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);
}



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199706271922.PAA19130>