From: wittend99 Date: Sun, 17 Jun 2012 15:00:29 +0000 (+0000) Subject: Bunches of work on portaudio, still not done. Added fdmdvBasic tor testing, it is... X-Git-Url: http://git.whiteaudio.com/gitweb/?a=commitdiff_plain;h=16f7f99e8bbf2b3a5e9cbaf935df8937382ab639;p=freetel-svn-tracking.git 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 --- diff --git a/fdmdv2/Release/fdmdv2.exe b/fdmdv2/Release/fdmdv2.exe index 5bc52481..fab8536d 100644 Binary files a/fdmdv2/Release/fdmdv2.exe and b/fdmdv2/Release/fdmdv2.exe differ 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 @@ + - + @@ -15,8 +16,9 @@ + - + @@ -25,6 +27,7 @@ + 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 00000000..e9084f66 Binary files /dev/null and b/fdmdv2/fdmdv2basic/Release/fdmdv2basic.exe differ 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 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + None + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + None + + + + + + + + + + + + + + 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, _(""), 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, _(""), 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, _(""), 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, _(""), 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 @@ + + + + + + C++|Python + 1 + source_name + 0 + 0 + res + UTF-8 + connect + gui + 1000 + none + 1 + gui + + . + + 1 + 1 + 1 + 0 + 0 + + 1 + 1 + 1 + 1 + + 0 + + + + + + + 1 + wxBOTH + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + impl_virtual + + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + 0 + -1,-1 + 1 + MainDialogBase + 1 + + + 1 + + Resizable + 1 + 523,526 + wxCLOSE_BOX|wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER + + FDMDV2Basic + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + + + + + + + + + + OnCloseDialog + + + + + + OnInitDialog + + + + + + + + + + + + + + + + + + + + + + + mainSizer + wxVERTICAL + none + + 5 + wxEXPAND + 1 + + + bSizer2 + wxHORIZONTAL + none + + 5 + wxEXPAND + 1 + + wxID_ANY + Settings + + sbSizer1 + wxVERTICAL + none + + + 5 + wxEXPAND + 1 + + 1 + 0 + + gSizer4 + none + 3 + 0 + + 5 + wxALIGN_CENTER|wxALIGN_CENTER_HORIZONTAL|wxEXPAND|wxFIXED_MINSIZE + 1 + + wxID_ANY + Audio + + sbSizer3 + wxVERTICAL + none + + + 2 + wxALIGN_CENTER_HORIZONTAL|wxEXPAND|wxFIXED_MINSIZE + 0 + + 2 + 0 + + gSizer1 + none + 4 + 0 + + 5 + wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + Rx In (radio): + + 0 + + + 0 + + 1 + m_staticText1 + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + -1 + + + + + + + + + + + + + + + + + + + + + + + + + + + 2 + wxALIGN_CENTER_VERTICAL|wxALL|wxEXPAND + 1 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + 0 + + 1 + m_comboRxIn + 1 + + + protected + 1 + + Resizable + -1 + 1 + + + + 0 + + + wxFILTER_NONE + wxDefaultValidator + + <default> + + + + + OnRxInSelect + + + + + + + + + + + + + + + + + + + + + + + + + + + + 5 + wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + Rx Out (spkr): + + 0 + + + 0 + + 1 + m_staticText2 + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + -1 + + + + + + + + + + + + + + + + + + + + + + + + + + + 2 + wxALIGN_CENTER_VERTICAL|wxALL|wxEXPAND + 1 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + 0 + + 1 + m_comboRxOut + 1 + + + protected + 1 + + Resizable + -1 + 1 + + + + 0 + + + wxFILTER_NONE + wxDefaultValidator + + <default> + + + + + OnRxOutSelect + + + + + + + + + + + + + + + + + + + + + + + + + + + + 5 + wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + Tx In (mic): + + 0 + + + 0 + + 1 + m_staticText3 + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + -1 + + + + + + + + + + + + + + + + + + + + + + + + + + + 2 + wxALIGN_CENTER_VERTICAL|wxALL|wxEXPAND + 1 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + 0 + + 1 + m_comboTxIn + 1 + + + protected + 1 + + Resizable + -1 + 1 + + + + 0 + + + wxFILTER_NONE + wxDefaultValidator + + <default> + + + + + OnTxInSelect + + + + + + + + + + + + + + + + + + + + + + + + + + + + 5 + wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + Tx Out (radio): + + 0 + + + 0 + + 1 + m_staticText4 + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + -1 + + + + + + + + + + + + + + + + + + + + + + + + + + + 2 + wxALIGN_CENTER_VERTICAL|wxALL|wxEXPAND + 1 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + 0 + + 1 + m_comboTxOut + 1 + + + protected + 1 + + Resizable + -1 + 1 + + + + 0 + + + wxFILTER_NONE + wxDefaultValidator + + <default> + + + + + OnTxOutSelect + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 5 + wxEXPAND|wxFIXED_MINSIZE + 1 + + wxID_ANY + label + + sbSizer4 + wxVERTICAL + none + + + 2 + wxALIGN_CENTER|wxEXPAND|wxFIXED_MINSIZE + 0 + + 2 + 0 + + gSizer111 + none + 2 + 0 + + 5 + wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + Rate: + + 0 + + + 0 + + 1 + m_staticText111 + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + -1 + + + + + + + + + + + + + + + + + + + + + + + + + + + 2 + wxALIGN_CENTER_VERTICAL|wxALL|wxEXPAND + 1 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + 0 + + 1 + m_comboBox111 + 1 + + + protected + 1 + + Resizable + -1 + 1 + + + + 0 + + + wxFILTER_NONE + wxDefaultValidator + + Combo! + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 5 + wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + MyLabel + + 0 + + + 0 + + 1 + m_staticText211 + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + -1 + + + + + + + + + + + + + + + + + + + + + + + + + + + 2 + wxALIGN_CENTER_VERTICAL|wxALL|wxEXPAND + 1 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + 0 + + 1 + m_comboBox211 + 1 + + + protected + 1 + + Resizable + -1 + 1 + + + + 0 + + + wxFILTER_NONE + wxDefaultValidator + + Combo! + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 5 + wxALIGN_CENTER_HORIZONTAL|wxEXPAND + 1 + + wxID_ANY + Comm Port + + sbSizer5 + wxVERTICAL + none + + + 2 + wxALIGN_CENTER|wxEXPAND|wxFIXED_MINSIZE + 0 + + 2 + 0 + + gSizer11 + none + 2 + 0 + + 5 + wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + Radio: + + 0 + + + 0 + + 1 + m_staticText11 + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + -1 + + + + + + + + + + + + + + + + + + + + + + + + + + + 2 + wxALIGN_CENTER_VERTICAL|wxALL|wxEXPAND + 1 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + 0 + + 1 + m_comboBox11 + 1 + + + protected + 1 + + Resizable + -1 + 1 + + + + 0 + + + wxFILTER_NONE + wxDefaultValidator + + Combo! + + + + + OnRadioSelect + + + + + + + + + + + + + + + + + + + + + + + + + + + + 5 + wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + Port: + + 0 + + + 0 + + 1 + m_staticText21 + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + -1 + + + + + + + + + + + + + + + + + + + + + + + + + + + 2 + wxALIGN_CENTER_VERTICAL|wxALL|wxEXPAND + 1 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + 0 + + 1 + m_comboBox21 + 1 + + + protected + 1 + + Resizable + -1 + 1 + + + + 0 + + + wxFILTER_NONE + wxDefaultValidator + + Combo! + + + + + OnPortSelect + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 5 + wxEXPAND + 0 + + wxID_ANY + Operation + + sbSizer2 + wxVERTICAL + none + + + 5 + wxALIGN_CENTER_HORIZONTAL|wxALL|wxEXPAND + 1 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + Start + + 0 + + + 0 + + 1 + m_toggleStartStop + 1 + + + protected + 1 + + Resizable + 1 + + + 0 + + + wxFILTER_NONE + wxDefaultValidator + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + OnToggleStartStop + + + + + 5 + wxALIGN_CENTER_HORIZONTAL|wxALL|wxEXPAND + 2 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + Tx + + 0 + + + 0 + + 1 + m_toggleRxTx + 1 + + + protected + 1 + + Resizable + 1 + + + 0 + + + wxFILTER_NONE + wxDefaultValidator + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + OnToggleRxRx + + + + + + + + + 5 + wxEXPAND | wxALL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + 0 + + 1 + m_staticLine + 1 + + + protected + 1 + + Resizable + 1 + + wxLI_HORIZONTAL + + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 5 + wxALIGN_RIGHT|wxBOTTOM|wxRIGHT + 0 + + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + + m_sdbSizer + protected + + OnCancelClick + + + + + + + + + + + + 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 @@ + + + + + + C++ + 1 + UTF-8 + connect + impl_virtual + gui + 1000 + none + 1 + gui + + . + + 1 + 0 + 0 + + + wxBOTH + + 1 + + + + 0 + wxID_ANY + + -1,-1 + MainDialogBase + + 400,300 + wxCLOSE_BOX|wxDEFAULT_DIALOG_STYLE + + wxMiniApp + + + wxFILTER_NONE + wxDefaultValidator + + + + + + + + OnCloseDialog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + mainSizer + wxVERTICAL + none + + 5 + wxEXPAND + 1 + + 0 + protected + 0 + + + + 5 + wxEXPAND | wxALL + 0 + + + + 1 + + + 0 + wxID_ANY + + + m_staticLine + protected + + + wxLI_HORIZONTAL + + + + wxFILTER_NONE + wxDefaultValidator + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 5 + wxALIGN_RIGHT|wxBOTTOM|wxRIGHT + 0 + + 0 + 1 + 0 + 0 + 0 + 1 + 0 + 0 + + m_sdbSizer + protected + + OnCancelClick + + + + OnOKClick + + + + + + + + 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 +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +/////////////////////////////////////////////////////////////////////////// + + +/////////////////////////////////////////////////////////////////////////////// +/// 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""), 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""), 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""), 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""), 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 + +// 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 +#include +#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 @@ - - @@ -136,4 +134,6 @@ + + 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 @@ - - @@ -105,4 +103,6 @@ + +