bool FFTviewerFrame::SaveConfiguration() { char outbuf[80]; char newline[3]; memset(outbuf,0,sizeof(outbuf)); #define _N (sizeof(outbuf)-1) wxSprintf(newline,"\r\n"); if(g_CfgChanged) { g_CfgChanged = false; //Avoid repeated writes if(m_CFG_FileClassPtr == NULL) m_CFG_FileClassPtr = new wxFile(); m_CFG_FileClassPtr->Create(g_CfgFileName,TRUE,wxS_DEFAULT); if(!m_CFG_FileClassPtr->IsOpened()) { cout << "CFG File Open Fail" << endl; if(m_CFG_FileClassPtr != NULL) { m_CFG_FileClassPtr->Close(); delete m_CFG_FileClassPtr; m_CFG_FileClassPtr = NULL; } return(false); } wxSnprintf(outbuf,_N,"RASDRproc Version %s - NOTE: Limit to 80 column to avoid problems %s", AutoVersion::FULLVERSION_STRING,"..............................................................."); m_CFG_FileClassPtr->Write(outbuf); m_CFG_FileClassPtr->Write(newline); wxSnprintf(outbuf,_N,"%.12f // Center Frequency (GHz)",mSpectrum->m_RxFreq); m_CFG_FileClassPtr->Write(outbuf); m_CFG_FileClassPtr->Write(newline); wxSnprintf(outbuf,_N,"%-14g // Frequency Step",mSpectrum->m_frequencyStep); m_CFG_FileClassPtr->Write(outbuf); m_CFG_FileClassPtr->Write(newline); wxSnprintf(outbuf,_N,"%-14d // LPF Bandwidth (index)",LMLL_RxLPFGetLpfBw()); m_CFG_FileClassPtr->Write(outbuf); m_CFG_FileClassPtr->Write(newline); wxSnprintf(outbuf,_N,"%-14d // VGA1 Gain (index)",LMLL_RxFEGetRFB_TIA_RXFE()); m_CFG_FileClassPtr->Write(outbuf); m_CFG_FileClassPtr->Write(newline); wxSnprintf(outbuf,_N,"%-14d // VGA2 Gain (index)",LMLL_RxVGA2GetVga2G_u()); m_CFG_FileClassPtr->Write(outbuf); m_CFG_FileClassPtr->Write(newline); wxSnprintf(outbuf,_N,"%-14d // LNA Gain (index)",LMLL_RxFEGetG_LNA_RXFE()); m_CFG_FileClassPtr->Write(outbuf); m_CFG_FileClassPtr->Write(newline); wxSnprintf(outbuf,_N,"%-14d // Enable Averaging (0=no, 1=yes)",mSpectrum->chkAverage->GetValue()); m_CFG_FileClassPtr->Write(outbuf); m_CFG_FileClassPtr->Write(newline); wxSnprintf(outbuf,_N,"%-14d // Number of frames to average",mSpectrum->spinAvgCount->GetValue()); m_CFG_FileClassPtr->Write(outbuf); m_CFG_FileClassPtr->Write(newline); wxSnprintf(outbuf,_N,"%-14d // FFT log2(Samples/Frame) (N=2^integer; 10=1024, 11=2048, etc)",mSpectrum->spinFFTsamples->GetValue()); m_CFG_FileClassPtr->Write(outbuf); m_CFG_FileClassPtr->Write(newline); wxSnprintf(outbuf,_N,"%-14d // Sampling Frequency (MHz, integer, min=2, max=32)",mSpectrum->spinSamplingFreq->GetValue()); m_CFG_FileClassPtr->Write(outbuf); m_CFG_FileClassPtr->Write(newline); wxSnprintf(outbuf,_N,"%-14d // FFTOutput - Multiple Control (1=single 2=multiple suffixed)",g_NumbFFTFiles); m_CFG_FileClassPtr->Write(outbuf); m_CFG_FileClassPtr->Write(newline); wxSnprintf(outbuf,_N,"%-14d // FFTOutput - File Type Control (0=.csv for excel 1=General)",g_FFTFileType); m_CFG_FileClassPtr->Write(outbuf); m_CFG_FileClassPtr->Write(newline); wxSnprintf(outbuf,_N,"%-14d // FFTOutput - Time Standard Control (0=Local Time 1=UTC)",g_FFT_TimeStandard); m_CFG_FileClassPtr->Write(outbuf); m_CFG_FileClassPtr->Write(newline); wxSnprintf(outbuf,_N,"%-14d // FFTOutput - Number of Frames To Skip (integer)",g_FFTframeSkip); m_CFG_FileClassPtr->Write(outbuf); m_CFG_FileClassPtr->Write(newline); wxSnprintf(outbuf,_N,"%-14d // FFTOutput - Number of Frames to Write (integer)",g_FFTframesOut); m_CFG_FileClassPtr->Write(outbuf); m_CFG_FileClassPtr->Write(newline); wxSnprintf(outbuf,_N,"%-14d // PWROutput - Multiple Control (1=single 2=multiple suffixed)",g_NumbPWRFiles); m_CFG_FileClassPtr->Write(outbuf); m_CFG_FileClassPtr->Write(newline); wxSnprintf(outbuf,_N,"%-14d // PWROutput - File Type Control",g_PWRFileType); m_CFG_FileClassPtr->Write(outbuf); m_CFG_FileClassPtr->Write(newline); wxSnprintf(outbuf,_N,"%-14d // PWROutput - Time Standard Control (0=Local Time 1=UTC)",g_PWRTimeStandard); m_CFG_FileClassPtr->Write(outbuf); m_CFG_FileClassPtr->Write(newline); wxSnprintf(outbuf,_N,"%-14d // PWROutput - Recording Rate (seconds/sample)",g_PwrRecordRate); m_CFG_FileClassPtr->Write(outbuf); m_CFG_FileClassPtr->Write(newline); wxSnprintf(outbuf,_N,"%-14d // PWROutput - Plot Span (seconds)",g_PwrSpanSec); m_CFG_FileClassPtr->Write(outbuf); m_CFG_FileClassPtr->Write(newline); wxSnprintf(outbuf,_N,"%-14d // FFTOutput - Record Span (0=full range, 1=zoom/span)",g_FFTDataSource); m_CFG_FileClassPtr->Write(outbuf); m_CFG_FileClassPtr->Write(newline); /* m_CFG_FileClassPtr->Write(g_FFTfileName); m_CFG_FileClassPtr->Write(newline); */ wxSnprintf(outbuf,_N,"%-14d // Background Subtraction Code (bit encoded, try 71, bit0=en)",g_backgroundDebugCfg); m_CFG_FileClassPtr->Write(outbuf); m_CFG_FileClassPtr->Write(newline); wxSnprintf(outbuf,_N,"%.12f // Integration Gain",g_integrationGain); m_CFG_FileClassPtr->Write(outbuf); m_CFG_FileClassPtr->Write(newline); wxSnprintf(outbuf,_N,"%14.10f // DC Offset for I samples",(g_DcOffsetI == 0.0?g_avgI:g_DcOffsetI)); m_CFG_FileClassPtr->Write(outbuf); m_CFG_FileClassPtr->Write(newline); wxSnprintf(outbuf,_N,"%14.10f // DC Offset for Q samples",(g_DcOffsetQ == 0.0?g_avgQ:g_DcOffsetQ)); m_CFG_FileClassPtr->Write(outbuf); m_CFG_FileClassPtr->Write(newline); wxSnprintf(outbuf,_N,"%-14d // Unlimited Averaging (0=no, 1=yes)", g_UnlimitedAveraging); m_CFG_FileClassPtr->Write(outbuf); m_CFG_FileClassPtr->Write(newline); // RSS Integration wxSnprintf(outbuf,_N,"%-14s // RSS Server IP",g_RSS_IP); m_CFG_FileClassPtr->Write(outbuf); m_CFG_FileClassPtr->Write(newline); wxSnprintf(outbuf,_N,"%-14hu // RSS Server Port (default=8888)", g_RSS_Port); m_CFG_FileClassPtr->Write(outbuf); m_CFG_FileClassPtr->Write(newline); wxSnprintf(outbuf,_N,"%-14d // RSS Channels (range is 100 to 512 unless extensions enabled)", g_RSS_Channels); m_CFG_FileClassPtr->Write(outbuf); m_CFG_FileClassPtr->Write(newline); wxSnprintf(outbuf,_N,"%-14d // RSS Server Enabled (0=disabled, 1=enabled)", g_RSS_Enable?1:0); m_CFG_FileClassPtr->Write(outbuf); m_CFG_FileClassPtr->Write(newline); // RSS RASDR Extension wxSnprintf(outbuf,_N,"%14.10f // RSS Frequency Offset (GHz)",g_RSS_FrequencyOffset); m_CFG_FileClassPtr->Write(outbuf); m_CFG_FileClassPtr->Write(newline); wxSnprintf(outbuf,_N,"%-14d // RSS Extensions Enabled (0=disabled, 1=enabled)", g_RSS_Extension?1:0); m_CFG_FileClassPtr->Write(outbuf); m_CFG_FileClassPtr->Write(newline); wxSnprintf(outbuf,_N,"%14.10f // RSS Channel Offset Adjustment",g_RSS_Offset); m_CFG_FileClassPtr->Write(outbuf); m_CFG_FileClassPtr->Write(newline); wxSnprintf(outbuf,_N,"%14.10f // RSS Channel Gain Adjustment",g_RSS_Gain); m_CFG_FileClassPtr->Write(outbuf); m_CFG_FileClassPtr->Write(newline); wxSnprintf(outbuf,_N,"%14.10f // RSS Channel Bias Adjustment",g_RSS_Bias); m_CFG_FileClassPtr->Write(outbuf); m_CFG_FileClassPtr->Write(newline); wxSnprintf(outbuf,_N,"%14.9f // RSS Channel Minimum Output Value",g_RSS_MinValue); m_CFG_FileClassPtr->Write(outbuf); m_CFG_FileClassPtr->Write(newline); wxSnprintf(outbuf,_N,"%14.9f // RSS Channel Maximum Output Value",g_RSS_MaxValue); m_CFG_FileClassPtr->Write(outbuf); m_CFG_FileClassPtr->Write(newline); // m_CFG_FileClassPtr->Flush(); m_CFG_FileClassPtr->Close(); delete m_CFG_FileClassPtr; m_CFG_FileClassPtr = NULL; cout << "Configuration Saved" << endl; } return(true); }
// --------------------------------------------------------------------------- // updates GUI data values // --------------------------------------------------------------------------- bool pnlRxFE::UpdateGUI() { int itmp; bool bRez = true; // DECODE rgrDecode->SetSelection(LMLL_RxFEGetDecode()); // EN chbPwrRxFeMods->SetValue(LMLL_RxFEGetPwrRxFeMods()); // IN1SEL_MIX_RXFE cmbIN1SEL_MIX_RXFE->SetSelection(LMLL_RxFEGetIN1SEL_MIX_RXFE()); // DCOFF_I_RXFE[6:0] cmbDCOFF_I_RXFE->SetSelection(LMLL_RxFEGetDCOFF_I_RXFE()); // INLOAD_LNA_RXFE chkINLOAD_LNA_RXFE->SetValue(LMLL_RxFEGetINLOAD_LNA_RXFE()); // DCOFF_Q_RXFE[6:0] cmbDCOFF_Q_RXFE->SetSelection(LMLL_RxFEGetDCOFF_Q_RXFE()); // XLOAD_LNA_RXFE chkXLOAD_LNA_RXFE->SetValue(LMLL_RxFEGetXLOAD_LNA_RXFE()); // IP2TRIM_I_RXFE[6:0] cmbIP2TRIM_I_RXFE->SetSelection(LMLL_RxFEGetIP2TRIM_I_RXFE()); // IP2TRIM_Q_RXFE[6:0] cmbIP2TRIM_Q_RXFE->SetSelection(LMLL_RxFEGetIP2TRIM_Q_RXFE()); // G_LNA_RXFE[1:0] cmbG_LNA_RXFE->SetSelection(LMLL_RxFEGetG_LNA_RXFE()); // LNASEL_RXFE[1:0] cmbLNASEL_RXFE->SetSelection(LMLL_RxFEGetLNASEL_RXFE()); // CBE_LNA_RXFE[3:0] cmbCBE_LNA_RXFE->SetSelection(LMLL_RxFEGetCBE_LNA_RXFE()); // RFB_TIA_RXFE[6:0] cmbRFB_TIA_RXFE->SetSelection(LMLL_RxFEGetRFB_TIA_RXFE()); // CFB_TIA_RXFE[6:0] cmbCFB_TIA_RXFE->SetSelection(LMLL_RxFEGetCFB_TIA_RXFE()); // RDLEXT_LNA_RXFE[5:0] cmbRDLEXT_LNA_RXFE->SetSelection(LMLL_RxFEGetRDLEXT_LNA_RXFE()); // RDLINT_LNA_RXFE[5:0] cmbRDLINT_LNA_RXFE->SetSelection(LMLL_RxFEGetRDLINT_LNA_RXFE()); // ICT_MIX_RXFE[3:0] cmbICT_MIX_RXFE->SetSelection(LMLL_RxFEGetICT_MIX_RXFE()); // ICT_LNA_RXFE[3:0] cmbICT_LNA_RXFE->SetSelection(LMLL_RxFEGetICT_LNA_RXFE()); // ICT_TIA_RXFE[3:0] cmbICT_TIA_RXFE->SetSelection(LMLL_RxFEGetICT_TIA_RXFE()); // ICT_MXLOB_RXFE[3:0] cmbICT_MXLOB_RXFE->SetSelection(LMLL_RxFEGetICT_MXLOB_RXFE()); // LOBN_MIX_RXFE[3:0] cmbLOBN_MIX_RXFE->SetSelection(LMLL_RxFEGetLOBN_MIX_RXFE()); // RINEN_MIX_RXFE chkRINEN_MIX_RXFE->SetValue(LMLL_RxFEGetRINEN_MIX_RXFE()); // G_FINE_LNA3_RXFE[1:0] cmbG_FINE_LNA3_RXFE->SetSelection(LMLL_RxFEGetG_FINE_LNA3_RXFE()); // PD_TIA_RXFE chkPD_TIA_RXFE->SetValue(LMLL_RxFEGetPD_TIA_RXFE()); // PD_MXLOB_RXFE chkPD_MXLOB_RXFE->SetValue(LMLL_RxFEGetPD_MXLOB_RXFE()); // PD_MIX_RXFE chkPD_MIX_RXFE->SetValue(LMLL_RxFEGetPD_MIX_RXFE()); // PD_LNA_RXFE chkPD_LNA_RXFE->SetValue(LMLL_RxFEGetPD_LNA_RXFE()); SetGuiDecode(); return bRez; };