#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include int simplescan() { struct dvb_frontend_info fe_info; struct dtv_property cmdargs[20]; struct dtv_properties cmdseq; int freq; int fd; int i; int testflags; fe_status_t status; int adapter; int frontend; char frontend_name[80]; //transponder freq freq = 498000000; adapter = 0; frontend = 1; memset(frontend_name, 0, sizeof(frontend_name)); snprintf (frontend_name, sizeof(frontend_name), "/dev/dvb/adapter%i/frontend%i", adapter, frontend); fprintf(stderr, "\n"); if ((fd = open (frontend_name, O_RDWR)) < 0) { error("Open1 failed\n"); return 0; } // // comment next line to get it work! ioctl( fd, FE_GET_INFO, &fe_info ); // // close(fd); if ((fd = open (frontend_name, O_RDWR)) < 0) { error("Open2 failed\n"); return 0; } ioctl( fd, FE_GET_INFO, &fe_info ); fprintf(stderr, "Using DVB device %s \"%s\"\n",frontend_name, fe_info.name); cmdargs[0].cmd = DTV_DELIVERY_SYSTEM; cmdargs[0].u.data = SYS_DVBT; cmdargs[1].cmd = DTV_FREQUENCY; cmdargs[1].u.data = freq; cmdargs[2].cmd = DTV_MODULATION; cmdargs[2].u.data = QAM_16; cmdargs[3].cmd = DTV_CODE_RATE_HP; cmdargs[3].u.data = FEC_3_4; cmdargs[4].cmd = DTV_CODE_RATE_LP; cmdargs[4].u.data = FEC_AUTO; cmdargs[5].cmd = DTV_GUARD_INTERVAL; cmdargs[5].u.data = GUARD_INTERVAL_AUTO; cmdargs[6].cmd = DTV_TRANSMISSION_MODE; cmdargs[6].u.data = TRANSMISSION_MODE_8K; cmdargs[7].cmd = DTV_HIERARCHY; cmdargs[7].u.data = HIERARCHY_NONE; cmdargs[8].cmd = DTV_BANDWIDTH_HZ; cmdargs[8].u.data = 8000000; cmdargs[9].cmd = DTV_INVERSION; cmdargs[9].u.data = INVERSION_AUTO; cmdargs[10].cmd = DTV_TUNE; cmdseq.num = 11; cmdseq.props = cmdargs; testflags = fcntl(fd, F_GETFL); if ( ioctl( fd, FE_SET_PROPERTY, &cmdseq )<0 ) { fprintf(stderr, "ERROR tuning\n"); close(fd); return 0; } for (i=0; i< 10; i++) { usleep( 100000 ); fprintf( stderr, "." ); if ( ioctl( fd, FE_READ_STATUS, &status )==-1 ) { perror( "FE_READ_STATUS" ); break; } if ( status & FE_HAS_LOCK ) { fprintf(stderr," LOCKED."); return 1; } } fprintf(stderr, " \n"); return 0; } int main (int argc, char **argv) { simplescan(); }