#include #include #include #include #include #include #include #include "/sys/dev/iicbus/iic.h" #include "tuner_ctrl.h" int main(int argc, char **argv) { struct iiccmd cmd; float freq, ofreq; int fd; int i, c; uint8_t rv; if (argc != 2) errx(1, "Usage: %s ", argv[0]); if ( (fd = open(argv[1], O_RDWR)) < 0) err(1, "Error opening device: %s", argv[1]); if (ioctl(fd, I2CRSTCARD, &cmd) != 0) err(1, "Error reseting I2C bus"); printf("000\n\n"); ofreq = 0; c = 0; freq = SCAN_START; for (freq = SCAN_START; freq <= SCAN_END; freq += SCAN_FSTEP) { c = 0; redo: rv = 0; if ( (i = set_channel(fd, freq, ofreq, &rv)) != 0) { if (i != EINVAL) { if (++c >= 16) err(errno, "set_channel failure. code: %d", i); /* BUS reset handled by tuner_ctrl.c */ goto redo; } } ofreq = freq; if ((rv & SCAN_LOCKVAL) == SCAN_LOCKVAL) { printf("%f\n", freq); freq += SCAN_SEPARATION - SCAN_FSTEP; } usleep(1000); } return 0; }