// // 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 ); } }
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 ); }