#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include tv_properties_t _qam_cmdseq = { { .cmd = TV_SEQ_START }, { .cmd = TV_SET_FREQUENCY, .u.data = 561000000 }, { .cmd = TV_SET_MODULATION, .u.data = QAM_AUTO }, { .cmd = TV_SET_INVERSION, .u.data = INVERSION_AUTO }, { .cmd = TV_SET_BANDWIDTH, .u.data = BANDWIDTH_AUTO }, { .cmd = TV_SEQ_COMPLETE }, { .cmd = 0 }, }; tv_properties_t _8psk_cmdseq = { { .cmd = TV_SEQ_START }, { .cmd = TV_SET_FREQUENCY, .u.data = 12051000 }, { .cmd = TV_SET_MODULATION, .u.data = _8PSK }, { .cmd = TV_SET_SYMBOLRATE, .u.data = 27500 }, { .cmd = TV_SET_INNERFEC, .u.data = FEC_AUTO }, { .cmd = TV_SET_VOLTAGE, .u.data = SEC_VOLTAGE_13 }, { .cmd = TV_SET_INVERSION, .u.data = INVERSION_AUTO }, { .cmd = TV_SET_PILOT, .u.data = PILOT_AUTO }, { .cmd = TV_SET_ROLLOFF, .u.data = ROLLOFF_AUTO }, { .cmd = TV_SEQ_COMPLETE }, { .cmd = 0 }, }; tv_properties_t _diseqc_cmdseq = { { .cmd = TV_SET_TONE, .u.data = SEC_TONE_OFF }, { .cmd = TV_SET_VOLTAGE, .u.data = SEC_VOLTAGE_13 }, { .cmd = TV_SET_DISEQC_MASTER, .u.buffer.len = 3, .u.buffer.data[0] = 0, .u.buffer.data[1] = 0, .u.buffer.data[2] = 0, }, }; void print_status(fe_status_t festatus) { printf("FE_STATUS:"); if (festatus & FE_HAS_SIGNAL) printf(" FE_HAS_SIGNAL"); if (festatus & FE_TIMEDOUT) printf(" FE_TIMEDOUT"); if (festatus & FE_HAS_LOCK) printf(" FE_HAS_LOCK"); if (festatus & FE_HAS_CARRIER) printf(" FE_HAS_CARRIER"); if (festatus & FE_HAS_VITERBI) printf(" FE_HAS_VITERBI"); if (festatus & FE_HAS_SYNC) printf(" FE_HAS_SYNC"); printf("\n"); } int main(int argc, char **argv[]) { int result, fefd = -1; fe_status_t festatus; if ((fefd = open("/dev/dvb/adapter0/frontend0", O_RDWR | O_NONBLOCK)) < 0) { perror("open failed"); return -1; } printf("ioctl result = %d\n", //ioctl(fefd, FE_SET_PROPERTY, &_qam_cmdseq)); ioctl(fefd, FE_SET_PROPERTY, &_8psk_cmdseq)); while(1) { result = ioctl(fefd, FE_READ_STATUS, &festatus); printf("ioctl result = %d, [ 0x%02x ] = ", result, festatus); print_status(festatus); usleep(1 * 1000000); } close(fefd); return 0; }