git-svn-id: https://svn.code.sf.net/p/freetel/code@546 01035d8c-6547-0410-b346-abe4f9...
authorwittend99 <wittend99@01035d8c-6547-0410-b346-abe4f91aad63>
Tue, 12 Jun 2012 12:30:44 +0000 (12:30 +0000)
committerwittend99 <wittend99@01035d8c-6547-0410-b346-abe4f91aad63>
Tue, 12 Jun 2012 12:30:44 +0000 (12:30 +0000)
27 files changed:
fdmdv2/FDMDV2.fbp
fdmdv2/Release/fdmdv2.exe
fdmdv2/dlg_audio.cpp
fdmdv2/dlg_audio.h
fdmdv2/extern/include/portaudio.h
fdmdv2/fdmdv2.mk
fdmdv2/fdmdv2.project
fdmdv2/fdmdv2.txt
fdmdv2/fdmdv2.workspace
fdmdv2/fdmdv2_main.cpp
fdmdv2/fdmdv2_main.h
fdmdv2/fdmdv2_wsp.mk
fdmdv2/hamlib-3.0/test_hamlib/test_hamlib.mk
fdmdv2/libsndfile/Projects/w32-mingw/test_sndfile.mk
fdmdv2/pa_cppbinding_test/pa_cppbinding_test.mk
fdmdv2/pa_test/pa_class.cpp
fdmdv2/pa_test/pa_class.h
fdmdv2/pa_test/pa_test.mk
fdmdv2/pa_test/pa_test.project
fdmdv2/paclass.cpp [new file with mode: 0644]
fdmdv2/paclass.h [new file with mode: 0644]
fdmdv2/thread_audio.cpp
fdmdv2/thread_audio.h
fdmdv2/topFrame.cpp
fdmdv2/topFrame.h
fdmdv2/topFrame.py
fdmdv2/topFrame.xrc

index e25a23dea59fa32b741fef0e7898318e70004bb3..0468150779d92f88107c5df8371936165b68fc69 100644 (file)
@@ -71,7 +71,7 @@
             <property name="pos"></property>\r
             <property name="resize">Resizable</property>\r
             <property name="show">1</property>\r
-            <property name="size">732,507</property>\r
+            <property name="size">761,500</property>\r
             <property name="style">wxDEFAULT_FRAME_STYLE|wxRESIZE_BORDER</property>\r
             <property name="subclass"></property>\r
             <property name="title">FDMDV2</property>\r
                                         <property name="style">wxGA_SMOOTH|wxGA_VERTICAL</property>\r
                                         <property name="subclass"></property>\r
                                         <property name="toolbar_pane">0</property>\r
-                                        <property name="tooltip"></property>\r
+                                        <property name="tooltip">Display signal to noise ratio.</property>\r
                                         <property name="validator_data_type"></property>\r
                                         <property name="validator_style">wxFILTER_NONE</property>\r
                                         <property name="validator_type">wxDefaultValidator</property>\r
                                                 <property name="style">wxTE_READONLY</property>\r
                                                 <property name="subclass"></property>\r
                                                 <property name="toolbar_pane">0</property>\r
-                                                <property name="tooltip"></property>\r
+                                                <property name="tooltip">Show S/N ratio numerically.</property>\r
                                                 <property name="validator_data_type"></property>\r
                                                 <property name="validator_style">wxFILTER_NONE</property>\r
                                                 <property name="validator_type">wxDefaultValidator</property>\r
                                         <property name="style">wxGA_SMOOTH|wxGA_VERTICAL</property>\r
                                         <property name="subclass"></property>\r
                                         <property name="toolbar_pane">0</property>\r
-                                        <property name="tooltip"></property>\r
+                                        <property name="tooltip">Display signal level.</property>\r
                                         <property name="validator_data_type"></property>\r
                                         <property name="validator_style">wxFILTER_NONE</property>\r
                                         <property name="validator_type">wxDefaultValidator</property>\r
                     <property name="border">1</property>\r
                     <property name="flag">wxALIGN_CENTER_HORIZONTAL|wxALL|wxEXPAND</property>\r
                     <property name="proportion">4</property>\r
-                    <object class="wxBoxSizer" expanded="0">\r
+                    <object class="wxBoxSizer" expanded="1">\r
                         <property name="minimum_size"></property>\r
                         <property name="name">centerSizer</property>\r
                         <property name="orient">wxVERTICAL</property>\r
                         <property name="permission">none</property>\r
-                        <object class="sizeritem" expanded="0">\r
+                        <object class="sizeritem" expanded="1">\r
                             <property name="border">0</property>\r
                             <property name="flag">wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL|wxALIGN_TOP|wxEXPAND</property>\r
                             <property name="proportion">1</property>\r
-                            <object class="wxBoxSizer" expanded="0">\r
+                            <object class="wxBoxSizer" expanded="1">\r
                                 <property name="minimum_size"></property>\r
                                 <property name="name">upperSizer</property>\r
                                 <property name="orient">wxVERTICAL</property>\r
                                         <property name="enabled">1</property>\r
                                         <property name="fg"></property>\r
                                         <property name="floatable">1</property>\r
-                                        <property name="font"></property>\r
+                                        <property name="font">,90,90,6,70,0</property>\r
                                         <property name="gripper">0</property>\r
                                         <property name="hidden">0</property>\r
                                         <property name="id">wxID_ANY</property>\r
                         <object class="sizeritem" expanded="0">\r
                             <property name="border">3</property>\r
                             <property name="flag">wxALIGN_CENTER_HORIZONTAL|wxALL|wxEXPAND</property>\r
-                            <property name="proportion">3</property>\r
+                            <property name="proportion">2</property>\r
                             <object class="wxStaticBoxSizer" expanded="0">\r
                                 <property name="id">wxID_ANY</property>\r
                                 <property name="label">SQ</property>\r
                                         <property name="style">wxSL_AUTOTICKS|wxSL_INVERSE|wxSL_VERTICAL</property>\r
                                         <property name="subclass"></property>\r
                                         <property name="toolbar_pane">0</property>\r
-                                        <property name="tooltip"></property>\r
+                                        <property name="tooltip">Set Squelch level.</property>\r
                                         <property name="validator_data_type"></property>\r
                                         <property name="validator_style">wxFILTER_NONE</property>\r
                                         <property name="validator_type">wxDefaultValidator</property>\r
                                                 <property name="style">wxCHK_2STATE</property>\r
                                                 <property name="subclass"></property>\r
                                                 <property name="toolbar_pane">0</property>\r
-                                                <property name="tooltip"></property>\r
+                                                <property name="tooltip">Activate/Deactivate Squelch</property>\r
                                                 <property name="validator_data_type"></property>\r
                                                 <property name="validator_style">wxFILTER_NONE</property>\r
                                                 <property name="validator_type">wxDefaultValidator</property>\r
                                 </object>\r
                             </object>\r
                         </object>\r
-                        <object class="sizeritem" expanded="0">\r
+                        <object class="sizeritem" expanded="1">\r
                             <property name="border">3</property>\r
                             <property name="flag">wxALIGN_CENTER|wxALL|wxEXPAND</property>\r
                             <property name="proportion">2</property>\r
-                            <object class="wxStaticBoxSizer" expanded="0">\r
+                            <object class="wxStaticBoxSizer" expanded="1">\r
                                 <property name="id">wxID_ANY</property>\r
                                 <property name="label">Control</property>\r
                                 <property name="minimum_size"></property>\r
                                 <property name="orient">wxVERTICAL</property>\r
                                 <property name="permission">none</property>\r
                                 <event name="OnUpdateUI"></event>\r
-                                <object class="sizeritem" expanded="0">\r
+                                <object class="sizeritem" expanded="1">\r
+                                    <property name="border">1</property>\r
+                                    <property name="flag">wxEXPAND</property>\r
+                                    <property name="proportion">0</property>\r
+                                    <object class="wxBoxSizer" expanded="1">\r
+                                        <property name="minimum_size"></property>\r
+                                        <property name="name">bSizer1511</property>\r
+                                        <property name="orient">wxVERTICAL</property>\r
+                                        <property name="permission">none</property>\r
+                                        <object class="sizeritem" expanded="1">\r
+                                            <property name="border">1</property>\r
+                                            <property name="flag">wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL|wxALL</property>\r
+                                            <property name="proportion">0</property>\r
+                                            <object class="wxToggleButton" expanded="1">\r
+                                                <property name="BottomDockable">1</property>\r
+                                                <property name="LeftDockable">1</property>\r
+                                                <property name="RightDockable">1</property>\r
+                                                <property name="TopDockable">1</property>\r
+                                                <property name="aui_layer"></property>\r
+                                                <property name="aui_name"></property>\r
+                                                <property name="aui_position"></property>\r
+                                                <property name="aui_row"></property>\r
+                                                <property name="best_size"></property>\r
+                                                <property name="bg"></property>\r
+                                                <property name="caption"></property>\r
+                                                <property name="caption_visible">1</property>\r
+                                                <property name="center_pane">0</property>\r
+                                                <property name="close_button">1</property>\r
+                                                <property name="context_help"></property>\r
+                                                <property name="context_menu">1</property>\r
+                                                <property name="default_pane">0</property>\r
+                                                <property name="dock">Dock</property>\r
+                                                <property name="dock_fixed">0</property>\r
+                                                <property name="docking">Left</property>\r
+                                                <property name="enabled">1</property>\r
+                                                <property name="fg"></property>\r
+                                                <property name="floatable">1</property>\r
+                                                <property name="font"></property>\r
+                                                <property name="gripper">0</property>\r
+                                                <property name="hidden">0</property>\r
+                                                <property name="id">wxID_ANY</property>\r
+                                                <property name="label">Start</property>\r
+                                                <property name="max_size"></property>\r
+                                                <property name="maximize_button">0</property>\r
+                                                <property name="maximum_size"></property>\r
+                                                <property name="min_size"></property>\r
+                                                <property name="minimize_button">0</property>\r
+                                                <property name="minimum_size"></property>\r
+                                                <property name="moveable">1</property>\r
+                                                <property name="name">m_togBtnOnOff</property>\r
+                                                <property name="pane_border">1</property>\r
+                                                <property name="pane_position"></property>\r
+                                                <property name="pane_size"></property>\r
+                                                <property name="permission">protected</property>\r
+                                                <property name="pin_button">1</property>\r
+                                                <property name="pos"></property>\r
+                                                <property name="resize">Resizable</property>\r
+                                                <property name="show">1</property>\r
+                                                <property name="size"></property>\r
+                                                <property name="subclass"></property>\r
+                                                <property name="toolbar_pane">0</property>\r
+                                                <property name="tooltip">Begin receiving data.</property>\r
+                                                <property name="validator_data_type"></property>\r
+                                                <property name="validator_style">wxFILTER_NONE</property>\r
+                                                <property name="validator_type">wxDefaultValidator</property>\r
+                                                <property name="validator_variable"></property>\r
+                                                <property name="value">0</property>\r
+                                                <property name="window_extra_style"></property>\r
+                                                <property name="window_name"></property>\r
+                                                <property name="window_style"></property>\r
+                                                <event name="OnChar"></event>\r
+                                                <event name="OnEnterWindow"></event>\r
+                                                <event name="OnEraseBackground"></event>\r
+                                                <event name="OnKeyDown"></event>\r
+                                                <event name="OnKeyUp"></event>\r
+                                                <event name="OnKillFocus"></event>\r
+                                                <event name="OnLeaveWindow"></event>\r
+                                                <event name="OnLeftDClick"></event>\r
+                                                <event name="OnLeftDown"></event>\r
+                                                <event name="OnLeftUp"></event>\r
+                                                <event name="OnMiddleDClick"></event>\r
+                                                <event name="OnMiddleDown"></event>\r
+                                                <event name="OnMiddleUp"></event>\r
+                                                <event name="OnMotion"></event>\r
+                                                <event name="OnMouseEvents"></event>\r
+                                                <event name="OnMouseWheel"></event>\r
+                                                <event name="OnPaint"></event>\r
+                                                <event name="OnRightDClick"></event>\r
+                                                <event name="OnRightDown"></event>\r
+                                                <event name="OnRightUp"></event>\r
+                                                <event name="OnSetFocus"></event>\r
+                                                <event name="OnSize"></event>\r
+                                                <event name="OnToggleButton">OnTogBtnOnOff</event>\r
+                                                <event name="OnUpdateUI"></event>\r
+                                            </object>\r
+                                        </object>\r
+                                    </object>\r
+                                </object>\r
+                                <object class="sizeritem" expanded="1">\r
                                     <property name="border">1</property>\r
                                     <property name="flag">wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL|wxALL|wxEXPAND</property>\r
                                     <property name="proportion">0</property>\r
-                                    <object class="wxBoxSizer" expanded="0">\r
+                                    <object class="wxBoxSizer" expanded="1">\r
                                         <property name="minimum_size"></property>\r
                                         <property name="name">bSizer151</property>\r
                                         <property name="orient">wxVERTICAL</property>\r
                                                 <property name="size"></property>\r
                                                 <property name="subclass"></property>\r
                                                 <property name="toolbar_pane">0</property>\r
-                                                <property name="tooltip">Toggle Split mode.</property>\r
+                                                <property name="tooltip">Toggle split frequency mode.</property>\r
                                                 <property name="validator_data_type"></property>\r
                                                 <property name="validator_style">wxFILTER_NONE</property>\r
                                                 <property name="validator_type">wxDefaultValidator</property>\r
                                                 <property name="size"></property>\r
                                                 <property name="subclass"></property>\r
                                                 <property name="toolbar_pane">0</property>\r
-                                                <property name="tooltip">Toggle ALC Mode.</property>\r
+                                                <property name="tooltip">Toggle automatic level control mode.</property>\r
                                                 <property name="validator_data_type"></property>\r
                                                 <property name="validator_style">wxFILTER_NONE</property>\r
                                                 <property name="validator_type">wxDefaultValidator</property>\r
                                                 <property name="size"></property>\r
                                                 <property name="subclass"></property>\r
                                                 <property name="toolbar_pane">0</property>\r
-                                                <property name="tooltip"></property>\r
+                                                <property name="tooltip">Switch between Receive and Transmit</property>\r
                                                 <property name="validator_data_type"></property>\r
                                                 <property name="validator_style">wxFILTER_NONE</property>\r
                                                 <property name="validator_type">wxDefaultValidator</property>\r
                 </object>\r
             </object>\r
         </object>\r
-        <object class="Dialog" expanded="1">\r
+        <object class="Dialog" expanded="0">\r
             <property name="BottomDockable">1</property>\r
             <property name="LeftDockable">1</property>\r
             <property name="RightDockable">1</property>\r
             <property name="pos"></property>\r
             <property name="resize">Resizable</property>\r
             <property name="show">1</property>\r
-            <property name="size">553,381</property>\r
+            <property name="size">555,419</property>\r
             <property name="style">wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER</property>\r
             <property name="subclass"></property>\r
             <property name="title">Audio Options</property>\r
             <event name="OnSetFocus"></event>\r
             <event name="OnSize"></event>\r
             <event name="OnUpdateUI"></event>\r
-            <object class="wxBoxSizer" expanded="1">\r
+            <object class="wxBoxSizer" expanded="0">\r
                 <property name="minimum_size"></property>\r
                 <property name="name">bSizer32</property>\r
                 <property name="orient">wxVERTICAL</property>\r
                 <property name="permission">none</property>\r
-                <object class="sizeritem" expanded="1">\r
+                <object class="sizeritem" expanded="0">\r
                     <property name="border">1</property>\r
                     <property name="flag">wxEXPAND | wxALL</property>\r
                     <property name="proportion">1</property>\r
-                    <object class="wxNotebook" expanded="1">\r
+                    <object class="wxNotebook" expanded="0">\r
                         <property name="BottomDockable">1</property>\r
                         <property name="LeftDockable">1</property>\r
                         <property name="RightDockable">1</property>\r
                         <event name="OnSetFocus"></event>\r
                         <event name="OnSize"></event>\r
                         <event name="OnUpdateUI"></event>\r
-                        <object class="notebookpage" expanded="1">\r
+                        <object class="notebookpage" expanded="0">\r
                             <property name="bitmap"></property>\r
                             <property name="label">Devices</property>\r
                             <property name="select">1</property>\r
-                            <object class="wxPanel" expanded="1">\r
+                            <object class="wxPanel" expanded="0">\r
                                 <property name="BottomDockable">1</property>\r
                                 <property name="LeftDockable">1</property>\r
                                 <property name="RightDockable">1</property>\r
                                 <event name="OnSetFocus"></event>\r
                                 <event name="OnSize"></event>\r
                                 <event name="OnUpdateUI"></event>\r
-                                <object class="wxBoxSizer" expanded="1">\r
+                                <object class="wxBoxSizer" expanded="0">\r
                                     <property name="minimum_size"></property>\r
                                     <property name="name">bSizer34</property>\r
                                     <property name="orient">wxVERTICAL</property>\r
                                     <property name="permission">none</property>\r
-                                    <object class="sizeritem" expanded="1">\r
+                                    <object class="sizeritem" expanded="0">\r
                                         <property name="border">5</property>\r
                                         <property name="flag">wxEXPAND</property>\r
                                         <property name="proportion">1</property>\r
-                                        <object class="wxStaticBoxSizer" expanded="1">\r
+                                        <object class="wxStaticBoxSizer" expanded="0">\r
                                             <property name="id">wxID_ANY</property>\r
                                             <property name="label">PortAudio</property>\r
                                             <property name="minimum_size"></property>\r
                                             <property name="name">sbSizer10</property>\r
-                                            <property name="orient">wxVERTICAL</property>\r
+                                            <property name="orient">wxHORIZONTAL</property>\r
                                             <property name="permission">none</property>\r
                                             <event name="OnUpdateUI"></event>\r
-                                            <object class="sizeritem" expanded="1">\r
+                                            <object class="sizeritem" expanded="0">\r
                                                 <property name="border">5</property>\r
                                                 <property name="flag">wxEXPAND</property>\r
                                                 <property name="proportion">1</property>\r
-                                                <object class="wxBoxSizer" expanded="1">\r
+                                                <object class="wxBoxSizer" expanded="0">\r
                                                     <property name="minimum_size"></property>\r
                                                     <property name="name">bSizer41</property>\r
                                                     <property name="orient">wxHORIZONTAL</property>\r
                                                     <property name="permission">none</property>\r
-                                                    <object class="sizeritem" expanded="1">\r
+                                                    <object class="sizeritem" expanded="0">\r
                                                         <property name="border">5</property>\r
-                                                        <property name="flag">wxEXPAND</property>\r
+                                                        <property name="flag">wxALL</property>\r
                                                         <property name="proportion">0</property>\r
-                                                        <object class="wxBoxSizer" expanded="1">\r
-                                                            <property name="minimum_size"></property>\r
-                                                            <property name="name">bSizer37</property>\r
-                                                            <property name="orient">wxVERTICAL</property>\r
+                                                        <object class="wxGridSizer" expanded="0">\r
+                                                            <property name="cols">1</property>\r
+                                                            <property name="hgap">0</property>\r
+                                                            <property name="minimum_size">115,-1</property>\r
+                                                            <property name="name">gSizer6</property>\r
                                                             <property name="permission">none</property>\r
-                                                            <object class="sizeritem" expanded="1">\r
+                                                            <property name="rows">3</property>\r
+                                                            <property name="vgap">0</property>\r
+                                                            <object class="sizeritem" expanded="0">\r
                                                                 <property name="border">5</property>\r
-                                                                <property name="flag">wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL|wxALL</property>\r
+                                                                <property name="flag">wxALIGN_CENTER_VERTICAL|wxALL</property>\r
                                                                 <property name="proportion">1</property>\r
-                                                                <object class="wxRadioButton" expanded="1">\r
+                                                                <object class="wxRadioButton" expanded="0">\r
                                                                     <property name="BottomDockable">1</property>\r
                                                                     <property name="LeftDockable">1</property>\r
                                                                     <property name="RightDockable">1</property>\r
                                                                     <event name="OnUpdateUI"></event>\r
                                                                 </object>\r
                                                             </object>\r
+                                                            <object class="sizeritem" expanded="0">\r
+                                                                <property name="border">5</property>\r
+                                                                <property name="flag">wxEXPAND</property>\r
+                                                                <property name="proportion">0</property>\r
+                                                                <object class="wxGridSizer" expanded="0">\r
+                                                                    <property name="cols">2</property>\r
+                                                                    <property name="hgap">0</property>\r
+                                                                    <property name="minimum_size">110,-1</property>\r
+                                                                    <property name="name">gSizer51</property>\r
+                                                                    <property name="permission">none</property>\r
+                                                                    <property name="rows">2</property>\r
+                                                                    <property name="vgap">0</property>\r
+                                                                    <object class="sizeritem" expanded="0">\r
+                                                                        <property name="border">5</property>\r
+                                                                        <property name="flag">wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL|wxEXPAND</property>\r
+                                                                        <property name="proportion">1</property>\r
+                                                                        <object class="wxStaticText" expanded="0">\r
+                                                                            <property name="BottomDockable">1</property>\r
+                                                                            <property name="LeftDockable">1</property>\r
+                                                                            <property name="RightDockable">1</property>\r
+                                                                            <property name="TopDockable">1</property>\r
+                                                                            <property name="aui_layer"></property>\r
+                                                                            <property name="aui_name"></property>\r
+                                                                            <property name="aui_position"></property>\r
+                                                                            <property name="aui_row"></property>\r
+                                                                            <property name="best_size"></property>\r
+                                                                            <property name="bg"></property>\r
+                                                                            <property name="caption"></property>\r
+                                                                            <property name="caption_visible">1</property>\r
+                                                                            <property name="center_pane">0</property>\r
+                                                                            <property name="close_button">1</property>\r
+                                                                            <property name="context_help"></property>\r
+                                                                            <property name="context_menu">1</property>\r
+                                                                            <property name="default_pane">0</property>\r
+                                                                            <property name="dock">Dock</property>\r
+                                                                            <property name="dock_fixed">0</property>\r
+                                                                            <property name="docking">Left</property>\r
+                                                                            <property name="enabled">1</property>\r
+                                                                            <property name="fg"></property>\r
+                                                                            <property name="floatable">1</property>\r
+                                                                            <property name="font">,90,90,7,70,0</property>\r
+                                                                            <property name="gripper">0</property>\r
+                                                                            <property name="hidden">0</property>\r
+                                                                            <property name="id">wxID_ANY</property>\r
+                                                                            <property name="label"># Ch Out:</property>\r
+                                                                            <property name="max_size"></property>\r
+                                                                            <property name="maximize_button">0</property>\r
+                                                                            <property name="maximum_size">80,-1</property>\r
+                                                                            <property name="min_size"></property>\r
+                                                                            <property name="minimize_button">0</property>\r
+                                                                            <property name="minimum_size">80,-1</property>\r
+                                                                            <property name="moveable">1</property>\r
+                                                                            <property name="name">m_staticText151</property>\r
+                                                                            <property name="pane_border">1</property>\r
+                                                                            <property name="pane_position"></property>\r
+                                                                            <property name="pane_size"></property>\r
+                                                                            <property name="permission">protected</property>\r
+                                                                            <property name="pin_button">1</property>\r
+                                                                            <property name="pos"></property>\r
+                                                                            <property name="resize">Resizable</property>\r
+                                                                            <property name="show">1</property>\r
+                                                                            <property name="size">80,-1</property>\r
+                                                                            <property name="style">wxALIGN_RIGHT</property>\r
+                                                                            <property name="subclass"></property>\r
+                                                                            <property name="toolbar_pane">0</property>\r
+                                                                            <property name="tooltip"></property>\r
+                                                                            <property name="validator_data_type"></property>\r
+                                                                            <property name="validator_style">wxFILTER_NONE</property>\r
+                                                                            <property name="validator_type">wxDefaultValidator</property>\r
+                                                                            <property name="validator_variable"></property>\r
+                                                                            <property name="window_extra_style"></property>\r
+                                                                            <property name="window_name"></property>\r
+                                                                            <property name="window_style"></property>\r
+                                                                            <property name="wrap">-1</property>\r
+                                                                            <event name="OnChar"></event>\r
+                                                                            <event name="OnEnterWindow"></event>\r
+                                                                            <event name="OnEraseBackground"></event>\r
+                                                                            <event name="OnKeyDown"></event>\r
+                                                                            <event name="OnKeyUp"></event>\r
+                                                                            <event name="OnKillFocus"></event>\r
+                                                                            <event name="OnLeaveWindow"></event>\r
+                                                                            <event name="OnLeftDClick"></event>\r
+                                                                            <event name="OnLeftDown"></event>\r
+                                                                            <event name="OnLeftUp"></event>\r
+                                                                            <event name="OnMiddleDClick"></event>\r
+                                                                            <event name="OnMiddleDown"></event>\r
+                                                                            <event name="OnMiddleUp"></event>\r
+                                                                            <event name="OnMotion"></event>\r
+                                                                            <event name="OnMouseEvents"></event>\r
+                                                                            <event name="OnMouseWheel"></event>\r
+                                                                            <event name="OnPaint"></event>\r
+                                                                            <event name="OnRightDClick"></event>\r
+                                                                            <event name="OnRightDown"></event>\r
+                                                                            <event name="OnRightUp"></event>\r
+                                                                            <event name="OnSetFocus"></event>\r
+                                                                            <event name="OnSize"></event>\r
+                                                                            <event name="OnUpdateUI"></event>\r
+                                                                        </object>\r
+                                                                    </object>\r
+                                                                    <object class="sizeritem" expanded="0">\r
+                                                                        <property name="border">5</property>\r
+                                                                        <property name="flag">wxALIGN_CENTER_VERTICAL|wxALIGN_LEFT|wxALL</property>\r
+                                                                        <property name="proportion">1</property>\r
+                                                                        <object class="wxTextCtrl" expanded="0">\r
+                                                                            <property name="BottomDockable">1</property>\r
+                                                                            <property name="LeftDockable">1</property>\r
+                                                                            <property name="RightDockable">1</property>\r
+                                                                            <property name="TopDockable">1</property>\r
+                                                                            <property name="aui_layer"></property>\r
+                                                                            <property name="aui_name"></property>\r
+                                                                            <property name="aui_position"></property>\r
+                                                                            <property name="aui_row"></property>\r
+                                                                            <property name="best_size"></property>\r
+                                                                            <property name="bg"></property>\r
+                                                                            <property name="caption"></property>\r
+                                                                            <property name="caption_visible">1</property>\r
+                                                                            <property name="center_pane">0</property>\r
+                                                                            <property name="close_button">1</property>\r
+                                                                            <property name="context_help"></property>\r
+                                                                            <property name="context_menu">1</property>\r
+                                                                            <property name="default_pane">0</property>\r
+                                                                            <property name="dock">Dock</property>\r
+                                                                            <property name="dock_fixed">0</property>\r
+                                                                            <property name="docking">Left</property>\r
+                                                                            <property name="enabled">1</property>\r
+                                                                            <property name="fg"></property>\r
+                                                                            <property name="floatable">1</property>\r
+                                                                            <property name="font">,90,90,7,70,0</property>\r
+                                                                            <property name="gripper">0</property>\r
+                                                                            <property name="hidden">0</property>\r
+                                                                            <property name="id">wxID_ANY</property>\r
+                                                                            <property name="max_size"></property>\r
+                                                                            <property name="maximize_button">0</property>\r
+                                                                            <property name="maximum_size">30,-1</property>\r
+                                                                            <property name="maxlength">0</property>\r
+                                                                            <property name="min_size"></property>\r
+                                                                            <property name="minimize_button">0</property>\r
+                                                                            <property name="minimum_size">30,-1</property>\r
+                                                                            <property name="moveable">1</property>\r
+                                                                            <property name="name">m_textNumChOut</property>\r
+                                                                            <property name="pane_border">1</property>\r
+                                                                            <property name="pane_position"></property>\r
+                                                                            <property name="pane_size"></property>\r
+                                                                            <property name="permission">protected</property>\r
+                                                                            <property name="pin_button">1</property>\r
+                                                                            <property name="pos"></property>\r
+                                                                            <property name="resize">Resizable</property>\r
+                                                                            <property name="show">1</property>\r
+                                                                            <property name="size">30,-1</property>\r
+                                                                            <property name="style">wxTE_READONLY</property>\r
+                                                                            <property name="subclass"></property>\r
+                                                                            <property name="toolbar_pane">0</property>\r
+                                                                            <property name="tooltip"></property>\r
+                                                                            <property name="validator_data_type"></property>\r
+                                                                            <property name="validator_style">wxFILTER_NONE</property>\r
+                                                                            <property name="validator_type">wxDefaultValidator</property>\r
+                                                                            <property name="validator_variable"></property>\r
+                                                                            <property name="value"></property>\r
+                                                                            <property name="window_extra_style"></property>\r
+                                                                            <property name="window_name"></property>\r
+                                                                            <property name="window_style"></property>\r
+                                                                            <event name="OnChar"></event>\r
+                                                                            <event name="OnEnterWindow"></event>\r
+                                                                            <event name="OnEraseBackground"></event>\r
+                                                                            <event name="OnKeyDown"></event>\r
+                                                                            <event name="OnKeyUp"></event>\r
+                                                                            <event name="OnKillFocus"></event>\r
+                                                                            <event name="OnLeaveWindow"></event>\r
+                                                                            <event name="OnLeftDClick"></event>\r
+                                                                            <event name="OnLeftDown"></event>\r
+                                                                            <event name="OnLeftUp"></event>\r
+                                                                            <event name="OnMiddleDClick"></event>\r
+                                                                            <event name="OnMiddleDown"></event>\r
+                                                                            <event name="OnMiddleUp"></event>\r
+                                                                            <event name="OnMotion"></event>\r
+                                                                            <event name="OnMouseEvents"></event>\r
+                                                                            <event name="OnMouseWheel"></event>\r
+                                                                            <event name="OnPaint"></event>\r
+                                                                            <event name="OnRightDClick"></event>\r
+                                                                            <event name="OnRightDown"></event>\r
+                                                                            <event name="OnRightUp"></event>\r
+                                                                            <event name="OnSetFocus"></event>\r
+                                                                            <event name="OnSize"></event>\r
+                                                                            <event name="OnText"></event>\r
+                                                                            <event name="OnTextEnter"></event>\r
+                                                                            <event name="OnTextMaxLen"></event>\r
+                                                                            <event name="OnTextURL"></event>\r
+                                                                            <event name="OnUpdateUI"></event>\r
+                                                                        </object>\r
+                                                                    </object>\r
+                                                                    <object class="sizeritem" expanded="0">\r
+                                                                        <property name="border">5</property>\r
+                                                                        <property name="flag">wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL|wxEXPAND</property>\r
+                                                                        <property name="proportion">1</property>\r
+                                                                        <object class="wxStaticText" expanded="0">\r
+                                                                            <property name="BottomDockable">1</property>\r
+                                                                            <property name="LeftDockable">1</property>\r
+                                                                            <property name="RightDockable">1</property>\r
+                                                                            <property name="TopDockable">1</property>\r
+                                                                            <property name="aui_layer"></property>\r
+                                                                            <property name="aui_name"></property>\r
+                                                                            <property name="aui_position"></property>\r
+                                                                            <property name="aui_row"></property>\r
+                                                                            <property name="best_size"></property>\r
+                                                                            <property name="bg"></property>\r
+                                                                            <property name="caption"></property>\r
+                                                                            <property name="caption_visible">1</property>\r
+                                                                            <property name="center_pane">0</property>\r
+                                                                            <property name="close_button">1</property>\r
+                                                                            <property name="context_help"></property>\r
+                                                                            <property name="context_menu">1</property>\r
+                                                                            <property name="default_pane">0</property>\r
+                                                                            <property name="dock">Dock</property>\r
+                                                                            <property name="dock_fixed">0</property>\r
+                                                                            <property name="docking">Left</property>\r
+                                                                            <property name="enabled">1</property>\r
+                                                                            <property name="fg"></property>\r
+                                                                            <property name="floatable">1</property>\r
+                                                                            <property name="font">,90,90,7,70,0</property>\r
+                                                                            <property name="gripper">0</property>\r
+                                                                            <property name="hidden">0</property>\r
+                                                                            <property name="id">wxID_ANY</property>\r
+                                                                            <property name="label"># Ch In:</property>\r
+                                                                            <property name="max_size"></property>\r
+                                                                            <property name="maximize_button">0</property>\r
+                                                                            <property name="maximum_size">90,-1</property>\r
+                                                                            <property name="min_size"></property>\r
+                                                                            <property name="minimize_button">0</property>\r
+                                                                            <property name="minimum_size">80,-1</property>\r
+                                                                            <property name="moveable">1</property>\r
+                                                                            <property name="name">m_staticText141</property>\r
+                                                                            <property name="pane_border">1</property>\r
+                                                                            <property name="pane_position"></property>\r
+                                                                            <property name="pane_size"></property>\r
+                                                                            <property name="permission">protected</property>\r
+                                                                            <property name="pin_button">1</property>\r
+                                                                            <property name="pos"></property>\r
+                                                                            <property name="resize">Resizable</property>\r
+                                                                            <property name="show">1</property>\r
+                                                                            <property name="size">80,-1</property>\r
+                                                                            <property name="style">wxALIGN_RIGHT</property>\r
+                                                                            <property name="subclass"></property>\r
+                                                                            <property name="toolbar_pane">0</property>\r
+                                                                            <property name="tooltip"></property>\r
+                                                                            <property name="validator_data_type"></property>\r
+                                                                            <property name="validator_style">wxFILTER_NONE</property>\r
+                                                                            <property name="validator_type">wxDefaultValidator</property>\r
+                                                                            <property name="validator_variable"></property>\r
+                                                                            <property name="window_extra_style"></property>\r
+                                                                            <property name="window_name"></property>\r
+                                                                            <property name="window_style"></property>\r
+                                                                            <property name="wrap">-1</property>\r
+                                                                            <event name="OnChar"></event>\r
+                                                                            <event name="OnEnterWindow"></event>\r
+                                                                            <event name="OnEraseBackground"></event>\r
+                                                                            <event name="OnKeyDown"></event>\r
+                                                                            <event name="OnKeyUp"></event>\r
+                                                                            <event name="OnKillFocus"></event>\r
+                                                                            <event name="OnLeaveWindow"></event>\r
+                                                                            <event name="OnLeftDClick"></event>\r
+                                                                            <event name="OnLeftDown"></event>\r
+                                                                            <event name="OnLeftUp"></event>\r
+                                                                            <event name="OnMiddleDClick"></event>\r
+                                                                            <event name="OnMiddleDown"></event>\r
+                                                                            <event name="OnMiddleUp"></event>\r
+                                                                            <event name="OnMotion"></event>\r
+                                                                            <event name="OnMouseEvents"></event>\r
+                                                                            <event name="OnMouseWheel"></event>\r
+                                                                            <event name="OnPaint"></event>\r
+                                                                            <event name="OnRightDClick"></event>\r
+                                                                            <event name="OnRightDown"></event>\r
+                                                                            <event name="OnRightUp"></event>\r
+                                                                            <event name="OnSetFocus"></event>\r
+                                                                            <event name="OnSize"></event>\r
+                                                                            <event name="OnUpdateUI"></event>\r
+                                                                        </object>\r
+                                                                    </object>\r
+                                                                    <object class="sizeritem" expanded="0">\r
+                                                                        <property name="border">4</property>\r
+                                                                        <property name="flag">wxALL</property>\r
+                                                                        <property name="proportion">0</property>\r
+                                                                        <object class="wxTextCtrl" expanded="0">\r
+                                                                            <property name="BottomDockable">1</property>\r
+                                                                            <property name="LeftDockable">1</property>\r
+                                                                            <property name="RightDockable">1</property>\r
+                                                                            <property name="TopDockable">1</property>\r
+                                                                            <property name="aui_layer"></property>\r
+                                                                            <property name="aui_name"></property>\r
+                                                                            <property name="aui_position"></property>\r
+                                                                            <property name="aui_row"></property>\r
+                                                                            <property name="best_size"></property>\r
+                                                                            <property name="bg"></property>\r
+                                                                            <property name="caption"></property>\r
+                                                                            <property name="caption_visible">1</property>\r
+                                                                            <property name="center_pane">0</property>\r
+                                                                            <property name="close_button">1</property>\r
+                                                                            <property name="context_help"></property>\r
+                                                                            <property name="context_menu">1</property>\r
+                                                                            <property name="default_pane">0</property>\r
+                                                                            <property name="dock">Dock</property>\r
+                                                                            <property name="dock_fixed">0</property>\r
+                                                                            <property name="docking">Left</property>\r
+                                                                            <property name="enabled">1</property>\r
+                                                                            <property name="fg"></property>\r
+                                                                            <property name="floatable">1</property>\r
+                                                                            <property name="font">,90,90,7,70,0</property>\r
+                                                                            <property name="gripper">0</property>\r
+                                                                            <property name="hidden">0</property>\r
+                                                                            <property name="id">wxID_ANY</property>\r
+                                                                            <property name="max_size"></property>\r
+                                                                            <property name="maximize_button">0</property>\r
+                                                                            <property name="maximum_size">30,-1</property>\r
+                                                                            <property name="maxlength">0</property>\r
+                                                                            <property name="min_size"></property>\r
+                                                                            <property name="minimize_button">0</property>\r
+                                                                            <property name="minimum_size">30,-1</property>\r
+                                                                            <property name="moveable">1</property>\r
+                                                                            <property name="name">m_textNumChIn</property>\r
+                                                                            <property name="pane_border">1</property>\r
+                                                                            <property name="pane_position"></property>\r
+                                                                            <property name="pane_size"></property>\r
+                                                                            <property name="permission">protected</property>\r
+                                                                            <property name="pin_button">1</property>\r
+                                                                            <property name="pos"></property>\r
+                                                                            <property name="resize">Resizable</property>\r
+                                                                            <property name="show">1</property>\r
+                                                                            <property name="size">30,-1</property>\r
+                                                                            <property name="style">wxTE_READONLY</property>\r
+                                                                            <property name="subclass"></property>\r
+                                                                            <property name="toolbar_pane">0</property>\r
+                                                                            <property name="tooltip"></property>\r
+                                                                            <property name="validator_data_type"></property>\r
+                                                                            <property name="validator_style">wxFILTER_NONE</property>\r
+                                                                            <property name="validator_type">wxDefaultValidator</property>\r
+                                                                            <property name="validator_variable"></property>\r
+                                                                            <property name="value"></property>\r
+                                                                            <property name="window_extra_style"></property>\r
+                                                                            <property name="window_name"></property>\r
+                                                                            <property name="window_style"></property>\r
+                                                                            <event name="OnChar"></event>\r
+                                                                            <event name="OnEnterWindow"></event>\r
+                                                                            <event name="OnEraseBackground"></event>\r
+                                                                            <event name="OnKeyDown"></event>\r
+                                                                            <event name="OnKeyUp"></event>\r
+                                                                            <event name="OnKillFocus"></event>\r
+                                                                            <event name="OnLeaveWindow"></event>\r
+                                                                            <event name="OnLeftDClick"></event>\r
+                                                                            <event name="OnLeftDown"></event>\r
+                                                                            <event name="OnLeftUp"></event>\r
+                                                                            <event name="OnMiddleDClick"></event>\r
+                                                                            <event name="OnMiddleDown"></event>\r
+                                                                            <event name="OnMiddleUp"></event>\r
+                                                                            <event name="OnMotion"></event>\r
+                                                                            <event name="OnMouseEvents"></event>\r
+                                                                            <event name="OnMouseWheel"></event>\r
+                                                                            <event name="OnPaint"></event>\r
+                                                                            <event name="OnRightDClick"></event>\r
+                                                                            <event name="OnRightDown"></event>\r
+                                                                            <event name="OnRightUp"></event>\r
+                                                                            <event name="OnSetFocus"></event>\r
+                                                                            <event name="OnSize"></event>\r
+                                                                            <event name="OnText"></event>\r
+                                                                            <event name="OnTextEnter"></event>\r
+                                                                            <event name="OnTextMaxLen"></event>\r
+                                                                            <event name="OnTextURL"></event>\r
+                                                                            <event name="OnUpdateUI"></event>\r
+                                                                        </object>\r
+                                                                    </object>\r
+                                                                </object>\r
+                                                            </object>\r
                                                         </object>\r
                                                     </object>\r
-                                                    <object class="sizeritem" expanded="1">\r
+                                                    <object class="sizeritem" expanded="0">\r
                                                         <property name="border">5</property>\r
-                                                        <property name="flag">wxEXPAND</property>\r
-                                                        <property name="proportion">1</property>\r
-                                                        <object class="wxGridSizer" expanded="1">\r
-                                                            <property name="cols">1</property>\r
+                                                        <property name="flag">wxALL|wxEXPAND</property>\r
+                                                        <property name="proportion">0</property>\r
+                                                        <object class="wxGridSizer" expanded="0">\r
+                                                            <property name="cols">2</property>\r
                                                             <property name="hgap">0</property>\r
                                                             <property name="minimum_size"></property>\r
                                                             <property name="name">gSizer7</property>\r
                                                             <property name="permission">none</property>\r
                                                             <property name="rows">4</property>\r
                                                             <property name="vgap">0</property>\r
-                                                            <object class="sizeritem" expanded="1">\r
+                                                            <object class="sizeritem" expanded="0">\r
                                                                 <property name="border">5</property>\r
                                                                 <property name="flag">wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL</property>\r
                                                                 <property name="proportion">0</property>\r
-                                                                <object class="wxStaticText" expanded="1">\r
+                                                                <object class="wxStaticText" expanded="0">\r
                                                                     <property name="BottomDockable">1</property>\r
                                                                     <property name="LeftDockable">1</property>\r
                                                                     <property name="RightDockable">1</property>\r
                                                                     <property name="resize">Resizable</property>\r
                                                                     <property name="show">1</property>\r
                                                                     <property name="size"></property>\r
-                                                                    <property name="style">wxALIGN_RIGHT</property>\r
+                                                                    <property name="style">wxALIGN_RIGHT|wxST_NO_AUTORESIZE</property>\r
                                                                     <property name="subclass"></property>\r
                                                                     <property name="toolbar_pane">0</property>\r
                                                                     <property name="tooltip"></property>\r
                                                                     <event name="OnUpdateUI"></event>\r
                                                                 </object>\r
                                                             </object>\r
-                                                            <object class="sizeritem" expanded="1">\r
+                                                            <object class="sizeritem" expanded="0">\r
                                                                 <property name="border">5</property>\r
-                                                                <property name="flag">wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL</property>\r
-                                                                <property name="proportion">0</property>\r
-                                                                <object class="wxStaticText" expanded="1">\r
+                                                                <property name="flag">wxALL</property>\r
+                                                                <property name="proportion">1</property>\r
+                                                                <object class="wxComboBox" expanded="0">\r
                                                                     <property name="BottomDockable">1</property>\r
                                                                     <property name="LeftDockable">1</property>\r
                                                                     <property name="RightDockable">1</property>\r
                                                                     <property name="caption"></property>\r
                                                                     <property name="caption_visible">1</property>\r
                                                                     <property name="center_pane">0</property>\r
+                                                                    <property name="choices"></property>\r
                                                                     <property name="close_button">1</property>\r
                                                                     <property name="context_help"></property>\r
                                                                     <property name="context_menu">1</property>\r
                                                                     <property name="gripper">0</property>\r
                                                                     <property name="hidden">0</property>\r
                                                                     <property name="id">wxID_ANY</property>\r
-                                                                    <property name="label">codec -&gt; Radio Tx: </property>\r
                                                                     <property name="max_size"></property>\r
                                                                     <property name="maximize_button">0</property>\r
                                                                     <property name="maximum_size"></property>\r
                                                                     <property name="minimize_button">0</property>\r
                                                                     <property name="minimum_size"></property>\r
                                                                     <property name="moveable">1</property>\r
-                                                                    <property name="name">m_staticText15</property>\r
+                                                                    <property name="name">m_comboAudioCodec</property>\r
                                                                     <property name="pane_border">1</property>\r
                                                                     <property name="pane_position"></property>\r
                                                                     <property name="pane_size"></property>\r
                                                                     <property name="pin_button">1</property>\r
                                                                     <property name="pos"></property>\r
                                                                     <property name="resize">Resizable</property>\r
+                                                                    <property name="selection">-1</property>\r
                                                                     <property name="show">1</property>\r
                                                                     <property name="size"></property>\r
-                                                                    <property name="style">wxALIGN_RIGHT</property>\r
+                                                                    <property name="style"></property>\r
                                                                     <property name="subclass"></property>\r
                                                                     <property name="toolbar_pane">0</property>\r
                                                                     <property name="tooltip"></property>\r
                                                                     <property name="validator_style">wxFILTER_NONE</property>\r
                                                                     <property name="validator_type">wxDefaultValidator</property>\r
                                                                     <property name="validator_variable"></property>\r
+                                                                    <property name="value">&lt;default&gt;</property>\r
                                                                     <property name="window_extra_style"></property>\r
                                                                     <property name="window_name"></property>\r
                                                                     <property name="window_style"></property>\r
-                                                                    <property name="wrap">-1</property>\r
                                                                     <event name="OnChar"></event>\r
+                                                                    <event name="OnCombobox"></event>\r
                                                                     <event name="OnEnterWindow"></event>\r
                                                                     <event name="OnEraseBackground"></event>\r
                                                                     <event name="OnKeyDown"></event>\r
                                                                     <event name="OnRightUp"></event>\r
                                                                     <event name="OnSetFocus"></event>\r
                                                                     <event name="OnSize"></event>\r
+                                                                    <event name="OnText"></event>\r
+                                                                    <event name="OnTextEnter"></event>\r
                                                                     <event name="OnUpdateUI"></event>\r
                                                                 </object>\r
                                                             </object>\r
-                                                            <object class="sizeritem" expanded="1">\r
+                                                            <object class="sizeritem" expanded="0">\r
                                                                 <property name="border">5</property>\r
-                                                                <property name="flag">wxALIGN_RIGHT|wxALL</property>\r
+                                                                <property name="flag">wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL</property>\r
                                                                 <property name="proportion">0</property>\r
-                                                                <object class="wxStaticText" expanded="1">\r
+                                                                <object class="wxStaticText" expanded="0">\r
                                                                     <property name="BottomDockable">1</property>\r
                                                                     <property name="LeftDockable">1</property>\r
                                                                     <property name="RightDockable">1</property>\r
                                                                     <property name="gripper">0</property>\r
                                                                     <property name="hidden">0</property>\r
                                                                     <property name="id">wxID_ANY</property>\r
-                                                                    <property name="label">Radio Rx -&gt; codec:</property>\r
+                                                                    <property name="label">codec -&gt; Radio Tx:</property>\r
                                                                     <property name="max_size"></property>\r
                                                                     <property name="maximize_button">0</property>\r
                                                                     <property name="maximum_size"></property>\r
                                                                     <property name="minimize_button">0</property>\r
                                                                     <property name="minimum_size"></property>\r
                                                                     <property name="moveable">1</property>\r
-                                                                    <property name="name">m_staticText16</property>\r
+                                                                    <property name="name">m_staticText15</property>\r
                                                                     <property name="pane_border">1</property>\r
                                                                     <property name="pane_position"></property>\r
                                                                     <property name="pane_size"></property>\r
                                                                     <property name="resize">Resizable</property>\r
                                                                     <property name="show">1</property>\r
                                                                     <property name="size"></property>\r
-                                                                    <property name="style">wxALIGN_RIGHT</property>\r
+                                                                    <property name="style">wxALIGN_RIGHT|wxST_NO_AUTORESIZE</property>\r
                                                                     <property name="subclass"></property>\r
                                                                     <property name="toolbar_pane">0</property>\r
                                                                     <property name="tooltip"></property>\r
                                                                     <event name="OnUpdateUI"></event>\r
                                                                 </object>\r
                                                             </object>\r
-                                                            <object class="sizeritem" expanded="1">\r
+                                                            <object class="sizeritem" expanded="0">\r
                                                                 <property name="border">5</property>\r
-                                                                <property name="flag">wxALIGN_RIGHT|wxALL</property>\r
-                                                                <property name="proportion">0</property>\r
-                                                                <object class="wxStaticText" expanded="1">\r
+                                                                <property name="flag">wxALL</property>\r
+                                                                <property name="proportion">1</property>\r
+                                                                <object class="wxComboBox" expanded="0">\r
                                                                     <property name="BottomDockable">1</property>\r
                                                                     <property name="LeftDockable">1</property>\r
                                                                     <property name="RightDockable">1</property>\r
                                                                     <property name="caption"></property>\r
                                                                     <property name="caption_visible">1</property>\r
                                                                     <property name="center_pane">0</property>\r
+                                                                    <property name="choices"></property>\r
                                                                     <property name="close_button">1</property>\r
                                                                     <property name="context_help"></property>\r
                                                                     <property name="context_menu">1</property>\r
                                                                     <property name="gripper">0</property>\r
                                                                     <property name="hidden">0</property>\r
                                                                     <property name="id">wxID_ANY</property>\r
-                                                                    <property name="label">codec -&gt; Audio out (spkr):</property>\r
                                                                     <property name="max_size"></property>\r
                                                                     <property name="maximize_button">0</property>\r
                                                                     <property name="maximum_size"></property>\r
                                                                     <property name="minimize_button">0</property>\r
                                                                     <property name="minimum_size"></property>\r
                                                                     <property name="moveable">1</property>\r
-                                                                    <property name="name">m_staticText17</property>\r
+                                                                    <property name="name">m_comboCodecTx</property>\r
                                                                     <property name="pane_border">1</property>\r
                                                                     <property name="pane_position"></property>\r
                                                                     <property name="pane_size"></property>\r
                                                                     <property name="pin_button">1</property>\r
                                                                     <property name="pos"></property>\r
                                                                     <property name="resize">Resizable</property>\r
+                                                                    <property name="selection">-1</property>\r
                                                                     <property name="show">1</property>\r
                                                                     <property name="size"></property>\r
-                                                                    <property name="style">wxALIGN_RIGHT</property>\r
+                                                                    <property name="style"></property>\r
                                                                     <property name="subclass"></property>\r
                                                                     <property name="toolbar_pane">0</property>\r
                                                                     <property name="tooltip"></property>\r
                                                                     <property name="validator_style">wxFILTER_NONE</property>\r
                                                                     <property name="validator_type">wxDefaultValidator</property>\r
                                                                     <property name="validator_variable"></property>\r
+                                                                    <property name="value">&lt;default&gt;</property>\r
                                                                     <property name="window_extra_style"></property>\r
                                                                     <property name="window_name"></property>\r
                                                                     <property name="window_style"></property>\r
-                                                                    <property name="wrap">-1</property>\r
                                                                     <event name="OnChar"></event>\r
+                                                                    <event name="OnCombobox"></event>\r
                                                                     <event name="OnEnterWindow"></event>\r
                                                                     <event name="OnEraseBackground"></event>\r
                                                                     <event name="OnKeyDown"></event>\r
                                                                     <event name="OnRightUp"></event>\r
                                                                     <event name="OnSetFocus"></event>\r
                                                                     <event name="OnSize"></event>\r
+                                                                    <event name="OnText"></event>\r
+                                                                    <event name="OnTextEnter"></event>\r
                                                                     <event name="OnUpdateUI"></event>\r
                                                                 </object>\r
                                                             </object>\r
-                                                        </object>\r
-                                                    </object>\r
-                                                    <object class="sizeritem" expanded="1">\r
-                                                        <property name="border">5</property>\r
-                                                        <property name="flag">wxEXPAND</property>\r
-                                                        <property name="proportion">1</property>\r
-                                                        <object class="wxGridSizer" expanded="1">\r
-                                                            <property name="cols">1</property>\r
-                                                            <property name="hgap">0</property>\r
-                                                            <property name="minimum_size"></property>\r
-                                                            <property name="name">gSizer5</property>\r
-                                                            <property name="permission">none</property>\r
-                                                            <property name="rows">4</property>\r
-                                                            <property name="vgap">0</property>\r
-                                                            <object class="sizeritem" expanded="1">\r
+                                                            <object class="sizeritem" expanded="0">\r
                                                                 <property name="border">5</property>\r
-                                                                <property name="flag">wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL|wxALL|wxEXPAND</property>\r
+                                                                <property name="flag">wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL</property>\r
                                                                 <property name="proportion">0</property>\r
-                                                                <object class="wxComboBox" expanded="1">\r
+                                                                <object class="wxStaticText" expanded="0">\r
                                                                     <property name="BottomDockable">1</property>\r
                                                                     <property name="LeftDockable">1</property>\r
                                                                     <property name="RightDockable">1</property>\r
                                                                     <property name="caption"></property>\r
                                                                     <property name="caption_visible">1</property>\r
                                                                     <property name="center_pane">0</property>\r
-                                                                    <property name="choices"></property>\r
                                                                     <property name="close_button">1</property>\r
                                                                     <property name="context_help"></property>\r
                                                                     <property name="context_menu">1</property>\r
                                                                     <property name="gripper">0</property>\r
                                                                     <property name="hidden">0</property>\r
                                                                     <property name="id">wxID_ANY</property>\r
+                                                                    <property name="label">Radio Rx -&gt; codec:</property>\r
                                                                     <property name="max_size"></property>\r
                                                                     <property name="maximize_button">0</property>\r
                                                                     <property name="maximum_size"></property>\r
                                                                     <property name="minimize_button">0</property>\r
                                                                     <property name="minimum_size"></property>\r
                                                                     <property name="moveable">1</property>\r
-                                                                    <property name="name">m_comboBox1</property>\r
+                                                                    <property name="name">m_staticText16</property>\r
                                                                     <property name="pane_border">1</property>\r
                                                                     <property name="pane_position"></property>\r
                                                                     <property name="pane_size"></property>\r
                                                                     <property name="pin_button">1</property>\r
                                                                     <property name="pos"></property>\r
                                                                     <property name="resize">Resizable</property>\r
-                                                                    <property name="selection">-1</property>\r
                                                                     <property name="show">1</property>\r
                                                                     <property name="size"></property>\r
-                                                                    <property name="style"></property>\r
+                                                                    <property name="style">wxALIGN_RIGHT|wxST_NO_AUTORESIZE</property>\r
                                                                     <property name="subclass"></property>\r
                                                                     <property name="toolbar_pane">0</property>\r
                                                                     <property name="tooltip"></property>\r
                                                                     <property name="validator_style">wxFILTER_NONE</property>\r
                                                                     <property name="validator_type">wxDefaultValidator</property>\r
                                                                     <property name="validator_variable"></property>\r
-                                                                    <property name="value">Combo!</property>\r
                                                                     <property name="window_extra_style"></property>\r
                                                                     <property name="window_name"></property>\r
                                                                     <property name="window_style"></property>\r
+                                                                    <property name="wrap">-1</property>\r
                                                                     <event name="OnChar"></event>\r
-                                                                    <event name="OnCombobox"></event>\r
                                                                     <event name="OnEnterWindow"></event>\r
                                                                     <event name="OnEraseBackground"></event>\r
                                                                     <event name="OnKeyDown"></event>\r
                                                                     <event name="OnRightUp"></event>\r
                                                                     <event name="OnSetFocus"></event>\r
                                                                     <event name="OnSize"></event>\r
-                                                                    <event name="OnText"></event>\r
-                                                                    <event name="OnTextEnter"></event>\r
                                                                     <event name="OnUpdateUI"></event>\r
                                                                 </object>\r
                                                             </object>\r
-                                                            <object class="sizeritem" expanded="1">\r
+                                                            <object class="sizeritem" expanded="0">\r
                                                                 <property name="border">5</property>\r
-                                                                <property name="flag">wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL|wxALL|wxEXPAND</property>\r
-                                                                <property name="proportion">0</property>\r
-                                                                <object class="wxComboBox" expanded="1">\r
+                                                                <property name="flag">wxALL</property>\r
+                                                                <property name="proportion">1</property>\r
+                                                                <object class="wxComboBox" expanded="0">\r
                                                                     <property name="BottomDockable">1</property>\r
                                                                     <property name="LeftDockable">1</property>\r
                                                                     <property name="RightDockable">1</property>\r
                                                                     <property name="minimize_button">0</property>\r
                                                                     <property name="minimum_size"></property>\r
                                                                     <property name="moveable">1</property>\r
-                                                                    <property name="name">m_comboBox2</property>\r
+                                                                    <property name="name">m_comboRadioRx</property>\r
                                                                     <property name="pane_border">1</property>\r
                                                                     <property name="pane_position"></property>\r
                                                                     <property name="pane_size"></property>\r
                                                                     <property name="validator_style">wxFILTER_NONE</property>\r
                                                                     <property name="validator_type">wxDefaultValidator</property>\r
                                                                     <property name="validator_variable"></property>\r
-                                                                    <property name="value">Combo!</property>\r
+                                                                    <property name="value">&lt;default&gt;</property>\r
                                                                     <property name="window_extra_style"></property>\r
                                                                     <property name="window_name"></property>\r
                                                                     <property name="window_style"></property>\r
                                                                     <event name="OnUpdateUI"></event>\r
                                                                 </object>\r
                                                             </object>\r
-                                                            <object class="sizeritem" expanded="1">\r
+                                                            <object class="sizeritem" expanded="0">\r
                                                                 <property name="border">5</property>\r
-                                                                <property name="flag">wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL|wxALL|wxEXPAND</property>\r
+                                                                <property name="flag">wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL</property>\r
                                                                 <property name="proportion">0</property>\r
-                                                                <object class="wxComboBox" expanded="1">\r
+                                                                <object class="wxStaticText" expanded="0">\r
                                                                     <property name="BottomDockable">1</property>\r
                                                                     <property name="LeftDockable">1</property>\r
                                                                     <property name="RightDockable">1</property>\r
                                                                     <property name="caption"></property>\r
                                                                     <property name="caption_visible">1</property>\r
                                                                     <property name="center_pane">0</property>\r
-                                                                    <property name="choices"></property>\r
                                                                     <property name="close_button">1</property>\r
                                                                     <property name="context_help"></property>\r
                                                                     <property name="context_menu">1</property>\r
                                                                     <property name="gripper">0</property>\r
                                                                     <property name="hidden">0</property>\r
                                                                     <property name="id">wxID_ANY</property>\r
+                                                                    <property name="label">codec -&gt; Audio out (spkr):</property>\r
                                                                     <property name="max_size"></property>\r
                                                                     <property name="maximize_button">0</property>\r
                                                                     <property name="maximum_size"></property>\r
                                                                     <property name="minimize_button">0</property>\r
                                                                     <property name="minimum_size"></property>\r
                                                                     <property name="moveable">1</property>\r
-                                                                    <property name="name">m_comboBox11</property>\r
+                                                                    <property name="name">m_staticText17</property>\r
                                                                     <property name="pane_border">1</property>\r
                                                                     <property name="pane_position"></property>\r
                                                                     <property name="pane_size"></property>\r
                                                                     <property name="pin_button">1</property>\r
                                                                     <property name="pos"></property>\r
                                                                     <property name="resize">Resizable</property>\r
-                                                                    <property name="selection">-1</property>\r
                                                                     <property name="show">1</property>\r
                                                                     <property name="size"></property>\r
-                                                                    <property name="style"></property>\r
+                                                                    <property name="style">wxALIGN_RIGHT|wxST_NO_AUTORESIZE</property>\r
                                                                     <property name="subclass"></property>\r
                                                                     <property name="toolbar_pane">0</property>\r
                                                                     <property name="tooltip"></property>\r
                                                                     <property name="validator_style">wxFILTER_NONE</property>\r
                                                                     <property name="validator_type">wxDefaultValidator</property>\r
                                                                     <property name="validator_variable"></property>\r
-                                                                    <property name="value">Combo!</property>\r
                                                                     <property name="window_extra_style"></property>\r
                                                                     <property name="window_name"></property>\r
                                                                     <property name="window_style"></property>\r
+                                                                    <property name="wrap">-1</property>\r
                                                                     <event name="OnChar"></event>\r
-                                                                    <event name="OnCombobox"></event>\r
                                                                     <event name="OnEnterWindow"></event>\r
                                                                     <event name="OnEraseBackground"></event>\r
                                                                     <event name="OnKeyDown"></event>\r
                                                                     <event name="OnRightUp"></event>\r
                                                                     <event name="OnSetFocus"></event>\r
                                                                     <event name="OnSize"></event>\r
-                                                                    <event name="OnText"></event>\r
-                                                                    <event name="OnTextEnter"></event>\r
                                                                     <event name="OnUpdateUI"></event>\r
                                                                 </object>\r
                                                             </object>\r
-                                                            <object class="sizeritem" expanded="1">\r
+                                                            <object class="sizeritem" expanded="0">\r
                                                                 <property name="border">5</property>\r
-                                                                <property name="flag">wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL|wxALL|wxEXPAND</property>\r
+                                                                <property name="flag">wxALL</property>\r
                                                                 <property name="proportion">0</property>\r
-                                                                <object class="wxComboBox" expanded="1">\r
+                                                                <object class="wxComboBox" expanded="0">\r
                                                                     <property name="BottomDockable">1</property>\r
                                                                     <property name="LeftDockable">1</property>\r
                                                                     <property name="RightDockable">1</property>\r
                                                                     <property name="minimize_button">0</property>\r
                                                                     <property name="minimum_size"></property>\r
                                                                     <property name="moveable">1</property>\r
-                                                                    <property name="name">m_comboBox12</property>\r
+                                                                    <property name="name">m_comboCodecSpkr</property>\r
                                                                     <property name="pane_border">1</property>\r
                                                                     <property name="pane_position"></property>\r
                                                                     <property name="pane_size"></property>\r
                                                                     <property name="validator_style">wxFILTER_NONE</property>\r
                                                                     <property name="validator_type">wxDefaultValidator</property>\r
                                                                     <property name="validator_variable"></property>\r
-                                                                    <property name="value">Combo!</property>\r
+                                                                    <property name="value">&lt;default&gt;</property>\r
                                                                     <property name="window_extra_style"></property>\r
                                                                     <property name="window_name"></property>\r
                                                                     <property name="window_style"></property>\r
                                             </object>\r
                                         </object>\r
                                     </object>\r
-                                    <object class="sizeritem" expanded="1">\r
+                                    <object class="sizeritem" expanded="0">\r
                                         <property name="border">5</property>\r
                                         <property name="flag">wxEXPAND</property>\r
                                         <property name="proportion">1</property>\r
-                                        <object class="wxStaticBoxSizer" expanded="1">\r
+                                        <object class="wxStaticBoxSizer" expanded="0">\r
                                             <property name="id">wxID_ANY</property>\r
                                             <property name="label">File I/O</property>\r
                                             <property name="minimum_size"></property>\r
                                             <property name="orient">wxHORIZONTAL</property>\r
                                             <property name="permission">none</property>\r
                                             <event name="OnUpdateUI"></event>\r
-                                            <object class="sizeritem" expanded="1">\r
+                                            <object class="sizeritem" expanded="0">\r
                                                 <property name="border">5</property>\r
                                                 <property name="flag">wxEXPAND</property>\r
                                                 <property name="proportion">0</property>\r
-                                                <object class="wxBoxSizer" expanded="1">\r
+                                                <object class="wxBoxSizer" expanded="0">\r
                                                     <property name="minimum_size"></property>\r
                                                     <property name="name">bSizer38</property>\r
                                                     <property name="orient">wxVERTICAL</property>\r
                                                     <property name="permission">none</property>\r
-                                                    <object class="sizeritem" expanded="1">\r
+                                                    <object class="sizeritem" expanded="0">\r
                                                         <property name="border">5</property>\r
                                                         <property name="flag">wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL|wxALL</property>\r
                                                         <property name="proportion">1</property>\r
-                                                        <object class="wxRadioButton" expanded="1">\r
+                                                        <object class="wxRadioButton" expanded="0">\r
                                                             <property name="BottomDockable">1</property>\r
                                                             <property name="LeftDockable">1</property>\r
                                                             <property name="RightDockable">1</property>\r
                                                             <property name="resize">Resizable</property>\r
                                                             <property name="show">1</property>\r
                                                             <property name="size"></property>\r
-                                                            <property name="style">wxRB_GROUP</property>\r
+                                                            <property name="style"></property>\r
                                                             <property name="subclass"></property>\r
                                                             <property name="toolbar_pane">0</property>\r
                                                             <property name="tooltip"></property>\r
                                                     </object>\r
                                                 </object>\r
                                             </object>\r
-                                            <object class="sizeritem" expanded="1">\r
+                                            <object class="sizeritem" expanded="0">\r
                                                 <property name="border">5</property>\r
                                                 <property name="flag">wxEXPAND</property>\r
                                                 <property name="proportion">1</property>\r
-                                                <object class="wxBoxSizer" expanded="1">\r
+                                                <object class="wxBoxSizer" expanded="0">\r
                                                     <property name="minimum_size"></property>\r
                                                     <property name="name">bSizer45</property>\r
                                                     <property name="orient">wxVERTICAL</property>\r
                                                     <property name="permission">none</property>\r
                                                 </object>\r
                                             </object>\r
-                                            <object class="sizeritem" expanded="1">\r
+                                            <object class="sizeritem" expanded="0">\r
                                                 <property name="border">5</property>\r
                                                 <property name="flag">wxEXPAND</property>\r
                                                 <property name="proportion">1</property>\r
-                                                <object class="wxBoxSizer" expanded="1">\r
+                                                <object class="wxBoxSizer" expanded="0">\r
                                                     <property name="minimum_size"></property>\r
                                                     <property name="name">bSizer46</property>\r
                                                     <property name="orient">wxVERTICAL</property>\r
                                 </object>\r
                             </object>\r
                         </object>\r
-                        <object class="notebookpage" expanded="1">\r
+                        <object class="notebookpage" expanded="0">\r
                             <property name="bitmap"></property>\r
                             <property name="label">Settings</property>\r
                             <property name="select">0</property>\r
-                            <object class="wxPanel" expanded="1">\r
+                            <object class="wxPanel" expanded="0">\r
                                 <property name="BottomDockable">1</property>\r
                                 <property name="LeftDockable">1</property>\r
                                 <property name="RightDockable">1</property>\r
                                 <event name="OnSetFocus"></event>\r
                                 <event name="OnSize"></event>\r
                                 <event name="OnUpdateUI"></event>\r
-                                <object class="wxBoxSizer" expanded="1">\r
+                                <object class="wxBoxSizer" expanded="0">\r
                                     <property name="minimum_size"></property>\r
                                     <property name="name">bSizer27</property>\r
                                     <property name="orient">wxVERTICAL</property>\r
                                             </object>\r
                                         </object>\r
                                     </object>\r
-                                    <object class="sizeritem" expanded="1">\r
+                                    <object class="sizeritem" expanded="0">\r
                                         <property name="border">1</property>\r
                                         <property name="flag">wxEXPAND</property>\r
                                         <property name="proportion">1</property>\r
                                 </object>\r
                             </object>\r
                         </object>\r
-                        <object class="notebookpage" expanded="1">\r
+                        <object class="notebookpage" expanded="0">\r
                             <property name="bitmap"></property>\r
                             <property name="label">Right Channel</property>\r
                             <property name="select">0</property>\r
-                            <object class="wxPanel" expanded="1">\r
+                            <object class="wxPanel" expanded="0">\r
                                 <property name="BottomDockable">1</property>\r
                                 <property name="LeftDockable">1</property>\r
                                 <property name="RightDockable">1</property>\r
                                 <event name="OnSetFocus"></event>\r
                                 <event name="OnSize"></event>\r
                                 <event name="OnUpdateUI"></event>\r
-                                <object class="wxBoxSizer" expanded="1">\r
+                                <object class="wxBoxSizer" expanded="0">\r
                                     <property name="minimum_size"></property>\r
                                     <property name="name">bSizer36</property>\r
                                     <property name="orient">wxVERTICAL</property>\r
                         </object>\r
                     </object>\r
                 </object>\r
-                <object class="sizeritem" expanded="1">\r
+                <object class="sizeritem" expanded="0">\r
                     <property name="border">5</property>\r
                     <property name="flag">wxEXPAND</property>\r
                     <property name="proportion">0</property>\r
-                    <object class="wxBoxSizer" expanded="1">\r
+                    <object class="wxBoxSizer" expanded="0">\r
                         <property name="minimum_size"></property>\r
                         <property name="name">bSizer28</property>\r
                         <property name="orient">wxVERTICAL</property>\r
                         </object>\r
                     </object>\r
                 </object>\r
-                <object class="sizeritem" expanded="1">\r
+                <object class="sizeritem" expanded="0">\r
                     <property name="border">5</property>\r
                     <property name="flag">wxEXPAND</property>\r
                     <property name="proportion">0</property>\r
-                    <object class="spacer" expanded="1">\r
+                    <object class="spacer" expanded="0">\r
                         <property name="height">15</property>\r
                         <property name="permission">protected</property>\r
                         <property name="width">0</property>\r
index d311d9d86e75fc2c63a6843c8668bb3c4070db9f..5bc524810d09cb2d38b6dc6fa47f29dbb07b7d61 100644 (file)
Binary files a/fdmdv2/Release/fdmdv2.exe and b/fdmdv2/Release/fdmdv2.exe differ
index 1062fddf7cbe1a2f321583a66c07b76ce8e92812..e7870224dad0ecd16171e7e0ce42a7633d5a07ac 100644 (file)
 //==========================================================================\r
 #include "dlg_audio.h"\r
 \r
+//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=\r
+// Class AudioDlg( wxWindow* parent ) : DlgAudio( parent )\r
+//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=\r
 AudioDlg::AudioDlg( wxWindow* parent ) : DlgAudio( parent )\r
 {\r
 \r
 }\r
 \r
+//-------------------------------------------------------------------------\r
+// OnCancel()\r
+//-------------------------------------------------------------------------\r
 void AudioDlg::OnCancel( wxCommandEvent& event )\r
 {\r
     this->EndModal(wxID_OK);\r
 }\r
 \r
+//-------------------------------------------------------------------------\r
+// OnOK()\r
+//-------------------------------------------------------------------------\r
 void AudioDlg::OnOK( wxCommandEvent& event )\r
 {\r
     this->EndModal(wxID_OK);\r
 }\r
 \r
+//-------------------------------------------------------------------------\r
+// OnApply()\r
+//-------------------------------------------------------------------------\r
 void AudioDlg::OnApply( wxCommandEvent& event )\r
 {\r
     this->EndModal(wxID_OK);\r
 }\r
 \r
+//-------------------------------------------------------------------------\r
+// OnClose()\r
+//-------------------------------------------------------------------------\r
 void AudioDlg::OnClose( wxCloseEvent& event )\r
 {\r
     this->EndModal(wxID_OK);\r
 }\r
 \r
+//-------------------------------------------------------------------------\r
+// OnInitDialog()\r
+//-------------------------------------------------------------------------\r
 void AudioDlg::OnInitDialog( wxInitDialogEvent& event )\r
 {\r
     //wxMessageBox(wxT("got OnInitDialog()"), wxT("Select"), wxOK);\r
     populateAudioInfo();\r
 }\r
 \r
+//-------------------------------------------------------------------------\r
+// OnRxInputSelect()\r
+//-------------------------------------------------------------------------\r
 void AudioDlg::OnRxInputSelect( wxCommandEvent& event )\r
 {\r
     wxMessageBox(wxT("got OnRxInputSelect()"), wxT("Select"), wxOK);\r
 }\r
 \r
+//-------------------------------------------------------------------------\r
+// OnTxOutputSelect()\r
+//-------------------------------------------------------------------------\r
 void AudioDlg::OnTxOutputSelect( wxCommandEvent& event )\r
 {\r
     wxMessageBox(wxT("got OnTxOutputSelect()"), wxT("Select"), wxOK);\r
 }\r
 \r
+//-------------------------------------------------------------------------\r
+// OnVoiceInputSelect()\r
+//-------------------------------------------------------------------------\r
 void AudioDlg::OnVoiceInputSelect( wxCommandEvent& event )\r
 {\r
     wxMessageBox(wxT("got OnVoiceInputSelect()"), wxT("Select"), wxOK);\r
 }\r
 \r
+//-------------------------------------------------------------------------\r
+// OnVoiceOutputSelect()\r
+//-------------------------------------------------------------------------\r
 void AudioDlg::OnVoiceOutputSelect( wxCommandEvent& event )\r
 {\r
     wxMessageBox(wxT("got OnVoiceOutputSelect()"), wxT("Select"), wxOK);\r
 }\r
 \r
+//-------------------------------------------------------------------------\r
+// populateStandardSampleRates()\r
+//-------------------------------------------------------------------------\r
 void AudioDlg::populateStandardSampleRates(\r
-        wxListBox* target,
+        wxComboBox* target,
         const portaudio::DirectionSpecificStreamParameters &inputParameters,
         const portaudio::DirectionSpecificStreamParameters &outputParameters)
 {
@@ -82,17 +115,20 @@ void AudioDlg::populateStandardSampleRates(
         if (tmp.isSupported())
         {
             tStr.Printf("%i %8.2f", printCount, STANDARD_SAMPLE_RATES[i]);\r
-            target->InsertItems(1, &tStr, 0);
+            target->Append(tStr);
             ++printCount;
         }
     }
     if (printCount == 0)
     {
         tStr = "None\n";
-        target->InsertItems(1, &tStr, 0);
+        target->Append(tStr);
     }
 }
 
+//-------------------------------------------------------------------------\r
+// OnActivate()\r
+//-------------------------------------------------------------------------\r
 int AudioDlg::populateAudioInfo()
 {
     wxString tStr;\r
@@ -100,7 +136,7 @@ int AudioDlg::populateAudioInfo()
     try
     {
         portaudio::AutoSystem autoSys;
-        portaudio::System &sys = portaudio::System::instance();
+        portaudio::System &sys = portaudio::System::instance();\r
 /*
 
         tStr.Printf("PortAudio version number: %i\n", sys.version());
@@ -118,9 +154,7 @@ int AudioDlg::populateAudioInfo()
 /*\r
             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());
@@ -149,13 +183,11 @@ int AudioDlg::populateAudioInfo()
                 m_textTopRight->AppendText(tStr);
                 defaultDisplayed = true;
             }\r
-
             if (defaultDisplayed)
             {
                tStr  =  " ]\n";
                 m_textTopRight->AppendText(tStr);
             }
-\r
             ttStr.Printf("Name                        : %s\n", (*i).name());
             tStr  += ttStr;
             ttStr.Printf("Host API                    : %s\n", (*i).hostApi().name());
@@ -164,7 +196,6 @@ int AudioDlg::populateAudioInfo()
             tStr  += ttStr;
             ttStr.Printf("Max outputs                 : %i\n\n", (*i).maxOutputChannels());\r
             tStr  += ttStr;
-
             ttStr.Printf("Default low input latency   : %8.3f\n", (*i).defaultLowInputLatency());\r
             tStr  += ttStr;
             ttStr.Printf("Default low output latency  : %8.3f\n", (*i).defaultLowOutputLatency());\r
@@ -180,11 +211,9 @@ int AudioDlg::populateAudioInfo()
             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;
@@ -198,33 +227,47 @@ int AudioDlg::populateAudioInfo()
 
             tStr.Printf("Default sample rate         : %8.2f\n", (*i).defaultSampleRate());
             m_textTopRight->AppendText(tStr);
+        wxComboBox* m_comboAudioCodec;\r
+        wxComboBox* m_comboCodecTx;\r
+        wxComboBox* m_comboRadioRx;\r
+        wxComboBox* m_comboCodecSpkr;\r
 */
             // 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";\r
-                m_lbRxInput->InsertItems(1, &tStr, 0);
-                tStr.Printf("   for half-duplex 16 bit %i channel input = ", inputParameters.numChannels());
-                m_lbRxInput->InsertItems(1, &tStr, 0);
-                populateStandardSampleRates(m_lbRxInput, inputParameters, portaudio::DirectionSpecificStreamParameters::null());
+//                tStr = "Supported standard Input sample rates\n";\r
+//                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_comboAudioCodec, inputParameters, portaudio::DirectionSpecificStreamParameters::null());
             }
             if (outputParameters.numChannels() > 0)
             {
-                tStr = "Supported standard Output sample rates\n";\r
-                m_lbTxOutput->InsertItems(1, &tStr, 0);
-                tStr.Printf("   for half-duplex 16 bit %i channel output = ", outputParameters.numChannels());
-                m_lbTxOutput->InsertItems(1, &tStr, 0);
-                populateStandardSampleRates(m_lbTxOutput, portaudio::DirectionSpecificStreamParameters::null(), outputParameters);
+//                tStr = "Supported standard Output sample rates\n";\r
+//                m_comboRadioRx->Append(tStr);
+//                tStr.Printf("   for half-duplex 16 bit %i channel output = ", outputParameters.numChannels());
+//                m_comboRadioRx->Append(tStr);
+                populateStandardSampleRates(m_comboRadioRx, portaudio::DirectionSpecificStreamParameters::null(), outputParameters);
+            }
+            if (inputParameters.numChannels() > 0 && inputParameters.numChannels() > 0)
+            {
+//                tStr = "Supported full-duplex sample rates\n";\r
+//                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_comboCodecTx, inputParameters, outputParameters);
             }
-            if (inputParameters.numChannels() > 0 && outputParameters.numChannels() > 0)
+            if (outputParameters.numChannels() > 0 && outputParameters.numChannels() > 0)
             {
-                tStr = "Supported full-duplex sample rates\n";\r
-                m_lbVoiceInput->InsertItems(1, &tStr, 0);
-                tStr.Printf("   for full-duplex 16 bit %i channel input, %i", inputParameters.numChannels(), outputParameters.numChannels());
-                m_lbVoiceInput->InsertItems(1, &tStr, 0);
-                populateStandardSampleRates(m_lbVoiceInput, inputParameters, outputParameters);
+//                tStr = "Supported full-duplex sample rates\n";\r
+//                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_comboCodecSpkr, inputParameters, outputParameters);
             }
         }
     }
index bfb988b6ce92a549e4d8dab7221059ed5f261ba7..23aa002fdb2d0b400fa6cb888b6749eead96e9a0 100644 (file)
@@ -30,7 +30,7 @@ class AudioDlg : public DlgAudio
         void OnInitDialog( wxInitDialogEvent& event );\r
         void OnApply( wxCommandEvent& event );\r
         void populateStandardSampleRates(
-                wxListBox* target,
+                wxComboBox* target,
                 const portaudio::DirectionSpecificStreamParameters &inputParameters,
                 const portaudio::DirectionSpecificStreamParameters &outputParameters);
         int populateAudioInfo();
index 79019abbb359f658961d24f9c75f13483eb2f8c4..1dad573630c9aea5c4ac8e0312b7a0f89925e590 100644 (file)
  */\r
 \r
 /*\r
- * The text above constitutes the entire PortAudio license; however, \r
+ * The text above constitutes the entire PortAudio license; however,\r
  * the PortAudio community also makes the following non-binding requests:\r
  *\r
  * Any person wishing to distribute modifications to the Software is\r
  * requested to send the modifications to the original developer so that\r
- * they can be incorporated into the canonical version. It is also \r
- * requested that these non-binding requests be included along with the \r
+ * they can be incorporated into the canonical version. It is also\r
+ * requested that these non-binding requests be included along with the\r
  * license above.\r
  */\r
 \r
@@ -50,7 +50,7 @@ extern "C"
 {\r
 #endif /* __cplusplus */\r
 \r
\r
+\r
 /** Retrieve the release number of the currently running PortAudio build,\r
  eg 1900.\r
 */\r
@@ -116,9 +116,9 @@ const char *Pa_GetErrorText( PaError errorCode );
  and Pa_GetErrorText(), this function MUST be called before using any other\r
  PortAudio API functions.\r
 \r
- If Pa_Initialize() is called multiple times, each successful \r
- call must be matched with a corresponding call to Pa_Terminate(). \r
- Pairs of calls to Pa_Initialize()/Pa_Terminate() may overlap, and are not \r
+ If Pa_Initialize() is called multiple times, each successful\r
+ call must be matched with a corresponding call to Pa_Terminate().\r
+ Pairs of calls to Pa_Initialize()/Pa_Terminate() may overlap, and are not\r
  required to be fully nested.\r
 \r
  Note that if Pa_Initialize() returns an error code, Pa_Terminate() should\r
@@ -145,7 +145,7 @@ PaError Pa_Initialize( void );
 \r
  @return paNoError if successful, otherwise an error code indicating the cause\r
  of failure.\r
\r
+\r
  @see Pa_Initialize\r
 */\r
 PaError Pa_Terminate( void );\r
@@ -269,7 +269,7 @@ typedef struct PaHostApiInfo
      if no default output device is available.\r
     */\r
     PaDeviceIndex defaultOutputDevice;\r
-    \r
+\r
 } PaHostApiInfo;\r
 \r
 \r
@@ -298,7 +298,7 @@ const PaHostApiInfo * Pa_GetHostApiInfo( PaHostApiIndex hostApi );
  @return A valid PaHostApiIndex ranging from 0 to (Pa_GetHostApiCount()-1) or,\r
  a PaErrorCode (which are always negative) if PortAudio is not initialized\r
  or an error is encountered.\r
\r
+\r
  The paHostApiNotFound error code indicates that the host API specified by the\r
  type parameter is not available.\r
 \r
@@ -325,7 +325,7 @@ PaHostApiIndex Pa_HostApiTypeIdToHostApiIndex( PaHostApiTypeId type );
 \r
  A paInvalidDevice error code indicates that the hostApiDeviceIndex parameter\r
  is out of range.\r
\r
+\r
  @see PaHostApiInfo\r
 */\r
 PaDeviceIndex Pa_HostApiDeviceIndexToDeviceIndex( PaHostApiIndex hostApi,\r
@@ -357,8 +357,6 @@ typedef struct PaHostErrorInfo{
 */\r
 const PaHostErrorInfo* Pa_GetLastHostErrorInfo( void );\r
 \r
-\r
-\r
 /* Device enumeration and capabilities */\r
 \r
 /** Retrieve the number of available devices. The number of available devices\r
@@ -398,12 +396,12 @@ PaDeviceIndex Pa_GetDefaultInputDevice( void );
 PaDeviceIndex Pa_GetDefaultOutputDevice( void );\r
 \r
 \r
-/** The type used to represent monotonic time in seconds. PaTime is \r
- used for the fields of the PaStreamCallbackTimeInfo argument to the \r
+/** The type used to represent monotonic time in seconds. PaTime is\r
+ used for the fields of the PaStreamCallbackTimeInfo argument to the\r
  PaStreamCallback and as the result of Pa_GetStreamTime().\r
 \r
  PaTime values have unspecified origin.\r
-     \r
+\r
  @see PaStreamCallback, PaStreamCallbackTimeInfo, Pa_GetStreamTime\r
 */\r
 typedef double PaTime;\r
@@ -421,7 +419,7 @@ typedef double PaTime;
 \r
  paUInt8 is an unsigned 8 bit format where 128 is considered "ground"\r
 \r
- The paNonInterleaved flag indicates that audio data is passed as an array \r
+ The paNonInterleaved flag indicates that audio data is passed as an array\r
  of pointers to separate buffers, one buffer for each channel. Usually,\r
  when this flag is not used, audio data is passed as a single buffer with\r
  all channels interleaved.\r
@@ -451,7 +449,7 @@ typedef struct PaDeviceInfo
     int structVersion;  /* this is struct version 2 */\r
     const char *name;\r
     PaHostApiIndex hostApi; /**< note this is a host API index, not a type id*/\r
-    \r
+\r
     int maxInputChannels;\r
     int maxOutputChannels;\r
 \r
@@ -493,7 +491,7 @@ typedef struct PaStreamParameters
      This field must not be set to paNoDevice.\r
     */\r
     PaDeviceIndex device;\r
-    \r
+\r
     /** The number of channels of sound to be delivered to the\r
      stream callback or accessed by Pa_ReadStream() or Pa_WriteStream().\r
      It can range from 1 to the value of maxInputChannels in the\r
@@ -568,9 +566,9 @@ PaError Pa_IsFormatSupported( const PaStreamParameters *inputParameters,
  A single PaStream can provide multiple channels of real-time\r
  streaming audio input and output to a client application. A stream\r
  provides access to audio hardware represented by one or more\r
- PaDevices. Depending on the underlying Host API, it may be possible \r
- to open multiple streams using the same device, however this behavior \r
- is implementation defined. Portable applications should assume that \r
+ PaDevices. Depending on the underlying Host API, it may be possible\r
+ to open multiple streams using the same device, however this behavior\r
+ is implementation defined. Portable applications should assume that\r
  a PaDevice may be simultaneously used by at most one PaStream.\r
 \r
  Pointers to PaStream objects are passed between PortAudio functions that\r
@@ -628,7 +626,7 @@ typedef unsigned long PaStreamFlags;
 /** Call the stream callback to fill initial output buffers, rather than the\r
  default behavior of priming the buffers with zeros (silence). This flag has\r
  no effect for input-only and blocking read/write streams.\r
\r
+\r
  @see PaStreamFlags\r
 */\r
 #define   paPrimeOutputBuffersUsingStreamCallback ((PaStreamFlags) 0x00000008)\r
@@ -642,7 +640,7 @@ typedef unsigned long PaStreamFlags;
  Timing information for the buffers passed to the stream callback.\r
 \r
  Time values are expressed in seconds and are synchronised with the time base used by Pa_GetStreamTime() for the associated stream.\r
\r
+\r
  @see PaStreamCallback, Pa_GetStreamTime\r
 */\r
 typedef struct PaStreamCallbackTimeInfo{\r
@@ -713,41 +711,41 @@ typedef enum PaStreamCallbackResult
  active PortAudio stream.\r
 \r
  When a stream is running, PortAudio calls the stream callback periodically.\r
- The callback function is responsible for processing buffers of audio samples \r
+ The callback function is responsible for processing buffers of audio samples\r
  passed via the input and output parameters.\r
 \r
  The PortAudio stream callback runs at very high or real-time priority.\r
- It is required to consistently meet its time deadlines. Do not allocate \r
- memory, access the file system, call library functions or call other functions \r
+ It is required to consistently meet its time deadlines. Do not allocate\r
+ memory, access the file system, call library functions or call other functions\r
  from the stream callback that may block or take an unpredictable amount of\r
  time to complete.\r
 \r
  In order for a stream to maintain glitch-free operation the callback\r
  must consume and return audio data faster than it is recorded and/or\r
- played. PortAudio anticipates that each callback invocation may execute for \r
- a duration approaching the duration of frameCount audio frames at the stream \r
+ played. PortAudio anticipates that each callback invocation may execute for\r
+ a duration approaching the duration of frameCount audio frames at the stream\r
  sample rate. It is reasonable to expect to be able to utilise 70% or more of\r
- the available CPU time in the PortAudio callback. However, due to buffer size \r
- adaption and other factors, not all host APIs are able to guarantee audio \r
- stability under heavy CPU load with arbitrary fixed callback buffer sizes. \r
- When high callback CPU utilisation is required the most robust behavior \r
- can be achieved by using paFramesPerBufferUnspecified as the \r
+ the available CPU time in the PortAudio callback. However, due to buffer size\r
+ adaption and other factors, not all host APIs are able to guarantee audio\r
+ stability under heavy CPU load with arbitrary fixed callback buffer sizes.\r
+ When high callback CPU utilisation is required the most robust behavior\r
+ can be achieved by using paFramesPerBufferUnspecified as the\r
  Pa_OpenStream() framesPerBuffer parameter.\r
-     \r
+\r
  @param input and @param output are either arrays of interleaved samples or;\r
- if non-interleaved samples were requested using the paNonInterleaved sample \r
- format flag, an array of buffer pointers, one non-interleaved buffer for \r
+ if non-interleaved samples were requested using the paNonInterleaved sample\r
+ format flag, an array of buffer pointers, one non-interleaved buffer for\r
  each channel.\r
 \r
  The format, packing and number of channels used by the buffers are\r
  determined by parameters to Pa_OpenStream().\r
-     \r
+\r
  @param frameCount The number of sample frames to be processed by\r
  the stream callback.\r
 \r
  @param timeInfo Timestamps indicating the ADC capture time of the first sample\r
  in the input buffer, the DAC output time of the first sample in the output buffer\r
- and the time the callback was invoked. \r
+ and the time the callback was invoked.\r
  See PaStreamCallbackTimeInfo and Pa_GetStreamTime()\r
 \r
  @param statusFlags Flags indicating whether input and/or output buffers\r
@@ -785,10 +783,10 @@ typedef int PaStreamCallback(
 \r
 \r
 /** Opens a stream for either input, output or both.\r
-     \r
+\r
  @param stream The address of a PaStream pointer which will receive\r
  a pointer to the newly opened stream.\r
-     \r
+\r
  @param inputParameters A structure that describes the input parameters used by\r
  the opened stream. See PaStreamParameters for a description of these parameters.\r
  inputParameters must be NULL for output-only streams.\r
@@ -796,10 +794,10 @@ typedef int PaStreamCallback(
  @param outputParameters A structure that describes the output parameters used by\r
  the opened stream. See PaStreamParameters for a description of these parameters.\r
  outputParameters must be NULL for input-only streams.\r
\r
+\r
  @param sampleRate The desired sampleRate. For full-duplex streams it is the\r
  sample rate for both input and output\r
-     \r
+\r
  @param framesPerBuffer The number of frames passed to the stream callback\r
  function, or the preferred block granularity for a blocking read/write stream.\r
  The special value paFramesPerBufferUnspecified (0) may be used to request that\r
@@ -811,11 +809,11 @@ typedef int PaStreamCallback(
  will be kept to the theoretical minimum however, it is strongly recommended\r
  that a non-zero framesPerBuffer value only be used when your algorithm\r
  requires a fixed number of frames per stream callback.\r
\r
+\r
  @param streamFlags Flags which modify the behavior of the streaming process.\r
  This parameter may contain a combination of flags ORed together. Some flags may\r
  only be relevant to certain buffer formats.\r
-     \r
+\r
  @param streamCallback A pointer to a client supplied function that is responsible\r
  for processing and filling input and output buffers. If this parameter is NULL\r
  the stream will be opened in 'blocking read/write' mode. In blocking mode,\r
@@ -828,7 +826,7 @@ typedef int PaStreamCallback(
  function. It could for example, contain a pointer to instance data necessary\r
  for processing the audio buffers. This parameter is ignored if streamCallback\r
  is NULL.\r
-     \r
+\r
  @return\r
  Upon success Pa_OpenStream() returns paNoError and places a pointer to a\r
  valid PaStream in the stream argument. The stream is inactive (stopped).\r
@@ -853,7 +851,7 @@ PaError Pa_OpenStream( PaStream** stream,
 \r
  @param stream The address of a PaStream pointer which will receive\r
  a pointer to the newly opened stream.\r
\r
+\r
  @param numInputChannels  The number of channels of sound that will be supplied\r
  to the stream callback or returned by Pa_ReadStream. It can range from 1 to\r
  the value of maxInputChannels in the PaDeviceInfo record for the default input\r
@@ -868,7 +866,7 @@ PaError Pa_OpenStream( PaStream** stream,
  provided to the callback or passed to and from Pa_ReadStream and Pa_WriteStream.\r
  sampleFormat may be any of the formats described by the PaSampleFormat\r
  enumeration.\r
\r
+\r
  @param sampleRate Same as Pa_OpenStream parameter of the same name.\r
  @param framesPerBuffer Same as Pa_OpenStream parameter of the same name.\r
  @param streamCallback Same as Pa_OpenStream parameter of the same name.\r
@@ -894,7 +892,7 @@ PaError Pa_OpenDefaultStream( PaStream** stream,
 PaError Pa_CloseStream( PaStream *stream );\r
 \r
 \r
-/** Functions of type PaStreamFinishedCallback are implemented by PortAudio \r
+/** Functions of type PaStreamFinishedCallback are implemented by PortAudio\r
  clients. They can be registered with a stream using the Pa_SetStreamFinishedCallback\r
  function. Once registered they are called when the stream becomes inactive\r
  (ie once a call to Pa_StopStream() will not block).\r
@@ -903,7 +901,7 @@ PaError Pa_CloseStream( PaStream *stream );
  output, if the stream callback returns paComplete, or Pa_StopStream is called,\r
  the stream finished callback will not be called until all generated sample data\r
  has been played.\r
\r
+\r
  @param userData The userData parameter supplied to Pa_OpenStream()\r
 \r
  @see Pa_SetStreamFinishedCallback\r
@@ -911,12 +909,12 @@ PaError Pa_CloseStream( PaStream *stream );
 typedef void PaStreamFinishedCallback( void *userData );\r
 \r
 \r
-/** Register a stream finished callback function which will be called when the \r
- stream becomes inactive. See the description of PaStreamFinishedCallback for \r
+/** Register a stream finished callback function which will be called when the\r
+ stream becomes inactive. See the description of PaStreamFinishedCallback for\r
  further details about when the callback will be called.\r
 \r
  @param stream a pointer to a PaStream that is in the stopped state - if the\r
- stream is not stopped, the stream's finished callback will remain unchanged \r
+ stream is not stopped, the stream's finished callback will remain unchanged\r
  and an error code will be returned.\r
 \r
  @param streamFinishedCallback a pointer to a function with the same signature\r
@@ -929,7 +927,7 @@ typedef void PaStreamFinishedCallback( void *userData );
 \r
  @see PaStreamFinishedCallback\r
 */\r
-PaError Pa_SetStreamFinishedCallback( PaStream *stream, PaStreamFinishedCallback* streamFinishedCallback ); \r
+PaError Pa_SetStreamFinishedCallback( PaStream *stream, PaStreamFinishedCallback* streamFinishedCallback );\r
 \r
 \r
 /** Commences audio processing.\r
@@ -1014,7 +1012,7 @@ typedef struct PaStreamInfo
      parameter passed to Pa_OpenStream().\r
     */\r
     double sampleRate;\r
-    \r
+\r
 } PaStreamInfo;\r
 \r
 \r
@@ -1036,15 +1034,15 @@ const PaStreamInfo* Pa_GetStreamInfo( PaStream *stream );
 \r
 /** Returns the current time in seconds for a stream according to the same clock used\r
  to generate callback PaStreamCallbackTimeInfo timestamps. The time values are\r
- monotonically increasing and have unspecified origin. \r
\r
+ monotonically increasing and have unspecified origin.\r
+\r
  Pa_GetStreamTime returns valid time values for the entire life of the stream,\r
  from when the stream is opened until it is closed. Starting and stopping the stream\r
  does not affect the passage of time returned by Pa_GetStreamTime.\r
 \r
- This time may be used for synchronizing other events to the audio stream, for \r
+ This time may be used for synchronizing other events to the audio stream, for\r
  example synchronizing audio to MIDI.\r
-                                        \r
+\r
  @return The stream's current time in seconds, or 0 if an error occurred.\r
 \r
  @see PaTime, PaStreamCallback, PaStreamCallbackTimeInfo\r
@@ -1059,7 +1057,7 @@ PaTime Pa_GetStreamTime( PaStream *stream );
 \r
  This function may be called from the stream callback function or the\r
  application.\r
-     \r
+\r
  @return\r
  A floating point value, typically between 0.0 and 1.0, where 1.0 indicates\r
  that the stream callback is consuming the maximum number of CPU cycles possible\r
@@ -1076,12 +1074,12 @@ double Pa_GetStreamCpuLoad( PaStream* stream );
  system to supply the data.\r
 \r
  @param stream A pointer to an open stream previously created with Pa_OpenStream.\r
\r
+\r
  @param buffer A pointer to a buffer of sample frames. The buffer contains\r
  samples in the format specified by the inputParameters->sampleFormat field\r
  used to open the stream, and the number of channels specified by\r
  inputParameters->numChannels. If non-interleaved samples were requested using\r
- the paNonInterleaved sample format flag, buffer is a pointer to the first element \r
+ the paNonInterleaved sample format flag, buffer is a pointer to the first element\r
  of an array of buffer pointers, one non-interleaved buffer for each channel.\r
 \r
  @param frames The number of frames to be read into buffer. This parameter\r
@@ -1107,7 +1105,7 @@ PaError Pa_ReadStream( PaStream* stream,
  samples in the format specified by the outputParameters->sampleFormat field\r
  used to open the stream, and the number of channels specified by\r
  outputParameters->numChannels. If non-interleaved samples were requested using\r
- the paNonInterleaved sample format flag, buffer is a pointer to the first element \r
+ the paNonInterleaved sample format flag, buffer is a pointer to the first element\r
  of an array of buffer pointers, one non-interleaved buffer for each channel.\r
 \r
  @param frames The number of frames to be written from buffer. This parameter\r
index 5cba256ed5056b7abbe63467b357b26fa78eb85f..7e6365db35b93a80aad72f3cb3946634371a1bb3 100644 (file)
@@ -2,10 +2,10 @@
 ## Auto Generated makefile by CodeLite IDE\r
 ## any manual changes will be erased      \r
 ##\r
-## Release\r
+## Debug\r
 ProjectName            :=fdmdv2\r
-ConfigurationName      :=Release\r
-IntermediateDirectory  :=./Release\r
+ConfigurationName      :=Debug\r
+IntermediateDirectory  :=./Debug\r
 OutDir                 := $(IntermediateDirectory)\r
 WorkspacePath          := "C:\Users\wittend\Projects\Radio\fdmdv2"\r
 ProjectPath            := "C:\Users\wittend\Projects\Radio\fdmdv2"\r
@@ -13,7 +13,7 @@ CurrentFileName        :=
 CurrentFilePath        :=\r
 CurrentFileFullPath    :=\r
 User                   :=wittend\r
-Date                   :=5/30/2012\r
+Date                   :=6/12/2012\r
 CodeLitePath           :="C:\Program Files\CodeLite"\r
 LinkerName             :=g++\r
 ArchiveTool            :=ar rcus\r
@@ -38,9 +38,9 @@ PreprocessOnlySwitch   :=-E
 ObjectsFileList        :="C:\Users\wittend\Projects\Radio\fdmdv2\fdmdv2.txt"\r
 PCHCompileFlags        :=\r
 MakeDirCommand         :=makedir\r
-CmpOptions             := -O2 -Wall $(shell wx-config --cxxflags --unicode=yes --debug=no) $(Preprocessors)\r
-C_CmpOptions           := -O2 -Wall $(shell wx-config --cxxflags --unicode=yes --debug=no) $(Preprocessors)\r
-LinkOptions            :=  -mwindows -s $(shell wx-config --debug=no --libs --unicode=yes)\r
+CmpOptions             := -g -O0 -Wall $(shell wx-config --cxxflags --unicode=yes --debug=yes) $(Preprocessors)\r
+C_CmpOptions           := -g -O0 -Wall $(shell wx-config --cxxflags --unicode=yes --debug=yes) $(Preprocessors)\r
+LinkOptions            :=  -mwindows $(shell wx-config --debug=yes --libs --unicode=yes)\r
 IncludePath            :=  $(IncludeSwitch). $(IncludeSwitch)./extern/include \r
 IncludePCH             := \r
 RcIncludePath          := \r
@@ -56,7 +56,7 @@ WXWIN:=C:\bin\wxWidgets-2.9.2
 PATH:=$(WXWIN)\lib\gcc_dll;$(PATH)\r
 WXCFG:=gcc_dll\mswu\r
 UNIT_TEST_PP_SRC_DIR:=C:\bin\UnitTest++-1.3\r
-Objects=$(IntermediateDirectory)/topFrame$(ObjectSuffix) $(IntermediateDirectory)/dlg_about$(ObjectSuffix) $(IntermediateDirectory)/dlg_audio$(ObjectSuffix) $(IntermediateDirectory)/dlg_options$(ObjectSuffix) $(IntermediateDirectory)/dlg_comports$(ObjectSuffix) $(IntermediateDirectory)/fdmdv2_plot$(ObjectSuffix) $(IntermediateDirectory)/fdmdv2_main$(ObjectSuffix) \r
+Objects=$(IntermediateDirectory)/topFrame$(ObjectSuffix) $(IntermediateDirectory)/dlg_about$(ObjectSuffix) $(IntermediateDirectory)/dlg_audio$(ObjectSuffix) $(IntermediateDirectory)/dlg_options$(ObjectSuffix) $(IntermediateDirectory)/dlg_comports$(ObjectSuffix) $(IntermediateDirectory)/fdmdv2_plot$(ObjectSuffix) $(IntermediateDirectory)/fdmdv2_main$(ObjectSuffix) $(IntermediateDirectory)/paclass$(ObjectSuffix) \r
 \r
 ##\r
 ## Main Build Targets \r
@@ -71,7 +71,7 @@ $(OutputFile): $(IntermediateDirectory)/.d $(Objects)
        $(LinkerName) $(OutputSwitch)$(OutputFile) @$(ObjectsFileList) $(LibPath) $(Libs) $(LinkOptions)\r
 \r
 $(IntermediateDirectory)/.d:\r
-       @$(MakeDirCommand) "./Release"\r
+       @$(MakeDirCommand) "./Debug"\r
 \r
 PreBuild:\r
 \r
@@ -135,6 +135,14 @@ $(IntermediateDirectory)/fdmdv2_main$(DependSuffix): fdmdv2_main.cpp
 $(IntermediateDirectory)/fdmdv2_main$(PreprocessSuffix): fdmdv2_main.cpp\r
        @$(CompilerName) $(CmpOptions) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/fdmdv2_main$(PreprocessSuffix) "C:/Users/wittend/Projects/Radio/fdmdv2/fdmdv2_main.cpp"\r
 \r
+$(IntermediateDirectory)/paclass$(ObjectSuffix): paclass.cpp $(IntermediateDirectory)/paclass$(DependSuffix)\r
+       $(CompilerName) $(IncludePCH) $(SourceSwitch) "C:/Users/wittend/Projects/Radio/fdmdv2/paclass.cpp" $(CmpOptions) $(ObjectSwitch)$(IntermediateDirectory)/paclass$(ObjectSuffix) $(IncludePath)\r
+$(IntermediateDirectory)/paclass$(DependSuffix): paclass.cpp\r
+       @$(CompilerName) $(CmpOptions) $(IncludePCH) $(IncludePath) -MG -MP -MT$(IntermediateDirectory)/paclass$(ObjectSuffix) -MF$(IntermediateDirectory)/paclass$(DependSuffix) -MM "C:/Users/wittend/Projects/Radio/fdmdv2/paclass.cpp"\r
+\r
+$(IntermediateDirectory)/paclass$(PreprocessSuffix): paclass.cpp\r
+       @$(CompilerName) $(CmpOptions) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/paclass$(PreprocessSuffix) "C:/Users/wittend/Projects/Radio/fdmdv2/paclass.cpp"\r
+\r
 \r
 -include $(IntermediateDirectory)/*$(DependSuffix)\r
 ##\r
@@ -162,8 +170,11 @@ clean:
        $(RM) $(IntermediateDirectory)/fdmdv2_main$(ObjectSuffix)\r
        $(RM) $(IntermediateDirectory)/fdmdv2_main$(DependSuffix)\r
        $(RM) $(IntermediateDirectory)/fdmdv2_main$(PreprocessSuffix)\r
+       $(RM) $(IntermediateDirectory)/paclass$(ObjectSuffix)\r
+       $(RM) $(IntermediateDirectory)/paclass$(DependSuffix)\r
+       $(RM) $(IntermediateDirectory)/paclass$(PreprocessSuffix)\r
        $(RM) $(OutputFile)\r
        $(RM) $(OutputFile).exe\r
-       $(RM) "C:\Users\wittend\Projects\Radio\fdmdv2\.build-release\fdmdv2"\r
+       $(RM) "C:\Users\wittend\Projects\Radio\fdmdv2\.build-debug\fdmdv2"\r
 \r
 \r
index 24882cce203f6899b7e85e2e8af9f9780150913e..97f3a779245dd052bff4e3dd3e39e588b44c56f0 100644 (file)
     <File Name="dlg_comports.cpp"/>
     <File Name="fdmdv2_plot.cpp"/>
     <File Name="fdmdv2_main.cpp"/>
-    <File Name="extern/include/portaudiocpp/AsioDeviceAdapter.hxx"/>
-    <File Name="extern/include/portaudiocpp/AutoSystem.hxx"/>
-    <File Name="extern/include/portaudiocpp/BlockingStream.hxx"/>
-    <File Name="extern/include/portaudiocpp/CallbackInterface.hxx"/>
-    <File Name="extern/include/portaudiocpp/CallbackStream.hxx"/>
-    <File Name="extern/include/portaudiocpp/CFunCallbackStream.hxx"/>
-    <File Name="extern/include/portaudiocpp/CppFunCallbackStream.hxx"/>
-    <File Name="extern/include/portaudiocpp/Device.hxx"/>
-    <File Name="extern/include/portaudiocpp/DirectionSpecificStreamParameters.hxx"/>
-    <File Name="extern/include/portaudiocpp/Exception.hxx"/>
-    <File Name="extern/include/portaudiocpp/HostApi.hxx"/>
-    <File Name="extern/include/portaudiocpp/InterfaceCallbackStream.hxx"/>
-    <File Name="extern/include/portaudiocpp/MemFunCallbackStream.hxx"/>
-    <File Name="extern/include/portaudiocpp/PortAudioCpp.hxx"/>
-    <File Name="extern/include/portaudiocpp/SampleDataFormat.hxx"/>
-    <File Name="extern/include/portaudiocpp/Stream.hxx"/>
-    <File Name="extern/include/portaudiocpp/StreamParameters.hxx"/>
-    <File Name="extern/include/portaudiocpp/System.hxx"/>
-    <File Name="extern/include/portaudiocpp/SystemDeviceIterator.hxx"/>
-    <File Name="extern/include/portaudiocpp/SystemHostApiIterator.hxx"/>
+    <File Name="paclass.cpp"/>
   </VirtualDirectory>
   <VirtualDirectory Name="include">
     <File Name="topFrame.h"/>
     <File Name="extern/include/rig_dll.h"/>
     <File Name="extern/include/riglist.h"/>
     <File Name="extern/include/samplerate.h"/>
+    <VirtualDirectory Name="portaudio_cpp">
+      <File Name="extern/include/portaudiocpp/AsioDeviceAdapter.hxx"/>
+      <File Name="extern/include/portaudiocpp/AutoSystem.hxx"/>
+      <File Name="extern/include/portaudiocpp/BlockingStream.hxx"/>
+      <File Name="extern/include/portaudiocpp/CallbackInterface.hxx"/>
+      <File Name="extern/include/portaudiocpp/CallbackStream.hxx"/>
+      <File Name="extern/include/portaudiocpp/CFunCallbackStream.hxx"/>
+      <File Name="extern/include/portaudiocpp/CppFunCallbackStream.hxx"/>
+      <File Name="extern/include/portaudiocpp/Device.hxx"/>
+      <File Name="extern/include/portaudiocpp/DirectionSpecificStreamParameters.hxx"/>
+      <File Name="extern/include/portaudiocpp/Exception.hxx"/>
+      <File Name="extern/include/portaudiocpp/HostApi.hxx"/>
+      <File Name="extern/include/portaudiocpp/InterfaceCallbackStream.hxx"/>
+      <File Name="extern/include/portaudiocpp/MemFunCallbackStream.hxx"/>
+      <File Name="extern/include/portaudiocpp/PortAudioCpp.hxx"/>
+      <File Name="extern/include/portaudiocpp/SampleDataFormat.hxx"/>
+      <File Name="extern/include/portaudiocpp/Stream.hxx"/>
+      <File Name="extern/include/portaudiocpp/StreamParameters.hxx"/>
+      <File Name="extern/include/portaudiocpp/System.hxx"/>
+      <File Name="extern/include/portaudiocpp/SystemDeviceIterator.hxx"/>
+      <File Name="extern/include/portaudiocpp/SystemHostApiIterator.hxx"/>
+    </VirtualDirectory>
+    <File Name="paclass.h"/>
   </VirtualDirectory>
   <VirtualDirectory Name="resources">
     <File Name="FDMDV2.fbp"/>
     </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="">
+        <IncludePath Value="./extern/include"/>
         <Preprocessor Value="__WX__"/>
       </Compiler>
       <Linker Options="-mwindows;$(shell wx-config --debug=yes --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="./Debug" Command="./$(ProjectName)" CommandArguments="" UseSeparateDebugArgs="no" DebugArguments="" WorkingDirectory="$(IntermediateDirectory)" PauseExecWhenProcTerminates="yes"/>
         <CustomPostBuild/>
         <CustomPreBuild/>
       </AdditionalRules>
-      <Completion>
+      <Completion EnableCpp11="no">
         <ClangCmpFlags/>
         <ClangPP/>
         <SearchPaths/>
         <CustomPostBuild/>
         <CustomPreBuild/>
       </AdditionalRules>
-      <Completion>
+      <Completion EnableCpp11="no">
         <ClangCmpFlags/>
         <ClangPP/>
         <SearchPaths/>
index 132b22796d95442449d18e50a135112862ea9a65..fce2d890a835906ac52585e307b9767ba730aa1a 100644 (file)
@@ -1 +1 @@
-./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  \r
+./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  \r
index 1ac9a3cfcccbe516668a7014ba6edb790cded5a8..75a4c32d8f53db78281d2e4afb5b3521d3e3d110 100644 (file)
@@ -6,7 +6,7 @@
   <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"/>
   <BuildMatrix>
-    <WorkspaceConfiguration Name="Debug" Selected="no">
+    <WorkspaceConfiguration Name="Debug" Selected="yes">
       <Project Name="test_sndfile" ConfigName="Debug"/>
       <Project Name="test_portaudio" ConfigName="Debug"/>
       <Project Name="test_codec2" ConfigName="Debug"/>
@@ -16,7 +16,7 @@
       <Project Name="pa_test" ConfigName="Debug"/>
       <Project Name="pa_cppbinding_test" ConfigName="Debug"/>
     </WorkspaceConfiguration>
-    <WorkspaceConfiguration Name="Release" Selected="yes">
+    <WorkspaceConfiguration Name="Release" Selected="no">
       <Project Name="test_sndfile" ConfigName="Release"/>
       <Project Name="test_portaudio" ConfigName="Release"/>
       <Project Name="test_codec2" ConfigName="Release"/>
index f6c474ca14e9e146d666d8e9f63b0676f5c77f4c..ae28ff618595992feb5a970eed41c3c2dc6775c0 100644 (file)
@@ -19,7 +19,6 @@
 // initialize the application\r
 IMPLEMENT_APP(MainApp);\r
 \r
-// `Main program' equivalent: the program execution "starts" here\r
 //-------------------------------------------------------------------------\r
 // OnInit()\r
 //-------------------------------------------------------------------------\r
@@ -53,23 +52,36 @@ MainFrame::MainFrame(wxWindow *parent) : TopFrame(parent)
 //    m_bitmap = bitmap;\r
     m_sound = NULL;\r
     m_zoom  = 1.;\r
+    m_SquelchActive = false;\r
 \r
 }\r
 \r
+//-------------------------------------------------------------------------\r
+// ~MainFrame()\r
+//-------------------------------------------------------------------------\r
 MainFrame::~MainFrame()\r
 {\r
 }\r
 \r
+//-------------------------------------------------------------------------\r
+// OnCloseFrame()\r
+//-------------------------------------------------------------------------\r
 void MainFrame::OnCloseFrame(wxCloseEvent& event)\r
 {\r
     Destroy();\r
 }\r
 \r
+//-------------------------------------------------------------------------\r
+// OnExitClick()\r
+//-------------------------------------------------------------------------\r
 void MainFrame::OnExitClick(wxCommandEvent& event)\r
 {\r
     Destroy();\r
 }\r
 \r
+//-------------------------------------------------------------------------\r
+// OnPaint()\r
+//-------------------------------------------------------------------------\r
 void MainFrame::OnPaint(wxPaintEvent& WXUNUSED(event))\r
 {\r
     wxPaintDC dc(this);\r
@@ -83,33 +95,59 @@ void MainFrame::OnPaint(wxPaintEvent& WXUNUSED(event))
     dc.DrawBitmap(m_bitmap, dc.DeviceToLogicalX((size.x - m_zoom * m_bitmap.GetWidth()) / 2), dc.DeviceToLogicalY((size.y - m_zoom * m_bitmap.GetHeight()) / 2), true);\r
 }\r
 \r
+//-------------------------------------------------------------------------\r
+// OnCmdSliderScroll()\r
+//-------------------------------------------------------------------------\r
 void MainFrame::OnCmdSliderScroll(wxScrollEvent& event)\r
 {\r
     event.Skip();\r
 }\r
 \r
+//-------------------------------------------------------------------------\r
+// OnCmdSliderScrollChanged()\r
+//-------------------------------------------------------------------------\r
 void MainFrame::OnCmdSliderScrollChanged(wxScrollEvent& event)\r
 {\r
     event.Skip();\r
 }\r
 \r
+//-------------------------------------------------------------------------\r
+// OnSliderScrollTop()\r
+//-------------------------------------------------------------------------\r
 void MainFrame::OnSliderScrollTop(wxScrollEvent& event)\r
 {\r
     event.Skip();\r
 }\r
 \r
+//-------------------------------------------------------------------------\r
+// OnSliderScrollBottom()\r
+//-------------------------------------------------------------------------\r
 void MainFrame::OnSliderScrollBottom(wxScrollEvent& event)\r
 {\r
     wxMessageBox(wxT("Got Click!"), wxT("OnSliderScrollBottom"), wxOK);\r
     event.Skip();\r
 }\r
 \r
+//-------------------------------------------------------------------------\r
+// OnCheckSQClick()\r
+//-------------------------------------------------------------------------\r
 void MainFrame::OnCheckSQClick(wxCommandEvent& event)\r
 {\r
-    wxMessageBox(wxT("Got Click!"), wxT("OnCheckSQClick"), wxOK);\r
-    event.Skip();\r
+    if(!m_SquelchActive)\r
+    {\r
+        m_SquelchActive = true;\r
+        //wxMessageBox(wxT("Squelch On!"), wxT("Squelch On"), wxOK);\r
+    }\r
+    else\r
+    {\r
+        m_SquelchActive = false;\r
+        //wxMessageBox(wxT("Squelch Off!"), wxT("Squelch Off"), wxOK);\r
+    }\r
 }\r
 \r
+//-------------------------------------------------------------------------\r
+// OnTogBtnTXClick()\r
+//-------------------------------------------------------------------------\r
 void MainFrame::OnTogBtnTXClick(wxCommandEvent& event)\r
 {\r
     m_soundFile = wxT("./hts1a.wav");\r
@@ -117,161 +155,394 @@ void MainFrame::OnTogBtnTXClick(wxCommandEvent& event)
     m_sound->Play();\r
 }\r
 \r
+//-------------------------------------------------------------------------\r
+// OnTogBtnRxID()\r
+//-------------------------------------------------------------------------\r
 void MainFrame::OnTogBtnRxID(wxCommandEvent& event)\r
 {\r
     wxMessageBox("Got Click!", "OnTogBtnRxID", wxOK);\r
     event.Skip();\r
 }\r
 \r
+//-------------------------------------------------------------------------\r
+// OnTogBtnTxID()\r
+//-------------------------------------------------------------------------\r
 void MainFrame::OnTogBtnTxID(wxCommandEvent& event)\r
 {\r
     wxMessageBox("Got Click!", "OnTogBtnTxID", wxOK);\r
     event.Skip();\r
 }\r
 \r
+//-------------------------------------------------------------------------\r
+// OnTogBtnSplitClick()\r
+//-------------------------------------------------------------------------\r
 void MainFrame::OnTogBtnSplitClick(wxCommandEvent& event)\r
 {\r
     wxMessageBox("Got Click!", "OnTogBtnSplitClick", wxOK);\r
     event.Skip();\r
 }\r
 \r
+//-------------------------------------------------------------------------\r
+// OnTogBtnAnalogClick()\r
+//-------------------------------------------------------------------------\r
 void MainFrame::OnTogBtnAnalogClick (wxCommandEvent& event)\r
 {\r
     wxMessageBox("Got Click!", "OnTogBtnAnalogClick", wxOK);\r
     event.Skip();\r
 }\r
 \r
+//-------------------------------------------------------------------------\r
+// OnTogBtnALCClick()\r
+//-------------------------------------------------------------------------\r
 void MainFrame::OnTogBtnALCClick(wxCommandEvent& event)\r
 {\r
     wxMessageBox("Got Click!", "OnTogBtnALCClick", wxOK);\r
     event.Skip();\r
 }\r
 \r
+//-------------------------------------------------------------------------\r
+// audioCallback()\r
+//-------------------------------------------------------------------------\r
+static int audioCallback(   const void *inputBuffer,\r
+                            void *outputBuffer,\r
+                            unsigned long framesPerBuffer,\r
+                            const PaStreamCallbackTimeInfo *outTime,\r
+                            PaStreamCallbackFlags statusFlags,\r
+                            void *userData\r
+                        )\r
+{\r
+    float *out = (float *) outputBuffer;\r
+    float *in  = (float *) inputBuffer;\r
+    float leftInput;\r
+    float rightInput;\r
+    unsigned int i;\r
+\r
+    if(inputBuffer == NULL)\r
+    {\r
+        return 0;\r
+    }\r
+    // Read input buffer, process data, and fill output buffer.\r
+    for(i = 0; i < framesPerBuffer; i++)\r
+    {\r
+        leftInput = *in++;                          // Get interleaved samples from input buffer.\r
+        rightInput = *in++;\r
+        *out++ = leftInput * rightInput;            // ring modulation\r
+        *out++ = 0.5f * (leftInput + rightInput);   // mixing\r
+    }\r
+    return paContinue;                              // 0;\r
+}
+\r
+/*\r
+#define FUZZ(x) CubicAmplifier(CubicAmplifier(CubicAmplifier(CubicAmplifier(x))))
+static int gNumNoInputs = 0;\r
+//-------------------------------------------------------------------------\r
+// fuzzCallback()\r
+//-------------------------------------------------------------------------\r
+static int fuzzCallback(const void *inputBuffer,
+                        void *outputBuffer,
+                        unsigned long framesPerBuffer,
+                        const PaStreamCallbackTimeInfo* timeInfo,
+                        PaStreamCallbackFlags 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 paContinue;
+}
+*/\r
+
+//-------------------------------------------------------------------------\r
+// OnTogBtnOnOff()\r
+//-------------------------------------------------------------------------\r
+void MainFrame::OnTogBtnOnOff(wxCommandEvent& event)\r
+{\r
+    PortAudioWrap pa;\r
+    if(!m_radioRunning)\r
+    {\r
+        m_radioRunning = true;\r
+        pa = PortAudioWrap();
+        err = pa.init();
+
+        inputDevice = pa.getDefaultInputDevice();                   // default input device
+        if(inputDevice == paNoDevice)
+        {
+            wxMessageBox("Error: No default input device.", "Error", wxOK);\r
+            return;\r
+        }
+        err = pa.setInputDevice(inputDevice);
+        err = pa.setInputChannelCount(2);                           // stereo input
+        err = pa.setInputSampleFormat(PA_SAMPLE_TYPE);
+        err = pa.setInputLatency(pa.getInputDefaultLowLatency());\r
+        pa.setInputHostApiStreamInfo(NULL);
+
+        outputDevice = pa.getDefaultOutputDevice();                 // default output device
+        if (outputDevice == paNoDevice)
+        {
+            wxMessageBox("Error: No default output device.", "Error", wxOK);\r
+            return;\r
+        }
+        err = pa.setOutputDevice(outputDevice);
+        err = pa.setOutputChannelCount(2);                           // stereo input
+        err = pa.setOutputSampleFormat(PA_SAMPLE_TYPE);\r
+
+        err = pa.setOutputLatency(pa.getOutputDefaultLowLatency());
+        pa.setOutputHostApiStreamInfo(NULL);
+
+        err = pa.setFramesPerBuffer(FRAMES_PER_BUFFER);
+        err = pa.setSampleRate(SAMPLE_RATE);
+        err = pa.setStreamFlags(0);
+        err = pa.setCallback(audioCallback);
+        err = pa.streamOpen();
+
+        if(err != paNoError)
+        {
+            wxMessageBox("Open/Setup error.", "Error", wxOK);\r
+            return;\r
+        }
+        err = pa.streamStart();
+        if(err != paNoError)
+        {
+            wxMessageBox("Stream Start Error.", "Error", wxOK);\r
+            return;\r
+        }
+        m_togBtnOnOff->SetLabel(wxT("Stop"));\r
+    }\r
+    else\r
+    {\r
+        m_radioRunning = false;\r
+        pa.terminate();
+        m_togBtnOnOff->SetLabel(wxT("Start"));\r
+    }\r
+}\r
+\r
+//-------------------------------------------------------------------------\r
+// OnOpen()\r
+//-------------------------------------------------------------------------\r
 void MainFrame::OnOpen( wxCommandEvent& event )\r
 {\r
-    wxMessageBox("Got Click!", "OnOpen", wxOK);\r
-    event.Skip();\r
+    if(m_sound != NULL)\r
+    {\r
+        if (wxMessageBox(wxT("Current content has not been saved! Proceed?"),wxT("Please confirm"), wxICON_QUESTION | wxYES_NO, this) == wxNO )\r
+        {\r
+            return;\r
+        }\r
+    }\r
+    wxFileDialog openFileDialog(this,\r
+                                wxT("Open Sound file"),\r
+                                wxEmptyString,\r
+                                wxEmptyString,\r
+                                wxT("WAV files (*.wav)|*.wav|")\r
+                                wxT("RAW files (*.raw)|*.raw|")\r
+                                wxT("SPEEX files (*.spx)|*.spx|")\r
+                                wxT("FLAC files (*.flc)|*.flc|")\r
+                                wxT("All files (*.*)|*.*|"),\r
+                                wxFD_OPEN | wxFD_FILE_MUST_EXIST);\r
+    if (openFileDialog.ShowModal() == wxID_CANCEL)\r
+    {\r
+        return;     // the user changed idea...\r
+    }\r
+    // proceed loading the file chosen by the user;\r
+    m_sound->Play(openFileDialog.GetPath());\r
+/*\r
+    // this can be done with e.g. wxWidgets input streams:\r
+    wxFileInputStream input_stream(openFileDialog.GetPath());\r
+    if (!input_stream.IsOk())\r
+    {\r
+        wxLogError("Cannot open file '%s'.", openFileDialog.GetPath());\r
+        return;\r
+    }\r
+*/\r
 }\r
 \r
+//-------------------------------------------------------------------------\r
+// OnOpenUpdateUI()\r
+//-------------------------------------------------------------------------\r
 void MainFrame::OnOpenUpdateUI( wxUpdateUIEvent& event )\r
 {\r
 //    wxMessageBox("Got Click!", "OnOpenUpdateUI", wxOK);\r
 //    event.Skip();\r
 }\r
 \r
+//-------------------------------------------------------------------------\r
+// OnSaveUpdateUI()\r
+//-------------------------------------------------------------------------\r
 void MainFrame::OnSaveUpdateUI( wxUpdateUIEvent& event )\r
 {\r
 //    wxMessageBox("Got Click!", "OnSaveUpdateUI", wxOK);\r
 //    event.Skip();\r
 }\r
 \r
+//-------------------------------------------------------------------------\r
+// OnClose()\r
+//-------------------------------------------------------------------------\r
 void MainFrame::OnClose( wxCommandEvent& event )\r
 {\r
     if(m_sound != NULL)\r
     {\r
 //        if(m_sound->IsPlaying())\r
 //        {\r
-            m_sound->Stop();\r
-            m_sound = NULL;\r
+        m_sound->Stop();\r
+        m_sound = NULL;\r
 //        }\r
     }\r
 //    wxMessageBox("Got Click!", "OnClose", wxOK);\r
 //    event.Skip();\r
 }\r
 \r
+//-------------------------------------------------------------------------\r
+// OnCloseUpdateUI()\r
+//-------------------------------------------------------------------------\r
 void MainFrame::OnCloseUpdateUI( wxUpdateUIEvent& event )\r
 {\r
-//    wxMessageBox("Got Click!", "OnCloseUpdateUI", wxOK);\r
-//    event.Skip();\r
 }\r
 \r
+//-------------------------------------------------------------------------\r
+// OnExit()\r
+//-------------------------------------------------------------------------\r
 void MainFrame::OnExit( wxCommandEvent& event )\r
 {\r
     wxMessageBox("Got Click!", "OnExit", wxOK);\r
     event.Skip();\r
 }\r
 \r
+//-------------------------------------------------------------------------\r
+// OnCopy()\r
+//-------------------------------------------------------------------------\r
 void MainFrame::OnCopy( wxCommandEvent& event )\r
 {\r
     wxMessageBox("Got Click!", "OnCopy", wxOK);\r
     event.Skip();\r
 }\r
 \r
+//-------------------------------------------------------------------------\r
+// OnCopyUpdateUI()\r
+//-------------------------------------------------------------------------\r
 void MainFrame::OnCopyUpdateUI( wxUpdateUIEvent& event )\r
 {\r
-//    wxMessageBox("Got Click!", "OnCopyUpdateUI", wxOK);\r
-//    event.Skip();\r
 }\r
 \r
+//-------------------------------------------------------------------------\r
+// OnCut()\r
+//-------------------------------------------------------------------------\r
 void MainFrame::OnCut( wxCommandEvent& event )\r
 {\r
     wxMessageBox("Got Click!", "OnCut", wxOK);\r
     event.Skip();\r
 }\r
 \r
+//-------------------------------------------------------------------------\r
+// OnCutUpdateUI()\r
+//-------------------------------------------------------------------------\r
 void MainFrame::OnCutUpdateUI( wxUpdateUIEvent& event )\r
 {\r
-//    wxMessageBox("Got Click!", "OnCutUpdateUI", wxOK);\r
-//    event.Skip();\r
 }\r
 \r
+//-------------------------------------------------------------------------\r
+// OnPaste()\r
+//-------------------------------------------------------------------------\r
 void MainFrame::OnPaste( wxCommandEvent& event )\r
 {\r
     wxMessageBox("Got Click!", "OnPaste", wxOK);\r
     event.Skip();\r
 }\r
 \r
+//-------------------------------------------------------------------------\r
+// OnPasteUpdateUI()\r
+//-------------------------------------------------------------------------\r
 void MainFrame::OnPasteUpdateUI( wxUpdateUIEvent& event )\r
 {\r
-//    wxMessageBox("Got Click!", "OnPasteUpdateUI", wxOK);\r
-//    event.Skip();\r
 }\r
 \r
+//-------------------------------------------------------------------------\r
+// OnToolsOptions()\r
+//-------------------------------------------------------------------------\r
 void MainFrame::OnToolsOptions( wxCommandEvent& event )\r
 {\r
     OptionsDlg *dlg = new OptionsDlg(NULL);\r
     dlg->ShowModal();\r
 }\r
 \r
+//-------------------------------------------------------------------------\r
+// OnToolsOptionsUI()\r
+//-------------------------------------------------------------------------\r
 void MainFrame::OnToolsOptionsUI( wxUpdateUIEvent& event )\r
 {\r
-//    OptionsDlg *dlg = new OptionsDlg(NULL);\r
-//    dlg->ShowModal();\r
 }\r
 \r
+//-------------------------------------------------------------------------\r
+// OnToolsAudio()\r
+//-------------------------------------------------------------------------\r
 void MainFrame::OnToolsAudio( wxCommandEvent& event )\r
 {\r
     AudioDlg *dlg = new AudioDlg(NULL);\r
     dlg->ShowModal();\r
 }\r
 \r
+//-------------------------------------------------------------------------\r
+// OnToolsAudioUI()\r
+//-------------------------------------------------------------------------\r
 void MainFrame::OnToolsAudioUI( wxUpdateUIEvent& event )\r
 {\r
-//    OptionsDlg *dlg = new OptionsDlg(NULL);\r
-//    dlg->ShowModal();\r
 }\r
 \r
+//-------------------------------------------------------------------------\r
+// OnToolsComCfg()\r
+//-------------------------------------------------------------------------\r
 void MainFrame::OnToolsComCfg( wxCommandEvent& event )\r
 {\r
     ComPortsDlg *dlg = new ComPortsDlg(NULL);\r
     dlg->ShowModal();\r
 }\r
 \r
+//-------------------------------------------------------------------------\r
+// OnToolsComCfgUI()\r
+//-------------------------------------------------------------------------\r
 void MainFrame::OnToolsComCfgUI( wxUpdateUIEvent& event )\r
 {\r
     event.Enable(!m_radioRunning);\r
 }\r
 \r
+//-------------------------------------------------------------------------\r
+// OnHelpCheckUpdates()\r
+//-------------------------------------------------------------------------\r
 void MainFrame::OnHelpCheckUpdates( wxCommandEvent& event )\r
 {\r
     wxMessageBox("Got Click!", "OnHelpCheckUpdates", wxOK);\r
     event.Skip();\r
 }\r
 \r
+//-------------------------------------------------------------------------\r
+// OnHelpCheckUpdatesUI()\r
+//-------------------------------------------------------------------------\r
 void MainFrame::OnHelpCheckUpdatesUI( wxUpdateUIEvent& event )\r
 {\r
 }\r
 \r
+//-------------------------------------------------------------------------\r
+// OnHelpAbout()\r
+//-------------------------------------------------------------------------\r
 void MainFrame::OnHelpAbout( wxCommandEvent& event )\r
 {\r
     AboutDlg *dlg = new AboutDlg(NULL);\r
@@ -279,6 +550,9 @@ void MainFrame::OnHelpAbout( wxCommandEvent& event )
 }\r
 \r
 \r
+//-------------------------------------------------------------------------\r
+// LoadUserImage()\r
+//-------------------------------------------------------------------------\r
 wxString MainFrame::LoadUserImage(wxImage& image)\r
 {\r
     wxString filename;\r
@@ -295,22 +569,21 @@ wxString MainFrame::LoadUserImage(wxImage& image)
     return filename;\r
 }\r
 \r
+//-------------------------------------------------------------------------\r
+// OnSave()\r
+//-------------------------------------------------------------------------\r
 void MainFrame::OnSave(wxCommandEvent& WXUNUSED(event))\r
 {\r
     wxImage image = m_bitmap.ConvertToImage();\r
 \r
-    wxString savefilename = wxFileSelector(wxT("Save Image"),\r
+    wxString savefilename = wxFileSelector(wxT("Save Sound File"),\r
                                            wxEmptyString,\r
                                            wxEmptyString,\r
                                            (const wxChar *)NULL,\r
-                                           wxT("BMP files (*.bmp)|*.bmp|")\r
-                                           wxT("PNG files (*.png)|*.png|")\r
-                                           wxT("JPEG files (*.jpg)|*.jpg|")\r
-                                           wxT("GIF files (*.gif)|*.gif|")\r
-                                           wxT("TIFF files (*.tif)|*.tif|")\r
-                                           wxT("PCX files (*.pcx)|*.pcx|")\r
-                                           wxT("ICO files (*.ico)|*.ico|")\r
-                                           wxT("CUR files (*.cur)|*.cur"),\r
+                                           wxT("WAV files (*.wav)|*.wav|")\r
+                                           wxT("RAW files (*.raw)|*.raw|")\r
+                                           wxT("SPEEX files (*.spx)|*.spx|")\r
+                                           wxT("FLAC files (*.flc)|*.flc|"),\r
                                            wxFD_SAVE,\r
                                            this);\r
 \r
index 28b8f7e0e20e553be8d8402a4a04782f0c85ffd4..097914e4ab65e91b82305dba550ee7963045ff75 100644 (file)
@@ -10,8 +10,8 @@
 #ifndef __FDMDV2_MAIN__
 #define __FDMDV2_MAIN__
 
-#include <wx/wx.h>
-#include "wx/image.h"
+#include <wx/wx.h>\r
+
 #include "wx/file.h"
 #include "wx/filename.h"
 #include "wx/graphics.h"
 #include "wx/versioninfo.h"
 #include <wx/sound.h>
 #include <wx/thread.h>
+#include "libsndfile/include/sndfile.h"\r
+#include "extern/include/portaudio.h"
+#include "paclass.h"
+//#include "extern/include/portaudiocpp/PortAudioCpp.hxx"
 \r
 #include "topFrame.h"
+#include "codec2.h"
 #include "dlg_about.h"\r
 #include "dlg_audio.h"\r
 #include "dlg_options.h"\r
@@ -55,7 +60,7 @@ class MainApp : public wxApp
             return 0;
         }
 
-    protected:
+    protected:\r
         //void DeleteBitmaps();
         //bool LoadImages();
 };
@@ -71,11 +76,22 @@ class MainFrame : public TopFrame
     public:
         MainFrame(wxWindow *parent);
         virtual ~MainFrame();
-        DrawPanel*  m_panelSpectrum;\r
-        DrawPanel*  m_panelWaterfall;\r
-        DrawPanel*  m_panelExtra1;\r
-        DrawPanel*  m_panelExtra2;\r
-        bool        m_radioRunning;\r
+        DrawPanel*      m_panelSpectrum;\r
+        DrawPanel*      m_panelWaterfall;\r
+        DrawPanel*      m_panelExtra1;\r
+        DrawPanel*      m_panelExtra2;\r
+        bool            m_radioRunning;\r
+        bool            m_SquelchActive;\r
+        CODEC2          *m_RXCodec2;\r
+        CODEC2          *m_TXCodec2;\r
+        PaError         err;
+        PaDeviceIndex   inputDevice;
+        PaDeviceIndex   outputDevice;
+
+//        PortAudioWrap   stream;\r
+//        portaudio::AutoSystem autoSys;\r
+//        portaudio::System *sys; // = portaudio::System::instance();\r
+//        StreamParameters\r
 \r
         void DoStartThread();\r
         void DoPauseThread();\r
@@ -126,7 +142,7 @@ class MainFrame : public TopFrame
         void OnTogBtnRxID( wxCommandEvent& event );\r
         void OnTogBtnTxID( wxCommandEvent& event );\r
         void OnTogBtnTXClick( wxCommandEvent& event );\r
-
+        void OnTogBtnOnOff( wxCommandEvent& event );
         void OnPaint(wxPaintEvent& event);
         void OnClose( wxCloseEvent& event );
         void OnSize( wxSizeEvent& event );
index 359a9f63279ae4b50622056b8e386244b86f8f85..b319cb16a702b427fc952a96b3e6c8588b96592e 100644 (file)
@@ -1,8 +1,8 @@
 .PHONY: clean All
 
 All:
-       @echo ----------Building project:[ fdmdv2 - Release ]----------
-       @"mingw32-make.exe"  -j 2 -f "fdmdv2.mk"
+       @echo ----------Building project:[ test_sndfile - Debug ]----------
+       @cd "libsndfile\Projects\w32-mingw" && "mingw32-make.exe"  -j 2 -f "test_sndfile.mk"
 clean:
-       @echo ----------Cleaning project:[ fdmdv2 - Release ]----------
-       @"mingw32-make.exe"  -j 2 -f "fdmdv2.mk" clean
+       @echo ----------Cleaning project:[ test_sndfile - Debug ]----------
+       @cd "libsndfile\Projects\w32-mingw" && "mingw32-make.exe"  -j 2 -f "test_sndfile.mk" clean
index 3831fe3b301bcc640000b1798e7716893bb900df..62c1be1eacf409e6159b5fe3e3e286bb3b1c67e8 100644 (file)
@@ -2,10 +2,10 @@
 ## Auto Generated makefile by CodeLite IDE\r
 ## any manual changes will be erased      \r
 ##\r
-## Release\r
+## Debug\r
 ProjectName            :=test_hamlib\r
-ConfigurationName      :=Release\r
-IntermediateDirectory  :=./Release\r
+ConfigurationName      :=Debug\r
+IntermediateDirectory  :=./Debug\r
 OutDir                 := $(IntermediateDirectory)\r
 WorkspacePath          := "C:\Users\wittend\Projects\Radio\fdmdv2"\r
 ProjectPath            := "C:\Users\wittend\Projects\Radio\fdmdv2\hamlib-3.0\test_hamlib"\r
@@ -13,7 +13,7 @@ CurrentFileName        :=
 CurrentFilePath        :=\r
 CurrentFileFullPath    :=\r
 User                   :=wittend\r
-Date                   :=5/13/2012\r
+Date                   :=6/12/2012\r
 CodeLitePath           :="C:\Program Files\CodeLite"\r
 LinkerName             :=g++\r
 ArchiveTool            :=ar rcus\r
@@ -38,9 +38,9 @@ PreprocessOnlySwitch   :=-E
 ObjectsFileList        :="C:\Users\wittend\Projects\Radio\fdmdv2\hamlib-3.0\test_hamlib\test_hamlib.txt"\r
 PCHCompileFlags        :=\r
 MakeDirCommand         :=makedir\r
-CmpOptions             := -O2 -Wall $(shell wx-config --cxxflags --unicode=yes --debug=no) $(Preprocessors)\r
-C_CmpOptions           := -O2 -Wall $(shell wx-config --cxxflags --unicode=yes --debug=no) $(Preprocessors)\r
-LinkOptions            :=  -s $(shell wx-config --debug=no --libs --unicode=yes)\r
+CmpOptions             := -g -O0 -Wall $(shell wx-config --cxxflags --unicode=yes --debug=yes) $(Preprocessors)\r
+C_CmpOptions           := -g -O0 -Wall $(shell wx-config --cxxflags --unicode=yes --debug=yes) $(Preprocessors)\r
+LinkOptions            :=  $(shell wx-config --debug=yes --libs --unicode=yes)\r
 IncludePath            :=  $(IncludeSwitch). $(IncludeSwitch)../include/ \r
 IncludePCH             := \r
 RcIncludePath          := \r
@@ -71,7 +71,7 @@ $(OutputFile): $(IntermediateDirectory)/.d $(Objects)
        $(LinkerName) $(OutputSwitch)$(OutputFile) @$(ObjectsFileList) $(LibPath) $(Libs) $(LinkOptions)\r
 \r
 $(IntermediateDirectory)/.d:\r
-       @$(MakeDirCommand) "./Release"\r
+       @$(MakeDirCommand) "./Debug"\r
 \r
 PreBuild:\r
 \r
@@ -98,6 +98,6 @@ clean:
        $(RM) $(IntermediateDirectory)/main$(PreprocessSuffix)\r
        $(RM) $(OutputFile)\r
        $(RM) $(OutputFile).exe\r
-       $(RM) "C:\Users\wittend\Projects\Radio\fdmdv2\.build-release\test_hamlib"\r
+       $(RM) "C:\Users\wittend\Projects\Radio\fdmdv2\.build-debug\test_hamlib"\r
 \r
 \r
index 229b530c61b06bfe6274b4082f6d8c5da53486a0..042ee3b7f7594a495d706499598c06def8b4e854 100644 (file)
@@ -2,10 +2,10 @@
 ## Auto Generated makefile by CodeLite IDE\r
 ## any manual changes will be erased      \r
 ##\r
-## Release\r
+## Debug\r
 ProjectName            :=test_sndfile\r
-ConfigurationName      :=Release\r
-IntermediateDirectory  :=./Release\r
+ConfigurationName      :=Debug\r
+IntermediateDirectory  :=./Debug\r
 OutDir                 := $(IntermediateDirectory)\r
 WorkspacePath          := "C:\Users\wittend\Projects\Radio\fdmdv2"\r
 ProjectPath            := "C:\Users\wittend\Projects\Radio\fdmdv2\libsndfile\Projects\w32-mingw"\r
@@ -13,7 +13,7 @@ CurrentFileName        :=
 CurrentFilePath        :=\r
 CurrentFileFullPath    :=\r
 User                   :=wittend\r
-Date                   :=5/24/2012\r
+Date                   :=6/12/2012\r
 CodeLitePath           :="C:\Program Files\CodeLite"\r
 LinkerName             :=g++\r
 ArchiveTool            :=ar rcus\r
@@ -38,8 +38,8 @@ PreprocessOnlySwitch   :=-E
 ObjectsFileList        :="C:\Users\wittend\Projects\Radio\fdmdv2\libsndfile\Projects\w32-mingw\test_sndfile.txt"\r
 PCHCompileFlags        :=\r
 MakeDirCommand         :=makedir\r
-CmpOptions             := -O2 -Wall $(Preprocessors)\r
-C_CmpOptions           := -O2 -Wall $(Preprocessors)\r
+CmpOptions             := -g -O0 -Wall $(Preprocessors)\r
+C_CmpOptions           := -g -O0 -Wall $(Preprocessors)\r
 LinkOptions            :=  \r
 IncludePath            :=  $(IncludeSwitch). $(IncludeSwitch). \r
 IncludePCH             := \r
@@ -71,7 +71,7 @@ $(OutputFile): $(IntermediateDirectory)/.d $(Objects)
        $(LinkerName) $(OutputSwitch)$(OutputFile) @$(ObjectsFileList) $(LibPath) $(Libs) $(LinkOptions)\r
 \r
 $(IntermediateDirectory)/.d:\r
-       @$(MakeDirCommand) "./Release"\r
+       @$(MakeDirCommand) "./Debug"\r
 \r
 PreBuild:\r
 \r
@@ -98,6 +98,6 @@ clean:
        $(RM) $(IntermediateDirectory)/main$(PreprocessSuffix)\r
        $(RM) $(OutputFile)\r
        $(RM) $(OutputFile).exe\r
-       $(RM) "C:\Users\wittend\Projects\Radio\fdmdv2\.build-release\test_sndfile"\r
+       $(RM) "C:\Users\wittend\Projects\Radio\fdmdv2\.build-debug\test_sndfile"\r
 \r
 \r
index 13c340c799b5909afb2564a8bd3077df46e94f19..f2c5c8782277b847c46029ad18aa8ddeefe0f0c8 100644 (file)
@@ -2,10 +2,10 @@
 ## Auto Generated makefile by CodeLite IDE\r
 ## any manual changes will be erased      \r
 ##\r
-## Release\r
+## Debug\r
 ProjectName            :=pa_cppbinding_test\r
-ConfigurationName      :=Release\r
-IntermediateDirectory  :=./Release\r
+ConfigurationName      :=Debug\r
+IntermediateDirectory  :=./Debug\r
 OutDir                 := $(IntermediateDirectory)\r
 WorkspacePath          := "C:\Users\wittend\Projects\Radio\fdmdv2"\r
 ProjectPath            := "C:\Users\wittend\Projects\Radio\fdmdv2\pa_cppbinding_test"\r
@@ -13,7 +13,7 @@ CurrentFileName        :=
 CurrentFilePath        :=\r
 CurrentFileFullPath    :=\r
 User                   :=wittend\r
-Date                   :=5/29/2012\r
+Date                   :=6/12/2012\r
 CodeLitePath           :="C:\Program Files\CodeLite"\r
 LinkerName             :=g++\r
 ArchiveTool            :=ar rcus\r
@@ -38,13 +38,13 @@ PreprocessOnlySwitch   :=-E
 ObjectsFileList        :="C:\Users\wittend\Projects\Radio\fdmdv2\pa_cppbinding_test\pa_cppbinding_test.txt"\r
 PCHCompileFlags        :=\r
 MakeDirCommand         :=makedir\r
-CmpOptions             := -O2 -Wall $(shell wx-config --cxxflags --unicode=yes --debug=no) $(Preprocessors)\r
-C_CmpOptions           := -O2 -Wall $(shell wx-config --cxxflags --unicode=yes --debug=no) $(Preprocessors)\r
-LinkOptions            :=  -mwindows -s $(shell wx-config --debug=no --libs --unicode=yes)\r
-IncludePath            :=  $(IncludeSwitch). $(IncludeSwitch)./ $(IncludeSwitch)C:/bin/MinGW/msys/1.0/local/include $(IncludeSwitch)./portaudiocpp \r
+CmpOptions             := -g -O0 -Wall $(shell wx-config --cxxflags --unicode=yes --debug=yes) $(Preprocessors)\r
+C_CmpOptions           := -g -O0 -Wall $(shell wx-config --cxxflags --unicode=yes --debug=yes) $(Preprocessors)\r
+LinkOptions            :=  -mwindows $(shell wx-config --debug=yes --libs --unicode=yes)\r
+IncludePath            :=  $(IncludeSwitch). \r
 IncludePCH             := \r
 RcIncludePath          := \r
-Libs                   := $(LibrarySwitch)portaudiocpp-0 $(LibrarySwitch)portaudio-2 \r
+Libs                   := $(LibrarySwitch)portaudiocpp.la $(LibrarySwitch)portaudio.la \r
 LibPath                := $(LibraryPathSwitch). $(LibraryPathSwitch). \r
 \r
 \r
@@ -71,7 +71,7 @@ $(OutputFile): $(IntermediateDirectory)/.d $(Objects)
        $(LinkerName) $(OutputSwitch)$(OutputFile) @$(ObjectsFileList) $(LibPath) $(Libs) $(LinkOptions)\r
 \r
 $(IntermediateDirectory)/.d:\r
-       @$(MakeDirCommand) "./Release"\r
+       @$(MakeDirCommand) "./Debug"\r
 \r
 PreBuild:\r
 \r
@@ -109,6 +109,6 @@ clean:
        $(RM) $(IntermediateDirectory)/main$(PreprocessSuffix)\r
        $(RM) $(OutputFile)\r
        $(RM) $(OutputFile).exe\r
-       $(RM) "C:\Users\wittend\Projects\Radio\fdmdv2\.build-release\pa_cppbinding_test"\r
+       $(RM) "C:\Users\wittend\Projects\Radio\fdmdv2\.build-debug\pa_cppbinding_test"\r
 \r
 \r
index 694ca7cffb1f6e1f73e74d5c87c4885d3fcdf19e..1a815869bbe328bd0f4cd26a3f555e1467c21421 100644 (file)
@@ -100,32 +100,32 @@ PaDeviceIndex PortAudioWrap::getDefaultOutputDevice()
 
 PaError PortAudioWrap::setInputChannelCount(int count)
 {
-    if(!isActive())
-    {
+//    if(!isActive())
+//    {
         inputBuffer.channelCount = count;
         return paNoError;
-    }
-    return paStreamIsNotStopped;
+//    }
+//    return paStreamIsNotStopped;
 }
 
 PaError PortAudioWrap::setInputSampleFormat(PaSampleFormat format)
 {
-    if(!isActive())
-    {
+//    if(!isActive())
+//    {
         inputBuffer.sampleFormat = format;
         return paNoError;
-    }
-    return paStreamIsNotStopped;
+//    }
+//    return paStreamIsNotStopped;
 }
 
 PaError PortAudioWrap::setInputLatency(PaTime latency)
 {
-    if(!isActive())
-    {
+//    if(!isActive())
+//    {
         inputBuffer.suggestedLatency = latency;
         return paNoError;
-    }
-    return paStreamIsNotStopped;
+//    }
+//    return paStreamIsNotStopped;
 }
 \r
 void PortAudioWrap::setInputHostApiStreamInfo(void *info)
@@ -140,32 +140,32 @@ PaTime  PortAudioWrap::getInputDefaultLowLatency()
 
 PaError PortAudioWrap::setOutputChannelCount(int count)
 {
-    if(!isActive())
-    {
+//    if(!isActive())
+//    {
         outputBuffer.channelCount = count;
         return paNoError;
-    }
-    return paStreamIsNotStopped;
+//    }
+//    return paStreamIsNotStopped;
 }
 
 PaError PortAudioWrap::setOutputSampleFormat(PaSampleFormat format)
 {
-    if(!isActive())
-    {
+//    if(!isActive())
+//    {
         outputBuffer.sampleFormat = format;
         return paNoError;
-    }
-    return paStreamIsNotStopped;
+//    }
+//    return paStreamIsNotStopped;
 }
 
 PaError PortAudioWrap::setOutputLatency(PaTime latency)
 {
-    if(!isOpen())
-    {
+//    if(!isOpen())
+//   {
         outputBuffer.suggestedLatency = latency;
         return paNoError;
-    }
-    return paStreamIsNotStopped;
+//    }
+//    return paStreamIsNotStopped;
 }
 
 void PortAudioWrap::setOutputHostApiStreamInfo(void *info)
@@ -180,62 +180,62 @@ PaTime  PortAudioWrap::getOutputDefaultLowLatency()
 
 PaError PortAudioWrap::setFramesPerBuffer(unsigned long size)
 {
-    if(!isOpen())
-    {
+//    if(!isOpen())
+//    {
         framesPerBuffer = size;
         return paNoError;
-    }
-    return paStreamIsNotStopped;
+//    }
+//    return paStreamIsNotStopped;
 }
 
 PaError PortAudioWrap::setSampleRate(unsigned long rate)\r
 {
-    if(!isOpen())
-    {
+//    if(!isOpen())
+//    {
         samplerate = rate;
         return paNoError;
-    }
-    return paStreamIsNotStopped;
+//    }
+//    return paStreamIsNotStopped;
 }
 
 PaError PortAudioWrap::setStreamFlags(PaStreamFlags flags)\r
 {
-    if(!isOpen())
-    {
+//    if(!isOpen())
+//    {
         statusFlags = flags;
         return paNoError;
-    }
-    return paStreamIsNotStopped;
+//    }
+//    return paStreamIsNotStopped;
 }
 
 PaError PortAudioWrap::setInputDevice(PaDeviceIndex flags)\r
 {
-    if(!isOpen())
-    {
+//    if(!isOpen())
+//    {
         inputDevice = flags;
         return paNoError;
-    }
-    return paStreamIsNotStopped;
+//    }
+//    return paStreamIsNotStopped;
 }
 
 PaError PortAudioWrap::setOutputDevice(PaDeviceIndex flags)\r
 {
-    if(!isOpen())
-    {
+//    if(!isOpen())
+//    {
         outputDevice = flags;
         return paNoError;
-    }
-    return paStreamIsNotStopped;
+//    }
+//    return paStreamIsNotStopped;
 }
 
 PaError PortAudioWrap::setCallback(PaStreamCallback *callback)\r
 {
-    if(!isOpen())
-    {
+//    if(!isOpen())
+//    {
         streamCallback = callback;
         return paNoError;
-    }
-    return paStreamIsNotStopped;
+//    }
+//    return paStreamIsNotStopped;
 }
 
 
index a1d2959783d7584ebc4ac092002cc4c73e526995..e565e9dd6b6ff260debb1bcb6066dbc88d33ac5e 100644 (file)
@@ -20,18 +20,18 @@ class PortAudioWrap
         ~PortAudioWrap();\r
 \r
     private:\r
-        PaStream                    *stream;\r
-        PaStreamParameters          inputBuffer;
-        PaStreamParameters          outputBuffer;
-        void                        *userData;\r
-        int                         samplerate;\r
-        unsigned long               framesPerBuffer;
-        PaStreamCallbackFlags       statusFlags;\r
-        PaStreamCallback            *streamCallback;\r
-        PaStreamFinishedCallback    *streamFinishedCallback;\r
-        const PaStreamCallbackTimeInfotimeInfo;
-        PaDeviceIndex               inputDevice;
-        PaDeviceIndex               outputDevice;
+        PaStream                        *stream;\r
+        PaStreamParameters              inputBuffer;
+        PaStreamParameters              outputBuffer;
+        void                            *userData;\r
+        int                             samplerate;\r
+        unsigned long                   framesPerBuffer;
+        PaStreamCallbackFlags           statusFlags;\r
+        PaStreamCallback                *streamCallback;\r
+        PaStreamFinishedCallback        *streamFinishedCallback;\r
+        const PaStreamCallbackTimeInfo  *timeInfo;
+        PaDeviceIndex                   inputDevice;
+        PaDeviceIndex                   outputDevice;
 \r
     public:\r
 
index 8306337d6fc0c276ec913af34b4fa1a64db3a09d..9f7391ef01910d7d1a75a460193f8984394b8236 100644 (file)
@@ -7,13 +7,13 @@ ProjectName            :=pa_test
 ConfigurationName      :=Debug\r
 IntermediateDirectory  :=./Debug\r
 OutDir                 := $(IntermediateDirectory)\r
-WorkspacePath          := "C:\Users\wittend\Projects\audio\portaudio_test\paEcho"\r
-ProjectPath            := "C:\Users\wittend\Projects\audio\portaudio_test\paEcho\pa_test"\r
+WorkspacePath          := "C:\Users\wittend\Projects\Radio\fdmdv2"\r
+ProjectPath            := "C:\Users\wittend\Projects\Radio\fdmdv2\pa_test"\r
 CurrentFileName        :=\r
 CurrentFilePath        :=\r
 CurrentFileFullPath    :=\r
 User                   :=wittend\r
-Date                   :=5/15/2012\r
+Date                   :=6/12/2012\r
 CodeLitePath           :="C:\Program Files\CodeLite"\r
 LinkerName             :=g++\r
 ArchiveTool            :=ar rcus\r
@@ -35,13 +35,13 @@ Preprocessors          :=
 ObjectSwitch           :=-o \r
 ArchiveOutputSwitch    := \r
 PreprocessOnlySwitch   :=-E \r
-ObjectsFileList        :="C:\Users\wittend\Projects\audio\portaudio_test\paEcho\pa_test\pa_test.txt"\r
+ObjectsFileList        :="C:\Users\wittend\Projects\Radio\fdmdv2\pa_test\pa_test.txt"\r
 PCHCompileFlags        :=\r
 MakeDirCommand         :=makedir\r
 CmpOptions             := -g -O0 -Wall $(Preprocessors)\r
 C_CmpOptions           := -g -O0 -Wall $(Preprocessors)\r
 LinkOptions            :=  \r
-IncludePath            :=  $(IncludeSwitch). $(IncludeSwitch). $(IncludeSwitch)../../../portaudio/include \r
+IncludePath            :=  $(IncludeSwitch). $(IncludeSwitch). $(IncludeSwitch)../extern/include $(IncludeSwitch)../../../portaudio/include \r
 IncludePCH             := \r
 RcIncludePath          := \r
 Libs                   := $(LibrarySwitch)portaudio \r
@@ -80,12 +80,12 @@ PreBuild:
 ## Objects\r
 ##\r
 $(IntermediateDirectory)/pa_class$(ObjectSuffix): pa_class.cpp $(IntermediateDirectory)/pa_class$(DependSuffix)\r
-       $(CompilerName) $(IncludePCH) $(SourceSwitch) "C:/Users/wittend/Projects/audio/portaudio_test/paEcho/pa_test/pa_class.cpp" $(CmpOptions) $(ObjectSwitch)$(IntermediateDirectory)/pa_class$(ObjectSuffix) $(IncludePath)\r
+       $(CompilerName) $(IncludePCH) $(SourceSwitch) "C:/Users/wittend/Projects/Radio/fdmdv2/pa_test/pa_class.cpp" $(CmpOptions) $(ObjectSwitch)$(IntermediateDirectory)/pa_class$(ObjectSuffix) $(IncludePath)\r
 $(IntermediateDirectory)/pa_class$(DependSuffix): pa_class.cpp\r
-       @$(CompilerName) $(CmpOptions) $(IncludePCH) $(IncludePath) -MG -MP -MT$(IntermediateDirectory)/pa_class$(ObjectSuffix) -MF$(IntermediateDirectory)/pa_class$(DependSuffix) -MM "C:/Users/wittend/Projects/audio/portaudio_test/paEcho/pa_test/pa_class.cpp"\r
+       @$(CompilerName) $(CmpOptions) $(IncludePCH) $(IncludePath) -MG -MP -MT$(IntermediateDirectory)/pa_class$(ObjectSuffix) -MF$(IntermediateDirectory)/pa_class$(DependSuffix) -MM "C:/Users/wittend/Projects/Radio/fdmdv2/pa_test/pa_class.cpp"\r
 \r
 $(IntermediateDirectory)/pa_class$(PreprocessSuffix): pa_class.cpp\r
-       @$(CompilerName) $(CmpOptions) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/pa_class$(PreprocessSuffix) "C:/Users/wittend/Projects/audio/portaudio_test/paEcho/pa_test/pa_class.cpp"\r
+       @$(CompilerName) $(CmpOptions) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/pa_class$(PreprocessSuffix) "C:/Users/wittend/Projects/Radio/fdmdv2/pa_test/pa_class.cpp"\r
 \r
 \r
 -include $(IntermediateDirectory)/*$(DependSuffix)\r
@@ -98,6 +98,6 @@ clean:
        $(RM) $(IntermediateDirectory)/pa_class$(PreprocessSuffix)\r
        $(RM) $(OutputFile)\r
        $(RM) $(OutputFile).exe\r
-       $(RM) "C:\Users\wittend\Projects\audio\portaudio_test\paEcho\.build-debug\pa_test"\r
+       $(RM) "C:\Users\wittend\Projects\Radio\fdmdv2\.build-debug\pa_test"\r
 \r
 \r
index 1774f1d4c30973732b46a517846cf58714706c3f..3c024018b57d888e41d48e7cce6afeb592218d1e 100644 (file)
@@ -13,6 +13,8 @@
   <VirtualDirectory Name="include">
     <File Name="pa_class.h"/>
   </VirtualDirectory>
+  <Dependencies Name="Debug"/>
+  <Dependencies Name="Release"/>
   <Settings Type="Executable">
     <GlobalSettings>
       <Compiler Options="" C_Options="">
@@ -26,8 +28,7 @@
     <Configuration Name="Debug" CompilerType="gnu g++" DebuggerType="GNU gdb debugger" Type="Executable" BuildCmpWithGlobalSettings="append" BuildLnkWithGlobalSettings="append" BuildResWithGlobalSettings="append">
       <Compiler Options="-g;-O0;-Wall" C_Options="-g;-O0;-Wall" Required="yes" PreCompiledHeader="" PCHInCommandLine="no" UseDifferentPCHFlags="no" PCHFlags="">
         <IncludePath Value="."/>
-        <IncludePath Value="."/>
-        <IncludePath Value="extern/include"/>
+        <IncludePath Value="../extern/include"/>
         <IncludePath Value="../../../portaudio/include"/>
       </Compiler>
       <Linker Options="" Required="yes">
@@ -58,7 +59,7 @@
         <CustomPostBuild/>
         <CustomPreBuild/>
       </AdditionalRules>
-      <Completion>
+      <Completion EnableCpp11="no">
         <ClangCmpFlags/>
         <ClangPP/>
         <SearchPaths/>
         <CustomPostBuild/>
         <CustomPreBuild/>
       </AdditionalRules>
-      <Completion>
+      <Completion EnableCpp11="no">
         <ClangCmpFlags/>
         <ClangPP/>
         <SearchPaths/>
       </Completion>
     </Configuration>
   </Settings>
-  <Dependencies Name="Debug"/>
-  <Dependencies Name="Release"/>
 </CodeLite_Project>
diff --git a/fdmdv2/paclass.cpp b/fdmdv2/paclass.cpp
new file mode 100644 (file)
index 0000000..bac2f6d
--- /dev/null
@@ -0,0 +1,212 @@
+#include "paclass.h"
+
+PortAudioWrap::PortAudioWrap()
+{
+    stream = NULL;\r
+    userData = NULL;\r
+    samplerate = 0;\r
+    framesPerBuffer = 0;
+    statusFlags = 0;\r
+    streamCallback = NULL;\r
+    streamFinishedCallback = NULL;\r
+    timeInfo = 0;
+}
+
+PortAudioWrap::~PortAudioWrap()
+{
+}
+
+PaError PortAudioWrap::init()
+{
+    return Pa_Initialize();
+}
+
+PaError PortAudioWrap::streamOpen()\r
+{
+    return Pa_OpenStream(
+                            &stream,
+                            &inputBuffer,
+                            &outputBuffer,
+                            samplerate,
+                            framesPerBuffer,
+                            statusFlags,
+                            *streamCallback,
+                            userData
+                        );
+}
+
+PaError PortAudioWrap::streamStart()\r
+{
+    return Pa_StartStream(this->stream);
+}
+
+PaError PortAudioWrap::streamClose()\r
+{
+    if(isOpen())
+    {
+        PaError rv = Pa_CloseStream(this->stream);
+        this->stream = NULL;
+        return rv;
+    }
+    else
+    {
+        return paNoError;
+    }
+}
+\r
+void PortAudioWrap::terminate()\r
+{
+    if(Pa_IsStreamStopped(stream) != paNoError)
+    {
+        Pa_StopStream(stream);
+    }
+    Pa_Terminate();
+}
+\r
+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\r
+{\r
+    return (stream != NULL);\r
+}\r
+
+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;
+}
+\r
+void PortAudioWrap::setInputHostApiStreamInfo(void *info)
+{
+    inputBuffer.hostApiSpecificStreamInfo = info;
+}
+\r
+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)\r
+{
+    samplerate = rate;
+    return paNoError;
+}
+
+PaError PortAudioWrap::setStreamFlags(PaStreamFlags flags)\r
+{
+    statusFlags = flags;
+    return paNoError;
+}
+
+PaError PortAudioWrap::setInputDevice(PaDeviceIndex index)\r
+{
+//    inputDevice = index;
+    inputBuffer.device = index;
+    return paNoError;
+}
+
+PaError PortAudioWrap::setOutputDevice(PaDeviceIndex index)\r
+{
+//    outputDevice = index;
+    outputBuffer.device = index;
+    return paNoError;
+}
+
+PaError PortAudioWrap::setCallback(PaStreamCallback *callback)\r
+{
+    streamCallback = callback;
+    return paNoError;
+}
diff --git a/fdmdv2/paclass.h b/fdmdv2/paclass.h
new file mode 100644 (file)
index 0000000..f7418f8
--- /dev/null
@@ -0,0 +1,78 @@
+#include <stdio.h>
+#include <math.h>
+#include "portaudio.h"
+\r
+// 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\r
+{\r
+    public:\r
+        PortAudioWrap();\r
+        ~PortAudioWrap();\r
+\r
+    private:\r
+        PaStream                        *stream;\r
+        PaStreamParameters              inputBuffer;
+        PaStreamParameters              outputBuffer;
+        void                            *userData;\r
+        int                             samplerate;\r
+        unsigned long                   framesPerBuffer;
+        PaStreamCallbackFlags           statusFlags;\r
+        PaStreamCallback                *streamCallback;\r
+        PaStreamFinishedCallback        *streamFinishedCallback;\r
+        const PaStreamCallbackTimeInfo  *timeInfo;
+        PaDeviceIndex                   inputDevice;
+        PaDeviceIndex                   outputDevice;
+\r
+    public:\r
+
+        PaError streamOpen();\r
+\r
+        PaDeviceIndex getDefaultInputDevice();
+        PaDeviceIndex getDefaultOutputDevice();\r
+\r
+        PaStreamParameters *getDeviceInfo(PaDeviceIndex idx);\r
+        PaError     setFramesPerBuffer(unsigned long size);\r
+        PaError     setSampleRate(unsigned long size);\r
+        PaError     setStreamFlags(PaStreamFlags flags);\r
+        PaError     setCallback(PaStreamCallback *streamCallback);\r
+        PaError     setStreamCallback(PaStream *stream, PaStreamCallback* callback ) { streamCallback = callback; return 0;}
+        PaError     setStreamFinishedCallback(PaStream *stream, PaStreamFinishedCallback* streamFinishedCallback );
+
+        PaError     setInputDevice(PaDeviceIndex dev);\r
+        PaError     setInputChannelCount(int count);
+        int         getInputChannelCount();
+        PaError     setInputSampleFormat(PaSampleFormat format);
+        PaError     setInputSampleRate(PaSampleFormat format);
+        PaError     setInputLatency(PaTime latency);\r
+        void        setInputHostApiStreamInfo(void *info = NULL);\r
+        PaTime      getInputDefaultLowLatency();
+        const char  *getDeviceName(PaDeviceIndex dev);
+
+        PaError     setOutputDevice(PaDeviceIndex dev);\r
+        PaError     setOutputChannelCount(int count);
+        int         getOutputChannelCount();
+        PaError     setOutputSampleFormat(PaSampleFormat format);
+        PaError     setOutputLatency(PaTime latency);
+        void        setOutputHostApiStreamInfo(void *info = NULL);
+        PaTime      getOutputDefaultLowLatency();
+\r
+        PaError     init();\r
+        PaError     streamStart();\r
+        PaError     streamClose();\r
+        void        terminate();\r
+        bool        isOpen() const;\r
+        void        stop();
+        void        abort();
+        bool        isStopped() const;
+        bool        isActive() const;
+};\r
index d5c465c38043908f159dc69547b293946db22a87..ff1795e09b4f46a1952fbb726b48bbd3bac3c297 100644 (file)
@@ -1,7 +1,7 @@
 //==========================================================================\r
 // Name:            thread_audio.cpp\r
 //\r
-// Purpose:         Implements simple wxWidgets application with GUI.\r
+// Purpose:         Implements a thread for processing an audio data stream.\r
 // Created:         May 11, 2012
 // Initial author:  David Witten\r
 // License:         BSD License (other licenses may apply to other\r
@@ -38,6 +38,33 @@ static int audioCallback( void *inputBuffer, void *outputBuffer, unsigned long f
     }\r
     return 0;\r
 }\r
+\r
+AudioThread::AudioThread()
+{
+}
+
+AudioThread::~AudioThread()
+{
+}
+
+void* AudioThread::Entry()
+{
+    return NULL;
+}
+void AudioThread::OnDelete()
+{
+}
+void AudioThread::OnExit()
+{
+}
+void AudioThread::OnKill()
+{
+}\r
+
+//    bool Fdmdv2ThreadAudio::TestDestroy()
+//    {
+//    }
+\r
 #ifdef PORTAUDIO_MAIN\r
 /* Use a PortAudioStream to process audio data. */\r
 int main(void)\r
index fa2cc4f484457865ad61203165e3d00e123e4746..2206957208c338bd8fbc4136d540639f7edaab72 100644 (file)
@@ -10,6 +10,9 @@
 #include <wx/thread.h>
 #include "fdmdv2_main.h"\r
 \r
+#ifndef __THREAD_AUDIO__
+#define __THREAD_AUDIO__
+\r
 //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=\r
 // Class AudioThread\r
 //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=\r
@@ -18,9 +21,187 @@ class AudioThread: public wxThread
     public:\r
         AudioThread(MainFrame *handler) : wxThread(wxTHREAD_DETACHED){ m_pHandler = handler; }\r
         ~AudioThread();\r
+        void *Entry();
+        void OnDelete();
+        void OnExit();
+        void OnKill();
+        bool TestDestroy();
 \r
     protected:\r
-        virtual ExitCode Entry();\r
+        //ExitCode Entry();\r
         MainFrame *m_pHandler;\r
 };\r
 \r
+    // declare a new type of event, to be used by our MyThread class:\r
+    wxDECLARE_EVENT(wxEVT_COMMAND_MYTHREAD_COMPLETED, wxThreadEvent);\r
+    wxDECLARE_EVENT(wxEVT_COMMAND_MYTHREAD_UPDATE, wxThreadEvent);\r
+    class MyFrame;\r
+\r
+    class MyThread : public wxThread\r
+    {\r
+    public:\r
+        MyThread(MyFrame *handler)\r
+            : wxThread(wxTHREAD_DETACHED)\r
+            { m_pHandler = handler }\r
+        ~MyThread();\r
+\r
+    protected:\r
+        virtual ExitCode Entry();\r
+        MyFrame *m_pHandler;\r
+    };\r
+\r
+    class MyFrame : public wxFrame\r
+    {\r
+    public:\r
+        ...\r
+        ~MyFrame()\r
+        {\r
+            // it's better to do any thread cleanup in the OnClose()\r
+            // event handler, rather than in the destructor.\r
+            // This is because the event loop for a top-level window is not\r
+            // active anymore when its destructor is called and if the thread\r
+            // sends events when ending, they won't be processed unless\r
+            // you ended the thread from OnClose.\r
+            // See @ref overview_windowdeletion for more info.\r
+        }\r
+        ...\r
+        void DoStartThread();\r
+        void DoPauseThread();\r
+\r
+        // a resume routine would be nearly identic to DoPauseThread()\r
+        void DoResumeThread() { ... }\r
+\r
+        void OnThreadUpdate(wxThreadEvent&);\r
+        void OnThreadCompletion(wxThreadEvent&);\r
+        void OnClose(wxCloseEvent&);\r
+\r
+    protected:\r
+        MyThread *m_pThread;\r
+        wxCriticalSection m_pThreadCS;    // protects the m_pThread pointer\r
+\r
+        wxDECLARE_EVENT_TABLE();\r
+    };\r
+\r
+    wxBEGIN_EVENT_TABLE(MyFrame, wxFrame)\r
+        EVT_CLOSE(MyFrame::OnClose)\r
+        EVT_MENU(Minimal_Start,  MyFrame::DoStartThread)\r
+        EVT_COMMAND(wxID_ANY, wxEVT_COMMAND_MYTHREAD_UPDATE, MyFrame::OnThreadUpdate)\r
+        EVT_COMMAND(wxID_ANY, wxEVT_COMMAND_MYTHREAD_COMPLETED, MyFrame::OnThreadCompletion)\r
+    wxEND_EVENT_TABLE()\r
+\r
+    wxDEFINE_EVENT(wxEVT_COMMAND_MYTHREAD_COMPLETED, wxThreadEvent)\r
+    wxDEFINE_EVENT(wxEVT_COMMAND_MYTHREAD_UPDATE, wxThreadEvent)\r
+\r
+    void MyFrame::DoStartThread()\r
+    {\r
+        m_pThread = new MyThread(this);\r
+\r
+        if ( m_pThread->Create() != wxTHREAD_NO_ERROR )\r
+        {\r
+            wxLogError("Can't create the thread!");\r
+            delete m_pThread;\r
+            m_pThread = NULL;\r
+        }\r
+        else\r
+        {\r
+            if (m_pThread->Run() != wxTHREAD_NO_ERROR )\r
+            {\r
+                wxLogError("Can't create the thread!");\r
+                delete m_pThread;\r
+                m_pThread = NULL;\r
+            }\r
+\r
+            // after the call to wxThread::Run(), the m_pThread pointer is "unsafe":\r
+            // at any moment the thread may cease to exist (because it completes its work).\r
+            // To avoid dangling pointers OnThreadExit() will set m_pThread\r
+            // to NULL when the thread dies.\r
+        }\r
+    }\r
+\r
+    wxThread::ExitCode MyThread::Entry()\r
+    {\r
+        while (!TestDestroy())\r
+        {\r
+            // ... do a bit of work...\r
+\r
+            wxQueueEvent(m_pHandler, new wxThreadEvent(wxEVT_COMMAND_MYTHREAD_UPDATE));\r
+        }\r
+\r
+        // signal the event handler that this thread is going to be destroyed\r
+        // NOTE: here we assume that using the m_pHandler pointer is safe,\r
+        //       (in this case this is assured by the MyFrame destructor)\r
+        wxQueueEvent(m_pHandler, new wxThreadEvent(wxEVT_COMMAND_MYTHREAD_COMPLETED));\r
+\r
+        return (wxThread::ExitCode)0;     // success\r
+    }\r
+\r
+    MyThread::~MyThread()\r
+    {\r
+        wxCriticalSectionLocker enter(m_pHandler->m_pThreadCS);\r
+\r
+        // the thread is being destroyed; make sure not to leave dangling pointers around\r
+        m_pHandler->m_pThread = NULL;\r
+    }\r
+\r
+    void MyFrame::OnThreadCompletion(wxThreadEvent&)\r
+    {\r
+        wxMessageOutputDebug().Printf("MYFRAME: MyThread exited!\n");\r
+    }\r
+\r
+    void MyFrame::OnThreadUpdate(wxThreadEvent&)\r
+    {\r
+        wxMessageOutputDebug().Printf("MYFRAME: MyThread update...\n");\r
+    }\r
+\r
+    void MyFrame::DoPauseThread()\r
+    {\r
+        // anytime we access the m_pThread pointer we must ensure that it won't\r
+        // be modified in the meanwhile; since only a single thread may be\r
+        // inside a given critical section at a given time, the following code\r
+        // is safe:\r
+        wxCriticalSectionLocker enter(m_pThreadCS);\r
+\r
+        if (m_pThread)         // does the thread still exist?\r
+        {\r
+            // without a critical section, once reached this point it may happen\r
+            // that the OS scheduler gives control to the MyThread::Entry() function,\r
+            // which in turn may return (because it completes its work) making\r
+            // invalid the m_pThread pointer\r
+\r
+            if (m_pThread->Pause() != wxTHREAD_NO_ERROR )\r
+                wxLogError("Can't pause the thread!");\r
+        }\r
+    }\r
+\r
+    void MyFrame::OnClose(wxCloseEvent&)\r
+    {\r
+        {\r
+            wxCriticalSectionLocker enter(m_pThreadCS);\r
+\r
+            if (m_pThread)         // does the thread still exist?\r
+            {\r
+                wxMessageOutputDebug().Printf("MYFRAME: deleting thread");\r
+\r
+                if (m_pThread->Delete() != wxTHREAD_NO_ERROR )\r
+                    wxLogError("Can't delete the thread!");\r
+            }\r
+        }       // exit from the critical section to give the thread\r
+                // the possibility to enter its destructor\r
+                // (which is guarded with m_pThreadCS critical section!)\r
+\r
+        while (1)\r
+        {\r
+            { // was the ~MyThread() function executed?\r
+                wxCriticalSectionLocker enter(m_pThreadCS);\r
+                if (!m_pThread) break;\r
+            }\r
+\r
+            // wait for thread completion\r
+            wxThread::This()->Sleep(1);\r
+        }\r
+\r
+        Destroy();\r
+    }\r
+\r
+\r
+#endif // __THREAD_AUDIO__
index 30db38085b4af5bdb83cb0f1cb27e9514756fc4c..1f9f2b1c5d18e12e6180b17077b5aca3b25a972c 100644 (file)
@@ -94,12 +94,15 @@ TopFrame::TopFrame( wxWindow* parent, wxWindowID id, const wxString& title, cons
        snrSizer = new wxStaticBoxSizer( new wxStaticBox( this, wxID_ANY, _("SNR") ), wxVERTICAL );\r
        \r
        m_gaugeSNR = new wxGauge( this, wxID_ANY, 100, wxDefaultPosition, wxSize( 15,135 ), wxGA_SMOOTH|wxGA_VERTICAL );\r
+       m_gaugeSNR->SetToolTip( _("Display signal to noise ratio.") );\r
+       \r
        snrSizer->Add( m_gaugeSNR, 1, wxALIGN_CENTER_HORIZONTAL|wxALL, 10 );\r
        \r
        wxBoxSizer* bSizer29;\r
        bSizer29 = new wxBoxSizer( wxVERTICAL );\r
        \r
        m_textSNR = new wxTextCtrl( this, wxID_ANY, wxEmptyString, wxPoint( -1,-1 ), wxSize( 35,25 ), wxTE_READONLY );\r
+       m_textSNR->SetToolTip( _("Show S/N ratio numerically.") );\r
        m_textSNR->SetMinSize( wxSize( 35,25 ) );\r
        \r
        bSizer29->Add( m_textSNR, 0, wxALIGN_CENTER|wxALL, 1 );\r
@@ -114,6 +117,8 @@ TopFrame::TopFrame( wxWindow* parent, wxWindowID id, const wxString& title, cons
        levelSizer = new wxStaticBoxSizer( new wxStaticBox( this, wxID_ANY, _("Level") ), wxVERTICAL );\r
        \r
        m_gaugeLevel = new wxGauge( this, wxID_ANY, 100, wxDefaultPosition, wxSize( 15,135 ), wxGA_SMOOTH|wxGA_VERTICAL );\r
+       m_gaugeLevel->SetToolTip( _("Display signal level.") );\r
+       \r
        levelSizer->Add( m_gaugeLevel, 1, wxALIGN_CENTER_HORIZONTAL|wxALL, 10 );\r
        \r
        \r
@@ -129,6 +134,8 @@ TopFrame::TopFrame( wxWindow* parent, wxWindowID id, const wxString& title, cons
        upperSizer = new wxBoxSizer( wxVERTICAL );\r
        \r
        m_auiNbookCtrl = new wxAuiNotebook( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxAUI_NB_BOTTOM|wxAUI_NB_DEFAULT_STYLE );\r
+       m_auiNbookCtrl->SetFont( wxFont( 6, 70, 90, 90, false, wxEmptyString ) );\r
+       \r
        \r
        upperSizer->Add( m_auiNbookCtrl, 1, wxALIGN_TOP|wxEXPAND, 1 );\r
        \r
@@ -172,28 +179,43 @@ TopFrame::TopFrame( wxWindow* parent, wxWindowID id, const wxString& title, cons
        sbSizer3 = new wxStaticBoxSizer( new wxStaticBox( this, wxID_ANY, _("SQ") ), wxVERTICAL );\r
        \r
        m_sliderSQ = new wxSlider( this, wxID_ANY, 50, 0, 100, wxDefaultPosition, wxSize( -1,100 ), wxSL_AUTOTICKS|wxSL_INVERSE|wxSL_VERTICAL );\r
+       m_sliderSQ->SetToolTip( _("Set Squelch level.") );\r
+       \r
        sbSizer3->Add( m_sliderSQ, 2, wxALIGN_CENTER|wxALL, 1 );\r
        \r
        wxBoxSizer* bSizer131;\r
        bSizer131 = new wxBoxSizer( wxVERTICAL );\r
        \r
        m_ckboxSQ = new wxCheckBox( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxCHK_2STATE );\r
+       m_ckboxSQ->SetToolTip( _("Activate/Deactivate Squelch") );\r
+       \r
        bSizer131->Add( m_ckboxSQ, 0, wxALIGN_CENTER|wxALL, 5 );\r
        \r
        \r
        sbSizer3->Add( bSizer131, 0, wxALIGN_CENTER, 5 );\r
        \r
        \r
-       rightSizer->Add( sbSizer3, 3, wxALIGN_CENTER_HORIZONTAL|wxALL|wxEXPAND, 3 );\r
+       rightSizer->Add( sbSizer3, 2, wxALIGN_CENTER_HORIZONTAL|wxALL|wxEXPAND, 3 );\r
        \r
        wxStaticBoxSizer* sbSizer5;\r
        sbSizer5 = new wxStaticBoxSizer( new wxStaticBox( this, wxID_ANY, _("Control") ), wxVERTICAL );\r
        \r
+       wxBoxSizer* bSizer1511;\r
+       bSizer1511 = new wxBoxSizer( wxVERTICAL );\r
+       \r
+       m_togBtnOnOff = new wxToggleButton( this, wxID_ANY, _("Start"), wxDefaultPosition, wxDefaultSize, 0 );\r
+       m_togBtnOnOff->SetToolTip( _("Begin receiving data.") );\r
+       \r
+       bSizer1511->Add( m_togBtnOnOff, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL|wxALL, 1 );\r
+       \r
+       \r
+       sbSizer5->Add( bSizer1511, 0, wxEXPAND, 1 );\r
+       \r
        wxBoxSizer* bSizer151;\r
        bSizer151 = new wxBoxSizer( wxVERTICAL );\r
        \r
        m_togBtnSplit = new wxToggleButton( this, wxID_ANY, _("Split"), wxDefaultPosition, wxDefaultSize, 0 );\r
-       m_togBtnSplit->SetToolTip( _("Toggle Split mode.") );\r
+       m_togBtnSplit->SetToolTip( _("Toggle split frequency mode.") );\r
        \r
        bSizer151->Add( m_togBtnSplit, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL|wxALL, 1 );\r
        \r
@@ -215,7 +237,7 @@ TopFrame::TopFrame( wxWindow* parent, wxWindowID id, const wxString& title, cons
        bSizer14 = new wxBoxSizer( wxVERTICAL );\r
        \r
        m_togBtnALC = new wxToggleButton( this, wxID_ANY, _("ALC"), wxDefaultPosition, wxDefaultSize, 0 );\r
-       m_togBtnALC->SetToolTip( _("Toggle ALC Mode.") );\r
+       m_togBtnALC->SetToolTip( _("Toggle automatic level control mode.") );\r
        \r
        bSizer14->Add( m_togBtnALC, 0, wxALL, 1 );\r
        \r
@@ -226,6 +248,8 @@ TopFrame::TopFrame( wxWindow* parent, wxWindowID id, const wxString& title, cons
        bSizer11 = new wxBoxSizer( wxVERTICAL );\r
        \r
        m_btnTogTX = new wxToggleButton( this, wxID_ANY, _("TX"), wxDefaultPosition, wxDefaultSize, 0 );\r
+       m_btnTogTX->SetToolTip( _("Switch between Receive and Transmit") );\r
+       \r
        bSizer11->Add( m_btnTogTX, 1, wxALIGN_CENTER|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL|wxALL, 1 );\r
        \r
        \r
@@ -284,6 +308,7 @@ TopFrame::TopFrame( wxWindow* parent, wxWindowID id, const wxString& title, cons
        m_sliderSQ->Connect( wxEVT_SCROLL_CHANGED, wxScrollEventHandler( TopFrame::OnCmdSliderScrollChanged ), NULL, this );\r
        m_sliderSQ->Connect( wxEVT_SCROLL_TOP, wxScrollEventHandler( TopFrame::OnSliderScrollTop ), NULL, this );\r
        m_ckboxSQ->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( TopFrame::OnCheckSQClick ), NULL, this );\r
+       m_togBtnOnOff->Connect( wxEVT_COMMAND_TOGGLEBUTTON_CLICKED, wxCommandEventHandler( TopFrame::OnTogBtnOnOff ), NULL, this );\r
        m_togBtnSplit->Connect( wxEVT_COMMAND_TOGGLEBUTTON_CLICKED, wxCommandEventHandler( TopFrame::OnTogBtnSplitClick ), NULL, this );\r
        m_togBtnAnalog->Connect( wxEVT_COMMAND_TOGGLEBUTTON_CLICKED, wxCommandEventHandler( TopFrame::OnTogBtnAnalogClick ), NULL, this );\r
        m_togBtnALC->Connect( wxEVT_COMMAND_TOGGLEBUTTON_CLICKED, wxCommandEventHandler( TopFrame::OnTogBtnALCClick ), NULL, this );\r
@@ -334,6 +359,7 @@ TopFrame::~TopFrame()
        m_sliderSQ->Disconnect( wxEVT_SCROLL_CHANGED, wxScrollEventHandler( TopFrame::OnCmdSliderScrollChanged ), NULL, this );\r
        m_sliderSQ->Disconnect( wxEVT_SCROLL_TOP, wxScrollEventHandler( TopFrame::OnSliderScrollTop ), NULL, this );\r
        m_ckboxSQ->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( TopFrame::OnCheckSQClick ), NULL, this );\r
+       m_togBtnOnOff->Disconnect( wxEVT_COMMAND_TOGGLEBUTTON_CLICKED, wxCommandEventHandler( TopFrame::OnTogBtnOnOff ), NULL, this );\r
        m_togBtnSplit->Disconnect( wxEVT_COMMAND_TOGGLEBUTTON_CLICKED, wxCommandEventHandler( TopFrame::OnTogBtnSplitClick ), NULL, this );\r
        m_togBtnAnalog->Disconnect( wxEVT_COMMAND_TOGGLEBUTTON_CLICKED, wxCommandEventHandler( TopFrame::OnTogBtnAnalogClick ), NULL, this );\r
        m_togBtnALC->Disconnect( wxEVT_COMMAND_TOGGLEBUTTON_CLICKED, wxCommandEventHandler( TopFrame::OnTogBtnALCClick ), NULL, this );\r
@@ -429,60 +455,92 @@ DlgAudio::DlgAudio( wxWindow* parent, wxWindowID id, const wxString& title, cons
        bSizer34 = new wxBoxSizer( wxVERTICAL );\r
        \r
        wxStaticBoxSizer* sbSizer10;\r
-       sbSizer10 = new wxStaticBoxSizer( new wxStaticBox( m_panelDevices, wxID_ANY, _("PortAudio") ), wxVERTICAL );\r
+       sbSizer10 = new wxStaticBoxSizer( new wxStaticBox( m_panelDevices, wxID_ANY, _("PortAudio") ), wxHORIZONTAL );\r
        \r
        wxBoxSizer* bSizer41;\r
        bSizer41 = new wxBoxSizer( wxHORIZONTAL );\r
        \r
-       wxBoxSizer* bSizer37;\r
-       bSizer37 = new wxBoxSizer( wxVERTICAL );\r
+       wxGridSizer* gSizer6;\r
+       gSizer6 = new wxGridSizer( 3, 1, 0, 0 );\r
        \r
+       gSizer6->SetMinSize( wxSize( 115,-1 ) ); \r
        m_radioBtnPortAudio = new wxRadioButton( m_panelDevices, wxID_ANY, _("PortAudio"), wxDefaultPosition, wxDefaultSize, wxRB_GROUP );\r
        m_radioBtnPortAudio->SetValue( true ); \r
-       bSizer37->Add( m_radioBtnPortAudio, 1, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL|wxALL, 5 );\r
+       gSizer6->Add( m_radioBtnPortAudio, 1, wxALIGN_CENTER_VERTICAL|wxALL, 5 );\r
+       \r
+       wxGridSizer* gSizer51;\r
+       gSizer51 = new wxGridSizer( 2, 2, 0, 0 );\r
+       \r
+       gSizer51->SetMinSize( wxSize( 110,-1 ) ); \r
+       m_staticText151 = new wxStaticText( m_panelDevices, wxID_ANY, _("# Ch Out:"), wxDefaultPosition, wxSize( 80,-1 ), wxALIGN_RIGHT );\r
+       m_staticText151->Wrap( -1 );\r
+       m_staticText151->SetFont( wxFont( 7, 70, 90, 90, false, wxEmptyString ) );\r
+       m_staticText151->SetMinSize( wxSize( 80,-1 ) );\r
+       m_staticText151->SetMaxSize( wxSize( 80,-1 ) );\r
+       \r
+       gSizer51->Add( m_staticText151, 1, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL|wxEXPAND, 5 );\r
+       \r
+       m_textNumChOut = new wxTextCtrl( m_panelDevices, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize( 30,-1 ), wxTE_READONLY );\r
+       m_textNumChOut->SetFont( wxFont( 7, 70, 90, 90, false, wxEmptyString ) );\r
+       m_textNumChOut->SetMinSize( wxSize( 30,-1 ) );\r
+       m_textNumChOut->SetMaxSize( wxSize( 30,-1 ) );\r
+       \r
+       gSizer51->Add( m_textNumChOut, 1, wxALIGN_CENTER_VERTICAL|wxALIGN_LEFT|wxALL, 5 );\r
        \r
+       m_staticText141 = new wxStaticText( m_panelDevices, wxID_ANY, _("# Ch In:"), wxDefaultPosition, wxSize( 80,-1 ), wxALIGN_RIGHT );\r
+       m_staticText141->Wrap( -1 );\r
+       m_staticText141->SetFont( wxFont( 7, 70, 90, 90, false, wxEmptyString ) );\r
+       m_staticText141->SetMinSize( wxSize( 80,-1 ) );\r
+       m_staticText141->SetMaxSize( wxSize( 90,-1 ) );\r
        \r
-       bSizer41->Add( bSizer37, 0, wxEXPAND, 5 );\r
+       gSizer51->Add( m_staticText141, 1, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL|wxEXPAND, 5 );\r
+       \r
+       m_textNumChIn = new wxTextCtrl( m_panelDevices, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize( 30,-1 ), wxTE_READONLY );\r
+       m_textNumChIn->SetFont( wxFont( 7, 70, 90, 90, false, wxEmptyString ) );\r
+       m_textNumChIn->SetMinSize( wxSize( 30,-1 ) );\r
+       m_textNumChIn->SetMaxSize( wxSize( 30,-1 ) );\r
+       \r
+       gSizer51->Add( m_textNumChIn, 0, wxALL, 4 );\r
+       \r
+       \r
+       gSizer6->Add( gSizer51, 0, wxEXPAND, 5 );\r
+       \r
+       \r
+       bSizer41->Add( gSizer6, 0, wxALL, 5 );\r
        \r
        wxGridSizer* gSizer7;\r
-       gSizer7 = new wxGridSizer( 4, 1, 0, 0 );\r
+       gSizer7 = new wxGridSizer( 4, 2, 0, 0 );\r
        \r
-       m_staticText14 = new wxStaticText( m_panelDevices, wxID_ANY, _("Audio in (mic) -> codec:"), wxDefaultPosition, wxDefaultSize, wxALIGN_RIGHT );\r
+       m_staticText14 = new wxStaticText( m_panelDevices, wxID_ANY, _("Audio in (mic) -> codec:"), wxDefaultPosition, wxDefaultSize, wxALIGN_RIGHT|wxST_NO_AUTORESIZE );\r
        m_staticText14->Wrap( -1 );\r
        gSizer7->Add( m_staticText14, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL, 5 );\r
        \r
-       m_staticText15 = new wxStaticText( m_panelDevices, wxID_ANY, _("codec -> Radio Tx: "), wxDefaultPosition, wxDefaultSize, wxALIGN_RIGHT );\r
+       m_comboAudioCodec = new wxComboBox( m_panelDevices, wxID_ANY, _("<default>"), wxDefaultPosition, wxDefaultSize, 0, NULL, 0 ); \r
+       gSizer7->Add( m_comboAudioCodec, 1, wxALL, 5 );\r
+       \r
+       m_staticText15 = new wxStaticText( m_panelDevices, wxID_ANY, _("codec -> Radio Tx:"), wxDefaultPosition, wxDefaultSize, wxALIGN_RIGHT|wxST_NO_AUTORESIZE );\r
        m_staticText15->Wrap( -1 );\r
        gSizer7->Add( m_staticText15, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL, 5 );\r
        \r
-       m_staticText16 = new wxStaticText( m_panelDevices, wxID_ANY, _("Radio Rx -> codec:"), wxDefaultPosition, wxDefaultSize, wxALIGN_RIGHT );\r
-       m_staticText16->Wrap( -1 );\r
-       gSizer7->Add( m_staticText16, 0, wxALIGN_RIGHT|wxALL, 5 );\r
+       m_comboCodecTx = new wxComboBox( m_panelDevices, wxID_ANY, _("<default>"), wxDefaultPosition, wxDefaultSize, 0, NULL, 0 ); \r
+       gSizer7->Add( m_comboCodecTx, 1, wxALL, 5 );\r
        \r
-       m_staticText17 = new wxStaticText( m_panelDevices, wxID_ANY, _("codec -> Audio out (spkr):"), wxDefaultPosition, wxDefaultSize, wxALIGN_RIGHT );\r
-       m_staticText17->Wrap( -1 );\r
-       gSizer7->Add( m_staticText17, 0, wxALIGN_RIGHT|wxALL, 5 );\r
-       \r
-       \r
-       bSizer41->Add( gSizer7, 1, wxEXPAND, 5 );\r
-       \r
-       wxGridSizer* gSizer5;\r
-       gSizer5 = new wxGridSizer( 4, 1, 0, 0 );\r
-       \r
-       m_comboBox1 = new wxComboBox( m_panelDevices, wxID_ANY, _("Combo!"), wxDefaultPosition, wxDefaultSize, 0, NULL, 0 ); \r
-       gSizer5->Add( m_comboBox1, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL|wxALL|wxEXPAND, 5 );\r
+       m_staticText16 = new wxStaticText( m_panelDevices, wxID_ANY, _("Radio Rx -> codec:"), wxDefaultPosition, wxDefaultSize, wxALIGN_RIGHT|wxST_NO_AUTORESIZE );\r
+       m_staticText16->Wrap( -1 );\r
+       gSizer7->Add( m_staticText16, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL, 5 );\r
        \r
-       m_comboBox2 = new wxComboBox( m_panelDevices, wxID_ANY, _("Combo!"), wxDefaultPosition, wxDefaultSize, 0, NULL, 0 ); \r
-       gSizer5->Add( m_comboBox2, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL|wxALL|wxEXPAND, 5 );\r
+       m_comboRadioRx = new wxComboBox( m_panelDevices, wxID_ANY, _("<default>"), wxDefaultPosition, wxDefaultSize, 0, NULL, 0 ); \r
+       gSizer7->Add( m_comboRadioRx, 1, wxALL, 5 );\r
        \r
-       m_comboBox11 = new wxComboBox( m_panelDevices, wxID_ANY, _("Combo!"), wxDefaultPosition, wxDefaultSize, 0, NULL, 0 ); \r
-       gSizer5->Add( m_comboBox11, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL|wxALL|wxEXPAND, 5 );\r
+       m_staticText17 = new wxStaticText( m_panelDevices, wxID_ANY, _("codec -> Audio out (spkr):"), wxDefaultPosition, wxDefaultSize, wxALIGN_RIGHT|wxST_NO_AUTORESIZE );\r
+       m_staticText17->Wrap( -1 );\r
+       gSizer7->Add( m_staticText17, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL, 5 );\r
        \r
-       m_comboBox12 = new wxComboBox( m_panelDevices, wxID_ANY, _("Combo!"), wxDefaultPosition, wxDefaultSize, 0, NULL, 0 ); \r
-       gSizer5->Add( m_comboBox12, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL|wxALL|wxEXPAND, 5 );\r
+       m_comboCodecSpkr = new wxComboBox( m_panelDevices, wxID_ANY, _("<default>"), wxDefaultPosition, wxDefaultSize, 0, NULL, 0 ); \r
+       gSizer7->Add( m_comboCodecSpkr, 0, wxALL, 5 );\r
        \r
        \r
-       bSizer41->Add( gSizer5, 1, wxEXPAND, 5 );\r
+       bSizer41->Add( gSizer7, 0, wxALL|wxEXPAND, 5 );\r
        \r
        \r
        sbSizer10->Add( bSizer41, 1, wxEXPAND, 5 );\r
@@ -496,7 +554,7 @@ DlgAudio::DlgAudio( wxWindow* parent, wxWindowID id, const wxString& title, cons
        wxBoxSizer* bSizer38;\r
        bSizer38 = new wxBoxSizer( wxVERTICAL );\r
        \r
-       m_radioBtnFileOnly = new wxRadioButton( m_panelDevices, wxID_ANY, _("File Only"), wxDefaultPosition, wxDefaultSize, wxRB_GROUP );\r
+       m_radioBtnFileOnly = new wxRadioButton( m_panelDevices, wxID_ANY, _("File Only"), wxDefaultPosition, wxDefaultSize, 0 );\r
        bSizer38->Add( m_radioBtnFileOnly, 1, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL|wxALL, 5 );\r
        \r
        \r
index 28e05a19a26229d7dac0d0e5585d5388f25d03ae..1c96167fe21b98ff00e7721097fc4fcc8160fc6f 100644 (file)
@@ -74,6 +74,7 @@ class TopFrame : public wxFrame
                wxToggleButton* m_togTxID;\r
                wxSlider* m_sliderSQ;\r
                wxCheckBox* m_ckboxSQ;\r
+               wxToggleButton* m_togBtnOnOff;\r
                wxToggleButton* m_togBtnSplit;\r
                wxToggleButton* m_togBtnAnalog;\r
                wxToggleButton* m_togBtnALC;\r
@@ -114,6 +115,7 @@ class TopFrame : public wxFrame
                virtual void OnCmdSliderScrollChanged( wxScrollEvent& event ) { event.Skip(); }\r
                virtual void OnSliderScrollTop( wxScrollEvent& event ) { event.Skip(); }\r
                virtual void OnCheckSQClick( wxCommandEvent& event ) { event.Skip(); }\r
+               virtual void OnTogBtnOnOff( wxCommandEvent& event ) { event.Skip(); }\r
                virtual void OnTogBtnSplitClick( wxCommandEvent& event ) { event.Skip(); }\r
                virtual void OnTogBtnAnalogClick( wxCommandEvent& event ) { event.Skip(); }\r
                virtual void OnTogBtnALCClick( wxCommandEvent& event ) { event.Skip(); }\r
@@ -123,7 +125,7 @@ class TopFrame : public wxFrame
        public:\r
                wxAuiNotebook* m_auiNbookCtrl;\r
                \r
-               TopFrame( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("FDMDV2"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 732,507 ), long style = wxDEFAULT_FRAME_STYLE|wxRESIZE_BORDER|wxTAB_TRAVERSAL );\r
+               TopFrame( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("FDMDV2"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 761,500 ), long style = wxDEFAULT_FRAME_STYLE|wxRESIZE_BORDER|wxTAB_TRAVERSAL );\r
                \r
                ~TopFrame();\r
        \r
@@ -165,14 +167,18 @@ class DlgAudio : public wxDialog
                wxNotebook* m_nbAudioOptions;\r
                wxPanel* m_panelDevices;\r
                wxRadioButton* m_radioBtnPortAudio;\r
+               wxStaticText* m_staticText151;\r
+               wxTextCtrl* m_textNumChOut;\r
+               wxStaticText* m_staticText141;\r
+               wxTextCtrl* m_textNumChIn;\r
                wxStaticText* m_staticText14;\r
+               wxComboBox* m_comboAudioCodec;\r
                wxStaticText* m_staticText15;\r
+               wxComboBox* m_comboCodecTx;\r
                wxStaticText* m_staticText16;\r
+               wxComboBox* m_comboRadioRx;\r
                wxStaticText* m_staticText17;\r
-               wxComboBox* m_comboBox1;\r
-               wxComboBox* m_comboBox2;\r
-               wxComboBox* m_comboBox11;\r
-               wxComboBox* m_comboBox12;\r
+               wxComboBox* m_comboCodecSpkr;\r
                wxRadioButton* m_radioBtnFileOnly;\r
                wxPanel* m_panelSettings;\r
                wxListBox* m_lbRxInput;\r
@@ -203,7 +209,7 @@ class DlgAudio : public wxDialog
        \r
        public:\r
                \r
-               DlgAudio( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("Audio Options"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 553,381 ), long style = wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER ); \r
+               DlgAudio( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("Audio Options"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 555,419 ), long style = wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER ); \r
                ~DlgAudio();\r
        \r
 };\r
index 658ef40d0cd4df2ffd6b049d391c9f6ffc21a2ab..854c6421b407dce2324ebe073677ce3a822d3894 100644 (file)
@@ -31,7 +31,7 @@ ID_ABOUT = 1008
 class TopFrame ( wx.Frame ):\r
        \r
        def __init__( self, parent ):\r
-               wx.Frame.__init__ ( self, parent, id = wx.ID_ANY, title = _(u"FDMDV2"), pos = wx.DefaultPosition, size = wx.Size( 732,507 ), style = wx.DEFAULT_FRAME_STYLE|wx.RESIZE_BORDER|wx.TAB_TRAVERSAL )\r
+               wx.Frame.__init__ ( self, parent, id = wx.ID_ANY, title = _(u"FDMDV2"), pos = wx.DefaultPosition, size = wx.Size( 761,500 ), style = wx.DEFAULT_FRAME_STYLE|wx.RESIZE_BORDER|wx.TAB_TRAVERSAL )\r
                \r
                self.SetSizeHintsSz( wx.DefaultSize, wx.DefaultSize )\r
                self.SetForegroundColour( wx.SystemSettings.GetColour( wx.SYS_COLOUR_WINDOWTEXT ) )\r
@@ -101,11 +101,14 @@ class TopFrame ( wx.Frame ):
                snrSizer = wx.StaticBoxSizer( wx.StaticBox( self, wx.ID_ANY, _(u"SNR") ), wx.VERTICAL )\r
                \r
                self.m_gaugeSNR = wx.Gauge( self, wx.ID_ANY, 100, wx.DefaultPosition, wx.Size( 15,135 ), wx.GA_SMOOTH|wx.GA_VERTICAL )\r
+               self.m_gaugeSNR.SetToolTipString( _(u"Display signal to noise ratio.") )\r
+               \r
                snrSizer.Add( self.m_gaugeSNR, 1, wx.ALIGN_CENTER_HORIZONTAL|wx.ALL, 10 )\r
                \r
                bSizer29 = wx.BoxSizer( wx.VERTICAL )\r
                \r
                self.m_textSNR = wx.TextCtrl( self, wx.ID_ANY, wx.EmptyString, wx.Point( -1,-1 ), wx.Size( 35,25 ), wx.TE_READONLY )\r
+               self.m_textSNR.SetToolTipString( _(u"Show S/N ratio numerically.") )\r
                self.m_textSNR.SetMinSize( wx.Size( 35,25 ) )\r
                \r
                bSizer29.Add( self.m_textSNR, 0, wx.ALIGN_CENTER|wx.ALL, 1 )\r
@@ -119,6 +122,8 @@ class TopFrame ( wx.Frame ):
                levelSizer = wx.StaticBoxSizer( wx.StaticBox( self, wx.ID_ANY, _(u"Level") ), wx.VERTICAL )\r
                \r
                self.m_gaugeLevel = wx.Gauge( self, wx.ID_ANY, 100, wx.DefaultPosition, wx.Size( 15,135 ), wx.GA_SMOOTH|wx.GA_VERTICAL )\r
+               self.m_gaugeLevel.SetToolTipString( _(u"Display signal level.") )\r
+               \r
                levelSizer.Add( self.m_gaugeLevel, 1, wx.ALIGN_CENTER_HORIZONTAL|wx.ALL, 10 )\r
                \r
                \r
@@ -132,6 +137,8 @@ class TopFrame ( wx.Frame ):
                upperSizer = wx.BoxSizer( wx.VERTICAL )\r
                \r
                self.m_auiNbookCtrl = wx.aui.AuiNotebook( self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.aui.AUI_NB_BOTTOM|wx.aui.AUI_NB_DEFAULT_STYLE )\r
+               self.m_auiNbookCtrl.SetFont( wx.Font( 6, 70, 90, 90, False, wx.EmptyString ) )\r
+               \r
                \r
                upperSizer.Add( self.m_auiNbookCtrl, 1, wx.ALIGN_TOP|wx.EXPAND, 1 )\r
                \r
@@ -170,25 +177,39 @@ class TopFrame ( wx.Frame ):
                sbSizer3 = wx.StaticBoxSizer( wx.StaticBox( self, wx.ID_ANY, _(u"SQ") ), wx.VERTICAL )\r
                \r
                self.m_sliderSQ = wx.Slider( self, wx.ID_ANY, 50, 0, 100, wx.DefaultPosition, wx.Size( -1,100 ), wx.SL_AUTOTICKS|wx.SL_INVERSE|wx.SL_VERTICAL )\r
+               self.m_sliderSQ.SetToolTipString( _(u"Set Squelch level.") )\r
+               \r
                sbSizer3.Add( self.m_sliderSQ, 2, wx.ALIGN_CENTER|wx.ALL, 1 )\r
                \r
                bSizer131 = wx.BoxSizer( wx.VERTICAL )\r
                \r
                self.m_ckboxSQ = wx.CheckBox( self, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, wx.CHK_2STATE )\r
+               self.m_ckboxSQ.SetToolTipString( _(u"Activate/Deactivate Squelch") )\r
+               \r
                bSizer131.Add( self.m_ckboxSQ, 0, wx.ALIGN_CENTER|wx.ALL, 5 )\r
                \r
                \r
                sbSizer3.Add( bSizer131, 0, wx.ALIGN_CENTER, 5 )\r
                \r
                \r
-               rightSizer.Add( sbSizer3, 3, wx.ALIGN_CENTER_HORIZONTAL|wx.ALL|wx.EXPAND, 3 )\r
+               rightSizer.Add( sbSizer3, 2, wx.ALIGN_CENTER_HORIZONTAL|wx.ALL|wx.EXPAND, 3 )\r
                \r
                sbSizer5 = wx.StaticBoxSizer( wx.StaticBox( self, wx.ID_ANY, _(u"Control") ), wx.VERTICAL )\r
                \r
+               bSizer1511 = wx.BoxSizer( wx.VERTICAL )\r
+               \r
+               self.m_togBtnOnOff = wx.ToggleButton( self, wx.ID_ANY, _(u"Start"), wx.DefaultPosition, wx.DefaultSize, 0 )\r
+               self.m_togBtnOnOff.SetToolTipString( _(u"Begin receiving data.") )\r
+               \r
+               bSizer1511.Add( self.m_togBtnOnOff, 0, wx.ALIGN_CENTER_HORIZONTAL|wx.ALIGN_CENTER_VERTICAL|wx.ALL, 1 )\r
+               \r
+               \r
+               sbSizer5.Add( bSizer1511, 0, wx.EXPAND, 1 )\r
+               \r
                bSizer151 = wx.BoxSizer( wx.VERTICAL )\r
                \r
                self.m_togBtnSplit = wx.ToggleButton( self, wx.ID_ANY, _(u"Split"), wx.DefaultPosition, wx.DefaultSize, 0 )\r
-               self.m_togBtnSplit.SetToolTipString( _(u"Toggle Split mode.") )\r
+               self.m_togBtnSplit.SetToolTipString( _(u"Toggle split frequency mode.") )\r
                \r
                bSizer151.Add( self.m_togBtnSplit, 0, wx.ALIGN_CENTER_HORIZONTAL|wx.ALIGN_CENTER_VERTICAL|wx.ALL, 1 )\r
                \r
@@ -208,7 +229,7 @@ class TopFrame ( wx.Frame ):
                bSizer14 = wx.BoxSizer( wx.VERTICAL )\r
                \r
                self.m_togBtnALC = wx.ToggleButton( self, wx.ID_ANY, _(u"ALC"), wx.DefaultPosition, wx.DefaultSize, 0 )\r
-               self.m_togBtnALC.SetToolTipString( _(u"Toggle ALC Mode.") )\r
+               self.m_togBtnALC.SetToolTipString( _(u"Toggle automatic level control mode.") )\r
                \r
                bSizer14.Add( self.m_togBtnALC, 0, wx.ALL, 1 )\r
                \r
@@ -218,6 +239,8 @@ class TopFrame ( wx.Frame ):
                bSizer11 = wx.BoxSizer( wx.VERTICAL )\r
                \r
                self.m_btnTogTX = wx.ToggleButton( self, wx.ID_ANY, _(u"TX"), wx.DefaultPosition, wx.DefaultSize, 0 )\r
+               self.m_btnTogTX.SetToolTipString( _(u"Switch between Receive and Transmit") )\r
+               \r
                bSizer11.Add( self.m_btnTogTX, 1, wx.ALIGN_CENTER|wx.ALIGN_CENTER_HORIZONTAL|wx.ALIGN_CENTER_VERTICAL|wx.ALL, 1 )\r
                \r
                \r
@@ -268,6 +291,7 @@ class TopFrame ( wx.Frame ):
                self.m_sliderSQ.Bind( wx.EVT_SCROLL_CHANGED, self.OnCmdSliderScrollChanged )\r
                self.m_sliderSQ.Bind( wx.EVT_SCROLL_TOP, self.OnSliderScrollTop )\r
                self.m_ckboxSQ.Bind( wx.EVT_CHECKBOX, self.OnCheckSQClick )\r
+               self.m_togBtnOnOff.Bind( wx.EVT_TOGGLEBUTTON, self.OnTogBtnOnOff )\r
                self.m_togBtnSplit.Bind( wx.EVT_TOGGLEBUTTON, self.OnTogBtnSplitClick )\r
                self.m_togBtnAnalog.Bind( wx.EVT_TOGGLEBUTTON, self.OnTogBtnAnalogClick )\r
                self.m_togBtnALC.Bind( wx.EVT_TOGGLEBUTTON, self.OnTogBtnALCClick )\r
@@ -377,6 +401,9 @@ class TopFrame ( wx.Frame ):
        def OnCheckSQClick( self, event ):\r
                event.Skip()\r
        \r
+       def OnTogBtnOnOff( self, event ):\r
+               event.Skip()\r
+       \r
        def OnTogBtnSplitClick( self, event ):\r
                event.Skip()\r
        \r
@@ -475,7 +502,7 @@ class DlgAbout ( wx.Dialog ):
 class DlgAudio ( wx.Dialog ):\r
        \r
        def __init__( self, parent ):\r
-               wx.Dialog.__init__ ( self, parent, id = wx.ID_ANY, title = _(u"Audio Options"), pos = wx.DefaultPosition, size = wx.Size( 553,381 ), style = wx.DEFAULT_DIALOG_STYLE|wx.RESIZE_BORDER )\r
+               wx.Dialog.__init__ ( self, parent, id = wx.ID_ANY, title = _(u"Audio Options"), pos = wx.DefaultPosition, size = wx.Size( 555,419 ), style = wx.DEFAULT_DIALOG_STYLE|wx.RESIZE_BORDER )\r
                \r
                self.SetSizeHintsSz( wx.DefaultSize, wx.DefaultSize )\r
                \r
@@ -485,60 +512,92 @@ class DlgAudio ( wx.Dialog ):
                self.m_panelDevices = wx.Panel( self.m_nbAudioOptions, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TAB_TRAVERSAL )\r
                bSizer34 = wx.BoxSizer( wx.VERTICAL )\r
                \r
-               sbSizer10 = wx.StaticBoxSizer( wx.StaticBox( self.m_panelDevices, wx.ID_ANY, _(u"PortAudio") ), wx.VERTICAL )\r
+               sbSizer10 = wx.StaticBoxSizer( wx.StaticBox( self.m_panelDevices, wx.ID_ANY, _(u"PortAudio") ), wx.HORIZONTAL )\r
                \r
                bSizer41 = wx.BoxSizer( wx.HORIZONTAL )\r
                \r
-               bSizer37 = wx.BoxSizer( wx.VERTICAL )\r
+               gSizer6 = wx.GridSizer( 3, 1, 0, 0 )\r
                \r
+               gSizer6.SetMinSize( wx.Size( 115,-1 ) ) \r
                self.m_radioBtnPortAudio = wx.RadioButton( self.m_panelDevices, wx.ID_ANY, _(u"PortAudio"), wx.DefaultPosition, wx.DefaultSize, wx.RB_GROUP )\r
                self.m_radioBtnPortAudio.SetValue( True ) \r
-               bSizer37.Add( self.m_radioBtnPortAudio, 1, wx.ALIGN_CENTER_HORIZONTAL|wx.ALIGN_CENTER_VERTICAL|wx.ALL, 5 )\r
+               gSizer6.Add( self.m_radioBtnPortAudio, 1, wx.ALIGN_CENTER_VERTICAL|wx.ALL, 5 )\r
                \r
+               gSizer51 = wx.GridSizer( 2, 2, 0, 0 )\r
                \r
-               bSizer41.Add( bSizer37, 0, wx.EXPAND, 5 )\r
+               gSizer51.SetMinSize( wx.Size( 110,-1 ) ) \r
+               self.m_staticText151 = wx.StaticText( self.m_panelDevices, wx.ID_ANY, _(u"# Ch Out:"), wx.DefaultPosition, wx.Size( 80,-1 ), wx.ALIGN_RIGHT )\r
+               self.m_staticText151.Wrap( -1 )\r
+               self.m_staticText151.SetFont( wx.Font( 7, 70, 90, 90, False, wx.EmptyString ) )\r
+               self.m_staticText151.SetMinSize( wx.Size( 80,-1 ) )\r
+               self.m_staticText151.SetMaxSize( wx.Size( 80,-1 ) )\r
                \r
-               gSizer7 = wx.GridSizer( 4, 1, 0, 0 )\r
+               gSizer51.Add( self.m_staticText151, 1, wx.ALIGN_CENTER_VERTICAL|wx.ALIGN_RIGHT|wx.ALL|wx.EXPAND, 5 )\r
                \r
-               self.m_staticText14 = wx.StaticText( self.m_panelDevices, wx.ID_ANY, _(u"Audio in (mic) -> codec:"), wx.DefaultPosition, wx.DefaultSize, wx.ALIGN_RIGHT )\r
-               self.m_staticText14.Wrap( -1 )\r
-               gSizer7.Add( self.m_staticText14, 0, wx.ALIGN_CENTER_VERTICAL|wx.ALIGN_RIGHT|wx.ALL, 5 )\r
+               self.m_textNumChOut = wx.TextCtrl( self.m_panelDevices, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.Size( 30,-1 ), wx.TE_READONLY )\r
+               self.m_textNumChOut.SetFont( wx.Font( 7, 70, 90, 90, False, wx.EmptyString ) )\r
+               self.m_textNumChOut.SetMinSize( wx.Size( 30,-1 ) )\r
+               self.m_textNumChOut.SetMaxSize( wx.Size( 30,-1 ) )\r
                \r
-               self.m_staticText15 = wx.StaticText( self.m_panelDevices, wx.ID_ANY, _(u"codec -> Radio Tx: "), wx.DefaultPosition, wx.DefaultSize, wx.ALIGN_RIGHT )\r
-               self.m_staticText15.Wrap( -1 )\r
-               gSizer7.Add( self.m_staticText15, 0, wx.ALIGN_CENTER_VERTICAL|wx.ALIGN_RIGHT|wx.ALL, 5 )\r
+               gSizer51.Add( self.m_textNumChOut, 1, wx.ALIGN_CENTER_VERTICAL|wx.ALIGN_LEFT|wx.ALL, 5 )\r
                \r
-               self.m_staticText16 = wx.StaticText( self.m_panelDevices, wx.ID_ANY, _(u"Radio Rx -> codec:"), wx.DefaultPosition, wx.DefaultSize, wx.ALIGN_RIGHT )\r
-               self.m_staticText16.Wrap( -1 )\r
-               gSizer7.Add( self.m_staticText16, 0, wx.ALIGN_RIGHT|wx.ALL, 5 )\r
+               self.m_staticText141 = wx.StaticText( self.m_panelDevices, wx.ID_ANY, _(u"# Ch In:"), wx.DefaultPosition, wx.Size( 80,-1 ), wx.ALIGN_RIGHT )\r
+               self.m_staticText141.Wrap( -1 )\r
+               self.m_staticText141.SetFont( wx.Font( 7, 70, 90, 90, False, wx.EmptyString ) )\r
+               self.m_staticText141.SetMinSize( wx.Size( 80,-1 ) )\r
+               self.m_staticText141.SetMaxSize( wx.Size( 90,-1 ) )\r
                \r
-               self.m_staticText17 = wx.StaticText( self.m_panelDevices, wx.ID_ANY, _(u"codec -> Audio out (spkr):"), wx.DefaultPosition, wx.DefaultSize, wx.ALIGN_RIGHT )\r
-               self.m_staticText17.Wrap( -1 )\r
-               gSizer7.Add( self.m_staticText17, 0, wx.ALIGN_RIGHT|wx.ALL, 5 )\r
+               gSizer51.Add( self.m_staticText141, 1, wx.ALIGN_CENTER_VERTICAL|wx.ALIGN_RIGHT|wx.ALL|wx.EXPAND, 5 )\r
+               \r
+               self.m_textNumChIn = wx.TextCtrl( self.m_panelDevices, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.Size( 30,-1 ), wx.TE_READONLY )\r
+               self.m_textNumChIn.SetFont( wx.Font( 7, 70, 90, 90, False, wx.EmptyString ) )\r
+               self.m_textNumChIn.SetMinSize( wx.Size( 30,-1 ) )\r
+               self.m_textNumChIn.SetMaxSize( wx.Size( 30,-1 ) )\r
+               \r
+               gSizer51.Add( self.m_textNumChIn, 0, wx.ALL, 4 )\r
+               \r
+               \r
+               gSizer6.Add( gSizer51, 0, wx.EXPAND, 5 )\r
+               \r
+               \r
+               bSizer41.Add( gSizer6, 0, wx.ALL, 5 )\r
                \r
+               gSizer7 = wx.GridSizer( 4, 2, 0, 0 )\r
                \r
-               bSizer41.Add( gSizer7, 1, wx.EXPAND, 5 )\r
+               self.m_staticText14 = wx.StaticText( self.m_panelDevices, wx.ID_ANY, _(u"Audio in (mic) -> codec:"), wx.DefaultPosition, wx.DefaultSize, wx.ALIGN_RIGHT|wx.ST_NO_AUTORESIZE )\r
+               self.m_staticText14.Wrap( -1 )\r
+               gSizer7.Add( self.m_staticText14, 0, wx.ALIGN_CENTER_VERTICAL|wx.ALIGN_RIGHT|wx.ALL, 5 )\r
+               \r
+               m_comboAudioCodecChoices = []\r
+               self.m_comboAudioCodec = wx.ComboBox( self.m_panelDevices, wx.ID_ANY, _(u"<default>"), wx.DefaultPosition, wx.DefaultSize, m_comboAudioCodecChoices, 0 )\r
+               gSizer7.Add( self.m_comboAudioCodec, 1, wx.ALL, 5 )\r
+               \r
+               self.m_staticText15 = wx.StaticText( self.m_panelDevices, wx.ID_ANY, _(u"codec -> Radio Tx:"), wx.DefaultPosition, wx.DefaultSize, wx.ALIGN_RIGHT|wx.ST_NO_AUTORESIZE )\r
+               self.m_staticText15.Wrap( -1 )\r
+               gSizer7.Add( self.m_staticText15, 0, wx.ALIGN_CENTER_VERTICAL|wx.ALIGN_RIGHT|wx.ALL, 5 )\r
                \r
-               gSizer5 = wx.GridSizer( 4, 1, 0, 0 )\r
+               m_comboCodecTxChoices = []\r
+               self.m_comboCodecTx = wx.ComboBox( self.m_panelDevices, wx.ID_ANY, _(u"<default>"), wx.DefaultPosition, wx.DefaultSize, m_comboCodecTxChoices, 0 )\r
+               gSizer7.Add( self.m_comboCodecTx, 1, wx.ALL, 5 )\r
                \r
-               m_comboBox1Choices = []\r
-               self.m_comboBox1 = wx.ComboBox( self.m_panelDevices, wx.ID_ANY, _(u"Combo!"), wx.DefaultPosition, wx.DefaultSize, m_comboBox1Choices, 0 )\r
-               gSizer5.Add( self.m_comboBox1, 0, wx.ALIGN_CENTER_HORIZONTAL|wx.ALIGN_CENTER_VERTICAL|wx.ALL|wx.EXPAND, 5 )\r
+               self.m_staticText16 = wx.StaticText( self.m_panelDevices, wx.ID_ANY, _(u"Radio Rx -> codec:"), wx.DefaultPosition, wx.DefaultSize, wx.ALIGN_RIGHT|wx.ST_NO_AUTORESIZE )\r
+               self.m_staticText16.Wrap( -1 )\r
+               gSizer7.Add( self.m_staticText16, 0, wx.ALIGN_CENTER_VERTICAL|wx.ALIGN_RIGHT|wx.ALL, 5 )\r
                \r
-               m_comboBox2Choices = []\r
-               self.m_comboBox2 = wx.ComboBox( self.m_panelDevices, wx.ID_ANY, _(u"Combo!"), wx.DefaultPosition, wx.DefaultSize, m_comboBox2Choices, 0 )\r
-               gSizer5.Add( self.m_comboBox2, 0, wx.ALIGN_CENTER_HORIZONTAL|wx.ALIGN_CENTER_VERTICAL|wx.ALL|wx.EXPAND, 5 )\r
+               m_comboRadioRxChoices = []\r
+               self.m_comboRadioRx = wx.ComboBox( self.m_panelDevices, wx.ID_ANY, _(u"<default>"), wx.DefaultPosition, wx.DefaultSize, m_comboRadioRxChoices, 0 )\r
+               gSizer7.Add( self.m_comboRadioRx, 1, wx.ALL, 5 )\r
                \r
-               m_comboBox11Choices = []\r
-               self.m_comboBox11 = wx.ComboBox( self.m_panelDevices, wx.ID_ANY, _(u"Combo!"), wx.DefaultPosition, wx.DefaultSize, m_comboBox11Choices, 0 )\r
-               gSizer5.Add( self.m_comboBox11, 0, wx.ALIGN_CENTER_HORIZONTAL|wx.ALIGN_CENTER_VERTICAL|wx.ALL|wx.EXPAND, 5 )\r
+               self.m_staticText17 = wx.StaticText( self.m_panelDevices, wx.ID_ANY, _(u"codec -> Audio out (spkr):"), wx.DefaultPosition, wx.DefaultSize, wx.ALIGN_RIGHT|wx.ST_NO_AUTORESIZE )\r
+               self.m_staticText17.Wrap( -1 )\r
+               gSizer7.Add( self.m_staticText17, 0, wx.ALIGN_CENTER_VERTICAL|wx.ALIGN_RIGHT|wx.ALL, 5 )\r
                \r
-               m_comboBox12Choices = []\r
-               self.m_comboBox12 = wx.ComboBox( self.m_panelDevices, wx.ID_ANY, _(u"Combo!"), wx.DefaultPosition, wx.DefaultSize, m_comboBox12Choices, 0 )\r
-               gSizer5.Add( self.m_comboBox12, 0, wx.ALIGN_CENTER_HORIZONTAL|wx.ALIGN_CENTER_VERTICAL|wx.ALL|wx.EXPAND, 5 )\r
+               m_comboCodecSpkrChoices = []\r
+               self.m_comboCodecSpkr = wx.ComboBox( self.m_panelDevices, wx.ID_ANY, _(u"<default>"), wx.DefaultPosition, wx.DefaultSize, m_comboCodecSpkrChoices, 0 )\r
+               gSizer7.Add( self.m_comboCodecSpkr, 0, wx.ALL, 5 )\r
                \r
                \r
-               bSizer41.Add( gSizer5, 1, wx.EXPAND, 5 )\r
+               bSizer41.Add( gSizer7, 0, wx.ALL|wx.EXPAND, 5 )\r
                \r
                \r
                sbSizer10.Add( bSizer41, 1, wx.EXPAND, 5 )\r
@@ -550,7 +609,7 @@ class DlgAudio ( wx.Dialog ):
                \r
                bSizer38 = wx.BoxSizer( wx.VERTICAL )\r
                \r
-               self.m_radioBtnFileOnly = wx.RadioButton( self.m_panelDevices, wx.ID_ANY, _(u"File Only"), wx.DefaultPosition, wx.DefaultSize, wx.RB_GROUP )\r
+               self.m_radioBtnFileOnly = wx.RadioButton( self.m_panelDevices, wx.ID_ANY, _(u"File Only"), wx.DefaultPosition, wx.DefaultSize, 0 )\r
                bSizer38.Add( self.m_radioBtnFileOnly, 1, wx.ALIGN_CENTER_HORIZONTAL|wx.ALIGN_CENTER_VERTICAL|wx.ALL, 5 )\r
                \r
                \r
index 5702aa2a77ba9baacf9b9d9a91af653ab8154cd7..f0bb74c012f6fc76b750b63cfbeb6964eb2e5d99 100644 (file)
@@ -2,7 +2,7 @@
 <resource xmlns="http://www.wxwindows.org/wxxrc" version="2.3.0.1">\r
        <object class="wxFrame" name="TopFrame">\r
                <style>wxDEFAULT_FRAME_STYLE|wxRESIZE_BORDER|wxTAB_TRAVERSAL</style>\r
-               <size>732,507</size>\r
+               <size>761,500</size>\r
                <bg>#e3e3e3</bg>\r
                <fg>#000000</fg>\r
                <title>FDMDV2</title>\r
@@ -97,6 +97,7 @@
                                                                <object class="wxGauge" name="m_gaugeSNR">\r
                                                                        <style>wxGA_SMOOTH|wxGA_VERTICAL</style>\r
                                                                        <size>15,135</size>\r
+                                                                       <tooltip>Display signal to noise ratio.</tooltip>\r
                                                                        <range>100</range>\r
                                                                        <value>0</value>\r
                                                                </object>\r
                                                                                        <style>wxTE_READONLY</style>\r
                                                                                        <pos>-1,-1</pos>\r
                                                                                        <size>35,25</size>\r
+                                                                                       <tooltip>Show S/N ratio numerically.</tooltip>\r
                                                                                        <value></value>\r
                                                                                        <maxlength>0</maxlength>\r
                                                                                </object>\r
                                                                <object class="wxGauge" name="m_gaugeLevel">\r
                                                                        <style>wxGA_SMOOTH|wxGA_VERTICAL</style>\r
                                                                        <size>15,135</size>\r
+                                                                       <tooltip>Display signal level.</tooltip>\r
                                                                        <range>100</range>\r
                                                                        <value>0</value>\r
                                                                </object>\r
                                <object class="wxBoxSizer">\r
                                        <orient>wxVERTICAL</orient>\r
                                        <object class="sizeritem">\r
-                                               <option>3</option>\r
+                                               <option>2</option>\r
                                                <flag>wxALIGN_CENTER_HORIZONTAL|wxALL|wxEXPAND</flag>\r
                                                <border>3</border>\r
                                                <object class="wxStaticBoxSizer">\r
                                                                <object class="wxSlider" name="m_sliderSQ">\r
                                                                        <style>wxSL_AUTOTICKS|wxSL_INVERSE|wxSL_VERTICAL</style>\r
                                                                        <size>-1,100</size>\r
+                                                                       <tooltip>Set Squelch level.</tooltip>\r
                                                                        <value>50</value>\r
                                                                        <min>0</min>\r
                                                                        <max>100</max>\r
                                                                                <border>5</border>\r
                                                                                <object class="wxCheckBox" name="m_ckboxSQ">\r
                                                                                        <style>wxCHK_2STATE</style>\r
+                                                                                       <tooltip>Activate/Deactivate Squelch</tooltip>\r
                                                                                        <label></label>\r
                                                                                        <checked>0</checked>\r
                                                                                </object>\r
                                                <object class="wxStaticBoxSizer">\r
                                                        <orient>wxVERTICAL</orient>\r
                                                        <label>Control</label>\r
+                                                       <object class="sizeritem">\r
+                                                               <option>0</option>\r
+                                                               <flag>wxEXPAND</flag>\r
+                                                               <border>1</border>\r
+                                                               <object class="wxBoxSizer">\r
+                                                                       <orient>wxVERTICAL</orient>\r
+                                                                       <object class="sizeritem">\r
+                                                                               <option>0</option>\r
+                                                                               <flag>wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL|wxALL</flag>\r
+                                                                               <border>1</border>\r
+                                                                               <object class="wxToggleButton" name="m_togBtnOnOff">\r
+                                                                                       <tooltip>Begin receiving data.</tooltip>\r
+                                                                                       <label>Start</label>\r
+                                                                                       <checked>0</checked>\r
+                                                                               </object>\r
+                                                                       </object>\r
+                                                               </object>\r
+                                                       </object>\r
                                                        <object class="sizeritem">\r
                                                                <option>0</option>\r
                                                                <flag>wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL|wxALL|wxEXPAND</flag>\r
                                                                                <flag>wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL|wxALL</flag>\r
                                                                                <border>1</border>\r
                                                                                <object class="wxToggleButton" name="m_togBtnSplit">\r
-                                                                                       <tooltip>Toggle Split mode.</tooltip>\r
+                                                                                       <tooltip>Toggle split frequency mode.</tooltip>\r
                                                                                        <label>Split</label>\r
                                                                                        <checked>0</checked>\r
                                                                                </object>\r
                                                                                <flag>wxALL</flag>\r
                                                                                <border>1</border>\r
                                                                                <object class="wxToggleButton" name="m_togBtnALC">\r
-                                                                                       <tooltip>Toggle ALC Mode.</tooltip>\r
+                                                                                       <tooltip>Toggle automatic level control mode.</tooltip>\r
                                                                                        <label>ALC</label>\r
                                                                                        <checked>0</checked>\r
                                                                                </object>\r
                                                                                <flag>wxALIGN_CENTER|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL|wxALL</flag>\r
                                                                                <border>1</border>\r
                                                                                <object class="wxToggleButton" name="m_btnTogTX">\r
+                                                                                       <tooltip>Switch between Receive and Transmit</tooltip>\r
                                                                                        <label>TX</label>\r
                                                                                        <checked>0</checked>\r
                                                                                </object>\r
        </object>\r
        <object class="wxDialog" name="DlgAudio">\r
                <style>wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER</style>\r
-               <size>553,381</size>\r
+               <size>555,419</size>\r
                <title>Audio Options</title>\r
                <centered>1</centered>\r
                <object class="wxBoxSizer">\r
                                                                        <flag>wxEXPAND</flag>\r
                                                                        <border>5</border>\r
                                                                        <object class="wxStaticBoxSizer">\r
-                                                                               <orient>wxVERTICAL</orient>\r
+                                                                               <orient>wxHORIZONTAL</orient>\r
                                                                                <label>PortAudio</label>\r
                                                                                <object class="sizeritem">\r
                                                                                        <option>1</option>\r
                                                                                                <orient>wxHORIZONTAL</orient>\r
                                                                                                <object class="sizeritem">\r
                                                                                                        <option>0</option>\r
-                                                                                                       <flag>wxEXPAND</flag>\r
+                                                                                                       <flag>wxALL</flag>\r
                                                                                                        <border>5</border>\r
-                                                                                                       <object class="wxBoxSizer">\r
-                                                                                                               <orient>wxVERTICAL</orient>\r
+                                                                                                       <object class="wxGridSizer">\r
+                                                                                                               <minsize>115,-1</minsize>\r
+                                                                                                               <rows>3</rows>\r
+                                                                                                               <cols>1</cols>\r
+                                                                                                               <vgap>0</vgap>\r
+                                                                                                               <hgap>0</hgap>\r
                                                                                                                <object class="sizeritem">\r
                                                                                                                        <option>1</option>\r
-                                                                                                                       <flag>wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL|wxALL</flag>\r
+                                                                                                                       <flag>wxALIGN_CENTER_VERTICAL|wxALL</flag>\r
                                                                                                                        <border>5</border>\r
                                                                                                                        <object class="wxRadioButton" name="m_radioBtnPortAudio">\r
                                                                                                                                <style>wxRB_GROUP</style>\r
                                                                                                                                <value>1</value>\r
                                                                                                                        </object>\r
                                                                                                                </object>\r
+                                                                                                               <object class="sizeritem">\r
+                                                                                                                       <option>0</option>\r
+                                                                                                                       <flag>wxEXPAND</flag>\r
+                                                                                                                       <border>5</border>\r
+                                                                                                                       <object class="wxGridSizer">\r
+                                                                                                                               <minsize>110,-1</minsize>\r
+                                                                                                                               <rows>2</rows>\r
+                                                                                                                               <cols>2</cols>\r
+                                                                                                                               <vgap>0</vgap>\r
+                                                                                                                               <hgap>0</hgap>\r
+                                                                                                                               <object class="sizeritem">\r
+                                                                                                                                       <option>1</option>\r
+                                                                                                                                       <flag>wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL|wxEXPAND</flag>\r
+                                                                                                                                       <border>5</border>\r
+                                                                                                                                       <object class="wxStaticText" name="m_staticText151">\r
+                                                                                                                                               <style>wxALIGN_RIGHT</style>\r
+                                                                                                                                               <size>80,-1</size>\r
+                                                                                                                                               <font>\r
+                                                                                                                                                       <size>7</size>\r
+                                                                                                                                                       <family>default</family>\r
+                                                                                                                                                       <style>normal</style>\r
+                                                                                                                                                       <weight>normal</weight>\r
+                                                                                                                                                       <underlined>0</underlined>\r
+                                                                                                                                               </font>\r
+                                                                                                                                               <label># Ch Out:</label>\r
+                                                                                                                                               <wrap>-1</wrap>\r
+                                                                                                                                       </object>\r
+                                                                                                                               </object>\r
+                                                                                                                               <object class="sizeritem">\r
+                                                                                                                                       <option>1</option>\r
+                                                                                                                                       <flag>wxALIGN_CENTER_VERTICAL|wxALIGN_LEFT|wxALL</flag>\r
+                                                                                                                                       <border>5</border>\r
+                                                                                                                                       <object class="wxTextCtrl" name="m_textNumChOut">\r
+                                                                                                                                               <style>wxTE_READONLY</style>\r
+                                                                                                                                               <size>30,-1</size>\r
+                                                                                                                                               <font>\r
+                                                                                                                                                       <size>7</size>\r
+                                                                                                                                                       <family>default</family>\r
+                                                                                                                                                       <style>normal</style>\r
+                                                                                                                                                       <weight>normal</weight>\r
+                                                                                                                                                       <underlined>0</underlined>\r
+                                                                                                                                               </font>\r
+                                                                                                                                               <value></value>\r
+                                                                                                                                               <maxlength>0</maxlength>\r
+                                                                                                                                       </object>\r
+                                                                                                                               </object>\r
+                                                                                                                               <object class="sizeritem">\r
+                                                                                                                                       <option>1</option>\r
+                                                                                                                                       <flag>wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL|wxEXPAND</flag>\r
+                                                                                                                                       <border>5</border>\r
+                                                                                                                                       <object class="wxStaticText" name="m_staticText141">\r
+                                                                                                                                               <style>wxALIGN_RIGHT</style>\r
+                                                                                                                                               <size>80,-1</size>\r
+                                                                                                                                               <font>\r
+                                                                                                                                                       <size>7</size>\r
+                                                                                                                                                       <family>default</family>\r
+                                                                                                                                                       <style>normal</style>\r
+                                                                                                                                                       <weight>normal</weight>\r
+                                                                                                                                                       <underlined>0</underlined>\r
+                                                                                                                                               </font>\r
+                                                                                                                                               <label># Ch In:</label>\r
+                                                                                                                                               <wrap>-1</wrap>\r
+                                                                                                                                       </object>\r
+                                                                                                                               </object>\r
+                                                                                                                               <object class="sizeritem">\r
+                                                                                                                                       <option>0</option>\r
+                                                                                                                                       <flag>wxALL</flag>\r
+                                                                                                                                       <border>4</border>\r
+                                                                                                                                       <object class="wxTextCtrl" name="m_textNumChIn">\r
+                                                                                                                                               <style>wxTE_READONLY</style>\r
+                                                                                                                                               <size>30,-1</size>\r
+                                                                                                                                               <font>\r
+                                                                                                                                                       <size>7</size>\r
+                                                                                                                                                       <family>default</family>\r
+                                                                                                                                                       <style>normal</style>\r
+                                                                                                                                                       <weight>normal</weight>\r
+                                                                                                                                                       <underlined>0</underlined>\r
+                                                                                                                                               </font>\r
+                                                                                                                                               <value></value>\r
+                                                                                                                                               <maxlength>0</maxlength>\r
+                                                                                                                                       </object>\r
+                                                                                                                               </object>\r
+                                                                                                                       </object>\r
+                                                                                                               </object>\r
                                                                                                        </object>\r
                                                                                                </object>\r
                                                                                                <object class="sizeritem">\r
-                                                                                                       <option>1</option>\r
-                                                                                                       <flag>wxEXPAND</flag>\r
+                                                                                                       <option>0</option>\r
+                                                                                                       <flag>wxALL|wxEXPAND</flag>\r
                                                                                                        <border>5</border>\r
                                                                                                        <object class="wxGridSizer">\r
                                                                                                                <rows>4</rows>\r
-                                                                                                               <cols>1</cols>\r
+                                                                                                               <cols>2</cols>\r
                                                                                                                <vgap>0</vgap>\r
                                                                                                                <hgap>0</hgap>\r
                                                                                                                <object class="sizeritem">\r
                                                                                                                        <flag>wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL</flag>\r
                                                                                                                        <border>5</border>\r
                                                                                                                        <object class="wxStaticText" name="m_staticText14">\r
-                                                                                                                               <style>wxALIGN_RIGHT</style>\r
+                                                                                                                               <style>wxALIGN_RIGHT|wxST_NO_AUTORESIZE</style>\r
                                                                                                                                <label>Audio in (mic) -&gt; codec:</label>\r
                                                                                                                                <wrap>-1</wrap>\r
                                                                                                                        </object>\r
                                                                                                                </object>\r
                                                                                                                <object class="sizeritem">\r
-                                                                                                                       <option>0</option>\r
-                                                                                                                       <flag>wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL</flag>\r
+                                                                                                                       <option>1</option>\r
+                                                                                                                       <flag>wxALL</flag>\r
                                                                                                                        <border>5</border>\r
-                                                                                                                       <object class="wxStaticText" name="m_staticText15">\r
-                                                                                                                               <style>wxALIGN_RIGHT</style>\r
-                                                                                                                               <label>codec -&gt; Radio Tx: </label>\r
-                                                                                                                               <wrap>-1</wrap>\r
+                                                                                                                       <object class="wxComboBox" name="m_comboAudioCodec">\r
+                                                                                                                               <value>&lt;default&gt;</value>\r
+                                                                                                                               <content />\r
                                                                                                                        </object>\r
                                                                                                                </object>\r
                                                                                                                <object class="sizeritem">\r
                                                                                                                        <option>0</option>\r
-                                                                                                                       <flag>wxALIGN_RIGHT|wxALL</flag>\r
+                                                                                                                       <flag>wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL</flag>\r
                                                                                                                        <border>5</border>\r
-                                                                                                                       <object class="wxStaticText" name="m_staticText16">\r
-                                                                                                                               <style>wxALIGN_RIGHT</style>\r
-                                                                                                                               <label>Radio Rx -&gt; codec:</label>\r
+                                                                                                                       <object class="wxStaticText" name="m_staticText15">\r
+                                                                                                                               <style>wxALIGN_RIGHT|wxST_NO_AUTORESIZE</style>\r
+                                                                                                                               <label>codec -&gt; Radio Tx:</label>\r
                                                                                                                                <wrap>-1</wrap>\r
                                                                                                                        </object>\r
                                                                                                                </object>\r
                                                                                                                <object class="sizeritem">\r
-                                                                                                                       <option>0</option>\r
-                                                                                                                       <flag>wxALIGN_RIGHT|wxALL</flag>\r
+                                                                                                                       <option>1</option>\r
+                                                                                                                       <flag>wxALL</flag>\r
                                                                                                                        <border>5</border>\r
-                                                                                                                       <object class="wxStaticText" name="m_staticText17">\r
-                                                                                                                               <style>wxALIGN_RIGHT</style>\r
-                                                                                                                               <label>codec -&gt; Audio out (spkr):</label>\r
-                                                                                                                               <wrap>-1</wrap>\r
+                                                                                                                       <object class="wxComboBox" name="m_comboCodecTx">\r
+                                                                                                                               <value>&lt;default&gt;</value>\r
+                                                                                                                               <content />\r
                                                                                                                        </object>\r
                                                                                                                </object>\r
-                                                                                                       </object>\r
-                                                                                               </object>\r
-                                                                                               <object class="sizeritem">\r
-                                                                                                       <option>1</option>\r
-                                                                                                       <flag>wxEXPAND</flag>\r
-                                                                                                       <border>5</border>\r
-                                                                                                       <object class="wxGridSizer">\r
-                                                                                                               <rows>4</rows>\r
-                                                                                                               <cols>1</cols>\r
-                                                                                                               <vgap>0</vgap>\r
-                                                                                                               <hgap>0</hgap>\r
                                                                                                                <object class="sizeritem">\r
                                                                                                                        <option>0</option>\r
-                                                                                                                       <flag>wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL|wxALL|wxEXPAND</flag>\r
+                                                                                                                       <flag>wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL</flag>\r
                                                                                                                        <border>5</border>\r
-                                                                                                                       <object class="wxComboBox" name="m_comboBox1">\r
-                                                                                                                               <value>Combo!</value>\r
-                                                                                                                               <content />\r
+                                                                                                                       <object class="wxStaticText" name="m_staticText16">\r
+                                                                                                                               <style>wxALIGN_RIGHT|wxST_NO_AUTORESIZE</style>\r
+                                                                                                                               <label>Radio Rx -&gt; codec:</label>\r
+                                                                                                                               <wrap>-1</wrap>\r
                                                                                                                        </object>\r
                                                                                                                </object>\r
                                                                                                                <object class="sizeritem">\r
-                                                                                                                       <option>0</option>\r
-                                                                                                                       <flag>wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL|wxALL|wxEXPAND</flag>\r
+                                                                                                                       <option>1</option>\r
+                                                                                                                       <flag>wxALL</flag>\r
                                                                                                                        <border>5</border>\r
-                                                                                                                       <object class="wxComboBox" name="m_comboBox2">\r
-                                                                                                                               <value>Combo!</value>\r
+                                                                                                                       <object class="wxComboBox" name="m_comboRadioRx">\r
+                                                                                                                               <value>&lt;default&gt;</value>\r
                                                                                                                                <content />\r
                                                                                                                        </object>\r
                                                                                                                </object>\r
                                                                                                                <object class="sizeritem">\r
                                                                                                                        <option>0</option>\r
-                                                                                                                       <flag>wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL|wxALL|wxEXPAND</flag>\r
+                                                                                                                       <flag>wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL</flag>\r
                                                                                                                        <border>5</border>\r
-                                                                                                                       <object class="wxComboBox" name="m_comboBox11">\r
-                                                                                                                               <value>Combo!</value>\r
-                                                                                                                               <content />\r
+                                                                                                                       <object class="wxStaticText" name="m_staticText17">\r
+                                                                                                                               <style>wxALIGN_RIGHT|wxST_NO_AUTORESIZE</style>\r
+                                                                                                                               <label>codec -&gt; Audio out (spkr):</label>\r
+                                                                                                                               <wrap>-1</wrap>\r
                                                                                                                        </object>\r
                                                                                                                </object>\r
                                                                                                                <object class="sizeritem">\r
                                                                                                                        <option>0</option>\r
-                                                                                                                       <flag>wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL|wxALL|wxEXPAND</flag>\r
+                                                                                                                       <flag>wxALL</flag>\r
                                                                                                                        <border>5</border>\r
-                                                                                                                       <object class="wxComboBox" name="m_comboBox12">\r
-                                                                                                                               <value>Combo!</value>\r
+                                                                                                                       <object class="wxComboBox" name="m_comboCodecSpkr">\r
+                                                                                                                               <value>&lt;default&gt;</value>\r
                                                                                                                                <content />\r
                                                                                                                        </object>\r
                                                                                                                </object>\r
                                                                                                        <flag>wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL|wxALL</flag>\r
                                                                                                        <border>5</border>\r
                                                                                                        <object class="wxRadioButton" name="m_radioBtnFileOnly">\r
-                                                                                                               <style>wxRB_GROUP</style>\r
                                                                                                                <label>File Only</label>\r
                                                                                                                <value>0</value>\r
                                                                                                        </object>\r