rendered paste bodyif ((DVB_API_VERSION == 3) && (DVB_API_VERSION_MINOR == 2)) {
struct dvbfe_params fe_params;
printf("API 3.2\n");
if(channel->tuner == T_QPSK)
{
struct dvbfe_info fe_info;
// a temporary hack, need to clean
memset(&fe_info, 0, sizeof (&fe_info));
if(channel->delsys == 0)
fe_info.delivery = DVBFE_DELSYS_DVBS;
else if(channel->delsys == 2)
fe_info.delivery = DVBFE_DELSYS_DVBS2;
int result = ioctl(frontendFD, DVBFE_GET_INFO, &fe_info);
if (result < 0) {
perror("ioctl DVBFE_GET_INFO failed");
close(frontendFD);
return FALSE;
}
switch (fe_info.delivery) {
case DVBFE_DELSYS_DVBS:
printf("----------------------------------> Using '%s' DVB-S\n", fe_info.name);
break;
case DVBFE_DELSYS_DSS:
printf("----------------------------------> Using '%s' DSS\n", fe_info.name);
break;
case DVBFE_DELSYS_DVBS2:
printf("----------------------------------> Using '%s' DVB-S2\n", fe_info.name);
break;
default:
printf("Unsupported Delivery system (%d)!\n", fe_info.delivery);
close(frontendFD);
return FALSE;
}
printf("Satellite: %d\n", channel->delsys);
/* DVB-S */
uint32_t freq = 1000*(channel->frequency - 10600);
fe_params.frequency = freq;
fe_params.inversion = INVERSION_AUTO;
if (channel->delsys == 0) {
fe_params.delsys.dvbs.symbol_rate = 1000*channel->symbol_rate;
fe_params.delsys.dvbs.fec = FEC_AUTO;
syslog(LOG_INFO, "Tuning DVB-S to %d Hz, Symbol Rate: %d", fe_params.frequency, fe_params.delsys.dvbs.symbol_rate);
} else if (channel->delsys == 2) {
fe_params.delsys.dvbs2.symbol_rate = 1000*channel->symbol_rate;
fe_params.delsys.dvbs2.fec = FEC_AUTO;
syslog(LOG_INFO, "Tuning DVB-S2 to %d Hz, Symbol Rate: %d", fe_params.frequency, fe_params.delsys.dvbs2.symbol_rate);
printf("DVB-S2\n");
}
}
else
printf("API 3.2 supports only DVB-S for now");
if (ioctl(frontendFD, FE_SET_FRONTEND, &fe_params) != 0) {
syslog(LOG_ERR, "FE_SET_FRONTEND failed");
return FALSE;
}
}