All pastes #393345 Raw Edit

Mine

public text v1 · immutable
·published 2007-03-13 14:11 UTC
rendered paste body
if ((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;
        }
    }