Example #1
0
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);
}
Example #2
0
// ---------------------------------------------------------------------------
// 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;
};