From 16f7f99e8bbf2b3a5e9cbaf935df8937382ab639 Mon Sep 17 00:00:00 2001 From: wittend99 Date: Sun, 17 Jun 2012 15:00:29 +0000 Subject: [PATCH] Bunches of work on portaudio, still not done. Added fdmdvBasic tor testing, it is the same as the main app without the graphic spectrum display. It may not be useful for without the waterfall display for tuning. git-svn-id: https://svn.code.sf.net/p/freetel/code@553 01035d8c-6547-0410-b346-abe4f91aad63 --- fdmdv2/Release/fdmdv2.exe | Bin 227328 -> 237056 bytes fdmdv2/fdmdv2.mk | 18 +- fdmdv2/fdmdv2.txt | 2 +- fdmdv2/fdmdv2.workspace | 7 +- fdmdv2/fdmdv2_main.cpp | 262 ++- fdmdv2/fdmdv2_main.h | 22 +- fdmdv2/fdmdv2_wsp.mk | 4 +- fdmdv2/fdmdv2basic/Release/fdmdv2basic.exe | Bin 0 -> 111104 bytes fdmdv2/fdmdv2basic/fdmdv2basic.mk | 125 ++ fdmdv2/fdmdv2basic/fdmdv2basic.project | 114 + fdmdv2/fdmdv2basic/fdmdv2basic.txt | 1 + fdmdv2/fdmdv2basic/gui.cpp | 186 ++ fdmdv2/fdmdv2basic/gui.fbp | 1977 +++++++++++++++++ fdmdv2/fdmdv2basic/gui.fbp.bak | 175 ++ fdmdv2/fdmdv2basic/gui.h | 82 + fdmdv2/fdmdv2basic/gui.py | 216 ++ fdmdv2/fdmdv2basic/main.cpp | 545 +++++ fdmdv2/fdmdv2basic/main.h | 97 + fdmdv2/fdmdv2basic/paclass.cpp | 211 ++ fdmdv2/fdmdv2basic/paclass.h | 76 + fdmdv2/hamlib-3.0/test_hamlib/test_hamlib.mk | 20 +- .../Projects/w32-mingw/test_sndfile.mk | 18 +- .../pa_cppbinding_test/pa_cppbinding_test.mk | 24 +- .../pa_cppbinding_test.project | 4 +- fdmdv2/pa_test/pa_test.mk | 20 +- fdmdv2/pa_test/pa_test.project | 4 +- 26 files changed, 4098 insertions(+), 112 deletions(-) create mode 100644 fdmdv2/fdmdv2basic/Release/fdmdv2basic.exe create mode 100644 fdmdv2/fdmdv2basic/fdmdv2basic.mk create mode 100644 fdmdv2/fdmdv2basic/fdmdv2basic.project create mode 100644 fdmdv2/fdmdv2basic/fdmdv2basic.txt create mode 100644 fdmdv2/fdmdv2basic/gui.cpp create mode 100644 fdmdv2/fdmdv2basic/gui.fbp create mode 100644 fdmdv2/fdmdv2basic/gui.fbp.bak create mode 100644 fdmdv2/fdmdv2basic/gui.h create mode 100644 fdmdv2/fdmdv2basic/gui.py create mode 100644 fdmdv2/fdmdv2basic/main.cpp create mode 100644 fdmdv2/fdmdv2basic/main.h create mode 100644 fdmdv2/fdmdv2basic/paclass.cpp create mode 100644 fdmdv2/fdmdv2basic/paclass.h diff --git a/fdmdv2/Release/fdmdv2.exe b/fdmdv2/Release/fdmdv2.exe index 5bc524810d09cb2d38b6dc6fa47f29dbb07b7d61..fab8536db7dd9bb3bb3e67f7aa1267410dd1d931 100644 GIT binary patch literal 237056 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 P-~adLztgb*{**b~vXJK_|%IiEUC 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

B;{E*HC?4--}h6^7A*r3h5Noj-Rj4f{xA4 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 diff --git a/fdmdv2/fdmdv2.mk b/fdmdv2/fdmdv2.mk index 5350737d..be632261 100644 --- a/fdmdv2/fdmdv2.mk +++ b/fdmdv2/fdmdv2.mk @@ -2,10 +2,10 @@ ## Auto Generated makefile by CodeLite IDE ## any manual changes will be erased ## -## Debug +## Release ProjectName :=fdmdv2 -ConfigurationName :=Debug -IntermediateDirectory :=./Debug +ConfigurationName :=Release +IntermediateDirectory :=./Release OutDir := $(IntermediateDirectory) WorkspacePath := "C:\Users\wittend\Projects\Radio\fdmdv2" ProjectPath := "C:\Users\wittend\Projects\Radio\fdmdv2" @@ -13,7 +13,7 @@ CurrentFileName := CurrentFilePath := CurrentFileFullPath := User :=wittend -Date :=6/15/2012 +Date :=6/17/2012 CodeLitePath :="C:\Program Files\CodeLite" LinkerName :=g++ ArchiveTool :=ar rcus @@ -38,9 +38,9 @@ PreprocessOnlySwitch :=-E ObjectsFileList :="C:\Users\wittend\Projects\Radio\fdmdv2\fdmdv2.txt" PCHCompileFlags := MakeDirCommand :=makedir -CmpOptions := -g -O0 -Wall $(shell wx-config --cxxflags --unicode=yes --debug=yes) $(Preprocessors) -C_CmpOptions := -g -O0 -Wall $(shell wx-config --cxxflags --unicode=yes --debug=yes) $(Preprocessors) -LinkOptions := -mwindows $(shell wx-config --debug=yes --libs --unicode=yes) +CmpOptions := -O2 -Wall $(shell wx-config --cxxflags --unicode=yes --debug=no) $(Preprocessors) +C_CmpOptions := -O2 -Wall $(shell wx-config --cxxflags --unicode=yes --debug=no) $(Preprocessors) +LinkOptions := -mwindows -s $(shell wx-config --debug=no --libs --unicode=yes) IncludePath := $(IncludeSwitch). $(IncludeSwitch)./extern/include IncludePCH := RcIncludePath := @@ -71,7 +71,7 @@ $(OutputFile): $(IntermediateDirectory)/.d $(Objects) $(LinkerName) $(OutputSwitch)$(OutputFile) @$(ObjectsFileList) $(LibPath) $(Libs) $(LinkOptions) $(IntermediateDirectory)/.d: - @$(MakeDirCommand) "./Debug" + @$(MakeDirCommand) "./Release" PreBuild: @@ -175,6 +175,6 @@ clean: $(RM) $(IntermediateDirectory)/paclass$(PreprocessSuffix) $(RM) $(OutputFile) $(RM) $(OutputFile).exe - $(RM) "C:\Users\wittend\Projects\Radio\fdmdv2\.build-debug\fdmdv2" + $(RM) "C:\Users\wittend\Projects\Radio\fdmdv2\.build-release\fdmdv2" diff --git a/fdmdv2/fdmdv2.txt b/fdmdv2/fdmdv2.txt index fce2d890..22a652a4 100644 --- a/fdmdv2/fdmdv2.txt +++ b/fdmdv2/fdmdv2.txt @@ -1 +1 @@ -./Debug/topFrame.o ./Debug/dlg_about.o ./Debug/dlg_audio.o ./Debug/dlg_options.o ./Debug/dlg_comports.o ./Debug/fdmdv2_plot.o ./Debug/fdmdv2_main.o ./Debug/paclass.o +./Release/topFrame.o ./Release/dlg_about.o ./Release/dlg_audio.o ./Release/dlg_options.o ./Release/dlg_comports.o ./Release/fdmdv2_plot.o ./Release/fdmdv2_main.o ./Release/paclass.o diff --git a/fdmdv2/fdmdv2.workspace b/fdmdv2/fdmdv2.workspace index 75a4c32d..15ff7af4 100644 --- a/fdmdv2/fdmdv2.workspace +++ b/fdmdv2/fdmdv2.workspace @@ -5,8 +5,9 @@ <Project Name="fdmdv2" Path="fdmdv2.project" Active="Yes"/> <Project Name="pa_test" Path="pa_test/pa_test.project" Active="No"/> <Project Name="pa_cppbinding_test" Path="pa_cppbinding_test/pa_cppbinding_test.project" Active="No"/> + <Project Name="fdmdv2basic" Path="fdmdv2basic/fdmdv2basic.project" Active="No"/> <BuildMatrix> - <WorkspaceConfiguration Name="Debug" Selected="yes"> + <WorkspaceConfiguration Name="Debug" Selected="no"> <Project Name="test_sndfile" ConfigName="Debug"/> <Project Name="test_portaudio" ConfigName="Debug"/> <Project Name="test_codec2" ConfigName="Debug"/> @@ -15,8 +16,9 @@ <Project Name="fdmdv2" ConfigName="Debug"/> <Project Name="pa_test" ConfigName="Debug"/> <Project Name="pa_cppbinding_test" ConfigName="Debug"/> + <Project Name="fdmdv2basic" ConfigName="Debug"/> </WorkspaceConfiguration> - <WorkspaceConfiguration Name="Release" Selected="no"> + <WorkspaceConfiguration Name="Release" Selected="yes"> <Project Name="test_sndfile" ConfigName="Release"/> <Project Name="test_portaudio" ConfigName="Release"/> <Project Name="test_codec2" ConfigName="Release"/> @@ -25,6 +27,7 @@ <Project Name="fdmdv2" ConfigName="Release"/> <Project Name="pa_test" ConfigName="Release"/> <Project Name="pa_cppbinding_test" ConfigName="Release"/> + <Project Name="fdmdv2basic" ConfigName="Release"/> </WorkspaceConfiguration> </BuildMatrix> </CodeLite_Workspace> diff --git a/fdmdv2/fdmdv2_main.cpp b/fdmdv2/fdmdv2_main.cpp index b707ed16..d1b10c9c 100644 --- a/fdmdv2/fdmdv2_main.cpp +++ b/fdmdv2/fdmdv2_main.cpp @@ -16,6 +16,23 @@ #define wxUSE_PCX 1 #define wxUSE_LIBTIFF 1 +static int rxCallback( + const void *inBuffer, + void *outBuffer, + unsigned long framesPerBuffer, + const PaStreamCallbackTimeInfo *outTime, + PaStreamCallbackFlags statusFlags, + void *userData + ); +static int txCallback( + const void *inBuffer, + void *outBuffer, + unsigned long framesPerBuffer, + const PaStreamCallbackTimeInfo *outTime, + PaStreamCallbackFlags statusFlags, + void *userData + ); + // initialize the application IMPLEMENT_APP(MainApp); @@ -48,7 +65,7 @@ bool MainApp::OnInit() //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-= MainFrame::MainFrame(wxWindow *parent) : TopFrame(parent) { - m_radioRunning = false; +// m_radioRunning = false; m_sound = NULL; m_zoom = 1.; m_SquelchActive = false; @@ -79,6 +96,7 @@ void MainFrame::OnCloseFrame(wxCloseEvent& event) //------------------------------------------------------------------------- void MainFrame::OnExitClick(wxCommandEvent& event) { + Pa_Terminate(); Destroy(); } @@ -204,9 +222,9 @@ void MainFrame::OnTogBtnALCClick(wxCommandEvent& event) } //------------------------------------------------------------------------- -// codec2Callback() +// rxCallback() //------------------------------------------------------------------------- -static int codec2Callback( +static int rxCallback( const void *inBuffer, void *outBuffer, unsigned long framesPerBuffer, @@ -237,9 +255,9 @@ static int codec2Callback( } //------------------------------------------------------------------------- -// audioCallback() +// txCallback() //------------------------------------------------------------------------- -static int audioCallback( const void *inBuffer, +static int txCallback( const void *inBuffer, void *outBuffer, unsigned long framesPerBuffer, const PaStreamCallbackTimeInfo *outTime, @@ -268,47 +286,26 @@ static int audioCallback( const void *inBuffer, return paContinue; // 0; } +//------------------------------------------------------------------------- +// OnTogBtnOnOff() +//------------------------------------------------------------------------- +void MainFrame::OnTogBtnOnOff(wxCommandEvent& event) +{ + if((!m_TxRunning) || (!m_RxRunning)) + { + startRxStream(); + startTxStream(); + m_togBtnOnOff->SetLabel(wxT("Stop")); + } + else + { + stopRxStream(); + stopTxStream(); + m_togBtnOnOff->SetLabel(wxT("Start")); + } +} + /* -#define FUZZ(x) CubicAmplifier(CubicAmplifier(CubicAmplifier(CubicAmplifier(x)))) -static int gNumNoInputs = 0; -//------------------------------------------------------------------------- -// fuzzCallback() -//------------------------------------------------------------------------- -static int fuzzCallback(const void *inputBuffer, - void *outputBuffer, - unsigned long framesPerBuffer, - const pa->treamCallbackTimeInfo* timeInfo, - pa->treamCallbackFlags statusFlags, - void *userData) -{ - SAMPLE *out = (SAMPLE*)outputBuffer; - const SAMPLE *in = (const SAMPLE*)inputBuffer; - unsigned int i; - (void) timeInfo; // Prevent unused variable warnings. - (void) statusFlags; - (void) userData; - - if(inputBuffer == NULL) - { - for(i = 0; i < framesPerBuffer; i++) - { - *out++ = 0; // left - silent - *out++ = 0; // right - silent - } - gNumNoInputs += 1; - } - else - { - for(i = 0; i < framesPerBuffer; i++) - { - *out++ = FUZZ(*in++); // left - distorted - *out++ = *in++; // right - clean - } - } - return pa->ontinue; -} -*/ - //------------------------------------------------------------------------- // OnTogBtnOnOff() //------------------------------------------------------------------------- @@ -348,7 +345,7 @@ void MainFrame::OnTogBtnOnOff(wxCommandEvent& event) err = pa->setFramesPerBuffer(FRAMES_PER_BUFFER); err = pa->setSampleRate(SAMPLE_RATE); err = pa->setStreamFlags(0); - err = pa->setCallback(audioCallback); + err = pa->setCallback(txCallback); err = pa->streamOpen(); if(err != paNoError) @@ -374,6 +371,173 @@ void MainFrame::OnTogBtnOnOff(wxCommandEvent& event) m_togBtnOnOff->SetLabel(wxT("Start")); } } +*/ + +//------------------------------------------------------------------------- +// startRxStream() +//------------------------------------------------------------------------- +void MainFrame::startRxStream() +{ + if(!m_RxRunning) + { + m_RxRunning = true; + m_rxPa = new PortAudioWrap(); + + m_rxDevIn = m_rxPa->getDefaultInputDevice(); // default input device + if(m_rxDevIn == paNoDevice) + { + wxMessageBox(wxT("Rx Error: No default input device."), wxT("Error"), wxOK); + return; + } + m_rxErr = m_rxPa->setInputDevice(m_rxDevIn); + m_rxErr = m_rxPa->setInputChannelCount(2); // stereo input + m_rxErr = m_rxPa->setInputSampleFormat(PA_SAMPLE_TYPE); + m_rxErr = m_rxPa->setInputLatency(m_rxPa->getInputDefaultLowLatency()); + m_rxPa->setInputHostApiStreamInfo(NULL); + + m_rxDevOut = m_rxPa->getDefaultOutputDevice(); // default output device + if (m_rxDevOut == paNoDevice) + { + wxMessageBox(wxT("Rx Error: No default output device."), wxT("Error"), wxOK); + return; + } + m_rxErr = m_rxPa->setOutputDevice(m_rxDevOut); + m_rxErr = m_rxPa->setOutputChannelCount(2); // stereo input + m_rxErr = m_rxPa->setOutputSampleFormat(PA_SAMPLE_TYPE); + + m_rxErr = m_rxPa->setOutputLatency(m_rxPa->getOutputDefaultLowLatency()); + m_rxPa->setOutputHostApiStreamInfo(NULL); + + m_rxErr = m_rxPa->setFramesPerBuffer(FRAMES_PER_BUFFER); + m_rxErr = m_rxPa->setSampleRate(SAMPLE_RATE); + m_rxErr = m_rxPa->setStreamFlags(0); + m_rxErr = m_rxPa->setCallback(rxCallback); + m_rxErr = m_rxPa->streamOpen(); + + if(m_rxErr != paNoError) + { + wxMessageBox(wxT("Rx Stream Open/Setup error."), wxT("Error"), wxOK); + return; + } + m_rxErr = m_rxPa->streamStart(); + if(m_rxErr != paNoError) + { + wxMessageBox(wxT("Rx Stream Start Error."), wxT("Error"), wxOK); + return; + } +// OnTogBtnOnOff->SetLabel(wxT("Stop")); + } +} + +//------------------------------------------------------------------------- +// stopRxStream() +//------------------------------------------------------------------------- +void MainFrame::stopRxStream() +{ + if(m_RxRunning) + { + m_RxRunning = false; + m_rxPa->stop(); + m_rxPa->streamClose(); +// OnTogBtnOnOff->SetLabel(wxT("Start")); + } +} + +//------------------------------------------------------------------------- +// abortRxStream() +//------------------------------------------------------------------------- +void MainFrame::abortRxStream() +{ + if(m_RxRunning) + { + m_RxRunning = false; + m_rxPa->abort(); +// OnTogBtnOnOff->SetLabel(wxT("Start")); + } +} + +//------------------------------------------------------------------------- +// startTxStream() +//------------------------------------------------------------------------- +void MainFrame::startTxStream() +{ + if(!m_TxRunning) + { + m_TxRunning = true; + m_txPa = new PortAudioWrap(); + + m_txDevIn = m_txPa->getDefaultInputDevice(); // default input device + if(m_txDevIn == paNoDevice) + { + wxMessageBox(wxT("Tx Error: No default input device."), wxT("Error"), wxOK); + return; + } + m_txErr = m_txPa->setInputDevice(m_txDevIn); + m_txErr = m_txPa->setInputChannelCount(2); // stereo input + m_txErr = m_txPa->setInputSampleFormat(PA_SAMPLE_TYPE); + m_txErr = m_txPa->setInputLatency(m_txPa->getInputDefaultLowLatency()); + m_txPa->setInputHostApiStreamInfo(NULL); + + m_txDevOut = m_txPa->getDefaultOutputDevice(); // default output device + if (m_txDevOut == paNoDevice) + { + wxMessageBox(wxT("Tx Error: No default output device."), wxT("Error"), wxOK); + return; + } + m_txErr = m_txPa->setOutputDevice(m_txDevOut); + m_txErr = m_txPa->setOutputChannelCount(2); // stereo input + m_txErr = m_txPa->setOutputSampleFormat(PA_SAMPLE_TYPE); + + m_txErr = m_txPa->setOutputLatency(m_txPa->getOutputDefaultLowLatency()); + m_txPa->setOutputHostApiStreamInfo(NULL); + + m_txErr = m_txPa->setFramesPerBuffer(FRAMES_PER_BUFFER); + m_txErr = m_txPa->setSampleRate(SAMPLE_RATE); + m_txErr = m_txPa->setStreamFlags(0); + m_txErr = m_txPa->setCallback(txCallback); + m_txErr = m_txPa->streamOpen(); + + if(m_txErr != paNoError) + { + wxMessageBox(wxT("Tx Stream Open/Setup error."), wxT("Error"), wxOK); + return; + } + m_txErr = m_txPa->streamStart(); + if(m_txErr != paNoError) + { + wxMessageBox(wxT("Tx Stream Start Error."), wxT("Error"), wxOK); + return; + } +// OnTogBtnOnOff->SetLabel(wxT("Stop")); + } +} + +//------------------------------------------------------------------------- +// stopTxStream() +//------------------------------------------------------------------------- +void MainFrame::stopTxStream() +{ + if(m_TxRunning) + { + m_TxRunning = false; + m_txPa->stop(); + m_txPa->streamClose(); +// OnTogBtnOnOff->SetLabel(wxT("Start")); + } +} + +//------------------------------------------------------------------------- +// abortTxStream() +//------------------------------------------------------------------------- +void MainFrame::abortTxStream() +{ + if(m_TxRunning) + { + m_TxRunning = false; + m_txPa->abort(); +// OnTogBtnOnOff->SetLabel(wxT("Start")); + } +} //------------------------------------------------------------------------- // OnOpen() @@ -559,7 +723,7 @@ void MainFrame::OnToolsComCfg( wxCommandEvent& event ) //------------------------------------------------------------------------- void MainFrame::OnToolsComCfgUI( wxUpdateUIEvent& event ) { - event.Enable(!m_radioRunning); + event.Enable((!m_TxRunning) && (!m_RxRunning)); } //------------------------------------------------------------------------- @@ -612,7 +776,7 @@ wxString MainFrame::LoadUserImage(wxImage& image) //------------------------------------------------------------------------- void MainFrame::OnSave(wxCommandEvent& WXUNUSED(event)) { - wxImage image = m_bitmap.ConvertToImage(); + // wxImage image = m_bitmap.ConvertToImage(); wxString savefilename = wxFileSelector(wxT("Save Sound File"), wxEmptyString, @@ -632,6 +796,7 @@ void MainFrame::OnSave(wxCommandEvent& WXUNUSED(event)) wxString extension; wxFileName::SplitPath(savefilename, NULL, NULL, &extension); bool saved = false; +/* if(extension == wxT("bmp")) { static const int bppvalues[] = @@ -760,6 +925,7 @@ void MainFrame::OnSave(wxCommandEvent& WXUNUSED(event)) // specified image format: saved = image.SaveFile(savefilename, wxBITMAP_TYPE_CUR); } +*/ if(!saved) { // This one guesses image format from filename extension diff --git a/fdmdv2/fdmdv2_main.h b/fdmdv2/fdmdv2_main.h index edcf8c52..74df88a4 100644 --- a/fdmdv2/fdmdv2_main.h +++ b/fdmdv2/fdmdv2_main.h @@ -81,14 +81,20 @@ class MainFrame : public TopFrame DrawPanel* m_panelWaterfall; DrawPanel* m_panelExtra1; DrawPanel* m_panelExtra2; - bool m_radioRunning; +// bool m_radioRunning; bool m_SquelchActive; + bool m_RxRunning; + bool m_TxRunning; CODEC2 *m_RXCodec2; CODEC2 *m_TXCodec2; - PortAudioWrap *pa; - PaError err; - PaDeviceIndex inputDevice; - PaDeviceIndex outputDevice; + PortAudioWrap *m_rxPa; + PortAudioWrap *m_txPa; + PaDeviceIndex m_rxDevIn; + PaDeviceIndex m_rxDevOut; + PaDeviceIndex m_txDevIn; + PaDeviceIndex m_txDevOut; + PaError m_rxErr; + PaError m_txErr; // PortAudioWrap stream; // portaudio::AutoSystem autoSys; @@ -110,6 +116,12 @@ class MainFrame : public TopFrame virtual void OnCloseFrame(wxCloseEvent& event); virtual void OnExitClick(wxCommandEvent& event); + void startTxStream(); + void startRxStream(); + void stopTxStream(); + void stopRxStream(); + void abortTxStream(); + void abortRxStream(); void OnOpen( wxCommandEvent& event ); void OnOpenUpdateUI( wxUpdateUIEvent& event ); void OnSave( wxCommandEvent& event ); diff --git a/fdmdv2/fdmdv2_wsp.mk b/fdmdv2/fdmdv2_wsp.mk index dd8060fa..359a9f63 100644 --- a/fdmdv2/fdmdv2_wsp.mk +++ b/fdmdv2/fdmdv2_wsp.mk @@ -1,8 +1,8 @@ .PHONY: clean All All: - @echo ----------Building project:[ fdmdv2 - Debug ]---------- + @echo ----------Building project:[ fdmdv2 - Release ]---------- @"mingw32-make.exe" -j 2 -f "fdmdv2.mk" clean: - @echo ----------Cleaning project:[ fdmdv2 - Debug ]---------- + @echo ----------Cleaning project:[ fdmdv2 - Release ]---------- @"mingw32-make.exe" -j 2 -f "fdmdv2.mk" clean diff --git a/fdmdv2/fdmdv2basic/Release/fdmdv2basic.exe b/fdmdv2/fdmdv2basic/Release/fdmdv2basic.exe new file mode 100644 index 0000000000000000000000000000000000000000..e9084f667871491097335d8cf8821c40a60a260c GIT binary patch literal 111104 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%0A7aWaIQ?QF{K^fmn-A3 z&blvGCa)r`^1VM-PV%nTfAKJXgv4^?Wz#1qe=9&fU9_*kaW_4~V}nM2w64^38J@j| z!QUabc<w86>P;4pIo`VQAnRRHQE$)ioi)AiPiOenWjr~p6aKey_%iy1|I(DsZ{Ft7 z8!~+N<zT*<wD>px*`Kq7MzkLJ&`W>dW?$@+H15uX*{gJ`=SbMJ6~<)W+0t&!nwh|3 zqgtnzU#zD0NSIuFAw}G_gt#$MmGb>PdY`;k!cnUOsc-!*MoMq*sEW+HzKWurV!vC5 z?dk^m-Kt)7ll^YZzv|icyUFb>`kkzrJ}YHgw~sswMc3B_O1UM>I{hBIwYT#9I8GS4 zR>QNdzQ)ov_g3MV9%b`tH81m56;vbd#xB?nxoUEFQaj4$yk|aNll*TMzWzMd*3LNr zJl}0Sf#!~`ZeL(W`_`7O9U}Y3HovR0vys!|rtLjFU0V@rZ{Ff-;cqMCgg19}Hgz?1 z^#;0q9lqus5mDET8Qn%lPuJ$n9ll&m{6FE1T>IAco<K``V@KC!^@!nZ_qR0m_yXJ8 z(f6qE<PV#e73hZ7vEyLf>9zhy4>B)@XZ2Xdt5Zz1CBv5y<OFnN_|n52zWyHtOz<~H zi$o;cpZNn^x7NO3Fv5oT3gZ5@aO)k2$8W8+RIAnKek|DH+qTu$vDV~JsZHqlZ84l2 z9Z00CjQP=LgS_t^7ziW-gL`Ukt+B!f34gqR{$y%!;Feo%U9Xj=(R~$H>)>i1xY`G< z_JON?;D1sd*pnVk?y22aHxiI3lkY)Ov0*dS<JCOAzkP3SP;KDq@Bdy6JiVextpuyb R8u>f7P5<{Q;Qx4u|36lrYdHV_ literal 0 HcmV?d00001 diff --git a/fdmdv2/fdmdv2basic/fdmdv2basic.mk b/fdmdv2/fdmdv2basic/fdmdv2basic.mk new file mode 100644 index 00000000..14994a7d --- /dev/null +++ b/fdmdv2/fdmdv2basic/fdmdv2basic.mk @@ -0,0 +1,125 @@ +## +## Auto Generated makefile by CodeLite IDE +## any manual changes will be erased +## +## Release +ProjectName :=fdmdv2basic +ConfigurationName :=Release +IntermediateDirectory :=./Release +OutDir := $(IntermediateDirectory) +WorkspacePath := "C:\Users\wittend\Projects\Radio\fdmdv2" +ProjectPath := "C:\Users\wittend\Projects\Radio\fdmdv2\fdmdv2basic" +CurrentFileName := +CurrentFilePath := +CurrentFileFullPath := +User :=wittend +Date :=6/16/2012 +CodeLitePath :="C:\Program Files\CodeLite" +LinkerName :=g++ +ArchiveTool :=ar rcus +SharedObjectLinkerName :=g++ -shared -fPIC +ObjectSuffix :=.o +DependSuffix :=.o.d +PreprocessSuffix :=.o.i +DebugSwitch :=-gstab +IncludeSwitch :=-I +LibrarySwitch :=-l +OutputSwitch :=-o +LibraryPathSwitch :=-L +PreprocessorSwitch :=-D +SourceSwitch :=-c +CompilerName :=g++ +C_CompilerName :=gcc +OutputFile :=$(IntermediateDirectory)/$(ProjectName) +Preprocessors :=$(PreprocessorSwitch)__WX__ +ObjectSwitch :=-o +ArchiveOutputSwitch := +PreprocessOnlySwitch :=-E +ObjectsFileList :="C:\Users\wittend\Projects\Radio\fdmdv2\fdmdv2basic\fdmdv2basic.txt" +PCHCompileFlags := +MakeDirCommand :=makedir +CmpOptions := -O2 -Wall $(shell wx-config --cxxflags --unicode=yes --debug=no) $(Preprocessors) +C_CmpOptions := -O2 -Wall $(shell wx-config --cxxflags --unicode=yes --debug=no) $(Preprocessors) +LinkOptions := -mwindows -s $(shell wx-config --debug=no --libs --unicode=yes) +IncludePath := $(IncludeSwitch). $(IncludeSwitch)./../extern/include +IncludePCH := +RcIncludePath := +Libs := $(LibrarySwitch)sndfile-1 $(LibrarySwitch)codec2 $(LibrarySwitch)portaudio $(LibrarySwitch)portaudiocpp +LibPath := $(LibraryPathSwitch). $(LibraryPathSwitch)./../libsndfile/bin $(LibraryPathSwitch)./../extern/lib + + +## +## User defined environment variables +## +CodeLiteDir:=C:\Program Files\CodeLite +WXWIN:=C:\bin\wxWidgets-2.9.4 +PATH:=$(WXWIN)\lib\gcc_dll;$(PATH) +WXCFG:=gcc_dll\mswu +UNIT_TEST_PP_SRC_DIR:=C:\bin\UnitTest++-1.3 +Objects=$(IntermediateDirectory)/gui$(ObjectSuffix) $(IntermediateDirectory)/main$(ObjectSuffix) $(IntermediateDirectory)/paclass$(ObjectSuffix) + +## +## Main Build Targets +## +.PHONY: all clean PreBuild PrePreBuild PostBuild +all: $(OutputFile) + +$(OutputFile): $(IntermediateDirectory)/.d $(Objects) + @$(MakeDirCommand) $(@D) + @echo "" > $(IntermediateDirectory)/.d + @echo $(Objects) > $(ObjectsFileList) + $(LinkerName) $(OutputSwitch)$(OutputFile) @$(ObjectsFileList) $(LibPath) $(Libs) $(LinkOptions) + +$(IntermediateDirectory)/.d: + @$(MakeDirCommand) "./Release" + +PreBuild: + + +## +## Objects +## +$(IntermediateDirectory)/gui$(ObjectSuffix): gui.cpp $(IntermediateDirectory)/gui$(DependSuffix) + $(CompilerName) $(IncludePCH) $(SourceSwitch) "C:/Users/wittend/Projects/Radio/fdmdv2/fdmdv2basic/gui.cpp" $(CmpOptions) $(ObjectSwitch)$(IntermediateDirectory)/gui$(ObjectSuffix) $(IncludePath) +$(IntermediateDirectory)/gui$(DependSuffix): gui.cpp + @$(CompilerName) $(CmpOptions) $(IncludePCH) $(IncludePath) -MG -MP -MT$(IntermediateDirectory)/gui$(ObjectSuffix) -MF$(IntermediateDirectory)/gui$(DependSuffix) -MM "C:/Users/wittend/Projects/Radio/fdmdv2/fdmdv2basic/gui.cpp" + +$(IntermediateDirectory)/gui$(PreprocessSuffix): gui.cpp + @$(CompilerName) $(CmpOptions) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/gui$(PreprocessSuffix) "C:/Users/wittend/Projects/Radio/fdmdv2/fdmdv2basic/gui.cpp" + +$(IntermediateDirectory)/main$(ObjectSuffix): main.cpp $(IntermediateDirectory)/main$(DependSuffix) + $(CompilerName) $(IncludePCH) $(SourceSwitch) "C:/Users/wittend/Projects/Radio/fdmdv2/fdmdv2basic/main.cpp" $(CmpOptions) $(ObjectSwitch)$(IntermediateDirectory)/main$(ObjectSuffix) $(IncludePath) +$(IntermediateDirectory)/main$(DependSuffix): main.cpp + @$(CompilerName) $(CmpOptions) $(IncludePCH) $(IncludePath) -MG -MP -MT$(IntermediateDirectory)/main$(ObjectSuffix) -MF$(IntermediateDirectory)/main$(DependSuffix) -MM "C:/Users/wittend/Projects/Radio/fdmdv2/fdmdv2basic/main.cpp" + +$(IntermediateDirectory)/main$(PreprocessSuffix): main.cpp + @$(CompilerName) $(CmpOptions) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/main$(PreprocessSuffix) "C:/Users/wittend/Projects/Radio/fdmdv2/fdmdv2basic/main.cpp" + +$(IntermediateDirectory)/paclass$(ObjectSuffix): paclass.cpp $(IntermediateDirectory)/paclass$(DependSuffix) + $(CompilerName) $(IncludePCH) $(SourceSwitch) "C:/Users/wittend/Projects/Radio/fdmdv2/fdmdv2basic/paclass.cpp" $(CmpOptions) $(ObjectSwitch)$(IntermediateDirectory)/paclass$(ObjectSuffix) $(IncludePath) +$(IntermediateDirectory)/paclass$(DependSuffix): paclass.cpp + @$(CompilerName) $(CmpOptions) $(IncludePCH) $(IncludePath) -MG -MP -MT$(IntermediateDirectory)/paclass$(ObjectSuffix) -MF$(IntermediateDirectory)/paclass$(DependSuffix) -MM "C:/Users/wittend/Projects/Radio/fdmdv2/fdmdv2basic/paclass.cpp" + +$(IntermediateDirectory)/paclass$(PreprocessSuffix): paclass.cpp + @$(CompilerName) $(CmpOptions) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/paclass$(PreprocessSuffix) "C:/Users/wittend/Projects/Radio/fdmdv2/fdmdv2basic/paclass.cpp" + + +-include $(IntermediateDirectory)/*$(DependSuffix) +## +## Clean +## +clean: + $(RM) $(IntermediateDirectory)/gui$(ObjectSuffix) + $(RM) $(IntermediateDirectory)/gui$(DependSuffix) + $(RM) $(IntermediateDirectory)/gui$(PreprocessSuffix) + $(RM) $(IntermediateDirectory)/main$(ObjectSuffix) + $(RM) $(IntermediateDirectory)/main$(DependSuffix) + $(RM) $(IntermediateDirectory)/main$(PreprocessSuffix) + $(RM) $(IntermediateDirectory)/paclass$(ObjectSuffix) + $(RM) $(IntermediateDirectory)/paclass$(DependSuffix) + $(RM) $(IntermediateDirectory)/paclass$(PreprocessSuffix) + $(RM) $(OutputFile) + $(RM) $(OutputFile).exe + $(RM) "C:\Users\wittend\Projects\Radio\fdmdv2\.build-release\fdmdv2basic" + + diff --git a/fdmdv2/fdmdv2basic/fdmdv2basic.project b/fdmdv2/fdmdv2basic/fdmdv2basic.project new file mode 100644 index 00000000..13f6c19b --- /dev/null +++ b/fdmdv2/fdmdv2basic/fdmdv2basic.project @@ -0,0 +1,114 @@ +<?xml version="1.0" encoding="UTF-8"?> +<CodeLite_Project Name="fdmdv2basic" InternalType="GUI"> + <Plugins> + <Plugin Name="qmake"> + <![CDATA[00010001N0007Release000000000000]]> + </Plugin> + </Plugins> + <Description/> + <Dependencies/> + <VirtualDirectory Name="src"> + <File Name="gui.cpp"/> + <File Name="main.cpp"/> + <File Name="paclass.cpp"/> + </VirtualDirectory> + <VirtualDirectory Name="include"> + <File Name="gui.h"/> + <File Name="main.h"/> + <File Name="paclass.h"/> + </VirtualDirectory> + <VirtualDirectory Name="resources"> + <File Name="gui.fbp"/> + </VirtualDirectory> + <Settings Type="Executable"> + <GlobalSettings> + <Compiler Options="" C_Options=""> + <IncludePath Value="."/> + </Compiler> + <Linker Options=""> + <LibraryPath Value="."/> + </Linker> + <ResourceCompiler Options=""/> + </GlobalSettings> + <Configuration Name="Debug" CompilerType="gnu g++" DebuggerType="GNU gdb debugger" Type="Executable" BuildCmpWithGlobalSettings="append" BuildLnkWithGlobalSettings="append" BuildResWithGlobalSettings="append"> + <Compiler Options="-g;-O0;-Wall;$(shell wx-config --cxxflags --unicode=yes --debug=yes)" C_Options="-g;-O0;-Wall;$(shell wx-config --cxxflags --unicode=yes --debug=yes)" Required="yes" PreCompiledHeader="" PCHInCommandLine="no" UseDifferentPCHFlags="no" PCHFlags=""> + <Preprocessor Value="__WX__"/> + </Compiler> + <Linker Options="-mwindows;$(shell wx-config --debug=yes --libs --unicode=yes)" Required="yes"/> + <ResourceCompiler Options="$(shell wx-config --rcflags)" Required="no"/> + <General OutputFile="$(IntermediateDirectory)/$(ProjectName)" IntermediateDirectory="./Debug" Command="./$(ProjectName)" CommandArguments="" UseSeparateDebugArgs="no" DebugArguments="" WorkingDirectory="$(IntermediateDirectory)" PauseExecWhenProcTerminates="yes"/> + <Environment EnvVarSetName="&lt;Use Defaults&gt;" DbgSetName="&lt;Use Defaults&gt;"> + <![CDATA[]]> + </Environment> + <Debugger IsRemote="no" RemoteHostName="" RemoteHostPort="" DebuggerPath=""> + <PostConnectCommands/> + <StartupCommands/> + </Debugger> + <PreBuild/> + <PostBuild/> + <CustomBuild Enabled="no"> + <RebuildCommand/> + <CleanCommand/> + <BuildCommand/> + <PreprocessFileCommand/> + <SingleFileCommand/> + <MakefileGenerationCommand/> + <ThirdPartyToolName>None</ThirdPartyToolName> + <WorkingDirectory/> + </CustomBuild> + <AdditionalRules> + <CustomPostBuild/> + <CustomPreBuild/> + </AdditionalRules> + <Completion EnableCpp11="no"> + <ClangCmpFlags/> + <ClangPP/> + <SearchPaths/> + </Completion> + </Configuration> + <Configuration Name="Release" CompilerType="gnu g++" DebuggerType="GNU gdb debugger" Type="Executable" BuildCmpWithGlobalSettings="append" BuildLnkWithGlobalSettings="append" BuildResWithGlobalSettings="append"> + <Compiler Options="-O2;-Wall;$(shell wx-config --cxxflags --unicode=yes --debug=no)" C_Options="-O2;-Wall;$(shell wx-config --cxxflags --unicode=yes --debug=no)" Required="yes" PreCompiledHeader="" PCHInCommandLine="no" UseDifferentPCHFlags="no" PCHFlags=""> + <IncludePath Value="./../extern/include"/> + <Preprocessor Value="__WX__"/> + </Compiler> + <Linker Options="-mwindows;-s;$(shell wx-config --debug=no --libs --unicode=yes)" Required="yes"> + <LibraryPath Value="./../libsndfile/bin"/> + <LibraryPath Value="./../extern/lib"/> + <Library Value="libsndfile-1.dll"/> + <Library Value="libcodec2.a"/> + <Library Value="libportaudio.a"/> + <Library Value="libportaudiocpp.a"/> + </Linker> + <ResourceCompiler Options="$(shell wx-config --rcflags)" Required="no"/> + <General OutputFile="$(IntermediateDirectory)/$(ProjectName)" IntermediateDirectory="./Release" Command="./$(ProjectName)" CommandArguments="" UseSeparateDebugArgs="no" DebugArguments="" WorkingDirectory="$(IntermediateDirectory)" PauseExecWhenProcTerminates="yes"/> + <Environment EnvVarSetName="&lt;Use Defaults&gt;" DbgSetName="&lt;Use Defaults&gt;"> + <![CDATA[]]> + </Environment> + <Debugger IsRemote="no" RemoteHostName="" RemoteHostPort="" DebuggerPath=""> + <PostConnectCommands/> + <StartupCommands/> + </Debugger> + <PreBuild/> + <PostBuild/> + <CustomBuild Enabled="no"> + <RebuildCommand/> + <CleanCommand/> + <BuildCommand/> + <PreprocessFileCommand/> + <SingleFileCommand/> + <MakefileGenerationCommand/> + <ThirdPartyToolName>None</ThirdPartyToolName> + <WorkingDirectory/> + </CustomBuild> + <AdditionalRules> + <CustomPostBuild/> + <CustomPreBuild/> + </AdditionalRules> + <Completion EnableCpp11="no"> + <ClangCmpFlags/> + <ClangPP/> + <SearchPaths/> + </Completion> + </Configuration> + </Settings> +</CodeLite_Project> diff --git a/fdmdv2/fdmdv2basic/fdmdv2basic.txt b/fdmdv2/fdmdv2basic/fdmdv2basic.txt new file mode 100644 index 00000000..04bdf84a --- /dev/null +++ b/fdmdv2/fdmdv2basic/fdmdv2basic.txt @@ -0,0 +1 @@ +./Release/gui.o ./Release/main.o ./Release/paclass.o diff --git a/fdmdv2/fdmdv2basic/gui.cpp b/fdmdv2/fdmdv2basic/gui.cpp new file mode 100644 index 00000000..a6a6cf71 --- /dev/null +++ b/fdmdv2/fdmdv2basic/gui.cpp @@ -0,0 +1,186 @@ +/////////////////////////////////////////////////////////////////////////// +// C++ code generated with wxFormBuilder (version Mar 17 2012) +// http://www.wxformbuilder.org/ +// +// PLEASE DO "NOT" EDIT THIS FILE! +/////////////////////////////////////////////////////////////////////////// + +#include "gui.h" + +/////////////////////////////////////////////////////////////////////////// + +MainDialogBase::MainDialogBase( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) : wxDialog( parent, id, title, pos, size, style ) +{ + this->SetSizeHints( wxSize( -1,-1 ), wxDefaultSize ); + + wxBoxSizer* mainSizer; + mainSizer = new wxBoxSizer( wxVERTICAL ); + + wxBoxSizer* bSizer2; + bSizer2 = new wxBoxSizer( wxHORIZONTAL ); + + wxStaticBoxSizer* sbSizer1; + sbSizer1 = new wxStaticBoxSizer( new wxStaticBox( this, wxID_ANY, _("Settings") ), wxVERTICAL ); + + wxGridSizer* gSizer4; + gSizer4 = new wxGridSizer( 3, 1, 0, 0 ); + + wxStaticBoxSizer* sbSizer3; + sbSizer3 = new wxStaticBoxSizer( new wxStaticBox( this, wxID_ANY, _("Audio") ), wxVERTICAL ); + + wxGridSizer* gSizer1; + gSizer1 = new wxGridSizer( 4, 2, 0, 0 ); + + m_staticText1 = new wxStaticText( this, wxID_ANY, _("Rx In (radio):"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticText1->Wrap( -1 ); + gSizer1->Add( m_staticText1, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL, 5 ); + + m_comboRxIn = new wxComboBox( this, wxID_ANY, _("<default>"), wxDefaultPosition, wxDefaultSize, 0, NULL, 0 ); + gSizer1->Add( m_comboRxIn, 1, wxALIGN_CENTER_VERTICAL|wxALL|wxEXPAND, 2 ); + + m_staticText2 = new wxStaticText( this, wxID_ANY, _("Rx Out (spkr):"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticText2->Wrap( -1 ); + gSizer1->Add( m_staticText2, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL, 5 ); + + m_comboRxOut = new wxComboBox( this, wxID_ANY, _("<default>"), wxDefaultPosition, wxDefaultSize, 0, NULL, 0 ); + gSizer1->Add( m_comboRxOut, 1, wxALIGN_CENTER_VERTICAL|wxALL|wxEXPAND, 2 ); + + m_staticText3 = new wxStaticText( this, wxID_ANY, _("Tx In (mic):"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticText3->Wrap( -1 ); + gSizer1->Add( m_staticText3, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL, 5 ); + + m_comboTxIn = new wxComboBox( this, wxID_ANY, _("<default>"), wxDefaultPosition, wxDefaultSize, 0, NULL, 0 ); + gSizer1->Add( m_comboTxIn, 1, wxALIGN_CENTER_VERTICAL|wxALL|wxEXPAND, 2 ); + + m_staticText4 = new wxStaticText( this, wxID_ANY, _("Tx Out (radio):"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticText4->Wrap( -1 ); + gSizer1->Add( m_staticText4, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL, 5 ); + + m_comboTxOut = new wxComboBox( this, wxID_ANY, _("<default>"), wxDefaultPosition, wxDefaultSize, 0, NULL, 0 ); + gSizer1->Add( m_comboTxOut, 1, wxALIGN_CENTER_VERTICAL|wxALL|wxEXPAND, 2 ); + + + sbSizer3->Add( gSizer1, 0, wxALIGN_CENTER_HORIZONTAL|wxEXPAND|wxFIXED_MINSIZE, 2 ); + + + gSizer4->Add( sbSizer3, 1, wxALIGN_CENTER|wxALIGN_CENTER_HORIZONTAL|wxEXPAND|wxFIXED_MINSIZE, 5 ); + + wxStaticBoxSizer* sbSizer4; + sbSizer4 = new wxStaticBoxSizer( new wxStaticBox( this, wxID_ANY, _("label") ), wxVERTICAL ); + + wxGridSizer* gSizer111; + gSizer111 = new wxGridSizer( 2, 2, 0, 0 ); + + m_staticText111 = new wxStaticText( this, wxID_ANY, _("Rate:"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticText111->Wrap( -1 ); + gSizer111->Add( m_staticText111, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL, 5 ); + + m_comboBox111 = new wxComboBox( this, wxID_ANY, _("Combo!"), wxDefaultPosition, wxDefaultSize, 0, NULL, 0 ); + gSizer111->Add( m_comboBox111, 1, wxALIGN_CENTER_VERTICAL|wxALL|wxEXPAND, 2 ); + + m_staticText211 = new wxStaticText( this, wxID_ANY, _("MyLabel"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticText211->Wrap( -1 ); + gSizer111->Add( m_staticText211, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL, 5 ); + + m_comboBox211 = new wxComboBox( this, wxID_ANY, _("Combo!"), wxDefaultPosition, wxDefaultSize, 0, NULL, 0 ); + gSizer111->Add( m_comboBox211, 1, wxALIGN_CENTER_VERTICAL|wxALL|wxEXPAND, 2 ); + + + sbSizer4->Add( gSizer111, 0, wxALIGN_CENTER|wxEXPAND|wxFIXED_MINSIZE, 2 ); + + + gSizer4->Add( sbSizer4, 1, wxEXPAND|wxFIXED_MINSIZE, 5 ); + + wxStaticBoxSizer* sbSizer5; + sbSizer5 = new wxStaticBoxSizer( new wxStaticBox( this, wxID_ANY, _("Comm Port") ), wxVERTICAL ); + + wxGridSizer* gSizer11; + gSizer11 = new wxGridSizer( 2, 2, 0, 0 ); + + m_staticText11 = new wxStaticText( this, wxID_ANY, _("Radio:"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticText11->Wrap( -1 ); + gSizer11->Add( m_staticText11, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL, 5 ); + + m_comboBox11 = new wxComboBox( this, wxID_ANY, _("Combo!"), wxDefaultPosition, wxDefaultSize, 0, NULL, 0 ); + gSizer11->Add( m_comboBox11, 1, wxALIGN_CENTER_VERTICAL|wxALL|wxEXPAND, 2 ); + + m_staticText21 = new wxStaticText( this, wxID_ANY, _("Port:"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticText21->Wrap( -1 ); + gSizer11->Add( m_staticText21, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL, 5 ); + + m_comboBox21 = new wxComboBox( this, wxID_ANY, _("Combo!"), wxDefaultPosition, wxDefaultSize, 0, NULL, 0 ); + gSizer11->Add( m_comboBox21, 1, wxALIGN_CENTER_VERTICAL|wxALL|wxEXPAND, 2 ); + + + sbSizer5->Add( gSizer11, 0, wxALIGN_CENTER|wxEXPAND|wxFIXED_MINSIZE, 2 ); + + + gSizer4->Add( sbSizer5, 1, wxALIGN_CENTER_HORIZONTAL|wxEXPAND, 5 ); + + + sbSizer1->Add( gSizer4, 1, wxEXPAND, 5 ); + + + bSizer2->Add( sbSizer1, 1, wxEXPAND, 5 ); + + wxStaticBoxSizer* sbSizer2; + sbSizer2 = new wxStaticBoxSizer( new wxStaticBox( this, wxID_ANY, _("Operation") ), wxVERTICAL ); + + m_toggleStartStop = new wxToggleButton( this, wxID_ANY, _("Start"), wxDefaultPosition, wxDefaultSize, 0 ); + sbSizer2->Add( m_toggleStartStop, 1, wxALIGN_CENTER_HORIZONTAL|wxALL|wxEXPAND, 5 ); + + m_toggleRxTx = new wxToggleButton( this, wxID_ANY, _("Tx"), wxDefaultPosition, wxDefaultSize, 0 ); + sbSizer2->Add( m_toggleRxTx, 2, wxALIGN_CENTER_HORIZONTAL|wxALL|wxEXPAND, 5 ); + + + bSizer2->Add( sbSizer2, 0, wxEXPAND, 5 ); + + + mainSizer->Add( bSizer2, 1, wxEXPAND, 5 ); + + m_staticLine = new wxStaticLine( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL ); + mainSizer->Add( m_staticLine, 0, wxEXPAND | wxALL, 5 ); + + m_sdbSizer = new wxStdDialogButtonSizer(); + m_sdbSizerCancel = new wxButton( this, wxID_CANCEL ); + m_sdbSizer->AddButton( m_sdbSizerCancel ); + m_sdbSizer->Realize(); + + mainSizer->Add( m_sdbSizer, 0, wxALIGN_RIGHT|wxBOTTOM|wxRIGHT, 5 ); + + + this->SetSizer( mainSizer ); + this->Layout(); + + this->Centre( wxBOTH ); + + // Connect Events + this->Connect( wxEVT_CLOSE_WINDOW, wxCloseEventHandler( MainDialogBase::OnCloseDialog ) ); + this->Connect( wxEVT_INIT_DIALOG, wxInitDialogEventHandler( MainDialogBase::OnInitDialog ) ); + m_comboRxIn->Connect( wxEVT_COMMAND_COMBOBOX_SELECTED, wxCommandEventHandler( MainDialogBase::OnRxInSelect ), NULL, this ); + m_comboRxOut->Connect( wxEVT_COMMAND_COMBOBOX_SELECTED, wxCommandEventHandler( MainDialogBase::OnRxOutSelect ), NULL, this ); + m_comboTxIn->Connect( wxEVT_COMMAND_COMBOBOX_SELECTED, wxCommandEventHandler( MainDialogBase::OnTxInSelect ), NULL, this ); + m_comboTxOut->Connect( wxEVT_COMMAND_COMBOBOX_SELECTED, wxCommandEventHandler( MainDialogBase::OnTxOutSelect ), NULL, this ); + m_comboBox11->Connect( wxEVT_COMMAND_COMBOBOX_SELECTED, wxCommandEventHandler( MainDialogBase::OnRadioSelect ), NULL, this ); + m_comboBox21->Connect( wxEVT_COMMAND_COMBOBOX_SELECTED, wxCommandEventHandler( MainDialogBase::OnPortSelect ), NULL, this ); + m_toggleStartStop->Connect( wxEVT_COMMAND_TOGGLEBUTTON_CLICKED, wxCommandEventHandler( MainDialogBase::OnToggleStartStop ), NULL, this ); + m_toggleRxTx->Connect( wxEVT_COMMAND_TOGGLEBUTTON_CLICKED, wxCommandEventHandler( MainDialogBase::OnToggleRxRx ), NULL, this ); + m_sdbSizerCancel->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( MainDialogBase::OnCancelClick ), NULL, this ); +} + +MainDialogBase::~MainDialogBase() +{ + // Disconnect Events + this->Disconnect( wxEVT_CLOSE_WINDOW, wxCloseEventHandler( MainDialogBase::OnCloseDialog ) ); + this->Disconnect( wxEVT_INIT_DIALOG, wxInitDialogEventHandler( MainDialogBase::OnInitDialog ) ); + m_comboRxIn->Disconnect( wxEVT_COMMAND_COMBOBOX_SELECTED, wxCommandEventHandler( MainDialogBase::OnRxInSelect ), NULL, this ); + m_comboRxOut->Disconnect( wxEVT_COMMAND_COMBOBOX_SELECTED, wxCommandEventHandler( MainDialogBase::OnRxOutSelect ), NULL, this ); + m_comboTxIn->Disconnect( wxEVT_COMMAND_COMBOBOX_SELECTED, wxCommandEventHandler( MainDialogBase::OnTxInSelect ), NULL, this ); + m_comboTxOut->Disconnect( wxEVT_COMMAND_COMBOBOX_SELECTED, wxCommandEventHandler( MainDialogBase::OnTxOutSelect ), NULL, this ); + m_comboBox11->Disconnect( wxEVT_COMMAND_COMBOBOX_SELECTED, wxCommandEventHandler( MainDialogBase::OnRadioSelect ), NULL, this ); + m_comboBox21->Disconnect( wxEVT_COMMAND_COMBOBOX_SELECTED, wxCommandEventHandler( MainDialogBase::OnPortSelect ), NULL, this ); + m_toggleStartStop->Disconnect( wxEVT_COMMAND_TOGGLEBUTTON_CLICKED, wxCommandEventHandler( MainDialogBase::OnToggleStartStop ), NULL, this ); + m_toggleRxTx->Disconnect( wxEVT_COMMAND_TOGGLEBUTTON_CLICKED, wxCommandEventHandler( MainDialogBase::OnToggleRxRx ), NULL, this ); + m_sdbSizerCancel->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( MainDialogBase::OnCancelClick ), NULL, this ); + +} diff --git a/fdmdv2/fdmdv2basic/gui.fbp b/fdmdv2/fdmdv2basic/gui.fbp new file mode 100644 index 00000000..47e80022 --- /dev/null +++ b/fdmdv2/fdmdv2basic/gui.fbp @@ -0,0 +1,1977 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> +<wxFormBuilder_Project> + <FileVersion major="1" minor="11" /> + <object class="Project" expanded="1"> + <property name="class_decoration"></property> + <property name="code_generation">C++|Python</property> + <property name="disconnect_events">1</property> + <property name="disconnect_mode">source_name</property> + <property name="disconnect_php_events">0</property> + <property name="disconnect_python_events">0</property> + <property name="embedded_files_path">res</property> + <property name="encoding">UTF-8</property> + <property name="event_generation">connect</property> + <property name="file">gui</property> + <property name="first_id">1000</property> + <property name="help_provider">none</property> + <property name="internationalize">1</property> + <property name="name">gui</property> + <property name="namespace"></property> + <property name="path">.</property> + <property name="precompiled_header"></property> + <property name="relative_path">1</property> + <property name="skip_php_events">1</property> + <property name="skip_python_events">1</property> + <property name="use_enum">0</property> + <property name="use_microsoft_bom">0</property> + <object class="Dialog" expanded="1"> + <property name="BottomDockable">1</property> + <property name="LeftDockable">1</property> + <property name="RightDockable">1</property> + <property name="TopDockable">1</property> + <property name="aui_layer"></property> + <property name="aui_managed">0</property> + <property name="aui_name"></property> + <property name="aui_position"></property> + <property name="aui_row"></property> + <property name="best_size"></property> + <property name="bg"></property> + <property name="caption"></property> + <property name="caption_visible">1</property> + <property name="center">wxBOTH</property> + <property name="center_pane">0</property> + <property name="close_button">1</property> + <property name="context_help"></property> + <property name="context_menu">1</property> + <property name="default_pane">0</property> + <property name="dock">Dock</property> + <property name="dock_fixed">0</property> + <property name="docking">Left</property> + <property name="enabled">1</property> + <property name="event_handler">impl_virtual</property> + <property name="extra_style"></property> + <property name="fg"></property> + <property name="floatable">1</property> + <property name="font"></property> + <property name="gripper">0</property> + <property name="hidden">0</property> + <property name="id">wxID_ANY</property> + <property name="max_size"></property> + <property name="maximize_button">0</property> + <property name="maximum_size"></property> + <property name="min_size"></property> + <property name="minimize_button">0</property> + <property name="minimum_size">-1,-1</property> + <property name="moveable">1</property> + <property name="name">MainDialogBase</property> + <property name="pane_border">1</property> + <property name="pane_position"></property> + <property name="pane_size"></property> + <property name="pin_button">1</property> + <property name="pos"></property> + <property name="resize">Resizable</property> + <property name="show">1</property> + <property name="size">523,526</property> + <property name="style">wxCLOSE_BOX|wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER</property> + <property name="subclass"></property> + <property name="title">FDMDV2Basic</property> + <property name="toolbar_pane">0</property> + <property name="tooltip"></property> + <property name="validator_data_type"></property> + <property name="validator_style">wxFILTER_NONE</property> + <property name="validator_type">wxDefaultValidator</property> + <property name="validator_variable"></property> + <property name="window_extra_style"></property> + <property name="window_name"></property> + <property name="window_style"></property> + <event name="OnActivate"></event> + <event name="OnActivateApp"></event> + <event name="OnAuiFindManager"></event> + <event name="OnAuiPaneButton"></event> + <event name="OnAuiPaneClose"></event> + <event name="OnAuiPaneMaximize"></event> + <event name="OnAuiPaneRestore"></event> + <event name="OnAuiRender"></event> + <event name="OnChar"></event> + <event name="OnClose">OnCloseDialog</event> + <event name="OnEnterWindow"></event> + <event name="OnEraseBackground"></event> + <event name="OnHibernate"></event> + <event name="OnIconize"></event> + <event name="OnIdle"></event> + <event name="OnInitDialog">OnInitDialog</event> + <event name="OnKeyDown"></event> + <event name="OnKeyUp"></event> + <event name="OnKillFocus"></event> + <event name="OnLeaveWindow"></event> + <event name="OnLeftDClick"></event> + <event name="OnLeftDown"></event> + <event name="OnLeftUp"></event> + <event name="OnMiddleDClick"></event> + <event name="OnMiddleDown"></event> + <event name="OnMiddleUp"></event> + <event name="OnMotion"></event> + <event name="OnMouseEvents"></event> + <event name="OnMouseWheel"></event> + <event name="OnPaint"></event> + <event name="OnRightDClick"></event> + <event name="OnRightDown"></event> + <event name="OnRightUp"></event> + <event name="OnSetFocus"></event> + <event name="OnSize"></event> + <event name="OnUpdateUI"></event> + <object class="wxBoxSizer" expanded="1"> + <property name="minimum_size"></property> + <property name="name">mainSizer</property> + <property name="orient">wxVERTICAL</property> + <property name="permission">none</property> + <object class="sizeritem" expanded="1"> + <property name="border">5</property> + <property name="flag">wxEXPAND</property> + <property name="proportion">1</property> + <object class="wxBoxSizer" expanded="1"> + <property name="minimum_size"></property> + <property name="name">bSizer2</property> + <property name="orient">wxHORIZONTAL</property> + <property name="permission">none</property> + <object class="sizeritem" expanded="1"> + <property name="border">5</property> + <property name="flag">wxEXPAND</property> + <property name="proportion">1</property> + <object class="wxStaticBoxSizer" expanded="1"> + <property name="id">wxID_ANY</property> + <property name="label">Settings</property> + <property name="minimum_size"></property> + <property name="name">sbSizer1</property> + <property name="orient">wxVERTICAL</property> + <property name="permission">none</property> + <event name="OnUpdateUI"></event> + <object class="sizeritem" expanded="1"> + <property name="border">5</property> + <property name="flag">wxEXPAND</property> + <property name="proportion">1</property> + <object class="wxGridSizer" expanded="1"> + <property name="cols">1</property> + <property name="hgap">0</property> + <property name="minimum_size"></property> + <property name="name">gSizer4</property> + <property name="permission">none</property> + <property name="rows">3</property> + <property name="vgap">0</property> + <object class="sizeritem" expanded="1"> + <property name="border">5</property> + <property name="flag">wxALIGN_CENTER|wxALIGN_CENTER_HORIZONTAL|wxEXPAND|wxFIXED_MINSIZE</property> + <property name="proportion">1</property> + <object class="wxStaticBoxSizer" expanded="1"> + <property name="id">wxID_ANY</property> + <property name="label">Audio</property> + <property name="minimum_size"></property> + <property name="name">sbSizer3</property> + <property name="orient">wxVERTICAL</property> + <property name="permission">none</property> + <event name="OnUpdateUI"></event> + <object class="sizeritem" expanded="1"> + <property name="border">2</property> + <property name="flag">wxALIGN_CENTER_HORIZONTAL|wxEXPAND|wxFIXED_MINSIZE</property> + <property name="proportion">0</property> + <object class="wxGridSizer" expanded="1"> + <property name="cols">2</property> + <property name="hgap">0</property> + <property name="minimum_size"></property> + <property name="name">gSizer1</property> + <property name="permission">none</property> + <property name="rows">4</property> + <property name="vgap">0</property> + <object class="sizeritem" expanded="0"> + <property name="border">5</property> + <property name="flag">wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL</property> + <property name="proportion">0</property> + <object class="wxStaticText" expanded="0"> + <property name="BottomDockable">1</property> + <property name="LeftDockable">1</property> + <property name="RightDockable">1</property> + <property name="TopDockable">1</property> + <property name="aui_layer"></property> + <property name="aui_name"></property> + <property name="aui_position"></property> + <property name="aui_row"></property> + <property name="best_size"></property> + <property name="bg"></property> + <property name="caption"></property> + <property name="caption_visible">1</property> + <property name="center_pane">0</property> + <property name="close_button">1</property> + <property name="context_help"></property> + <property name="context_menu">1</property> + <property name="default_pane">0</property> + <property name="dock">Dock</property> + <property name="dock_fixed">0</property> + <property name="docking">Left</property> + <property name="enabled">1</property> + <property name="fg"></property> + <property name="floatable">1</property> + <property name="font"></property> + <property name="gripper">0</property> + <property name="hidden">0</property> + <property name="id">wxID_ANY</property> + <property name="label">Rx In (radio):</property> + <property name="max_size"></property> + <property name="maximize_button">0</property> + <property name="maximum_size"></property> + <property name="min_size"></property> + <property name="minimize_button">0</property> + <property name="minimum_size"></property> + <property name="moveable">1</property> + <property name="name">m_staticText1</property> + <property name="pane_border">1</property> + <property name="pane_position"></property> + <property name="pane_size"></property> + <property name="permission">protected</property> + <property name="pin_button">1</property> + <property name="pos"></property> + <property name="resize">Resizable</property> + <property name="show">1</property> + <property name="size"></property> + <property name="style"></property> + <property name="subclass"></property> + <property name="toolbar_pane">0</property> + <property name="tooltip"></property> + <property name="validator_data_type"></property> + <property name="validator_style">wxFILTER_NONE</property> + <property name="validator_type">wxDefaultValidator</property> + <property name="validator_variable"></property> + <property name="window_extra_style"></property> + <property name="window_name"></property> + <property name="window_style"></property> + <property name="wrap">-1</property> + <event name="OnChar"></event> + <event name="OnEnterWindow"></event> + <event name="OnEraseBackground"></event> + <event name="OnKeyDown"></event> + <event name="OnKeyUp"></event> + <event name="OnKillFocus"></event> + <event name="OnLeaveWindow"></event> + <event name="OnLeftDClick"></event> + <event name="OnLeftDown"></event> + <event name="OnLeftUp"></event> + <event name="OnMiddleDClick"></event> + <event name="OnMiddleDown"></event> + <event name="OnMiddleUp"></event> + <event name="OnMotion"></event> + <event name="OnMouseEvents"></event> + <event name="OnMouseWheel"></event> + <event name="OnPaint"></event> + <event name="OnRightDClick"></event> + <event name="OnRightDown"></event> + <event name="OnRightUp"></event> + <event name="OnSetFocus"></event> + <event name="OnSize"></event> + <event name="OnUpdateUI"></event> + </object> + </object> + <object class="sizeritem" expanded="0"> + <property name="border">2</property> + <property name="flag">wxALIGN_CENTER_VERTICAL|wxALL|wxEXPAND</property> + <property name="proportion">1</property> + <object class="wxComboBox" expanded="0"> + <property name="BottomDockable">1</property> + <property name="LeftDockable">1</property> + <property name="RightDockable">1</property> + <property name="TopDockable">1</property> + <property name="aui_layer"></property> + <property name="aui_name"></property> + <property name="aui_position"></property> + <property name="aui_row"></property> + <property name="best_size"></property> + <property name="bg"></property> + <property name="caption"></property> + <property name="caption_visible">1</property> + <property name="center_pane">0</property> + <property name="choices"></property> + <property name="close_button">1</property> + <property name="context_help"></property> + <property name="context_menu">1</property> + <property name="default_pane">0</property> + <property name="dock">Dock</property> + <property name="dock_fixed">0</property> + <property name="docking">Left</property> + <property name="enabled">1</property> + <property name="fg"></property> + <property name="floatable">1</property> + <property name="font"></property> + <property name="gripper">0</property> + <property name="hidden">0</property> + <property name="id">wxID_ANY</property> + <property name="max_size"></property> + <property name="maximize_button">0</property> + <property name="maximum_size"></property> + <property name="min_size"></property> + <property name="minimize_button">0</property> + <property name="minimum_size"></property> + <property name="moveable">1</property> + <property name="name">m_comboRxIn</property> + <property name="pane_border">1</property> + <property name="pane_position"></property> + <property name="pane_size"></property> + <property name="permission">protected</property> + <property name="pin_button">1</property> + <property name="pos"></property> + <property name="resize">Resizable</property> + <property name="selection">-1</property> + <property name="show">1</property> + <property name="size"></property> + <property name="style"></property> + <property name="subclass"></property> + <property name="toolbar_pane">0</property> + <property name="tooltip"></property> + <property name="validator_data_type"></property> + <property name="validator_style">wxFILTER_NONE</property> + <property name="validator_type">wxDefaultValidator</property> + <property name="validator_variable"></property> + <property name="value">&lt;default&gt;</property> + <property name="window_extra_style"></property> + <property name="window_name"></property> + <property name="window_style"></property> + <event name="OnChar"></event> + <event name="OnCombobox">OnRxInSelect</event> + <event name="OnEnterWindow"></event> + <event name="OnEraseBackground"></event> + <event name="OnKeyDown"></event> + <event name="OnKeyUp"></event> + <event name="OnKillFocus"></event> + <event name="OnLeaveWindow"></event> + <event name="OnLeftDClick"></event> + <event name="OnLeftDown"></event> + <event name="OnLeftUp"></event> + <event name="OnMiddleDClick"></event> + <event name="OnMiddleDown"></event> + <event name="OnMiddleUp"></event> + <event name="OnMotion"></event> + <event name="OnMouseEvents"></event> + <event name="OnMouseWheel"></event> + <event name="OnPaint"></event> + <event name="OnRightDClick"></event> + <event name="OnRightDown"></event> + <event name="OnRightUp"></event> + <event name="OnSetFocus"></event> + <event name="OnSize"></event> + <event name="OnText"></event> + <event name="OnTextEnter"></event> + <event name="OnUpdateUI"></event> + </object> + </object> + <object class="sizeritem" expanded="0"> + <property name="border">5</property> + <property name="flag">wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL</property> + <property name="proportion">0</property> + <object class="wxStaticText" expanded="0"> + <property name="BottomDockable">1</property> + <property name="LeftDockable">1</property> + <property name="RightDockable">1</property> + <property name="TopDockable">1</property> + <property name="aui_layer"></property> + <property name="aui_name"></property> + <property name="aui_position"></property> + <property name="aui_row"></property> + <property name="best_size"></property> + <property name="bg"></property> + <property name="caption"></property> + <property name="caption_visible">1</property> + <property name="center_pane">0</property> + <property name="close_button">1</property> + <property name="context_help"></property> + <property name="context_menu">1</property> + <property name="default_pane">0</property> + <property name="dock">Dock</property> + <property name="dock_fixed">0</property> + <property name="docking">Left</property> + <property name="enabled">1</property> + <property name="fg"></property> + <property name="floatable">1</property> + <property name="font"></property> + <property name="gripper">0</property> + <property name="hidden">0</property> + <property name="id">wxID_ANY</property> + <property name="label">Rx Out (spkr):</property> + <property name="max_size"></property> + <property name="maximize_button">0</property> + <property name="maximum_size"></property> + <property name="min_size"></property> + <property name="minimize_button">0</property> + <property name="minimum_size"></property> + <property name="moveable">1</property> + <property name="name">m_staticText2</property> + <property name="pane_border">1</property> + <property name="pane_position"></property> + <property name="pane_size"></property> + <property name="permission">protected</property> + <property name="pin_button">1</property> + <property name="pos"></property> + <property name="resize">Resizable</property> + <property name="show">1</property> + <property name="size"></property> + <property name="style"></property> + <property name="subclass"></property> + <property name="toolbar_pane">0</property> + <property name="tooltip"></property> + <property name="validator_data_type"></property> + <property name="validator_style">wxFILTER_NONE</property> + <property name="validator_type">wxDefaultValidator</property> + <property name="validator_variable"></property> + <property name="window_extra_style"></property> + <property name="window_name"></property> + <property name="window_style"></property> + <property name="wrap">-1</property> + <event name="OnChar"></event> + <event name="OnEnterWindow"></event> + <event name="OnEraseBackground"></event> + <event name="OnKeyDown"></event> + <event name="OnKeyUp"></event> + <event name="OnKillFocus"></event> + <event name="OnLeaveWindow"></event> + <event name="OnLeftDClick"></event> + <event name="OnLeftDown"></event> + <event name="OnLeftUp"></event> + <event name="OnMiddleDClick"></event> + <event name="OnMiddleDown"></event> + <event name="OnMiddleUp"></event> + <event name="OnMotion"></event> + <event name="OnMouseEvents"></event> + <event name="OnMouseWheel"></event> + <event name="OnPaint"></event> + <event name="OnRightDClick"></event> + <event name="OnRightDown"></event> + <event name="OnRightUp"></event> + <event name="OnSetFocus"></event> + <event name="OnSize"></event> + <event name="OnUpdateUI"></event> + </object> + </object> + <object class="sizeritem" expanded="0"> + <property name="border">2</property> + <property name="flag">wxALIGN_CENTER_VERTICAL|wxALL|wxEXPAND</property> + <property name="proportion">1</property> + <object class="wxComboBox" expanded="0"> + <property name="BottomDockable">1</property> + <property name="LeftDockable">1</property> + <property name="RightDockable">1</property> + <property name="TopDockable">1</property> + <property name="aui_layer"></property> + <property name="aui_name"></property> + <property name="aui_position"></property> + <property name="aui_row"></property> + <property name="best_size"></property> + <property name="bg"></property> + <property name="caption"></property> + <property name="caption_visible">1</property> + <property name="center_pane">0</property> + <property name="choices"></property> + <property name="close_button">1</property> + <property name="context_help"></property> + <property name="context_menu">1</property> + <property name="default_pane">0</property> + <property name="dock">Dock</property> + <property name="dock_fixed">0</property> + <property name="docking">Left</property> + <property name="enabled">1</property> + <property name="fg"></property> + <property name="floatable">1</property> + <property name="font"></property> + <property name="gripper">0</property> + <property name="hidden">0</property> + <property name="id">wxID_ANY</property> + <property name="max_size"></property> + <property name="maximize_button">0</property> + <property name="maximum_size"></property> + <property name="min_size"></property> + <property name="minimize_button">0</property> + <property name="minimum_size"></property> + <property name="moveable">1</property> + <property name="name">m_comboRxOut</property> + <property name="pane_border">1</property> + <property name="pane_position"></property> + <property name="pane_size"></property> + <property name="permission">protected</property> + <property name="pin_button">1</property> + <property name="pos"></property> + <property name="resize">Resizable</property> + <property name="selection">-1</property> + <property name="show">1</property> + <property name="size"></property> + <property name="style"></property> + <property name="subclass"></property> + <property name="toolbar_pane">0</property> + <property name="tooltip"></property> + <property name="validator_data_type"></property> + <property name="validator_style">wxFILTER_NONE</property> + <property name="validator_type">wxDefaultValidator</property> + <property name="validator_variable"></property> + <property name="value">&lt;default&gt;</property> + <property name="window_extra_style"></property> + <property name="window_name"></property> + <property name="window_style"></property> + <event name="OnChar"></event> + <event name="OnCombobox">OnRxOutSelect</event> + <event name="OnEnterWindow"></event> + <event name="OnEraseBackground"></event> + <event name="OnKeyDown"></event> + <event name="OnKeyUp"></event> + <event name="OnKillFocus"></event> + <event name="OnLeaveWindow"></event> + <event name="OnLeftDClick"></event> + <event name="OnLeftDown"></event> + <event name="OnLeftUp"></event> + <event name="OnMiddleDClick"></event> + <event name="OnMiddleDown"></event> + <event name="OnMiddleUp"></event> + <event name="OnMotion"></event> + <event name="OnMouseEvents"></event> + <event name="OnMouseWheel"></event> + <event name="OnPaint"></event> + <event name="OnRightDClick"></event> + <event name="OnRightDown"></event> + <event name="OnRightUp"></event> + <event name="OnSetFocus"></event> + <event name="OnSize"></event> + <event name="OnText"></event> + <event name="OnTextEnter"></event> + <event name="OnUpdateUI"></event> + </object> + </object> + <object class="sizeritem" expanded="0"> + <property name="border">5</property> + <property name="flag">wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL</property> + <property name="proportion">0</property> + <object class="wxStaticText" expanded="0"> + <property name="BottomDockable">1</property> + <property name="LeftDockable">1</property> + <property name="RightDockable">1</property> + <property name="TopDockable">1</property> + <property name="aui_layer"></property> + <property name="aui_name"></property> + <property name="aui_position"></property> + <property name="aui_row"></property> + <property name="best_size"></property> + <property name="bg"></property> + <property name="caption"></property> + <property name="caption_visible">1</property> + <property name="center_pane">0</property> + <property name="close_button">1</property> + <property name="context_help"></property> + <property name="context_menu">1</property> + <property name="default_pane">0</property> + <property name="dock">Dock</property> + <property name="dock_fixed">0</property> + <property name="docking">Left</property> + <property name="enabled">1</property> + <property name="fg"></property> + <property name="floatable">1</property> + <property name="font"></property> + <property name="gripper">0</property> + <property name="hidden">0</property> + <property name="id">wxID_ANY</property> + <property name="label">Tx In (mic):</property> + <property name="max_size"></property> + <property name="maximize_button">0</property> + <property name="maximum_size"></property> + <property name="min_size"></property> + <property name="minimize_button">0</property> + <property name="minimum_size"></property> + <property name="moveable">1</property> + <property name="name">m_staticText3</property> + <property name="pane_border">1</property> + <property name="pane_position"></property> + <property name="pane_size"></property> + <property name="permission">protected</property> + <property name="pin_button">1</property> + <property name="pos"></property> + <property name="resize">Resizable</property> + <property name="show">1</property> + <property name="size"></property> + <property name="style"></property> + <property name="subclass"></property> + <property name="toolbar_pane">0</property> + <property name="tooltip"></property> + <property name="validator_data_type"></property> + <property name="validator_style">wxFILTER_NONE</property> + <property name="validator_type">wxDefaultValidator</property> + <property name="validator_variable"></property> + <property name="window_extra_style"></property> + <property name="window_name"></property> + <property name="window_style"></property> + <property name="wrap">-1</property> + <event name="OnChar"></event> + <event name="OnEnterWindow"></event> + <event name="OnEraseBackground"></event> + <event name="OnKeyDown"></event> + <event name="OnKeyUp"></event> + <event name="OnKillFocus"></event> + <event name="OnLeaveWindow"></event> + <event name="OnLeftDClick"></event> + <event name="OnLeftDown"></event> + <event name="OnLeftUp"></event> + <event name="OnMiddleDClick"></event> + <event name="OnMiddleDown"></event> + <event name="OnMiddleUp"></event> + <event name="OnMotion"></event> + <event name="OnMouseEvents"></event> + <event name="OnMouseWheel"></event> + <event name="OnPaint"></event> + <event name="OnRightDClick"></event> + <event name="OnRightDown"></event> + <event name="OnRightUp"></event> + <event name="OnSetFocus"></event> + <event name="OnSize"></event> + <event name="OnUpdateUI"></event> + </object> + </object> + <object class="sizeritem" expanded="0"> + <property name="border">2</property> + <property name="flag">wxALIGN_CENTER_VERTICAL|wxALL|wxEXPAND</property> + <property name="proportion">1</property> + <object class="wxComboBox" expanded="0"> + <property name="BottomDockable">1</property> + <property name="LeftDockable">1</property> + <property name="RightDockable">1</property> + <property name="TopDockable">1</property> + <property name="aui_layer"></property> + <property name="aui_name"></property> + <property name="aui_position"></property> + <property name="aui_row"></property> + <property name="best_size"></property> + <property name="bg"></property> + <property name="caption"></property> + <property name="caption_visible">1</property> + <property name="center_pane">0</property> + <property name="choices"></property> + <property name="close_button">1</property> + <property name="context_help"></property> + <property name="context_menu">1</property> + <property name="default_pane">0</property> + <property name="dock">Dock</property> + <property name="dock_fixed">0</property> + <property name="docking">Left</property> + <property name="enabled">1</property> + <property name="fg"></property> + <property name="floatable">1</property> + <property name="font"></property> + <property name="gripper">0</property> + <property name="hidden">0</property> + <property name="id">wxID_ANY</property> + <property name="max_size"></property> + <property name="maximize_button">0</property> + <property name="maximum_size"></property> + <property name="min_size"></property> + <property name="minimize_button">0</property> + <property name="minimum_size"></property> + <property name="moveable">1</property> + <property name="name">m_comboTxIn</property> + <property name="pane_border">1</property> + <property name="pane_position"></property> + <property name="pane_size"></property> + <property name="permission">protected</property> + <property name="pin_button">1</property> + <property name="pos"></property> + <property name="resize">Resizable</property> + <property name="selection">-1</property> + <property name="show">1</property> + <property name="size"></property> + <property name="style"></property> + <property name="subclass"></property> + <property name="toolbar_pane">0</property> + <property name="tooltip"></property> + <property name="validator_data_type"></property> + <property name="validator_style">wxFILTER_NONE</property> + <property name="validator_type">wxDefaultValidator</property> + <property name="validator_variable"></property> + <property name="value">&lt;default&gt;</property> + <property name="window_extra_style"></property> + <property name="window_name"></property> + <property name="window_style"></property> + <event name="OnChar"></event> + <event name="OnCombobox">OnTxInSelect</event> + <event name="OnEnterWindow"></event> + <event name="OnEraseBackground"></event> + <event name="OnKeyDown"></event> + <event name="OnKeyUp"></event> + <event name="OnKillFocus"></event> + <event name="OnLeaveWindow"></event> + <event name="OnLeftDClick"></event> + <event name="OnLeftDown"></event> + <event name="OnLeftUp"></event> + <event name="OnMiddleDClick"></event> + <event name="OnMiddleDown"></event> + <event name="OnMiddleUp"></event> + <event name="OnMotion"></event> + <event name="OnMouseEvents"></event> + <event name="OnMouseWheel"></event> + <event name="OnPaint"></event> + <event name="OnRightDClick"></event> + <event name="OnRightDown"></event> + <event name="OnRightUp"></event> + <event name="OnSetFocus"></event> + <event name="OnSize"></event> + <event name="OnText"></event> + <event name="OnTextEnter"></event> + <event name="OnUpdateUI"></event> + </object> + </object> + <object class="sizeritem" expanded="0"> + <property name="border">5</property> + <property name="flag">wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL</property> + <property name="proportion">0</property> + <object class="wxStaticText" expanded="0"> + <property name="BottomDockable">1</property> + <property name="LeftDockable">1</property> + <property name="RightDockable">1</property> + <property name="TopDockable">1</property> + <property name="aui_layer"></property> + <property name="aui_name"></property> + <property name="aui_position"></property> + <property name="aui_row"></property> + <property name="best_size"></property> + <property name="bg"></property> + <property name="caption"></property> + <property name="caption_visible">1</property> + <property name="center_pane">0</property> + <property name="close_button">1</property> + <property name="context_help"></property> + <property name="context_menu">1</property> + <property name="default_pane">0</property> + <property name="dock">Dock</property> + <property name="dock_fixed">0</property> + <property name="docking">Left</property> + <property name="enabled">1</property> + <property name="fg"></property> + <property name="floatable">1</property> + <property name="font"></property> + <property name="gripper">0</property> + <property name="hidden">0</property> + <property name="id">wxID_ANY</property> + <property name="label">Tx Out (radio):</property> + <property name="max_size"></property> + <property name="maximize_button">0</property> + <property name="maximum_size"></property> + <property name="min_size"></property> + <property name="minimize_button">0</property> + <property name="minimum_size"></property> + <property name="moveable">1</property> + <property name="name">m_staticText4</property> + <property name="pane_border">1</property> + <property name="pane_position"></property> + <property name="pane_size"></property> + <property name="permission">protected</property> + <property name="pin_button">1</property> + <property name="pos"></property> + <property name="resize">Resizable</property> + <property name="show">1</property> + <property name="size"></property> + <property name="style"></property> + <property name="subclass"></property> + <property name="toolbar_pane">0</property> + <property name="tooltip"></property> + <property name="validator_data_type"></property> + <property name="validator_style">wxFILTER_NONE</property> + <property name="validator_type">wxDefaultValidator</property> + <property name="validator_variable"></property> + <property name="window_extra_style"></property> + <property name="window_name"></property> + <property name="window_style"></property> + <property name="wrap">-1</property> + <event name="OnChar"></event> + <event name="OnEnterWindow"></event> + <event name="OnEraseBackground"></event> + <event name="OnKeyDown"></event> + <event name="OnKeyUp"></event> + <event name="OnKillFocus"></event> + <event name="OnLeaveWindow"></event> + <event name="OnLeftDClick"></event> + <event name="OnLeftDown"></event> + <event name="OnLeftUp"></event> + <event name="OnMiddleDClick"></event> + <event name="OnMiddleDown"></event> + <event name="OnMiddleUp"></event> + <event name="OnMotion"></event> + <event name="OnMouseEvents"></event> + <event name="OnMouseWheel"></event> + <event name="OnPaint"></event> + <event name="OnRightDClick"></event> + <event name="OnRightDown"></event> + <event name="OnRightUp"></event> + <event name="OnSetFocus"></event> + <event name="OnSize"></event> + <event name="OnUpdateUI"></event> + </object> + </object> + <object class="sizeritem" expanded="0"> + <property name="border">2</property> + <property name="flag">wxALIGN_CENTER_VERTICAL|wxALL|wxEXPAND</property> + <property name="proportion">1</property> + <object class="wxComboBox" expanded="0"> + <property name="BottomDockable">1</property> + <property name="LeftDockable">1</property> + <property name="RightDockable">1</property> + <property name="TopDockable">1</property> + <property name="aui_layer"></property> + <property name="aui_name"></property> + <property name="aui_position"></property> + <property name="aui_row"></property> + <property name="best_size"></property> + <property name="bg"></property> + <property name="caption"></property> + <property name="caption_visible">1</property> + <property name="center_pane">0</property> + <property name="choices"></property> + <property name="close_button">1</property> + <property name="context_help"></property> + <property name="context_menu">1</property> + <property name="default_pane">0</property> + <property name="dock">Dock</property> + <property name="dock_fixed">0</property> + <property name="docking">Left</property> + <property name="enabled">1</property> + <property name="fg"></property> + <property name="floatable">1</property> + <property name="font"></property> + <property name="gripper">0</property> + <property name="hidden">0</property> + <property name="id">wxID_ANY</property> + <property name="max_size"></property> + <property name="maximize_button">0</property> + <property name="maximum_size"></property> + <property name="min_size"></property> + <property name="minimize_button">0</property> + <property name="minimum_size"></property> + <property name="moveable">1</property> + <property name="name">m_comboTxOut</property> + <property name="pane_border">1</property> + <property name="pane_position"></property> + <property name="pane_size"></property> + <property name="permission">protected</property> + <property name="pin_button">1</property> + <property name="pos"></property> + <property name="resize">Resizable</property> + <property name="selection">-1</property> + <property name="show">1</property> + <property name="size"></property> + <property name="style"></property> + <property name="subclass"></property> + <property name="toolbar_pane">0</property> + <property name="tooltip"></property> + <property name="validator_data_type"></property> + <property name="validator_style">wxFILTER_NONE</property> + <property name="validator_type">wxDefaultValidator</property> + <property name="validator_variable"></property> + <property name="value">&lt;default&gt;</property> + <property name="window_extra_style"></property> + <property name="window_name"></property> + <property name="window_style"></property> + <event name="OnChar"></event> + <event name="OnCombobox">OnTxOutSelect</event> + <event name="OnEnterWindow"></event> + <event name="OnEraseBackground"></event> + <event name="OnKeyDown"></event> + <event name="OnKeyUp"></event> + <event name="OnKillFocus"></event> + <event name="OnLeaveWindow"></event> + <event name="OnLeftDClick"></event> + <event name="OnLeftDown"></event> + <event name="OnLeftUp"></event> + <event name="OnMiddleDClick"></event> + <event name="OnMiddleDown"></event> + <event name="OnMiddleUp"></event> + <event name="OnMotion"></event> + <event name="OnMouseEvents"></event> + <event name="OnMouseWheel"></event> + <event name="OnPaint"></event> + <event name="OnRightDClick"></event> + <event name="OnRightDown"></event> + <event name="OnRightUp"></event> + <event name="OnSetFocus"></event> + <event name="OnSize"></event> + <event name="OnText"></event> + <event name="OnTextEnter"></event> + <event name="OnUpdateUI"></event> + </object> + </object> + </object> + </object> + </object> + </object> + <object class="sizeritem" expanded="1"> + <property name="border">5</property> + <property name="flag">wxEXPAND|wxFIXED_MINSIZE</property> + <property name="proportion">1</property> + <object class="wxStaticBoxSizer" expanded="1"> + <property name="id">wxID_ANY</property> + <property name="label">label</property> + <property name="minimum_size"></property> + <property name="name">sbSizer4</property> + <property name="orient">wxVERTICAL</property> + <property name="permission">none</property> + <event name="OnUpdateUI"></event> + <object class="sizeritem" expanded="1"> + <property name="border">2</property> + <property name="flag">wxALIGN_CENTER|wxEXPAND|wxFIXED_MINSIZE</property> + <property name="proportion">0</property> + <object class="wxGridSizer" expanded="1"> + <property name="cols">2</property> + <property name="hgap">0</property> + <property name="minimum_size"></property> + <property name="name">gSizer111</property> + <property name="permission">none</property> + <property name="rows">2</property> + <property name="vgap">0</property> + <object class="sizeritem" expanded="0"> + <property name="border">5</property> + <property name="flag">wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL</property> + <property name="proportion">0</property> + <object class="wxStaticText" expanded="0"> + <property name="BottomDockable">1</property> + <property name="LeftDockable">1</property> + <property name="RightDockable">1</property> + <property name="TopDockable">1</property> + <property name="aui_layer"></property> + <property name="aui_name"></property> + <property name="aui_position"></property> + <property name="aui_row"></property> + <property name="best_size"></property> + <property name="bg"></property> + <property name="caption"></property> + <property name="caption_visible">1</property> + <property name="center_pane">0</property> + <property name="close_button">1</property> + <property name="context_help"></property> + <property name="context_menu">1</property> + <property name="default_pane">0</property> + <property name="dock">Dock</property> + <property name="dock_fixed">0</property> + <property name="docking">Left</property> + <property name="enabled">1</property> + <property name="fg"></property> + <property name="floatable">1</property> + <property name="font"></property> + <property name="gripper">0</property> + <property name="hidden">0</property> + <property name="id">wxID_ANY</property> + <property name="label">Rate:</property> + <property name="max_size"></property> + <property name="maximize_button">0</property> + <property name="maximum_size"></property> + <property name="min_size"></property> + <property name="minimize_button">0</property> + <property name="minimum_size"></property> + <property name="moveable">1</property> + <property name="name">m_staticText111</property> + <property name="pane_border">1</property> + <property name="pane_position"></property> + <property name="pane_size"></property> + <property name="permission">protected</property> + <property name="pin_button">1</property> + <property name="pos"></property> + <property name="resize">Resizable</property> + <property name="show">1</property> + <property name="size"></property> + <property name="style"></property> + <property name="subclass"></property> + <property name="toolbar_pane">0</property> + <property name="tooltip"></property> + <property name="validator_data_type"></property> + <property name="validator_style">wxFILTER_NONE</property> + <property name="validator_type">wxDefaultValidator</property> + <property name="validator_variable"></property> + <property name="window_extra_style"></property> + <property name="window_name"></property> + <property name="window_style"></property> + <property name="wrap">-1</property> + <event name="OnChar"></event> + <event name="OnEnterWindow"></event> + <event name="OnEraseBackground"></event> + <event name="OnKeyDown"></event> + <event name="OnKeyUp"></event> + <event name="OnKillFocus"></event> + <event name="OnLeaveWindow"></event> + <event name="OnLeftDClick"></event> + <event name="OnLeftDown"></event> + <event name="OnLeftUp"></event> + <event name="OnMiddleDClick"></event> + <event name="OnMiddleDown"></event> + <event name="OnMiddleUp"></event> + <event name="OnMotion"></event> + <event name="OnMouseEvents"></event> + <event name="OnMouseWheel"></event> + <event name="OnPaint"></event> + <event name="OnRightDClick"></event> + <event name="OnRightDown"></event> + <event name="OnRightUp"></event> + <event name="OnSetFocus"></event> + <event name="OnSize"></event> + <event name="OnUpdateUI"></event> + </object> + </object> + <object class="sizeritem" expanded="0"> + <property name="border">2</property> + <property name="flag">wxALIGN_CENTER_VERTICAL|wxALL|wxEXPAND</property> + <property name="proportion">1</property> + <object class="wxComboBox" expanded="0"> + <property name="BottomDockable">1</property> + <property name="LeftDockable">1</property> + <property name="RightDockable">1</property> + <property name="TopDockable">1</property> + <property name="aui_layer"></property> + <property name="aui_name"></property> + <property name="aui_position"></property> + <property name="aui_row"></property> + <property name="best_size"></property> + <property name="bg"></property> + <property name="caption"></property> + <property name="caption_visible">1</property> + <property name="center_pane">0</property> + <property name="choices"></property> + <property name="close_button">1</property> + <property name="context_help"></property> + <property name="context_menu">1</property> + <property name="default_pane">0</property> + <property name="dock">Dock</property> + <property name="dock_fixed">0</property> + <property name="docking">Left</property> + <property name="enabled">1</property> + <property name="fg"></property> + <property name="floatable">1</property> + <property name="font"></property> + <property name="gripper">0</property> + <property name="hidden">0</property> + <property name="id">wxID_ANY</property> + <property name="max_size"></property> + <property name="maximize_button">0</property> + <property name="maximum_size"></property> + <property name="min_size"></property> + <property name="minimize_button">0</property> + <property name="minimum_size"></property> + <property name="moveable">1</property> + <property name="name">m_comboBox111</property> + <property name="pane_border">1</property> + <property name="pane_position"></property> + <property name="pane_size"></property> + <property name="permission">protected</property> + <property name="pin_button">1</property> + <property name="pos"></property> + <property name="resize">Resizable</property> + <property name="selection">-1</property> + <property name="show">1</property> + <property name="size"></property> + <property name="style"></property> + <property name="subclass"></property> + <property name="toolbar_pane">0</property> + <property name="tooltip"></property> + <property name="validator_data_type"></property> + <property name="validator_style">wxFILTER_NONE</property> + <property name="validator_type">wxDefaultValidator</property> + <property name="validator_variable"></property> + <property name="value">Combo!</property> + <property name="window_extra_style"></property> + <property name="window_name"></property> + <property name="window_style"></property> + <event name="OnChar"></event> + <event name="OnCombobox"></event> + <event name="OnEnterWindow"></event> + <event name="OnEraseBackground"></event> + <event name="OnKeyDown"></event> + <event name="OnKeyUp"></event> + <event name="OnKillFocus"></event> + <event name="OnLeaveWindow"></event> + <event name="OnLeftDClick"></event> + <event name="OnLeftDown"></event> + <event name="OnLeftUp"></event> + <event name="OnMiddleDClick"></event> + <event name="OnMiddleDown"></event> + <event name="OnMiddleUp"></event> + <event name="OnMotion"></event> + <event name="OnMouseEvents"></event> + <event name="OnMouseWheel"></event> + <event name="OnPaint"></event> + <event name="OnRightDClick"></event> + <event name="OnRightDown"></event> + <event name="OnRightUp"></event> + <event name="OnSetFocus"></event> + <event name="OnSize"></event> + <event name="OnText"></event> + <event name="OnTextEnter"></event> + <event name="OnUpdateUI"></event> + </object> + </object> + <object class="sizeritem" expanded="0"> + <property name="border">5</property> + <property name="flag">wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL</property> + <property name="proportion">0</property> + <object class="wxStaticText" expanded="0"> + <property name="BottomDockable">1</property> + <property name="LeftDockable">1</property> + <property name="RightDockable">1</property> + <property name="TopDockable">1</property> + <property name="aui_layer"></property> + <property name="aui_name"></property> + <property name="aui_position"></property> + <property name="aui_row"></property> + <property name="best_size"></property> + <property name="bg"></property> + <property name="caption"></property> + <property name="caption_visible">1</property> + <property name="center_pane">0</property> + <property name="close_button">1</property> + <property name="context_help"></property> + <property name="context_menu">1</property> + <property name="default_pane">0</property> + <property name="dock">Dock</property> + <property name="dock_fixed">0</property> + <property name="docking">Left</property> + <property name="enabled">1</property> + <property name="fg"></property> + <property name="floatable">1</property> + <property name="font"></property> + <property name="gripper">0</property> + <property name="hidden">0</property> + <property name="id">wxID_ANY</property> + <property name="label">MyLabel</property> + <property name="max_size"></property> + <property name="maximize_button">0</property> + <property name="maximum_size"></property> + <property name="min_size"></property> + <property name="minimize_button">0</property> + <property name="minimum_size"></property> + <property name="moveable">1</property> + <property name="name">m_staticText211</property> + <property name="pane_border">1</property> + <property name="pane_position"></property> + <property name="pane_size"></property> + <property name="permission">protected</property> + <property name="pin_button">1</property> + <property name="pos"></property> + <property name="resize">Resizable</property> + <property name="show">1</property> + <property name="size"></property> + <property name="style"></property> + <property name="subclass"></property> + <property name="toolbar_pane">0</property> + <property name="tooltip"></property> + <property name="validator_data_type"></property> + <property name="validator_style">wxFILTER_NONE</property> + <property name="validator_type">wxDefaultValidator</property> + <property name="validator_variable"></property> + <property name="window_extra_style"></property> + <property name="window_name"></property> + <property name="window_style"></property> + <property name="wrap">-1</property> + <event name="OnChar"></event> + <event name="OnEnterWindow"></event> + <event name="OnEraseBackground"></event> + <event name="OnKeyDown"></event> + <event name="OnKeyUp"></event> + <event name="OnKillFocus"></event> + <event name="OnLeaveWindow"></event> + <event name="OnLeftDClick"></event> + <event name="OnLeftDown"></event> + <event name="OnLeftUp"></event> + <event name="OnMiddleDClick"></event> + <event name="OnMiddleDown"></event> + <event name="OnMiddleUp"></event> + <event name="OnMotion"></event> + <event name="OnMouseEvents"></event> + <event name="OnMouseWheel"></event> + <event name="OnPaint"></event> + <event name="OnRightDClick"></event> + <event name="OnRightDown"></event> + <event name="OnRightUp"></event> + <event name="OnSetFocus"></event> + <event name="OnSize"></event> + <event name="OnUpdateUI"></event> + </object> + </object> + <object class="sizeritem" expanded="0"> + <property name="border">2</property> + <property name="flag">wxALIGN_CENTER_VERTICAL|wxALL|wxEXPAND</property> + <property name="proportion">1</property> + <object class="wxComboBox" expanded="0"> + <property name="BottomDockable">1</property> + <property name="LeftDockable">1</property> + <property name="RightDockable">1</property> + <property name="TopDockable">1</property> + <property name="aui_layer"></property> + <property name="aui_name"></property> + <property name="aui_position"></property> + <property name="aui_row"></property> + <property name="best_size"></property> + <property name="bg"></property> + <property name="caption"></property> + <property name="caption_visible">1</property> + <property name="center_pane">0</property> + <property name="choices"></property> + <property name="close_button">1</property> + <property name="context_help"></property> + <property name="context_menu">1</property> + <property name="default_pane">0</property> + <property name="dock">Dock</property> + <property name="dock_fixed">0</property> + <property name="docking">Left</property> + <property name="enabled">1</property> + <property name="fg"></property> + <property name="floatable">1</property> + <property name="font"></property> + <property name="gripper">0</property> + <property name="hidden">0</property> + <property name="id">wxID_ANY</property> + <property name="max_size"></property> + <property name="maximize_button">0</property> + <property name="maximum_size"></property> + <property name="min_size"></property> + <property name="minimize_button">0</property> + <property name="minimum_size"></property> + <property name="moveable">1</property> + <property name="name">m_comboBox211</property> + <property name="pane_border">1</property> + <property name="pane_position"></property> + <property name="pane_size"></property> + <property name="permission">protected</property> + <property name="pin_button">1</property> + <property name="pos"></property> + <property name="resize">Resizable</property> + <property name="selection">-1</property> + <property name="show">1</property> + <property name="size"></property> + <property name="style"></property> + <property name="subclass"></property> + <property name="toolbar_pane">0</property> + <property name="tooltip"></property> + <property name="validator_data_type"></property> + <property name="validator_style">wxFILTER_NONE</property> + <property name="validator_type">wxDefaultValidator</property> + <property name="validator_variable"></property> + <property name="value">Combo!</property> + <property name="window_extra_style"></property> + <property name="window_name"></property> + <property name="window_style"></property> + <event name="OnChar"></event> + <event name="OnCombobox"></event> + <event name="OnEnterWindow"></event> + <event name="OnEraseBackground"></event> + <event name="OnKeyDown"></event> + <event name="OnKeyUp"></event> + <event name="OnKillFocus"></event> + <event name="OnLeaveWindow"></event> + <event name="OnLeftDClick"></event> + <event name="OnLeftDown"></event> + <event name="OnLeftUp"></event> + <event name="OnMiddleDClick"></event> + <event name="OnMiddleDown"></event> + <event name="OnMiddleUp"></event> + <event name="OnMotion"></event> + <event name="OnMouseEvents"></event> + <event name="OnMouseWheel"></event> + <event name="OnPaint"></event> + <event name="OnRightDClick"></event> + <event name="OnRightDown"></event> + <event name="OnRightUp"></event> + <event name="OnSetFocus"></event> + <event name="OnSize"></event> + <event name="OnText"></event> + <event name="OnTextEnter"></event> + <event name="OnUpdateUI"></event> + </object> + </object> + </object> + </object> + </object> + </object> + <object class="sizeritem" expanded="1"> + <property name="border">5</property> + <property name="flag">wxALIGN_CENTER_HORIZONTAL|wxEXPAND</property> + <property name="proportion">1</property> + <object class="wxStaticBoxSizer" expanded="1"> + <property name="id">wxID_ANY</property> + <property name="label">Comm Port</property> + <property name="minimum_size"></property> + <property name="name">sbSizer5</property> + <property name="orient">wxVERTICAL</property> + <property name="permission">none</property> + <event name="OnUpdateUI"></event> + <object class="sizeritem" expanded="1"> + <property name="border">2</property> + <property name="flag">wxALIGN_CENTER|wxEXPAND|wxFIXED_MINSIZE</property> + <property name="proportion">0</property> + <object class="wxGridSizer" expanded="1"> + <property name="cols">2</property> + <property name="hgap">0</property> + <property name="minimum_size"></property> + <property name="name">gSizer11</property> + <property name="permission">none</property> + <property name="rows">2</property> + <property name="vgap">0</property> + <object class="sizeritem" expanded="0"> + <property name="border">5</property> + <property name="flag">wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL</property> + <property name="proportion">0</property> + <object class="wxStaticText" expanded="0"> + <property name="BottomDockable">1</property> + <property name="LeftDockable">1</property> + <property name="RightDockable">1</property> + <property name="TopDockable">1</property> + <property name="aui_layer"></property> + <property name="aui_name"></property> + <property name="aui_position"></property> + <property name="aui_row"></property> + <property name="best_size"></property> + <property name="bg"></property> + <property name="caption"></property> + <property name="caption_visible">1</property> + <property name="center_pane">0</property> + <property name="close_button">1</property> + <property name="context_help"></property> + <property name="context_menu">1</property> + <property name="default_pane">0</property> + <property name="dock">Dock</property> + <property name="dock_fixed">0</property> + <property name="docking">Left</property> + <property name="enabled">1</property> + <property name="fg"></property> + <property name="floatable">1</property> + <property name="font"></property> + <property name="gripper">0</property> + <property name="hidden">0</property> + <property name="id">wxID_ANY</property> + <property name="label">Radio:</property> + <property name="max_size"></property> + <property name="maximize_button">0</property> + <property name="maximum_size"></property> + <property name="min_size"></property> + <property name="minimize_button">0</property> + <property name="minimum_size"></property> + <property name="moveable">1</property> + <property name="name">m_staticText11</property> + <property name="pane_border">1</property> + <property name="pane_position"></property> + <property name="pane_size"></property> + <property name="permission">protected</property> + <property name="pin_button">1</property> + <property name="pos"></property> + <property name="resize">Resizable</property> + <property name="show">1</property> + <property name="size"></property> + <property name="style"></property> + <property name="subclass"></property> + <property name="toolbar_pane">0</property> + <property name="tooltip"></property> + <property name="validator_data_type"></property> + <property name="validator_style">wxFILTER_NONE</property> + <property name="validator_type">wxDefaultValidator</property> + <property name="validator_variable"></property> + <property name="window_extra_style"></property> + <property name="window_name"></property> + <property name="window_style"></property> + <property name="wrap">-1</property> + <event name="OnChar"></event> + <event name="OnEnterWindow"></event> + <event name="OnEraseBackground"></event> + <event name="OnKeyDown"></event> + <event name="OnKeyUp"></event> + <event name="OnKillFocus"></event> + <event name="OnLeaveWindow"></event> + <event name="OnLeftDClick"></event> + <event name="OnLeftDown"></event> + <event name="OnLeftUp"></event> + <event name="OnMiddleDClick"></event> + <event name="OnMiddleDown"></event> + <event name="OnMiddleUp"></event> + <event name="OnMotion"></event> + <event name="OnMouseEvents"></event> + <event name="OnMouseWheel"></event> + <event name="OnPaint"></event> + <event name="OnRightDClick"></event> + <event name="OnRightDown"></event> + <event name="OnRightUp"></event> + <event name="OnSetFocus"></event> + <event name="OnSize"></event> + <event name="OnUpdateUI"></event> + </object> + </object> + <object class="sizeritem" expanded="0"> + <property name="border">2</property> + <property name="flag">wxALIGN_CENTER_VERTICAL|wxALL|wxEXPAND</property> + <property name="proportion">1</property> + <object class="wxComboBox" expanded="0"> + <property name="BottomDockable">1</property> + <property name="LeftDockable">1</property> + <property name="RightDockable">1</property> + <property name="TopDockable">1</property> + <property name="aui_layer"></property> + <property name="aui_name"></property> + <property name="aui_position"></property> + <property name="aui_row"></property> + <property name="best_size"></property> + <property name="bg"></property> + <property name="caption"></property> + <property name="caption_visible">1</property> + <property name="center_pane">0</property> + <property name="choices"></property> + <property name="close_button">1</property> + <property name="context_help"></property> + <property name="context_menu">1</property> + <property name="default_pane">0</property> + <property name="dock">Dock</property> + <property name="dock_fixed">0</property> + <property name="docking">Left</property> + <property name="enabled">1</property> + <property name="fg"></property> + <property name="floatable">1</property> + <property name="font"></property> + <property name="gripper">0</property> + <property name="hidden">0</property> + <property name="id">wxID_ANY</property> + <property name="max_size"></property> + <property name="maximize_button">0</property> + <property name="maximum_size"></property> + <property name="min_size"></property> + <property name="minimize_button">0</property> + <property name="minimum_size"></property> + <property name="moveable">1</property> + <property name="name">m_comboBox11</property> + <property name="pane_border">1</property> + <property name="pane_position"></property> + <property name="pane_size"></property> + <property name="permission">protected</property> + <property name="pin_button">1</property> + <property name="pos"></property> + <property name="resize">Resizable</property> + <property name="selection">-1</property> + <property name="show">1</property> + <property name="size"></property> + <property name="style"></property> + <property name="subclass"></property> + <property name="toolbar_pane">0</property> + <property name="tooltip"></property> + <property name="validator_data_type"></property> + <property name="validator_style">wxFILTER_NONE</property> + <property name="validator_type">wxDefaultValidator</property> + <property name="validator_variable"></property> + <property name="value">Combo!</property> + <property name="window_extra_style"></property> + <property name="window_name"></property> + <property name="window_style"></property> + <event name="OnChar"></event> + <event name="OnCombobox">OnRadioSelect</event> + <event name="OnEnterWindow"></event> + <event name="OnEraseBackground"></event> + <event name="OnKeyDown"></event> + <event name="OnKeyUp"></event> + <event name="OnKillFocus"></event> + <event name="OnLeaveWindow"></event> + <event name="OnLeftDClick"></event> + <event name="OnLeftDown"></event> + <event name="OnLeftUp"></event> + <event name="OnMiddleDClick"></event> + <event name="OnMiddleDown"></event> + <event name="OnMiddleUp"></event> + <event name="OnMotion"></event> + <event name="OnMouseEvents"></event> + <event name="OnMouseWheel"></event> + <event name="OnPaint"></event> + <event name="OnRightDClick"></event> + <event name="OnRightDown"></event> + <event name="OnRightUp"></event> + <event name="OnSetFocus"></event> + <event name="OnSize"></event> + <event name="OnText"></event> + <event name="OnTextEnter"></event> + <event name="OnUpdateUI"></event> + </object> + </object> + <object class="sizeritem" expanded="0"> + <property name="border">5</property> + <property name="flag">wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL</property> + <property name="proportion">0</property> + <object class="wxStaticText" expanded="0"> + <property name="BottomDockable">1</property> + <property name="LeftDockable">1</property> + <property name="RightDockable">1</property> + <property name="TopDockable">1</property> + <property name="aui_layer"></property> + <property name="aui_name"></property> + <property name="aui_position"></property> + <property name="aui_row"></property> + <property name="best_size"></property> + <property name="bg"></property> + <property name="caption"></property> + <property name="caption_visible">1</property> + <property name="center_pane">0</property> + <property name="close_button">1</property> + <property name="context_help"></property> + <property name="context_menu">1</property> + <property name="default_pane">0</property> + <property name="dock">Dock</property> + <property name="dock_fixed">0</property> + <property name="docking">Left</property> + <property name="enabled">1</property> + <property name="fg"></property> + <property name="floatable">1</property> + <property name="font"></property> + <property name="gripper">0</property> + <property name="hidden">0</property> + <property name="id">wxID_ANY</property> + <property name="label">Port:</property> + <property name="max_size"></property> + <property name="maximize_button">0</property> + <property name="maximum_size"></property> + <property name="min_size"></property> + <property name="minimize_button">0</property> + <property name="minimum_size"></property> + <property name="moveable">1</property> + <property name="name">m_staticText21</property> + <property name="pane_border">1</property> + <property name="pane_position"></property> + <property name="pane_size"></property> + <property name="permission">protected</property> + <property name="pin_button">1</property> + <property name="pos"></property> + <property name="resize">Resizable</property> + <property name="show">1</property> + <property name="size"></property> + <property name="style"></property> + <property name="subclass"></property> + <property name="toolbar_pane">0</property> + <property name="tooltip"></property> + <property name="validator_data_type"></property> + <property name="validator_style">wxFILTER_NONE</property> + <property name="validator_type">wxDefaultValidator</property> + <property name="validator_variable"></property> + <property name="window_extra_style"></property> + <property name="window_name"></property> + <property name="window_style"></property> + <property name="wrap">-1</property> + <event name="OnChar"></event> + <event name="OnEnterWindow"></event> + <event name="OnEraseBackground"></event> + <event name="OnKeyDown"></event> + <event name="OnKeyUp"></event> + <event name="OnKillFocus"></event> + <event name="OnLeaveWindow"></event> + <event name="OnLeftDClick"></event> + <event name="OnLeftDown"></event> + <event name="OnLeftUp"></event> + <event name="OnMiddleDClick"></event> + <event name="OnMiddleDown"></event> + <event name="OnMiddleUp"></event> + <event name="OnMotion"></event> + <event name="OnMouseEvents"></event> + <event name="OnMouseWheel"></event> + <event name="OnPaint"></event> + <event name="OnRightDClick"></event> + <event name="OnRightDown"></event> + <event name="OnRightUp"></event> + <event name="OnSetFocus"></event> + <event name="OnSize"></event> + <event name="OnUpdateUI"></event> + </object> + </object> + <object class="sizeritem" expanded="0"> + <property name="border">2</property> + <property name="flag">wxALIGN_CENTER_VERTICAL|wxALL|wxEXPAND</property> + <property name="proportion">1</property> + <object class="wxComboBox" expanded="0"> + <property name="BottomDockable">1</property> + <property name="LeftDockable">1</property> + <property name="RightDockable">1</property> + <property name="TopDockable">1</property> + <property name="aui_layer"></property> + <property name="aui_name"></property> + <property name="aui_position"></property> + <property name="aui_row"></property> + <property name="best_size"></property> + <property name="bg"></property> + <property name="caption"></property> + <property name="caption_visible">1</property> + <property name="center_pane">0</property> + <property name="choices"></property> + <property name="close_button">1</property> + <property name="context_help"></property> + <property name="context_menu">1</property> + <property name="default_pane">0</property> + <property name="dock">Dock</property> + <property name="dock_fixed">0</property> + <property name="docking">Left</property> + <property name="enabled">1</property> + <property name="fg"></property> + <property name="floatable">1</property> + <property name="font"></property> + <property name="gripper">0</property> + <property name="hidden">0</property> + <property name="id">wxID_ANY</property> + <property name="max_size"></property> + <property name="maximize_button">0</property> + <property name="maximum_size"></property> + <property name="min_size"></property> + <property name="minimize_button">0</property> + <property name="minimum_size"></property> + <property name="moveable">1</property> + <property name="name">m_comboBox21</property> + <property name="pane_border">1</property> + <property name="pane_position"></property> + <property name="pane_size"></property> + <property name="permission">protected</property> + <property name="pin_button">1</property> + <property name="pos"></property> + <property name="resize">Resizable</property> + <property name="selection">-1</property> + <property name="show">1</property> + <property name="size"></property> + <property name="style"></property> + <property name="subclass"></property> + <property name="toolbar_pane">0</property> + <property name="tooltip"></property> + <property name="validator_data_type"></property> + <property name="validator_style">wxFILTER_NONE</property> + <property name="validator_type">wxDefaultValidator</property> + <property name="validator_variable"></property> + <property name="value">Combo!</property> + <property name="window_extra_style"></property> + <property name="window_name"></property> + <property name="window_style"></property> + <event name="OnChar"></event> + <event name="OnCombobox">OnPortSelect</event> + <event name="OnEnterWindow"></event> + <event name="OnEraseBackground"></event> + <event name="OnKeyDown"></event> + <event name="OnKeyUp"></event> + <event name="OnKillFocus"></event> + <event name="OnLeaveWindow"></event> + <event name="OnLeftDClick"></event> + <event name="OnLeftDown"></event> + <event name="OnLeftUp"></event> + <event name="OnMiddleDClick"></event> + <event name="OnMiddleDown"></event> + <event name="OnMiddleUp"></event> + <event name="OnMotion"></event> + <event name="OnMouseEvents"></event> + <event name="OnMouseWheel"></event> + <event name="OnPaint"></event> + <event name="OnRightDClick"></event> + <event name="OnRightDown"></event> + <event name="OnRightUp"></event> + <event name="OnSetFocus"></event> + <event name="OnSize"></event> + <event name="OnText"></event> + <event name="OnTextEnter"></event> + <event name="OnUpdateUI"></event> + </object> + </object> + </object> + </object> + </object> + </object> + </object> + </object> + </object> + </object> + <object class="sizeritem" expanded="1"> + <property name="border">5</property> + <property name="flag">wxEXPAND</property> + <property name="proportion">0</property> + <object class="wxStaticBoxSizer" expanded="0"> + <property name="id">wxID_ANY</property> + <property name="label">Operation</property> + <property name="minimum_size"></property> + <property name="name">sbSizer2</property> + <property name="orient">wxVERTICAL</property> + <property name="permission">none</property> + <event name="OnUpdateUI"></event> + <object class="sizeritem" expanded="0"> + <property name="border">5</property> + <property name="flag">wxALIGN_CENTER_HORIZONTAL|wxALL|wxEXPAND</property> + <property name="proportion">1</property> + <object class="wxToggleButton" expanded="0"> + <property name="BottomDockable">1</property> + <property name="LeftDockable">1</property> + <property name="RightDockable">1</property> + <property name="TopDockable">1</property> + <property name="aui_layer"></property> + <property name="aui_name"></property> + <property name="aui_position"></property> + <property name="aui_row"></property> + <property name="best_size"></property> + <property name="bg"></property> + <property name="caption"></property> + <property name="caption_visible">1</property> + <property name="center_pane">0</property> + <property name="close_button">1</property> + <property name="context_help"></property> + <property name="context_menu">1</property> + <property name="default_pane">0</property> + <property name="dock">Dock</property> + <property name="dock_fixed">0</property> + <property name="docking">Left</property> + <property name="enabled">1</property> + <property name="fg"></property> + <property name="floatable">1</property> + <property name="font"></property> + <property name="gripper">0</property> + <property name="hidden">0</property> + <property name="id">wxID_ANY</property> + <property name="label">Start</property> + <property name="max_size"></property> + <property name="maximize_button">0</property> + <property name="maximum_size"></property> + <property name="min_size"></property> + <property name="minimize_button">0</property> + <property name="minimum_size"></property> + <property name="moveable">1</property> + <property name="name">m_toggleStartStop</property> + <property name="pane_border">1</property> + <property name="pane_position"></property> + <property name="pane_size"></property> + <property name="permission">protected</property> + <property name="pin_button">1</property> + <property name="pos"></property> + <property name="resize">Resizable</property> + <property name="show">1</property> + <property name="size"></property> + <property name="subclass"></property> + <property name="toolbar_pane">0</property> + <property name="tooltip"></property> + <property name="validator_data_type"></property> + <property name="validator_style">wxFILTER_NONE</property> + <property name="validator_type">wxDefaultValidator</property> + <property name="validator_variable"></property> + <property name="value">0</property> + <property name="window_extra_style"></property> + <property name="window_name"></property> + <property name="window_style"></property> + <event name="OnChar"></event> + <event name="OnEnterWindow"></event> + <event name="OnEraseBackground"></event> + <event name="OnKeyDown"></event> + <event name="OnKeyUp"></event> + <event name="OnKillFocus"></event> + <event name="OnLeaveWindow"></event> + <event name="OnLeftDClick"></event> + <event name="OnLeftDown"></event> + <event name="OnLeftUp"></event> + <event name="OnMiddleDClick"></event> + <event name="OnMiddleDown"></event> + <event name="OnMiddleUp"></event> + <event name="OnMotion"></event> + <event name="OnMouseEvents"></event> + <event name="OnMouseWheel"></event> + <event name="OnPaint"></event> + <event name="OnRightDClick"></event> + <event name="OnRightDown"></event> + <event name="OnRightUp"></event> + <event name="OnSetFocus"></event> + <event name="OnSize"></event> + <event name="OnToggleButton">OnToggleStartStop</event> + <event name="OnUpdateUI"></event> + </object> + </object> + <object class="sizeritem" expanded="0"> + <property name="border">5</property> + <property name="flag">wxALIGN_CENTER_HORIZONTAL|wxALL|wxEXPAND</property> + <property name="proportion">2</property> + <object class="wxToggleButton" expanded="0"> + <property name="BottomDockable">1</property> + <property name="LeftDockable">1</property> + <property name="RightDockable">1</property> + <property name="TopDockable">1</property> + <property name="aui_layer"></property> + <property name="aui_name"></property> + <property name="aui_position"></property> + <property name="aui_row"></property> + <property name="best_size"></property> + <property name="bg"></property> + <property name="caption"></property> + <property name="caption_visible">1</property> + <property name="center_pane">0</property> + <property name="close_button">1</property> + <property name="context_help"></property> + <property name="context_menu">1</property> + <property name="default_pane">0</property> + <property name="dock">Dock</property> + <property name="dock_fixed">0</property> + <property name="docking">Left</property> + <property name="enabled">1</property> + <property name="fg"></property> + <property name="floatable">1</property> + <property name="font"></property> + <property name="gripper">0</property> + <property name="hidden">0</property> + <property name="id">wxID_ANY</property> + <property name="label">Tx</property> + <property name="max_size"></property> + <property name="maximize_button">0</property> + <property name="maximum_size"></property> + <property name="min_size"></property> + <property name="minimize_button">0</property> + <property name="minimum_size"></property> + <property name="moveable">1</property> + <property name="name">m_toggleRxTx</property> + <property name="pane_border">1</property> + <property name="pane_position"></property> + <property name="pane_size"></property> + <property name="permission">protected</property> + <property name="pin_button">1</property> + <property name="pos"></property> + <property name="resize">Resizable</property> + <property name="show">1</property> + <property name="size"></property> + <property name="subclass"></property> + <property name="toolbar_pane">0</property> + <property name="tooltip"></property> + <property name="validator_data_type"></property> + <property name="validator_style">wxFILTER_NONE</property> + <property name="validator_type">wxDefaultValidator</property> + <property name="validator_variable"></property> + <property name="value">0</property> + <property name="window_extra_style"></property> + <property name="window_name"></property> + <property name="window_style"></property> + <event name="OnChar"></event> + <event name="OnEnterWindow"></event> + <event name="OnEraseBackground"></event> + <event name="OnKeyDown"></event> + <event name="OnKeyUp"></event> + <event name="OnKillFocus"></event> + <event name="OnLeaveWindow"></event> + <event name="OnLeftDClick"></event> + <event name="OnLeftDown"></event> + <event name="OnLeftUp"></event> + <event name="OnMiddleDClick"></event> + <event name="OnMiddleDown"></event> + <event name="OnMiddleUp"></event> + <event name="OnMotion"></event> + <event name="OnMouseEvents"></event> + <event name="OnMouseWheel"></event> + <event name="OnPaint"></event> + <event name="OnRightDClick"></event> + <event name="OnRightDown"></event> + <event name="OnRightUp"></event> + <event name="OnSetFocus"></event> + <event name="OnSize"></event> + <event name="OnToggleButton">OnToggleRxRx</event> + <event name="OnUpdateUI"></event> + </object> + </object> + </object> + </object> + </object> + </object> + <object class="sizeritem" expanded="1"> + <property name="border">5</property> + <property name="flag">wxEXPAND | wxALL</property> + <property name="proportion">0</property> + <object class="wxStaticLine" expanded="1"> + <property name="BottomDockable">1</property> + <property name="LeftDockable">1</property> + <property name="RightDockable">1</property> + <property name="TopDockable">1</property> + <property name="aui_layer"></property> + <property name="aui_name"></property> + <property name="aui_position"></property> + <property name="aui_row"></property> + <property name="best_size"></property> + <property name="bg"></property> + <property name="caption"></property> + <property name="caption_visible">1</property> + <property name="center_pane">0</property> + <property name="close_button">1</property> + <property name="context_help"></property> + <property name="context_menu">1</property> + <property name="default_pane">0</property> + <property name="dock">Dock</property> + <property name="dock_fixed">0</property> + <property name="docking">Left</property> + <property name="enabled">1</property> + <property name="fg"></property> + <property name="floatable">1</property> + <property name="font"></property> + <property name="gripper">0</property> + <property name="hidden">0</property> + <property name="id">wxID_ANY</property> + <property name="max_size"></property> + <property name="maximize_button">0</property> + <property name="maximum_size"></property> + <property name="min_size"></property> + <property name="minimize_button">0</property> + <property name="minimum_size"></property> + <property name="moveable">1</property> + <property name="name">m_staticLine</property> + <property name="pane_border">1</property> + <property name="pane_position"></property> + <property name="pane_size"></property> + <property name="permission">protected</property> + <property name="pin_button">1</property> + <property name="pos"></property> + <property name="resize">Resizable</property> + <property name="show">1</property> + <property name="size"></property> + <property name="style">wxLI_HORIZONTAL</property> + <property name="subclass"></property> + <property name="toolbar_pane">0</property> + <property name="tooltip"></property> + <property name="validator_data_type"></property> + <property name="validator_style">wxFILTER_NONE</property> + <property name="validator_type">wxDefaultValidator</property> + <property name="validator_variable"></property> + <property name="window_extra_style"></property> + <property name="window_name"></property> + <property name="window_style"></property> + <event name="OnChar"></event> + <event name="OnEnterWindow"></event> + <event name="OnEraseBackground"></event> + <event name="OnKeyDown"></event> + <event name="OnKeyUp"></event> + <event name="OnKillFocus"></event> + <event name="OnLeaveWindow"></event> + <event name="OnLeftDClick"></event> + <event name="OnLeftDown"></event> + <event name="OnLeftUp"></event> + <event name="OnMiddleDClick"></event> + <event name="OnMiddleDown"></event> + <event name="OnMiddleUp"></event> + <event name="OnMotion"></event> + <event name="OnMouseEvents"></event> + <event name="OnMouseWheel"></event> + <event name="OnPaint"></event> + <event name="OnRightDClick"></event> + <event name="OnRightDown"></event> + <event name="OnRightUp"></event> + <event name="OnSetFocus"></event> + <event name="OnSize"></event> + <event name="OnUpdateUI"></event> + </object> + </object> + <object class="sizeritem" expanded="1"> + <property name="border">5</property> + <property name="flag">wxALIGN_RIGHT|wxBOTTOM|wxRIGHT</property> + <property name="proportion">0</property> + <object class="wxStdDialogButtonSizer" expanded="1"> + <property name="Apply">0</property> + <property name="Cancel">1</property> + <property name="ContextHelp">0</property> + <property name="Help">0</property> + <property name="No">0</property> + <property name="OK">0</property> + <property name="Save">0</property> + <property name="Yes">0</property> + <property name="minimum_size"></property> + <property name="name">m_sdbSizer</property> + <property name="permission">protected</property> + <event name="OnApplyButtonClick"></event> + <event name="OnCancelButtonClick">OnCancelClick</event> + <event name="OnContextHelpButtonClick"></event> + <event name="OnHelpButtonClick"></event> + <event name="OnNoButtonClick"></event> + <event name="OnOKButtonClick"></event> + <event name="OnSaveButtonClick"></event> + <event name="OnYesButtonClick"></event> + </object> + </object> + </object> + </object> + </object> +</wxFormBuilder_Project> diff --git a/fdmdv2/fdmdv2basic/gui.fbp.bak b/fdmdv2/fdmdv2basic/gui.fbp.bak new file mode 100644 index 00000000..fb922976 --- /dev/null +++ b/fdmdv2/fdmdv2basic/gui.fbp.bak @@ -0,0 +1,175 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> +<wxFormBuilder_Project> + <FileVersion major="1" minor="9" /> + <object class="Project" expanded="1"> + <property name="class_decoration"></property> + <property name="code_generation">C++</property> + <property name="disconnect_events">1</property> + <property name="encoding">UTF-8</property> + <property name="event_generation">connect</property> + <property name="event_handler">impl_virtual</property> + <property name="file">gui</property> + <property name="first_id">1000</property> + <property name="help_provider">none</property> + <property name="internationalize">1</property> + <property name="name">gui</property> + <property name="namespace"></property> + <property name="path">.</property> + <property name="precompiled_header"></property> + <property name="relative_path">1</property> + <property name="use_enum">0</property> + <property name="use_microsoft_bom">0</property> + <object class="Dialog" expanded="1"> + <property name="bg"></property> + <property name="center">wxBOTH</property> + <property name="context_help"></property> + <property name="enabled">1</property> + <property name="extra_style"></property> + <property name="fg"></property> + <property name="font"></property> + <property name="hidden">0</property> + <property name="id">wxID_ANY</property> + <property name="maximum_size"></property> + <property name="minimum_size">-1,-1</property> + <property name="name">MainDialogBase</property> + <property name="pos"></property> + <property name="size">400,300</property> + <property name="style">wxCLOSE_BOX|wxDEFAULT_DIALOG_STYLE</property> + <property name="subclass"></property> + <property name="title">wxMiniApp</property> + <property name="tooltip"></property> + <property name="validator_data_type"></property> + <property name="validator_style">wxFILTER_NONE</property> + <property name="validator_type">wxDefaultValidator</property> + <property name="validator_variable"></property> + <property name="window_extra_style"></property> + <property name="window_name"></property> + <property name="window_style"></property> + <event name="OnActivate"></event> + <event name="OnActivateApp"></event> + <event name="OnChar"></event> + <event name="OnClose">OnCloseDialog</event> + <event name="OnEnterWindow"></event> + <event name="OnEraseBackground"></event> + <event name="OnHibernate"></event> + <event name="OnIconize"></event> + <event name="OnIdle"></event> + <event name="OnInitDialog"></event> + <event name="OnKeyDown"></event> + <event name="OnKeyUp"></event> + <event name="OnKillFocus"></event> + <event name="OnLeaveWindow"></event> + <event name="OnLeftDClick"></event> + <event name="OnLeftDown"></event> + <event name="OnLeftUp"></event> + <event name="OnMiddleDClick"></event> + <event name="OnMiddleDown"></event> + <event name="OnMiddleUp"></event> + <event name="OnMotion"></event> + <event name="OnMouseEvents"></event> + <event name="OnMouseWheel"></event> + <event name="OnPaint"></event> + <event name="OnRightDClick"></event> + <event name="OnRightDown"></event> + <event name="OnRightUp"></event> + <event name="OnSetFocus"></event> + <event name="OnSize"></event> + <event name="OnUpdateUI"></event> + <object class="wxBoxSizer" expanded="1"> + <property name="minimum_size"></property> + <property name="name">mainSizer</property> + <property name="orient">wxVERTICAL</property> + <property name="permission">none</property> + <object class="sizeritem" expanded="1"> + <property name="border">5</property> + <property name="flag">wxEXPAND</property> + <property name="proportion">1</property> + <object class="spacer" expanded="1"> + <property name="height">0</property> + <property name="permission">protected</property> + <property name="width">0</property> + </object> + </object> + <object class="sizeritem" expanded="1"> + <property name="border">5</property> + <property name="flag">wxEXPAND | wxALL</property> + <property name="proportion">0</property> + <object class="wxStaticLine" expanded="1"> + <property name="bg"></property> + <property name="context_help"></property> + <property name="enabled">1</property> + <property name="fg"></property> + <property name="font"></property> + <property name="hidden">0</property> + <property name="id">wxID_ANY</property> + <property name="maximum_size"></property> + <property name="minimum_size"></property> + <property name="name">m_staticLine</property> + <property name="permission">protected</property> + <property name="pos"></property> + <property name="size"></property> + <property name="style">wxLI_HORIZONTAL</property> + <property name="subclass"></property> + <property name="tooltip"></property> + <property name="validator_data_type"></property> + <property name="validator_style">wxFILTER_NONE</property> + <property name="validator_type">wxDefaultValidator</property> + <property name="validator_variable"></property> + <property name="window_extra_style"></property> + <property name="window_name"></property> + <property name="window_style"></property> + <event name="OnChar"></event> + <event name="OnEnterWindow"></event> + <event name="OnEraseBackground"></event> + <event name="OnKeyDown"></event> + <event name="OnKeyUp"></event> + <event name="OnKillFocus"></event> + <event name="OnLeaveWindow"></event> + <event name="OnLeftDClick"></event> + <event name="OnLeftDown"></event> + <event name="OnLeftUp"></event> + <event name="OnMiddleDClick"></event> + <event name="OnMiddleDown"></event> + <event name="OnMiddleUp"></event> + <event name="OnMotion"></event> + <event name="OnMouseEvents"></event> + <event name="OnMouseWheel"></event> + <event name="OnPaint"></event> + <event name="OnRightDClick"></event> + <event name="OnRightDown"></event> + <event name="OnRightUp"></event> + <event name="OnSetFocus"></event> + <event name="OnSize"></event> + <event name="OnUpdateUI"></event> + </object> + </object> + <object class="sizeritem" expanded="1"> + <property name="border">5</property> + <property name="flag">wxALIGN_RIGHT|wxBOTTOM|wxRIGHT</property> + <property name="proportion">0</property> + <object class="wxStdDialogButtonSizer" expanded="1"> + <property name="Apply">0</property> + <property name="Cancel">1</property> + <property name="ContextHelp">0</property> + <property name="Help">0</property> + <property name="No">0</property> + <property name="OK">1</property> + <property name="Save">0</property> + <property name="Yes">0</property> + <property name="minimum_size"></property> + <property name="name">m_sdbSizer</property> + <property name="permission">protected</property> + <event name="OnApplyButtonClick"></event> + <event name="OnCancelButtonClick">OnCancelClick</event> + <event name="OnContextHelpButtonClick"></event> + <event name="OnHelpButtonClick"></event> + <event name="OnNoButtonClick"></event> + <event name="OnOKButtonClick">OnOKClick</event> + <event name="OnSaveButtonClick"></event> + <event name="OnYesButtonClick"></event> + </object> + </object> + </object> + </object> + </object> +</wxFormBuilder_Project> diff --git a/fdmdv2/fdmdv2basic/gui.h b/fdmdv2/fdmdv2basic/gui.h new file mode 100644 index 00000000..a32529e6 --- /dev/null +++ b/fdmdv2/fdmdv2basic/gui.h @@ -0,0 +1,82 @@ +/////////////////////////////////////////////////////////////////////////// +// C++ code generated with wxFormBuilder (version Mar 17 2012) +// http://www.wxformbuilder.org/ +// +// PLEASE DO "NOT" EDIT THIS FILE! +/////////////////////////////////////////////////////////////////////////// + +#ifndef __GUI_H__ +#define __GUI_H__ + +#include <wx/artprov.h> +#include <wx/xrc/xmlres.h> +#include <wx/intl.h> +#include <wx/string.h> +#include <wx/stattext.h> +#include <wx/gdicmn.h> +#include <wx/font.h> +#include <wx/colour.h> +#include <wx/settings.h> +#include <wx/combobox.h> +#include <wx/sizer.h> +#include <wx/statbox.h> +#include <wx/tglbtn.h> +#include <wx/statline.h> +#include <wx/button.h> +#include <wx/dialog.h> + +/////////////////////////////////////////////////////////////////////////// + + +/////////////////////////////////////////////////////////////////////////////// +/// Class MainDialogBase +/////////////////////////////////////////////////////////////////////////////// +class MainDialogBase : public wxDialog +{ + private: + + protected: + wxStaticText* m_staticText1; + wxComboBox* m_comboRxIn; + wxStaticText* m_staticText2; + wxComboBox* m_comboRxOut; + wxStaticText* m_staticText3; + wxComboBox* m_comboTxIn; + wxStaticText* m_staticText4; + wxComboBox* m_comboTxOut; + wxStaticText* m_staticText111; + wxComboBox* m_comboBox111; + wxStaticText* m_staticText211; + wxComboBox* m_comboBox211; + wxStaticText* m_staticText11; + wxComboBox* m_comboBox11; + wxStaticText* m_staticText21; + wxComboBox* m_comboBox21; + wxToggleButton* m_toggleStartStop; + wxToggleButton* m_toggleRxTx; + wxStaticLine* m_staticLine; + wxStdDialogButtonSizer* m_sdbSizer; + wxButton* m_sdbSizerCancel; + + // Virtual event handlers, overide them in your derived class + virtual void OnCloseDialog( wxCloseEvent& event ) { event.Skip(); } + virtual void OnInitDialog( wxInitDialogEvent& event ) { event.Skip(); } + virtual void OnRxInSelect( wxCommandEvent& event ) { event.Skip(); } + virtual void OnRxOutSelect( wxCommandEvent& event ) { event.Skip(); } + virtual void OnTxInSelect( wxCommandEvent& event ) { event.Skip(); } + virtual void OnTxOutSelect( wxCommandEvent& event ) { event.Skip(); } + virtual void OnRadioSelect( wxCommandEvent& event ) { event.Skip(); } + virtual void OnPortSelect( wxCommandEvent& event ) { event.Skip(); } + virtual void OnToggleStartStop( wxCommandEvent& event ) { event.Skip(); } + virtual void OnToggleRxRx( wxCommandEvent& event ) { event.Skip(); } + virtual void OnCancelClick( wxCommandEvent& event ) { event.Skip(); } + + + public: + + MainDialogBase( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("FDMDV2Basic"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 523,526 ), long style = wxCLOSE_BOX|wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER ); + ~MainDialogBase(); + +}; + +#endif //__GUI_H__ diff --git a/fdmdv2/fdmdv2basic/gui.py b/fdmdv2/fdmdv2basic/gui.py new file mode 100644 index 00000000..e2052cbe --- /dev/null +++ b/fdmdv2/fdmdv2basic/gui.py @@ -0,0 +1,216 @@ +# -*- coding: utf-8 -*- + +########################################################################### +## Python code generated with wxFormBuilder (version Mar 17 2012) +## http://www.wxformbuilder.org/ +## +## PLEASE DO "NOT" EDIT THIS FILE! +########################################################################### + +import wx +import wx.xrc + +import gettext +_ = gettext.gettext + +########################################################################### +## Class MainDialogBase +########################################################################### + +class MainDialogBase ( wx.Dialog ): + + def __init__( self, parent ): + wx.Dialog.__init__ ( self, parent, id = wx.ID_ANY, title = _(u"FDMDV2Basic"), pos = wx.DefaultPosition, size = wx.Size( 523,526 ), style = wx.CLOSE_BOX|wx.DEFAULT_DIALOG_STYLE|wx.RESIZE_BORDER ) + + self.SetSizeHintsSz( wx.Size( -1,-1 ), wx.DefaultSize ) + + mainSizer = wx.BoxSizer( wx.VERTICAL ) + + bSizer2 = wx.BoxSizer( wx.HORIZONTAL ) + + sbSizer1 = wx.StaticBoxSizer( wx.StaticBox( self, wx.ID_ANY, _(u"Settings") ), wx.VERTICAL ) + + gSizer4 = wx.GridSizer( 3, 1, 0, 0 ) + + sbSizer3 = wx.StaticBoxSizer( wx.StaticBox( self, wx.ID_ANY, _(u"Audio") ), wx.VERTICAL ) + + gSizer1 = wx.GridSizer( 4, 2, 0, 0 ) + + self.m_staticText1 = wx.StaticText( self, wx.ID_ANY, _(u"Rx In (radio):"), wx.DefaultPosition, wx.DefaultSize, 0 ) + self.m_staticText1.Wrap( -1 ) + gSizer1.Add( self.m_staticText1, 0, wx.ALIGN_CENTER_VERTICAL|wx.ALIGN_RIGHT|wx.ALL, 5 ) + + m_comboRxInChoices = [] + self.m_comboRxIn = wx.ComboBox( self, wx.ID_ANY, _(u"<default>"), wx.DefaultPosition, wx.DefaultSize, m_comboRxInChoices, 0 ) + gSizer1.Add( self.m_comboRxIn, 1, wx.ALIGN_CENTER_VERTICAL|wx.ALL|wx.EXPAND, 2 ) + + self.m_staticText2 = wx.StaticText( self, wx.ID_ANY, _(u"Rx Out (spkr):"), wx.DefaultPosition, wx.DefaultSize, 0 ) + self.m_staticText2.Wrap( -1 ) + gSizer1.Add( self.m_staticText2, 0, wx.ALIGN_CENTER_VERTICAL|wx.ALIGN_RIGHT|wx.ALL, 5 ) + + m_comboRxOutChoices = [] + self.m_comboRxOut = wx.ComboBox( self, wx.ID_ANY, _(u"<default>"), wx.DefaultPosition, wx.DefaultSize, m_comboRxOutChoices, 0 ) + gSizer1.Add( self.m_comboRxOut, 1, wx.ALIGN_CENTER_VERTICAL|wx.ALL|wx.EXPAND, 2 ) + + self.m_staticText3 = wx.StaticText( self, wx.ID_ANY, _(u"Tx In (mic):"), wx.DefaultPosition, wx.DefaultSize, 0 ) + self.m_staticText3.Wrap( -1 ) + gSizer1.Add( self.m_staticText3, 0, wx.ALIGN_CENTER_VERTICAL|wx.ALIGN_RIGHT|wx.ALL, 5 ) + + m_comboTxInChoices = [] + self.m_comboTxIn = wx.ComboBox( self, wx.ID_ANY, _(u"<default>"), wx.DefaultPosition, wx.DefaultSize, m_comboTxInChoices, 0 ) + gSizer1.Add( self.m_comboTxIn, 1, wx.ALIGN_CENTER_VERTICAL|wx.ALL|wx.EXPAND, 2 ) + + self.m_staticText4 = wx.StaticText( self, wx.ID_ANY, _(u"Tx Out (radio):"), wx.DefaultPosition, wx.DefaultSize, 0 ) + self.m_staticText4.Wrap( -1 ) + gSizer1.Add( self.m_staticText4, 0, wx.ALIGN_CENTER_VERTICAL|wx.ALIGN_RIGHT|wx.ALL, 5 ) + + m_comboTxOutChoices = [] + self.m_comboTxOut = wx.ComboBox( self, wx.ID_ANY, _(u"<default>"), wx.DefaultPosition, wx.DefaultSize, m_comboTxOutChoices, 0 ) + gSizer1.Add( self.m_comboTxOut, 1, wx.ALIGN_CENTER_VERTICAL|wx.ALL|wx.EXPAND, 2 ) + + + sbSizer3.Add( gSizer1, 0, wx.ALIGN_CENTER_HORIZONTAL|wx.EXPAND|wx.FIXED_MINSIZE, 2 ) + + + gSizer4.Add( sbSizer3, 1, wx.ALIGN_CENTER|wx.ALIGN_CENTER_HORIZONTAL|wx.EXPAND|wx.FIXED_MINSIZE, 5 ) + + sbSizer4 = wx.StaticBoxSizer( wx.StaticBox( self, wx.ID_ANY, _(u"label") ), wx.VERTICAL ) + + gSizer111 = wx.GridSizer( 2, 2, 0, 0 ) + + self.m_staticText111 = wx.StaticText( self, wx.ID_ANY, _(u"Rate:"), wx.DefaultPosition, wx.DefaultSize, 0 ) + self.m_staticText111.Wrap( -1 ) + gSizer111.Add( self.m_staticText111, 0, wx.ALIGN_CENTER_VERTICAL|wx.ALIGN_RIGHT|wx.ALL, 5 ) + + m_comboBox111Choices = [] + self.m_comboBox111 = wx.ComboBox( self, wx.ID_ANY, _(u"Combo!"), wx.DefaultPosition, wx.DefaultSize, m_comboBox111Choices, 0 ) + gSizer111.Add( self.m_comboBox111, 1, wx.ALIGN_CENTER_VERTICAL|wx.ALL|wx.EXPAND, 2 ) + + self.m_staticText211 = wx.StaticText( self, wx.ID_ANY, _(u"MyLabel"), wx.DefaultPosition, wx.DefaultSize, 0 ) + self.m_staticText211.Wrap( -1 ) + gSizer111.Add( self.m_staticText211, 0, wx.ALIGN_CENTER_VERTICAL|wx.ALIGN_RIGHT|wx.ALL, 5 ) + + m_comboBox211Choices = [] + self.m_comboBox211 = wx.ComboBox( self, wx.ID_ANY, _(u"Combo!"), wx.DefaultPosition, wx.DefaultSize, m_comboBox211Choices, 0 ) + gSizer111.Add( self.m_comboBox211, 1, wx.ALIGN_CENTER_VERTICAL|wx.ALL|wx.EXPAND, 2 ) + + + sbSizer4.Add( gSizer111, 0, wx.ALIGN_CENTER|wx.EXPAND|wx.FIXED_MINSIZE, 2 ) + + + gSizer4.Add( sbSizer4, 1, wx.EXPAND|wx.FIXED_MINSIZE, 5 ) + + sbSizer5 = wx.StaticBoxSizer( wx.StaticBox( self, wx.ID_ANY, _(u"Comm Port") ), wx.VERTICAL ) + + gSizer11 = wx.GridSizer( 2, 2, 0, 0 ) + + self.m_staticText11 = wx.StaticText( self, wx.ID_ANY, _(u"Radio:"), wx.DefaultPosition, wx.DefaultSize, 0 ) + self.m_staticText11.Wrap( -1 ) + gSizer11.Add( self.m_staticText11, 0, wx.ALIGN_CENTER_VERTICAL|wx.ALIGN_RIGHT|wx.ALL, 5 ) + + m_comboBox11Choices = [] + self.m_comboBox11 = wx.ComboBox( self, wx.ID_ANY, _(u"Combo!"), wx.DefaultPosition, wx.DefaultSize, m_comboBox11Choices, 0 ) + gSizer11.Add( self.m_comboBox11, 1, wx.ALIGN_CENTER_VERTICAL|wx.ALL|wx.EXPAND, 2 ) + + self.m_staticText21 = wx.StaticText( self, wx.ID_ANY, _(u"Port:"), wx.DefaultPosition, wx.DefaultSize, 0 ) + self.m_staticText21.Wrap( -1 ) + gSizer11.Add( self.m_staticText21, 0, wx.ALIGN_CENTER_VERTICAL|wx.ALIGN_RIGHT|wx.ALL, 5 ) + + m_comboBox21Choices = [] + self.m_comboBox21 = wx.ComboBox( self, wx.ID_ANY, _(u"Combo!"), wx.DefaultPosition, wx.DefaultSize, m_comboBox21Choices, 0 ) + gSizer11.Add( self.m_comboBox21, 1, wx.ALIGN_CENTER_VERTICAL|wx.ALL|wx.EXPAND, 2 ) + + + sbSizer5.Add( gSizer11, 0, wx.ALIGN_CENTER|wx.EXPAND|wx.FIXED_MINSIZE, 2 ) + + + gSizer4.Add( sbSizer5, 1, wx.ALIGN_CENTER_HORIZONTAL|wx.EXPAND, 5 ) + + + sbSizer1.Add( gSizer4, 1, wx.EXPAND, 5 ) + + + bSizer2.Add( sbSizer1, 1, wx.EXPAND, 5 ) + + sbSizer2 = wx.StaticBoxSizer( wx.StaticBox( self, wx.ID_ANY, _(u"Operation") ), wx.VERTICAL ) + + self.m_toggleStartStop = wx.ToggleButton( self, wx.ID_ANY, _(u"Start"), wx.DefaultPosition, wx.DefaultSize, 0 ) + sbSizer2.Add( self.m_toggleStartStop, 1, wx.ALIGN_CENTER_HORIZONTAL|wx.ALL|wx.EXPAND, 5 ) + + self.m_toggleRxTx = wx.ToggleButton( self, wx.ID_ANY, _(u"Tx"), wx.DefaultPosition, wx.DefaultSize, 0 ) + sbSizer2.Add( self.m_toggleRxTx, 2, wx.ALIGN_CENTER_HORIZONTAL|wx.ALL|wx.EXPAND, 5 ) + + + bSizer2.Add( sbSizer2, 0, wx.EXPAND, 5 ) + + + mainSizer.Add( bSizer2, 1, wx.EXPAND, 5 ) + + self.m_staticLine = wx.StaticLine( self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.LI_HORIZONTAL ) + mainSizer.Add( self.m_staticLine, 0, wx.EXPAND |wx.ALL, 5 ) + + m_sdbSizer = wx.StdDialogButtonSizer() + self.m_sdbSizerCancel = wx.Button( self, wx.ID_CANCEL ) + m_sdbSizer.AddButton( self.m_sdbSizerCancel ) + m_sdbSizer.Realize(); + + mainSizer.Add( m_sdbSizer, 0, wx.ALIGN_RIGHT|wx.BOTTOM|wx.RIGHT, 5 ) + + + self.SetSizer( mainSizer ) + self.Layout() + + self.Centre( wx.BOTH ) + + # Connect Events + self.Bind( wx.EVT_CLOSE, self.OnCloseDialog ) + self.Bind( wx.EVT_INIT_DIALOG, self.OnInitDialog ) + self.m_comboRxIn.Bind( wx.EVT_COMBOBOX, self.OnRxInSelect ) + self.m_comboRxOut.Bind( wx.EVT_COMBOBOX, self.OnRxOutSelect ) + self.m_comboTxIn.Bind( wx.EVT_COMBOBOX, self.OnTxInSelect ) + self.m_comboTxOut.Bind( wx.EVT_COMBOBOX, self.OnTxOutSelect ) + self.m_comboBox11.Bind( wx.EVT_COMBOBOX, self.OnRadioSelect ) + self.m_comboBox21.Bind( wx.EVT_COMBOBOX, self.OnPortSelect ) + self.m_toggleStartStop.Bind( wx.EVT_TOGGLEBUTTON, self.OnToggleStartStop ) + self.m_toggleRxTx.Bind( wx.EVT_TOGGLEBUTTON, self.OnToggleRxRx ) + self.m_sdbSizerCancel.Bind( wx.EVT_BUTTON, self.OnCancelClick ) + + def __del__( self ): + pass + + + # Virtual event handlers, overide them in your derived class + def OnCloseDialog( self, event ): + event.Skip() + + def OnInitDialog( self, event ): + event.Skip() + + def OnRxInSelect( self, event ): + event.Skip() + + def OnRxOutSelect( self, event ): + event.Skip() + + def OnTxInSelect( self, event ): + event.Skip() + + def OnTxOutSelect( self, event ): + event.Skip() + + def OnRadioSelect( self, event ): + event.Skip() + + def OnPortSelect( self, event ): + event.Skip() + + def OnToggleStartStop( self, event ): + event.Skip() + + def OnToggleRxRx( self, event ): + event.Skip() + + def OnCancelClick( self, event ): + event.Skip() + + diff --git a/fdmdv2/fdmdv2basic/main.cpp b/fdmdv2/fdmdv2basic/main.cpp new file mode 100644 index 00000000..a8578d29 --- /dev/null +++ b/fdmdv2/fdmdv2basic/main.cpp @@ -0,0 +1,545 @@ +/********************************************************************* + * Name: main.cpp + * Purpose: Implements simple wxWidgets application with GUI + * created using wxFormBuilder. + * Author: + * Created: + * Copyright: + * License: wxWidgets license (www.wxwidgets.org) + * + * Notes: Note that all GUI creation code is implemented in + * gui.cpp source file which is generated by wxFormBuilder. + *********************************************************************/ + +#include "main.h" + +// initialize the application +IMPLEMENT_APP(MainApp); + +//////////////////////////////////////////////////////////////////////////////// +// application class implementation +//////////////////////////////////////////////////////////////////////////////// + +bool MainApp::OnInit() +{ + SetTopWindow( new MainDialog( NULL ) ); + GetTopWindow()->Show(); + + // true = enter the main loop + return true; +} + +//////////////////////////////////////////////////////////////////////////////// +// main application frame implementation +//////////////////////////////////////////////////////////////////////////////// + +MainDialog::MainDialog(wxWindow *parent) : MainDialogBase( parent ) +{ + m_RxRunning = false; + m_TxRunning = false; + if(Pa_Initialize()) + { + wxMessageBox(wxT("Port Audio failed to initialize"), wxT("Pa_Initialize"), wxOK); + } +} + +MainDialog::~MainDialog() +{ +} + +void MainDialog::OnInitDialog( wxInitDialogEvent& event ) +{ + populateAudioInfo(); +} + +//------------------------------------------------------------------------- +// populateStandardSampleRates() +//------------------------------------------------------------------------- +void MainDialog::populateStandardSampleRates( + wxComboBox* target, + const portaudio::DirectionSpecificStreamParameters &inputParameters, + const portaudio::DirectionSpecificStreamParameters &outputParameters) +{ + static double STANDARD_SAMPLE_RATES[] = { + 8000.0, 9600.0, 11025.0, 12000.0, + 16000.0, 22050.0, 24000.0, 32000.0, + 44100.0, 48000.0, 88200.0, 96000.0, + -1 // negative terminated list + }; + int printCount = 0; + wxString tStr; + + for (int i = 0; STANDARD_SAMPLE_RATES[i] > 0; ++i) + { + portaudio::StreamParameters tmp = portaudio::StreamParameters(inputParameters, outputParameters, STANDARD_SAMPLE_RATES[i], 0, paNoFlag); + if (tmp.isSupported()) + { + tStr.Printf("%i %8.2f", printCount, STANDARD_SAMPLE_RATES[i]); + target->Append(tStr); + ++printCount; + } + } + if (printCount == 0) + { + tStr = "None\n"; + target->Append(tStr); + } +} + +//------------------------------------------------------------------------- +// OnActivate() +//------------------------------------------------------------------------- +int MainDialog::populateAudioInfo() +{ + wxString tStr; + wxString ttStr; + try + { + portaudio::AutoSystem autoSys; + portaudio::System &sys = portaudio::System::instance(); +/* + + tStr.Printf("PortAudio version number: %i\n", sys.version()); + m_textTopRight->AppendText(tStr); + + tStr.Printf("PortAudio version number: %s\n", sys.versionText()); + m_textTopRight->AppendText(tStr); + + int numDevices = sys.deviceCount(); + tStr.Printf("Number of devices: %i\n\n", numDevices); + m_textTopRight->AppendText(tStr); +*/ + for (portaudio::System::DeviceIterator i = sys.devicesBegin(); i != sys.devicesEnd(); ++i) + { +/* + tStr.Printf("---------- device #: %i ----------\n", (*i).index()); + m_textTopRight->AppendText(tStr); + bool defaultDisplayed = false; + if ((*i).isSystemDefaultInputDevice()) + { + tStr.Printf("[ System Default Input %s", (*i).hostApi().name()); + m_textTopRight->AppendText(tStr); + defaultDisplayed = true; + } + else if ((*i).isHostApiDefaultInputDevice()) + { + tStr.Printf("[ HostApi Default %s Input", (*i).hostApi().name()); + m_textTopRight->AppendText(tStr); + defaultDisplayed = true; + } + if ((*i).isSystemDefaultOutputDevice()) + { + tStr.Printf(defaultDisplayed ? "," : "["); + m_textTopRight->AppendText(tStr); + tStr = (" System Default Output"); + m_textTopRight->AppendText(tStr); + defaultDisplayed = true; + } + else if ((*i).isHostApiDefaultOutputDevice()) + { + tStr.Printf(defaultDisplayed ? "," : "["); + m_textTopRight->AppendText(tStr); + tStr.Printf(" HostApi Default %s Output", (*i).hostApi().name()); + m_textTopRight->AppendText(tStr); + defaultDisplayed = true; + } + if (defaultDisplayed) + { + tStr = " ]\n"; + m_textTopRight->AppendText(tStr); + } + ttStr.Printf("Name : %s\n", (*i).name()); + tStr += ttStr; + ttStr.Printf("Host API : %s\n", (*i).hostApi().name()); + tStr += ttStr; + ttStr.Printf("Max inputs : %i\n", (*i).maxInputChannels()); + tStr += ttStr; + ttStr.Printf("Max outputs : %i\n\n", (*i).maxOutputChannels()); + tStr += ttStr; + ttStr.Printf("Default low input latency : %8.3f\n", (*i).defaultLowInputLatency()); + tStr += ttStr; + ttStr.Printf("Default low output latency : %8.3f\n", (*i).defaultLowOutputLatency()); + tStr += ttStr; + ttStr.Printf("Default high input latency : %8.3f\n", (*i).defaultHighInputLatency()); + tStr += ttStr; + ttStr.Printf("Default high output latency : %8.3f\n\n", (*i).defaultHighOutputLatency()); + tStr += ttStr; + m_textTopRight->AppendText(tStr); + +#ifdef WIN32_ASIO + // ASIO specific latency information: + if ((*i).hostApi().typeId() == paASIO) + { + portaudio::AsioDeviceAdapter asioDevice((*i)); + //std::cout << "ASIO minimum buffer size = " << asioDevice.minBufferSize() << std::endl; + //std::cout << "ASIO maximum buffer size = " << asioDevice.maxBufferSize() << std::endl; + //std::cout << "ASIO preferred buffer size = " << asioDevice.preferredBufferSize() << std::endl; + if (asioDevice.granularity() == -1) + { + //std::cout << "ASIO buffer granularity = power of 2" << std::endl; + } + else + { + //std::cout << "ASIO buffer granularity = " << asioDevice.granularity() << std::endl; + } + } +#endif // WIN32_ASIO + + tStr.Printf("Default sample rate : %8.2f\n", (*i).defaultSampleRate()); + m_textTopRight->AppendText(tStr); + wxComboBox* m_comboAudioCodec; + wxComboBox* m_comboCodecTx; + wxComboBox* m_comboRadioRx; + wxComboBox* m_comboCodecSpkr; +*/ + // Poll for standard sample rates: + portaudio::DirectionSpecificStreamParameters inputParameters((*i), (*i).maxInputChannels(), portaudio::INT16, true, 0.0, NULL); + portaudio::DirectionSpecificStreamParameters outputParameters((*i), (*i).maxOutputChannels(), portaudio::INT16, true, 0.0, NULL); + if (inputParameters.numChannels() > 0) + { +// tStr = "Supported standard Input sample rates\n"; +// m_comboAudioCodec->Append(tStr); +// tStr.Printf(" for half-duplex 16 bit %i channel input = ", inputParameters.numChannels()); +// m_comboAudioCodec->InsertItems(1, &tStr, 0); +// m_comboAudioCodec->Append(tStr); + populateStandardSampleRates(m_comboRxIn, inputParameters, portaudio::DirectionSpecificStreamParameters::null()); + } + if (outputParameters.numChannels() > 0) + { +// tStr = "Supported standard Output sample rates\n"; +// m_comboRadioRx->Append(tStr); +// tStr.Printf(" for half-duplex 16 bit %i channel output = ", outputParameters.numChannels()); +// m_comboRadioRx->Append(tStr); + populateStandardSampleRates(m_comboRxOut, portaudio::DirectionSpecificStreamParameters::null(), outputParameters); + } + if (inputParameters.numChannels() > 0 && inputParameters.numChannels() > 0) + { +// tStr = "Supported full-duplex sample rates\n"; +// m_comboCodecTx->Append(tStr); +// tStr.Printf(" for full-duplex 16 bit %i channel input, %i", inputParameters.numChannels(), outputParameters.numChannels()); +// m_comboCodecTx->InsertItems(1, &tStr, 0); +// m_comboCodecTx->Append(tStr); + populateStandardSampleRates(m_comboTxIn, inputParameters, outputParameters); + } + if (outputParameters.numChannels() > 0 && outputParameters.numChannels() > 0) + { +// tStr = "Supported full-duplex sample rates\n"; +// m_comboCodecSpkr->Append(tStr); +// tStr.Printf(" for full-duplex 16 bit %i channel input, %i", inputParameters.numChannels(), outputParameters.numChannels()); +// m_comboCodecTx->InsertItems(1, &tStr, 0); + populateStandardSampleRates(m_comboTxOut, inputParameters, outputParameters); + } + } + } + catch (const portaudio::PaException &e) + { + tStr.Printf("A PortAudio error occured: %s\n", e.paErrorText()); + wxMessageBox(tStr, wxT("Portaudio exception"), wxOK); + } + catch (const portaudio::PaCppException &e) + { + tStr.Printf("A PortAudioCpp error occured: %s\n", e.what()); + wxMessageBox(tStr, wxT("PortAudioCpp error"), wxOK); + } + catch (const std::exception &e) + { + tStr.Printf("A generic exception occured: %s\n", e.what()); + wxMessageBox(tStr, wxT("Generic Exception"), wxOK); + } + catch (...) + { + tStr.Printf("An unknown exception occured.\n"); + wxMessageBox(tStr, wxT("Unknown error"), wxOK); + } + return 0; +} + +void MainDialog::OnToggleStartStop( wxCommandEvent& event ) +{ + if((!m_TxRunning) || (!m_RxRunning)) + { + startRxStream(); + startTxStream(); + } + else + { + stopRxStream(); + stopTxStream(); + } +} + +void MainDialog::OnToggleRxRx( wxCommandEvent& event ) +{ +} + +void MainDialog::OnRxInSelect(wxCommandEvent& event) +{ +} + +void MainDialog::OnRxOutSelect(wxCommandEvent& event) +{ +} + +void MainDialog::OnTxInSelect(wxCommandEvent& event) +{ +} + +void MainDialog::OnTxOutSelect(wxCommandEvent& event) +{ +} + +void MainDialog::OnRadioSelect(wxCommandEvent& event) +{ +} + +void MainDialog::OnPortSelect(wxCommandEvent& event) +{ +} + +void MainDialog::OnCloseDialog(wxCloseEvent& event) +{ + Pa_Terminate(); + Destroy(); +} + +void MainDialog::OnOKClick(wxCommandEvent& event) +{ + Pa_Terminate(); + Destroy(); +} + +void MainDialog::OnCancelClick(wxCommandEvent& event) +{ + Pa_Terminate(); + Destroy(); +} + +//------------------------------------------------------------------------- +// rxCallback() +//------------------------------------------------------------------------- +static int rxCallback( const void *inBuffer, + void *outBuffer, + unsigned long framesPerBuffer, + const PaStreamCallbackTimeInfo *outTime, + PaStreamCallbackFlags statusFlags, + void *userData + ) +{ + float *out = (float *) outBuffer; + float *in = (float *) inBuffer; + float leftIn; + float rightIn; + unsigned int i; + + if(inBuffer == NULL) + { + return 0; + } + // Read input buffer, process data, and fill output buffer. + for(i = 0; i < framesPerBuffer; i++) + { + leftIn = *in++; // Get interleaved samples from input buffer. + rightIn = *in++; + *out++ = leftIn * rightIn; // ring modulation + *out++ = 0.5f * (leftIn + rightIn); // mixing + } + return paContinue; // 0; +} + +//------------------------------------------------------------------------- +// txCallback() +//------------------------------------------------------------------------- +static int txCallback( const void *inBuffer, + void *outBuffer, + unsigned long framesPerBuffer, + const PaStreamCallbackTimeInfo *outTime, + PaStreamCallbackFlags statusFlags, + void *userData + ) +{ + float *out = (float *) outBuffer; + float *in = (float *) inBuffer; + float leftIn; + float rightIn; + unsigned int i; + + if(inBuffer == NULL) + { + return 0; + } + // Read input buffer, process data, and fill output buffer. + for(i = 0; i < framesPerBuffer; i++) + { + leftIn = *in++; // Get interleaved samples from input buffer. + rightIn = *in++; + *out++ = leftIn * rightIn; // ring modulation + *out++ = 0.5f * (leftIn + rightIn); // mixing + } + return paContinue; // 0; +} + +//------------------------------------------------------------------------- +// startRxStream() +//------------------------------------------------------------------------- +void MainDialog::startRxStream() +{ + if(!m_RxRunning) + { + m_RxRunning = true; + m_rxPa = new PortAudioWrap(); + + m_rxDevIn = m_rxPa->getDefaultInputDevice(); // default input device + if(m_rxDevIn == paNoDevice) + { + wxMessageBox(wxT("Rx Error: No default input device."), wxT("Error"), wxOK); + return; + } + m_rxErr = m_rxPa->setInputDevice(m_rxDevIn); + m_rxErr = m_rxPa->setInputChannelCount(2); // stereo input + m_rxErr = m_rxPa->setInputSampleFormat(PA_SAMPLE_TYPE); + m_rxErr = m_rxPa->setInputLatency(m_rxPa->getInputDefaultLowLatency()); + m_rxPa->setInputHostApiStreamInfo(NULL); + + m_rxDevOut = m_rxPa->getDefaultOutputDevice(); // default output device + if (m_rxDevOut == paNoDevice) + { + wxMessageBox(wxT("Rx Error: No default output device."), wxT("Error"), wxOK); + return; + } + m_rxErr = m_rxPa->setOutputDevice(m_rxDevOut); + m_rxErr = m_rxPa->setOutputChannelCount(2); // stereo input + m_rxErr = m_rxPa->setOutputSampleFormat(PA_SAMPLE_TYPE); + + m_rxErr = m_rxPa->setOutputLatency(m_rxPa->getOutputDefaultLowLatency()); + m_rxPa->setOutputHostApiStreamInfo(NULL); + + m_rxErr = m_rxPa->setFramesPerBuffer(FRAMES_PER_BUFFER); + m_rxErr = m_rxPa->setSampleRate(SAMPLE_RATE); + m_rxErr = m_rxPa->setStreamFlags(0); + m_rxErr = m_rxPa->setCallback(rxCallback); + m_rxErr = m_rxPa->streamOpen(); + + if(m_rxErr != paNoError) + { + wxMessageBox(wxT("Rx Stream Open/Setup error."), wxT("Error"), wxOK); + return; + } + m_rxErr = m_rxPa->streamStart(); + if(m_rxErr != paNoError) + { + wxMessageBox(wxT("Rx Stream Start Error."), wxT("Error"), wxOK); + return; + } + m_toggleStartStop->SetLabel(wxT("Stop")); + } +} + +//------------------------------------------------------------------------- +// stopRxStream() +//------------------------------------------------------------------------- +void MainDialog::stopRxStream() +{ + if(m_RxRunning) + { + m_RxRunning = false; + m_rxPa->stop(); + m_rxPa->streamClose(); + m_toggleStartStop->SetLabel(wxT("Start")); + } +} + +//------------------------------------------------------------------------- +// abortRxStream() +//------------------------------------------------------------------------- +void MainDialog::abortRxStream() +{ + if(m_RxRunning) + { + m_RxRunning = false; + m_rxPa->abort(); + m_toggleStartStop->SetLabel(wxT("Start")); + } +} + +//------------------------------------------------------------------------- +// startTxStream() +//------------------------------------------------------------------------- +void MainDialog::startTxStream() +{ + if(!m_TxRunning) + { + m_TxRunning = true; + m_txPa = new PortAudioWrap(); + + m_txDevIn = m_txPa->getDefaultInputDevice(); // default input device + if(m_txDevIn == paNoDevice) + { + wxMessageBox(wxT("Tx Error: No default input device."), wxT("Error"), wxOK); + return; + } + m_txErr = m_txPa->setInputDevice(m_txDevIn); + m_txErr = m_txPa->setInputChannelCount(2); // stereo input + m_txErr = m_txPa->setInputSampleFormat(PA_SAMPLE_TYPE); + m_txErr = m_txPa->setInputLatency(m_txPa->getInputDefaultLowLatency()); + m_txPa->setInputHostApiStreamInfo(NULL); + + m_txDevOut = m_txPa->getDefaultOutputDevice(); // default output device + if (m_txDevOut == paNoDevice) + { + wxMessageBox(wxT("Tx Error: No default output device."), wxT("Error"), wxOK); + return; + } + m_txErr = m_txPa->setOutputDevice(m_txDevOut); + m_txErr = m_txPa->setOutputChannelCount(2); // stereo input + m_txErr = m_txPa->setOutputSampleFormat(PA_SAMPLE_TYPE); + + m_txErr = m_txPa->setOutputLatency(m_txPa->getOutputDefaultLowLatency()); + m_txPa->setOutputHostApiStreamInfo(NULL); + + m_txErr = m_txPa->setFramesPerBuffer(FRAMES_PER_BUFFER); + m_txErr = m_txPa->setSampleRate(SAMPLE_RATE); + m_txErr = m_txPa->setStreamFlags(0); + m_txErr = m_txPa->setCallback(txCallback); + m_txErr = m_txPa->streamOpen(); + + if(m_txErr != paNoError) + { + wxMessageBox(wxT("Tx Stream Open/Setup error."), wxT("Error"), wxOK); + return; + } + m_txErr = m_txPa->streamStart(); + if(m_txErr != paNoError) + { + wxMessageBox(wxT("Tx Stream Start Error."), wxT("Error"), wxOK); + return; + } + m_toggleStartStop->SetLabel(wxT("Stop")); + } +} + +//------------------------------------------------------------------------- +// stopTxStream() +//------------------------------------------------------------------------- +void MainDialog::stopTxStream() +{ + if(m_TxRunning) + { + m_TxRunning = false; + m_txPa->stop(); + m_txPa->streamClose(); + m_toggleStartStop->SetLabel(wxT("Start")); + } +} + +//------------------------------------------------------------------------- +// abortTxStream() +//------------------------------------------------------------------------- +void MainDialog::abortTxStream() +{ + if(m_TxRunning) + { + m_TxRunning = false; + m_txPa->abort(); + m_toggleStartStop->SetLabel(wxT("Start")); + } +} diff --git a/fdmdv2/fdmdv2basic/main.h b/fdmdv2/fdmdv2basic/main.h new file mode 100644 index 00000000..a8326ee1 --- /dev/null +++ b/fdmdv2/fdmdv2basic/main.h @@ -0,0 +1,97 @@ +/********************************************************************* + * Name: main.h + * Purpose: Declares simple wxWidgets application with GUI + * created using wxFormBuilder. + * Author: + * Created: + * Copyright: + * License: wxWidgets license (www.wxwidgets.org) + * + * Notes: Note that all GUI creation code is declared in + * gui.h source file which is generated by wxFormBuilder. + *********************************************************************/ + +#ifndef __main__ +#define __main__ + +// main wxWidgets header file +#include <wx/wx.h> + +// Necessary Audio Stuff +#include "../libsndfile/include/sndfile.h" +#include "../extern/include/portaudio.h" +#include "../extern/include/portaudiocpp/PortAudioCpp.hxx" +#ifdef WIN32 +#include "../extern/include/portaudiocpp/AsioDeviceAdapter.hxx" +#endif +#include "paclass.h" + +// Fdmdv2 & Codec2 stuff +#include "C:\Users\wittend\Projects\Radio\codec2-dev\src\codec2.h" +#include "C:\Users\wittend\Projects\Radio\codec2-dev\src\fdmdv.h" + +// gui classes generated by wxFormBuilder +#include "gui.h" + +//////////////////////////////////////////////////////////////////////////////// +// application class declaration +//////////////////////////////////////////////////////////////////////////////// + +class MainApp : public wxApp +{ + public: + virtual bool OnInit(); +}; + +// declare global static function wxGetApp() +DECLARE_APP(MainApp) + +//////////////////////////////////////////////////////////////////////////////// +// main application frame declaration +//////////////////////////////////////////////////////////////////////////////// + +class MainDialog : public MainDialogBase +{ + public: + MainDialog( wxWindow *parent ); + virtual ~MainDialog(); + bool m_RxRunning; + bool m_TxRunning; + CODEC2 *m_RXCodec2; + CODEC2 *m_TXCodec2; + PortAudioWrap *m_rxPa; + PortAudioWrap *m_txPa; + PaDeviceIndex m_rxDevIn; + PaDeviceIndex m_rxDevOut; + PaDeviceIndex m_txDevIn; + PaDeviceIndex m_txDevOut; + PaError m_rxErr; + PaError m_txErr; + + protected: + // protected event handlers + void startTxStream(); + void startRxStream(); + void stopTxStream(); + void stopRxStream(); + void abortTxStream(); + void abortRxStream(); + void OnInitDialog( wxInitDialogEvent& event ); + void OnCloseDialog( wxCloseEvent& event ); + void OnOKClick( wxCommandEvent& event ); + void OnCancelClick( wxCommandEvent& event ); + void OnToggleStartStop( wxCommandEvent& event ); + void OnToggleRxRx( wxCommandEvent& event ); + void OnRxInSelect( wxCommandEvent& event ); + void OnRxOutSelect( wxCommandEvent& event ); + void OnTxInSelect( wxCommandEvent& event ); + void OnTxOutSelect( wxCommandEvent& event ); + void OnRadioSelect( wxCommandEvent& event ); + void OnPortSelect( wxCommandEvent& event ); + + void populateStandardSampleRates(wxComboBox* target, const portaudio::DirectionSpecificStreamParameters &inputParameters, const portaudio::DirectionSpecificStreamParameters &outputParameters); + int populateAudioInfo(); + +}; + +#endif //__main__ diff --git a/fdmdv2/fdmdv2basic/paclass.cpp b/fdmdv2/fdmdv2basic/paclass.cpp new file mode 100644 index 00000000..6e98b3b3 --- /dev/null +++ b/fdmdv2/fdmdv2basic/paclass.cpp @@ -0,0 +1,211 @@ +#include "paclass.h" + +PortAudioWrap::PortAudioWrap() +{ + stream = NULL; + userData = NULL; + samplerate = 0; + framesPerBuffer = 0; + statusFlags = 0; + streamCallback = NULL; + streamFinishedCallback = NULL; + timeInfo = 0; +} + +PortAudioWrap::~PortAudioWrap() +{ +} + +//PaError PortAudioWrap::init() +//{ +// return Pa_Initialize(); +//} + +PaError PortAudioWrap::streamOpen() +{ + return Pa_OpenStream( + &stream, + &inputBuffer, + &outputBuffer, + samplerate, + framesPerBuffer, + statusFlags, + *streamCallback, + userData + ); +} + +PaError PortAudioWrap::streamStart() +{ + return Pa_StartStream(stream); +} + +PaError PortAudioWrap::streamClose() +{ + if(isOpen()) + { + PaError rv = Pa_CloseStream(stream); + return rv; + } + else + { + return paNoError; + } +} + +void PortAudioWrap::terminate() +{ + if(Pa_IsStreamStopped(stream) != paNoError) + { + Pa_StopStream(stream); + } + Pa_Terminate(); +} + +void PortAudioWrap::stop() +{ + Pa_StopStream(stream); +} + +void PortAudioWrap::abort() +{ + Pa_AbortStream(stream); +} + +bool PortAudioWrap::isStopped() const +{ + PaError ret = Pa_IsStreamStopped(stream); + return ret; +} + +bool PortAudioWrap::isActive() const +{ + PaError ret = Pa_IsStreamActive(stream); + return ret; +} + +bool PortAudioWrap::isOpen() const +{ + return (stream != NULL); +} + +PaDeviceIndex PortAudioWrap::getDefaultInputDevice() +{ + return Pa_GetDefaultInputDevice(); +} + +PaDeviceIndex PortAudioWrap::getDefaultOutputDevice() +{ + return Pa_GetDefaultOutputDevice(); +} + +PaError PortAudioWrap::setInputChannelCount(int count) +{ + inputBuffer.channelCount = count; + return paNoError; +} + +PaError PortAudioWrap::getInputChannelCount() +{ + return inputBuffer.channelCount; +} + +PaError PortAudioWrap::setInputSampleFormat(PaSampleFormat format) +{ + inputBuffer.sampleFormat = format; + return paNoError; +} + +PaError PortAudioWrap::setInputLatency(PaTime latency) +{ + inputBuffer.suggestedLatency = latency; + return paNoError; +} + +void PortAudioWrap::setInputHostApiStreamInfo(void *info) +{ + inputBuffer.hostApiSpecificStreamInfo = info; +} + +PaTime PortAudioWrap::getInputDefaultLowLatency() +{ + return Pa_GetDeviceInfo(inputBuffer.device)->defaultLowInputLatency; +} + +PaError PortAudioWrap::setOutputChannelCount(int count) +{ + outputBuffer.channelCount = count; + return paNoError; +} + +int PortAudioWrap::getOutputChannelCount() +{ + return outputBuffer.channelCount; +} + +const char *PortAudioWrap::getDeviceName(PaDeviceIndex dev) +{ + const PaDeviceInfo *info; + info = Pa_GetDeviceInfo(dev); + return info->name; +} + +PaError PortAudioWrap::setOutputSampleFormat(PaSampleFormat format) +{ + outputBuffer.sampleFormat = format; + return paNoError; +} + +PaError PortAudioWrap::setOutputLatency(PaTime latency) +{ + outputBuffer.suggestedLatency = latency; + return paNoError; +} + +void PortAudioWrap::setOutputHostApiStreamInfo(void *info) +{ + outputBuffer.hostApiSpecificStreamInfo = info; +} + +PaTime PortAudioWrap::getOutputDefaultLowLatency() +{ + return Pa_GetDeviceInfo(outputBuffer.device)->defaultLowOutputLatency; +} + +PaError PortAudioWrap::setFramesPerBuffer(unsigned long size) +{ + framesPerBuffer = size; + return paNoError; +} + +PaError PortAudioWrap::setSampleRate(unsigned long rate) +{ + samplerate = rate; + return paNoError; +} + +PaError PortAudioWrap::setStreamFlags(PaStreamFlags flags) +{ + statusFlags = flags; + return paNoError; +} + +PaError PortAudioWrap::setInputDevice(PaDeviceIndex index) +{ +// inputDevice = index; + inputBuffer.device = index; + return paNoError; +} + +PaError PortAudioWrap::setOutputDevice(PaDeviceIndex index) +{ +// outputDevice = index; + outputBuffer.device = index; + return paNoError; +} + +PaError PortAudioWrap::setCallback(PaStreamCallback *callback) +{ + streamCallback = callback; + return paNoError; +} diff --git a/fdmdv2/fdmdv2basic/paclass.h b/fdmdv2/fdmdv2basic/paclass.h new file mode 100644 index 00000000..a20b272f --- /dev/null +++ b/fdmdv2/fdmdv2basic/paclass.h @@ -0,0 +1,76 @@ +#include <stdio.h> +#include <math.h> +#include "portaudio.h" + +// Note that many of the older ISA sound cards on PCs do NOT support +// full duplex audio (simultaneous record and playback). +// And some only support full duplex at lower sample rates. +#define SAMPLE_RATE (44100) +#define PA_SAMPLE_TYPE paFloat32 //paInt16 +#define FRAMES_PER_BUFFER (64) + +typedef float SAMPLE; + +float CubicAmplifier(float input); + +class PortAudioWrap +{ + public: + PortAudioWrap(); + ~PortAudioWrap(); + + private: + PaStream *stream; + PaStreamParameters inputBuffer; + PaStreamParameters outputBuffer; + void *userData; + int samplerate; + unsigned long framesPerBuffer; + PaStreamCallbackFlags statusFlags; + PaStreamCallback *streamCallback; + PaStreamFinishedCallback *streamFinishedCallback; + const PaStreamCallbackTimeInfo *timeInfo; + + public: + + PaError streamOpen(); + + PaDeviceIndex getDefaultInputDevice(); + PaDeviceIndex getDefaultOutputDevice(); + + PaStreamParameters *getDeviceInfo(PaDeviceIndex idx); + PaError setFramesPerBuffer(unsigned long size); + PaError setSampleRate(unsigned long size); + PaError setStreamFlags(PaStreamFlags flags); + PaError setCallback(PaStreamCallback *streamCallback); + PaError setStreamCallback(PaStream *stream, PaStreamCallback* callback ) { streamCallback = callback; return 0;} + PaError setStreamFinishedCallback(PaStream *stream, PaStreamFinishedCallback* streamFinishedCallback ); + + PaError setInputDevice(PaDeviceIndex dev); + PaError setInputChannelCount(int count); + int getInputChannelCount(); + PaError setInputSampleFormat(PaSampleFormat format); + PaError setInputSampleRate(PaSampleFormat format); + PaError setInputLatency(PaTime latency); + void setInputHostApiStreamInfo(void *info = NULL); + PaTime getInputDefaultLowLatency(); + const char *getDeviceName(PaDeviceIndex dev); + + PaError setOutputDevice(PaDeviceIndex dev); + PaError setOutputChannelCount(int count); + int getOutputChannelCount(); + PaError setOutputSampleFormat(PaSampleFormat format); + PaError setOutputLatency(PaTime latency); + void setOutputHostApiStreamInfo(void *info = NULL); + PaTime getOutputDefaultLowLatency(); + +// PaError init(); + PaError streamStart(); + PaError streamClose(); + void terminate(); + bool isOpen() const; + void stop(); + void abort(); + bool isStopped() const; + bool isActive() const; +}; diff --git a/fdmdv2/hamlib-3.0/test_hamlib/test_hamlib.mk b/fdmdv2/hamlib-3.0/test_hamlib/test_hamlib.mk index 62c1be1e..5ecb8b8d 100644 --- a/fdmdv2/hamlib-3.0/test_hamlib/test_hamlib.mk +++ b/fdmdv2/hamlib-3.0/test_hamlib/test_hamlib.mk @@ -2,10 +2,10 @@ ## Auto Generated makefile by CodeLite IDE ## any manual changes will be erased ## -## Debug +## Release ProjectName :=test_hamlib -ConfigurationName :=Debug -IntermediateDirectory :=./Debug +ConfigurationName :=Release +IntermediateDirectory :=./Release OutDir := $(IntermediateDirectory) WorkspacePath := "C:\Users\wittend\Projects\Radio\fdmdv2" ProjectPath := "C:\Users\wittend\Projects\Radio\fdmdv2\hamlib-3.0\test_hamlib" @@ -13,7 +13,7 @@ CurrentFileName := CurrentFilePath := CurrentFileFullPath := User :=wittend -Date :=6/12/2012 +Date :=6/15/2012 CodeLitePath :="C:\Program Files\CodeLite" LinkerName :=g++ ArchiveTool :=ar rcus @@ -38,9 +38,9 @@ PreprocessOnlySwitch :=-E ObjectsFileList :="C:\Users\wittend\Projects\Radio\fdmdv2\hamlib-3.0\test_hamlib\test_hamlib.txt" PCHCompileFlags := MakeDirCommand :=makedir -CmpOptions := -g -O0 -Wall $(shell wx-config --cxxflags --unicode=yes --debug=yes) $(Preprocessors) -C_CmpOptions := -g -O0 -Wall $(shell wx-config --cxxflags --unicode=yes --debug=yes) $(Preprocessors) -LinkOptions := $(shell wx-config --debug=yes --libs --unicode=yes) +CmpOptions := -O2 -Wall $(shell wx-config --cxxflags --unicode=yes --debug=no) $(Preprocessors) +C_CmpOptions := -O2 -Wall $(shell wx-config --cxxflags --unicode=yes --debug=no) $(Preprocessors) +LinkOptions := -s $(shell wx-config --debug=no --libs --unicode=yes) IncludePath := $(IncludeSwitch). $(IncludeSwitch)../include/ IncludePCH := RcIncludePath := @@ -52,7 +52,7 @@ LibPath := $(LibraryPathSwitch). $(LibraryPathSwitch)../lib/gcc/ ## User defined environment variables ## CodeLiteDir:=C:\Program Files\CodeLite -WXWIN:=C:\bin\wxWidgets-2.9.2 +WXWIN:=C:\bin\wxWidgets-2.9.4 PATH:=$(WXWIN)\lib\gcc_dll;$(PATH) WXCFG:=gcc_dll\mswu UNIT_TEST_PP_SRC_DIR:=C:\bin\UnitTest++-1.3 @@ -71,7 +71,7 @@ $(OutputFile): $(IntermediateDirectory)/.d $(Objects) $(LinkerName) $(OutputSwitch)$(OutputFile) @$(ObjectsFileList) $(LibPath) $(Libs) $(LinkOptions) $(IntermediateDirectory)/.d: - @$(MakeDirCommand) "./Debug" + @$(MakeDirCommand) "./Release" PreBuild: @@ -98,6 +98,6 @@ clean: $(RM) $(IntermediateDirectory)/main$(PreprocessSuffix) $(RM) $(OutputFile) $(RM) $(OutputFile).exe - $(RM) "C:\Users\wittend\Projects\Radio\fdmdv2\.build-debug\test_hamlib" + $(RM) "C:\Users\wittend\Projects\Radio\fdmdv2\.build-release\test_hamlib" diff --git a/fdmdv2/libsndfile/Projects/w32-mingw/test_sndfile.mk b/fdmdv2/libsndfile/Projects/w32-mingw/test_sndfile.mk index 042ee3b7..1797b4e9 100644 --- a/fdmdv2/libsndfile/Projects/w32-mingw/test_sndfile.mk +++ b/fdmdv2/libsndfile/Projects/w32-mingw/test_sndfile.mk @@ -2,10 +2,10 @@ ## Auto Generated makefile by CodeLite IDE ## any manual changes will be erased ## -## Debug +## Release ProjectName :=test_sndfile -ConfigurationName :=Debug -IntermediateDirectory :=./Debug +ConfigurationName :=Release +IntermediateDirectory :=./Release OutDir := $(IntermediateDirectory) WorkspacePath := "C:\Users\wittend\Projects\Radio\fdmdv2" ProjectPath := "C:\Users\wittend\Projects\Radio\fdmdv2\libsndfile\Projects\w32-mingw" @@ -13,7 +13,7 @@ CurrentFileName := CurrentFilePath := CurrentFileFullPath := User :=wittend -Date :=6/12/2012 +Date :=6/15/2012 CodeLitePath :="C:\Program Files\CodeLite" LinkerName :=g++ ArchiveTool :=ar rcus @@ -38,8 +38,8 @@ PreprocessOnlySwitch :=-E ObjectsFileList :="C:\Users\wittend\Projects\Radio\fdmdv2\libsndfile\Projects\w32-mingw\test_sndfile.txt" PCHCompileFlags := MakeDirCommand :=makedir -CmpOptions := -g -O0 -Wall $(Preprocessors) -C_CmpOptions := -g -O0 -Wall $(Preprocessors) +CmpOptions := -O2 -Wall $(Preprocessors) +C_CmpOptions := -O2 -Wall $(Preprocessors) LinkOptions := IncludePath := $(IncludeSwitch). $(IncludeSwitch). IncludePCH := @@ -52,7 +52,7 @@ LibPath := $(LibraryPathSwitch). ## User defined environment variables ## CodeLiteDir:=C:\Program Files\CodeLite -WXWIN:=C:\bin\wxWidgets-2.9.2 +WXWIN:=C:\bin\wxWidgets-2.9.4 PATH:=$(WXWIN)\lib\gcc_dll;$(PATH) WXCFG:=gcc_dll\mswu UNIT_TEST_PP_SRC_DIR:=C:\bin\UnitTest++-1.3 @@ -71,7 +71,7 @@ $(OutputFile): $(IntermediateDirectory)/.d $(Objects) $(LinkerName) $(OutputSwitch)$(OutputFile) @$(ObjectsFileList) $(LibPath) $(Libs) $(LinkOptions) $(IntermediateDirectory)/.d: - @$(MakeDirCommand) "./Debug" + @$(MakeDirCommand) "./Release" PreBuild: @@ -98,6 +98,6 @@ clean: $(RM) $(IntermediateDirectory)/main$(PreprocessSuffix) $(RM) $(OutputFile) $(RM) $(OutputFile).exe - $(RM) "C:\Users\wittend\Projects\Radio\fdmdv2\.build-debug\test_sndfile" + $(RM) "C:\Users\wittend\Projects\Radio\fdmdv2\.build-release\test_sndfile" diff --git a/fdmdv2/pa_cppbinding_test/pa_cppbinding_test.mk b/fdmdv2/pa_cppbinding_test/pa_cppbinding_test.mk index f2c5c878..5094e4e1 100644 --- a/fdmdv2/pa_cppbinding_test/pa_cppbinding_test.mk +++ b/fdmdv2/pa_cppbinding_test/pa_cppbinding_test.mk @@ -2,10 +2,10 @@ ## Auto Generated makefile by CodeLite IDE ## any manual changes will be erased ## -## Debug +## Release ProjectName :=pa_cppbinding_test -ConfigurationName :=Debug -IntermediateDirectory :=./Debug +ConfigurationName :=Release +IntermediateDirectory :=./Release OutDir := $(IntermediateDirectory) WorkspacePath := "C:\Users\wittend\Projects\Radio\fdmdv2" ProjectPath := "C:\Users\wittend\Projects\Radio\fdmdv2\pa_cppbinding_test" @@ -13,7 +13,7 @@ CurrentFileName := CurrentFilePath := CurrentFileFullPath := User :=wittend -Date :=6/12/2012 +Date :=6/15/2012 CodeLitePath :="C:\Program Files\CodeLite" LinkerName :=g++ ArchiveTool :=ar rcus @@ -38,13 +38,13 @@ PreprocessOnlySwitch :=-E ObjectsFileList :="C:\Users\wittend\Projects\Radio\fdmdv2\pa_cppbinding_test\pa_cppbinding_test.txt" PCHCompileFlags := MakeDirCommand :=makedir -CmpOptions := -g -O0 -Wall $(shell wx-config --cxxflags --unicode=yes --debug=yes) $(Preprocessors) -C_CmpOptions := -g -O0 -Wall $(shell wx-config --cxxflags --unicode=yes --debug=yes) $(Preprocessors) -LinkOptions := -mwindows $(shell wx-config --debug=yes --libs --unicode=yes) -IncludePath := $(IncludeSwitch). +CmpOptions := -O2 -Wall $(shell wx-config --cxxflags --unicode=yes --debug=no) $(Preprocessors) +C_CmpOptions := -O2 -Wall $(shell wx-config --cxxflags --unicode=yes --debug=no) $(Preprocessors) +LinkOptions := -mwindows -s $(shell wx-config --debug=no --libs --unicode=yes) +IncludePath := $(IncludeSwitch). $(IncludeSwitch)./ $(IncludeSwitch)C:/bin/MinGW/msys/1.0/local/include $(IncludeSwitch)./portaudiocpp IncludePCH := RcIncludePath := -Libs := $(LibrarySwitch)portaudiocpp.la $(LibrarySwitch)portaudio.la +Libs := $(LibrarySwitch)portaudiocpp-0 $(LibrarySwitch)portaudio-2 LibPath := $(LibraryPathSwitch). $(LibraryPathSwitch). @@ -52,7 +52,7 @@ LibPath := $(LibraryPathSwitch). $(LibraryPathSwitch). ## User defined environment variables ## CodeLiteDir:=C:\Program Files\CodeLite -WXWIN:=C:\bin\wxWidgets-2.9.2 +WXWIN:=C:\bin\wxWidgets-2.9.4 PATH:=$(WXWIN)\lib\gcc_dll;$(PATH) WXCFG:=gcc_dll\mswu UNIT_TEST_PP_SRC_DIR:=C:\bin\UnitTest++-1.3 @@ -71,7 +71,7 @@ $(OutputFile): $(IntermediateDirectory)/.d $(Objects) $(LinkerName) $(OutputSwitch)$(OutputFile) @$(ObjectsFileList) $(LibPath) $(Libs) $(LinkOptions) $(IntermediateDirectory)/.d: - @$(MakeDirCommand) "./Debug" + @$(MakeDirCommand) "./Release" PreBuild: @@ -109,6 +109,6 @@ clean: $(RM) $(IntermediateDirectory)/main$(PreprocessSuffix) $(RM) $(OutputFile) $(RM) $(OutputFile).exe - $(RM) "C:\Users\wittend\Projects\Radio\fdmdv2\.build-debug\pa_cppbinding_test" + $(RM) "C:\Users\wittend\Projects\Radio\fdmdv2\.build-release\pa_cppbinding_test" diff --git a/fdmdv2/pa_cppbinding_test/pa_cppbinding_test.project b/fdmdv2/pa_cppbinding_test/pa_cppbinding_test.project index 3792c541..6728a3af 100644 --- a/fdmdv2/pa_cppbinding_test/pa_cppbinding_test.project +++ b/fdmdv2/pa_cppbinding_test/pa_cppbinding_test.project @@ -40,8 +40,6 @@ <VirtualDirectory Name="resources"> <File Name="gui.fbp"/> </VirtualDirectory> - <Dependencies Name="Debug"/> - <Dependencies Name="Release"/> <Settings Type="Executable"> <GlobalSettings> <Compiler Options="" C_Options=""> @@ -136,4 +134,6 @@ </Completion> </Configuration> </Settings> + <Dependencies Name="Debug"/> + <Dependencies Name="Release"/> </CodeLite_Project> diff --git a/fdmdv2/pa_test/pa_test.mk b/fdmdv2/pa_test/pa_test.mk index 9f7391ef..a1d47396 100644 --- a/fdmdv2/pa_test/pa_test.mk +++ b/fdmdv2/pa_test/pa_test.mk @@ -2,10 +2,10 @@ ## Auto Generated makefile by CodeLite IDE ## any manual changes will be erased ## -## Debug +## Release ProjectName :=pa_test -ConfigurationName :=Debug -IntermediateDirectory :=./Debug +ConfigurationName :=Release +IntermediateDirectory :=./Release OutDir := $(IntermediateDirectory) WorkspacePath := "C:\Users\wittend\Projects\Radio\fdmdv2" ProjectPath := "C:\Users\wittend\Projects\Radio\fdmdv2\pa_test" @@ -13,7 +13,7 @@ CurrentFileName := CurrentFilePath := CurrentFileFullPath := User :=wittend -Date :=6/12/2012 +Date :=6/15/2012 CodeLitePath :="C:\Program Files\CodeLite" LinkerName :=g++ ArchiveTool :=ar rcus @@ -38,10 +38,10 @@ PreprocessOnlySwitch :=-E ObjectsFileList :="C:\Users\wittend\Projects\Radio\fdmdv2\pa_test\pa_test.txt" PCHCompileFlags := MakeDirCommand :=makedir -CmpOptions := -g -O0 -Wall $(Preprocessors) -C_CmpOptions := -g -O0 -Wall $(Preprocessors) +CmpOptions := -O2 -Wall $(Preprocessors) +C_CmpOptions := -O2 -Wall $(Preprocessors) LinkOptions := -IncludePath := $(IncludeSwitch). $(IncludeSwitch). $(IncludeSwitch)../extern/include $(IncludeSwitch)../../../portaudio/include +IncludePath := $(IncludeSwitch). $(IncludeSwitch). $(IncludeSwitch)extern/include IncludePCH := RcIncludePath := Libs := $(LibrarySwitch)portaudio @@ -52,7 +52,7 @@ LibPath := $(LibraryPathSwitch). ## User defined environment variables ## CodeLiteDir:=C:\Program Files\CodeLite -WXWIN:=C:\bin\wxWidgets-2.9.2 +WXWIN:=C:\bin\wxWidgets-2.9.4 PATH:=$(WXWIN)\lib\gcc_dll;$(PATH) WXCFG:=gcc_dll\mswu UNIT_TEST_PP_SRC_DIR:=C:\bin\UnitTest++-1.3 @@ -71,7 +71,7 @@ $(OutputFile): $(IntermediateDirectory)/.d $(Objects) $(LinkerName) $(OutputSwitch)$(OutputFile) @$(ObjectsFileList) $(LibPath) $(Libs) $(LinkOptions) $(IntermediateDirectory)/.d: - @$(MakeDirCommand) "./Debug" + @$(MakeDirCommand) "./Release" PreBuild: @@ -98,6 +98,6 @@ clean: $(RM) $(IntermediateDirectory)/pa_class$(PreprocessSuffix) $(RM) $(OutputFile) $(RM) $(OutputFile).exe - $(RM) "C:\Users\wittend\Projects\Radio\fdmdv2\.build-debug\pa_test" + $(RM) "C:\Users\wittend\Projects\Radio\fdmdv2\.build-release\pa_test" diff --git a/fdmdv2/pa_test/pa_test.project b/fdmdv2/pa_test/pa_test.project index 3c024018..c479d7dd 100644 --- a/fdmdv2/pa_test/pa_test.project +++ b/fdmdv2/pa_test/pa_test.project @@ -13,8 +13,6 @@ <VirtualDirectory Name="include"> <File Name="pa_class.h"/> </VirtualDirectory> - <Dependencies Name="Debug"/> - <Dependencies Name="Release"/> <Settings Type="Executable"> <GlobalSettings> <Compiler Options="" C_Options=""> @@ -105,4 +103,6 @@ </Completion> </Configuration> </Settings> + <Dependencies Name="Debug"/> + <Dependencies Name="Release"/> </CodeLite_Project> -- 2.25.1