Esempio n. 1
0
//
// Retrieve a recors from disk and check it's CRC
//
void dvb_config_retrieve_from_disk( sys_config *cfg )
{
    FILE *fp;
    SysConfigRecord rd;
    int success = -1;

    dvb_config_create();

    if((fp=fopen(dvb_config_get_path("datvexpress.cfg"),"r")) > 0)
    {
        size_t size = fread( &rd, 1, sizeof(SysConfigRecord), fp );
        if( size == sizeof(SysConfigRecord))
        {
            // Check the CRC to make sure it is valid
            unsigned long crc = dvb_crc32_calc((unsigned char*)&rd.cfg, sizeof(sys_config));
            if( crc == rd.crc.crc )
            {
                memcpy( cfg, &rd.cfg, sizeof(sys_config));
                success = 0;
            }
        }
        //cfg->dvbs2_fmt.constellation = M_QPSK;
        //cfg->dvb_mode         = MODE_DVBS;
        fclose(fp);
    }
    if( success != 0 )
    {
        loggerf("Using default Settings");
        dvb_default_configuration( cfg );
        dvb_config_save_to_disk( cfg );
    }
}
Esempio n. 2
0
void dvb_config_save_to_disk(sys_config *cfg)
{
    FILE *fp;
    SysConfigRecord record;

    dvb_config_create();

    if((fp=fopen(dvb_config_get_path("datvexpress.cfg"),"w"))>0)
    {
        // Create a CRC of the data and sve it along with the data
        record.crc.crc  = dvb_crc32_calc((unsigned char*)cfg, sizeof(sys_config));
        // Copy the cfg into the disk record structure
        memcpy( &record.cfg, cfg, sizeof(sys_config));
        // Save
        fwrite(&record,sizeof(SysConfigRecord), 1, fp );
        fclose(fp);
    }
    else
    {
        loggerf("Cannot save configuration file (check owner)");
    }
}
/*
void fft_2k_test(  fftw_complex *out )
{
    memset(fftw_in, 0, sizeof(fftw_complex)*M2KS);
    int m = (M2KS/2)+32;//1704;
    fftw_in[m].re =  0.7;

    fftw_one( m_fftw_2k_plan, fftw_in, out );
    return;
}
*/
void init_dvb_t_fft( void )
{
    //
    // Plans
    //
#ifdef USE_AVFFT
    m_avfft_2k_context  = av_fft_init (11, 1);
    m_avfft_4k_context  = av_fft_init (12, 1);
    m_avfft_8k_context  = av_fft_init (13, 1);
    m_avfft_16k_context = av_fft_init (14, 1);
    m_fft_in  = (fft_complex*)av_malloc(sizeof(fft_complex)*M16KS);
    m_fft_out = (fft_complex*)av_malloc(sizeof(fft_complex)*M16KS);
#else

    FILE *fp;
    if((fp=fopen(dvb_config_get_path("fftw_wisdom"),"r"))!=NULL)
    {
        fftw_import_wisdom_from_file(fp);
        m_fftw_2k_plan  = fftw_create_plan(M2KS,  FFTW_BACKWARD, FFTW_USE_WISDOM);
        m_fftw_4k_plan  = fftw_create_plan(M4KS,  FFTW_BACKWARD, FFTW_USE_WISDOM);
        m_fftw_8k_plan  = fftw_create_plan(M8KS,  FFTW_BACKWARD, FFTW_USE_WISDOM);
        m_fftw_16k_plan = fftw_create_plan(M16KS, FFTW_BACKWARD, FFTW_USE_WISDOM);
        fftw_import_wisdom_from_file(fp);
    }
    else
    {
        if((fp=fopen(dvb_config_get_path("fftw_wisdom"),"w"))!=NULL)
        {
            m_fftw_2k_plan  = fftw_create_plan(M2KS,  FFTW_BACKWARD, FFTW_MEASURE | FFTW_USE_WISDOM);
            m_fftw_4k_plan  = fftw_create_plan(M4KS,  FFTW_BACKWARD, FFTW_MEASURE | FFTW_USE_WISDOM);
            m_fftw_8k_plan  = fftw_create_plan(M8KS,  FFTW_BACKWARD, FFTW_MEASURE | FFTW_USE_WISDOM);
            m_fftw_16k_plan = fftw_create_plan(M16KS, FFTW_BACKWARD, FFTW_MEASURE | FFTW_USE_WISDOM);
            if(fp!=NULL) fftw_export_wisdom_to_file(fp);
        }
    }
    m_fft_in  = (fft_complex*)fftw_malloc(sizeof(fft_complex)*M16KS);
    m_fft_out = (fft_complex*)fftw_malloc(sizeof(fft_complex)*M16KS);
#endif
    if( m_format.tm == TM_2K)
    {
        m_N = M2KS;
        switch( m_format.chan )
        {
        case CH_8M:
        case CH_7M:
        case CH_6M:
            m_IR = 1;
            break;
        case CH_4M:
        case CH_3M:
        case CH_2M:
        case CH_1M:
            m_IR = 2;
            break;
        case CH_500K:
            m_IR = 4;
            break;
        }
    }
    if( m_format.tm == TM_8K)
    {
        m_N = M8KS;
        switch( m_format.chan )
        {
        case CH_8M:
        case CH_7M:
        case CH_6M:
            m_IR = 1;
            break;
        case CH_4M:
        case CH_3M:
        case CH_2M:
        case CH_1M:
            m_IR = 2;
            break;
        }
    }
    create_correction_table( m_N, m_IR );
}