adding serial rate field to hamlib PTT dialog, builds OK, yet to test
authordrowe67 <drowe67@01035d8c-6547-0410-b346-abe4f91aad63>
Thu, 6 Jul 2017 21:18:51 +0000 (21:18 +0000)
committerdrowe67 <drowe67@01035d8c-6547-0410-b346-abe4f91aad63>
Thu, 6 Jul 2017 21:18:51 +0000 (21:18 +0000)
git-svn-id: https://svn.code.sf.net/p/freetel/code@3280 01035d8c-6547-0410-b346-abe4f91aad63

freedv-dev/CMakeLists.txt
freedv-dev/src/dlg_ptt.cpp
freedv-dev/src/dlg_ptt.h
freedv-dev/src/fdmdv2_main.cpp
freedv-dev/src/fdmdv2_main.h
freedv-dev/src/hamlib.cpp
freedv-dev/src/hamlib.h
freedv-dev/src/topFrame.cpp

index 6c81304f5669b50b6a3c690723c1b9888e9dc80b..24242a81674f5678f7d531f1144b6317603d9d2a 100644 (file)
@@ -30,7 +30,7 @@ project(FreeDV)
 # Set FreeDV version and generate src/version.h
 #
 set(FREEDV_VERSION_MAJOR 1)
-set(FREEDV_VERSION_MINOR 2)
+set(FREEDV_VERSION_MINOR 3)
 set(FREEDV_VERSION_PATCH FALSE)
 set(FREEDV_VERSION ${FREEDV_VERSION_MAJOR}.${FREEDV_VERSION_MINOR})
 if(FREEDV_VERSION_PATCH)
index 138f63f25f8b2f203e46d40b109661093775cca9..0bfe0dc204cd20bd00c562bf9113fbda23a2795f 100644 (file)
@@ -87,6 +87,7 @@ ComPortsDlg::ComPortsDlg(wxWindow* parent, wxWindowID id, const wxString& title,
     // Hamlib for CAT PTT
     //----------------------------------------------------------------------
 
+#ifdef TTT
     wxStaticBoxSizer* staticBoxSizer18 = new wxStaticBoxSizer( new wxStaticBox(this, wxID_ANY, _("Hamlib Settings")), wxVERTICAL);
 
     wxBoxSizer* gridSizer100 = new wxBoxSizer(wxHORIZONTAL);
@@ -114,6 +115,43 @@ ComPortsDlg::ComPortsDlg(wxWindow* parent, wxWindowID id, const wxString& title,
 
     staticBoxSizer18->Add(gridSizer100, 1);
     mainSizer->Add(staticBoxSizer18, 1);
+#endif
+
+    wxStaticBoxSizer* staticBoxSizer18 = new wxStaticBoxSizer( new wxStaticBox(this, wxID_ANY, _("Hamlib Settings")), wxHORIZONTAL);
+
+    /* Use Hamlib for PTT checkbox. */
+
+    m_ckUseHamlibPTT = new wxCheckBox(this, wxID_ANY, _("Use Hamlib PTT"), wxDefaultPosition, wxSize(-1, -1), 0);
+    m_ckUseHamlibPTT->SetValue(false);
+    staticBoxSizer18->Add(m_ckUseHamlibPTT, 0, wxALIGN_CENTER_VERTICAL, 0);
+
+    /* Hamlib Rig Type combobox. */
+
+    staticBoxSizer18->Add(new wxStaticText(this, wxID_ANY, _("Rig Model:"), wxDefaultPosition, wxDefaultSize, 0), 
+                      0, wxALIGN_CENTER_VERTICAL | wxLEFT, 20);
+    m_cbRigName = new wxComboBox(this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize(250, -1), 0, NULL, wxCB_DROPDOWN);
+    /* TODO(Joel): this is a hack. At the least, need to gurantee that m_hamLib
+     * exists. */
+    wxGetApp().m_hamlib->populateComboBox(m_cbRigName);
+    m_cbRigName->SetSelection(wxGetApp().m_intHamlibRig);
+    staticBoxSizer18->Add(m_cbRigName, 0, wxALIGN_CENTER_VERTICAL, 0);
+
+    /* Hamlib Serial Port combobox. */
+
+    staticBoxSizer18->Add(new wxStaticText(this, wxID_ANY, _("Serial Device:"), wxDefaultPosition, wxDefaultSize, 0), 
+                      0, wxALIGN_CENTER_VERTICAL | wxLEFT, 20);
+    m_cbSerialPort = new wxComboBox(this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize(140, -1), 0, NULL, wxCB_DROPDOWN);
+    staticBoxSizer18->Add(m_cbSerialPort, 0, wxALIGN_CENTER_VERTICAL, 0);
+
+    /* Hamlib Serial Rate combobox. */
+
+    staticBoxSizer18->Add(new wxStaticText(this, wxID_ANY, _("Serial Rate:"), wxDefaultPosition, wxDefaultSize, 0), 
+                      0, wxALIGN_CENTER_VERTICAL | wxLEFT, 20);
+    m_cbSerialRate = new wxComboBox(this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize(140, -1), 0, NULL, wxCB_DROPDOWN);
+    staticBoxSizer18->Add(m_cbSerialRate, 0, wxALIGN_CENTER_VERTICAL, 0);
+
+
+    mainSizer->Add(staticBoxSizer18, 0, wxEXPAND, 5);
 
     //----------------------------------------------------------------------
     // Serial port PTT
@@ -329,6 +367,14 @@ void ComPortsDlg::populatePortList()
     m_cbSerialPort->Append("/dev/ttyUSB1");
     m_cbSerialPort->Append("/dev/ttyS0");
     m_cbSerialPort->Append("/dev/ttyS1");
+
+    /* populate Hamlib serial rate combo box */
+
+    wxString serialRates[] = {"auto", "300", "1200", "2400", "4800", "9600", "19200", "38400", "57600", "115200"}; 
+    for(int i=0; i<WXSIZEOF(serialRates); i++) {
+        m_cbSerialRate->Append(serialRates[i]);
+    }
+
     m_cbCtlDevicePath->Clear();
     m_cbCtlDevicePath->Append("/dev/ttyUSB0");
     m_cbCtlDevicePath->Append("/dev/ttyUSB1");
@@ -357,10 +403,20 @@ void ComPortsDlg::ExchangeData(int inout)
         m_txtCtrlVoiceKeyerRxPause->SetValue(wxString::Format(wxT("%i"), wxGetApp().m_intVoiceKeyerRxPause));
         m_txtCtrlVoiceKeyerRepeats->SetValue(wxString::Format(wxT("%i"), wxGetApp().m_intVoiceKeyerRepeats));
 
+        /* Hamlib */
+
         m_ckUseHamlibPTT->SetValue(wxGetApp().m_boolHamlibUseForPTT);
         m_cbRigName->SetSelection(wxGetApp().m_intHamlibRig);
         m_cbSerialPort->SetValue(wxGetApp().m_strHamlibSerialPort);
 
+        if (wxGetApp().m_intHamlibSerialRate == 0) {
+            m_cbSerialRate->SetSelection(0);
+        } else {
+            m_cbSerialRate->SetValue(wxString::Format(wxT("%i"), wxGetApp().m_intHamlibSerialRate));
+        }
+
+        /* Serial PTT */
+
         m_ckUseSerialPTT->SetValue(wxGetApp().m_boolUseSerialPTT);
         str = wxGetApp().m_strRigCtrlPort;
 #ifdef __WXMSW__
@@ -399,9 +455,19 @@ void ComPortsDlg::ExchangeData(int inout)
         wxGetApp().m_intHamlibRig = m_cbRigName->GetSelection();
         wxGetApp().m_strHamlibSerialPort = m_cbSerialPort->GetValue();
 
+        wxString s = m_cbSerialRate->GetValue();
+        if (s == "auto") {
+            wxGetApp().m_intHamlibSerialRate = 0;
+        } else {
+            m_cbSerialRate->GetValue().ToLong(&tmp); 
+            wxGetApp().m_intHamlibSerialRate = tmp;
+        }
+        fprintf(stderr, "serial rate: %ld\n", tmp);
+
         pConfig->Write(wxT("/Hamlib/UseForPTT"), wxGetApp().m_boolHamlibUseForPTT);
         pConfig->Write(wxT("/Hamlib/RigName"), wxGetApp().m_intHamlibRig);
         pConfig->Write(wxT("/Hamlib/SerialPort"), wxGetApp().m_strHamlibSerialPort);
+        pConfig->Write(wxT("/Hamlib/SerialRate"), wxGetApp().m_intHamlibSerialRate);
 
         /* Serial settings */
 
index 70b8ff351bee6267fe5e26f2dcfe7b7742d9bce0..623ec391b9f6dc549ff46af23236d9e18d02b361 100644 (file)
@@ -62,6 +62,7 @@ class ComPortsDlg : public wxDialog
         wxCheckBox *m_ckUseHamlibPTT;
         wxComboBox *m_cbRigName;
         wxComboBox *m_cbSerialPort;
+        wxComboBox *m_cbSerialRate;
 
         Hamlib *m_hamlib;
 
@@ -95,6 +96,7 @@ protected:
         void OnCancel(wxCommandEvent& event);
         void OnApply(wxCommandEvent& event);
         virtual void OnInitDialog(wxInitDialogEvent& event);
+    
 };
 
 #endif // __COMPORTS_DIALOG__
index 12a8863ba8d45585708400abc598347ffa2e1210..d15a7a25850c5954efea6e59e270a1dc99d4c249 100644 (file)
@@ -433,6 +433,7 @@ MainFrame::MainFrame(wxString plugInName, wxWindow *parent) : TopFrame(plugInNam
     wxGetApp().m_boolHamlibUseForPTT = pConfig->ReadBool("/Hamlib/UseForPTT", false);
     wxGetApp().m_intHamlibRig = pConfig->ReadLong("/Hamlib/RigName", 0);
     wxGetApp().m_strHamlibSerialPort = pConfig->Read("/Hamlib/SerialPort", "");
+    wxGetApp().m_intHamlibSerialRate = pConfig->ReadLong("/Hamlib/SerialRate", 0);
     
     wxGetApp().m_boolUseSerialPTT   = pConfig->ReadBool(wxT("/Rig/UseSerialPTT"),   false);
     wxGetApp().m_strRigCtrlPort     = pConfig->Read(wxT("/Rig/Port"),               wxT(""));
@@ -512,8 +513,8 @@ MainFrame::MainFrame(wxString plugInName, wxWindow *parent) : TopFrame(plugInNam
     int mode  = pConfig->Read(wxT("/Audio/mode"), (long)0);
     if (mode == 0)
         m_rb1600->SetValue(1);
-    if (mode == 2)
-        m_rb700b->SetValue(1);
+    //if (mode == 2)
+    //    m_rb700b->SetValue(1);
     if (mode == 3)
         m_rb700c->SetValue(1);
     if (mode == 4)
@@ -697,6 +698,7 @@ MainFrame::~MainFrame()
         pConfig->Write("/Hamlib/UseForPTT", wxGetApp().m_boolHamlibUseForPTT);
         pConfig->Write("/Hamlib/RigName", wxGetApp().m_intHamlibRig);
         pConfig->Write("/Hamlib/SerialPort", wxGetApp().m_strHamlibSerialPort);
+        pConfig->Write("/Hamlib/SerialRate", wxGetApp().m_intHamlibSerialRate);
 
 
         pConfig->Write(wxT("/File/playFileToMicInPath"),    wxGetApp().m_playFileToMicInPath);
@@ -726,8 +728,8 @@ MainFrame::~MainFrame()
         int mode;
         if (m_rb1600->GetValue())
             mode = 0;
-        if (m_rb700b->GetValue())
-            mode = 2;
+        //if (m_rb700b->GetValue())
+        //    mode = 2;
         if (m_rb700c->GetValue())
             mode = 3;
         if (m_rb800xa->GetValue())
@@ -999,7 +1001,7 @@ void MainFrame::OnTimer(wxTimerEvent &evt)
                 m_panelScatter->add_new_samples_scatter(&g_stats.rx_symbols[r][0]);
             }
         
-            if ((freedv_get_mode(g_pfreedv) == FREEDV_MODE_700B) || (freedv_get_mode(g_pfreedv) == FREEDV_MODE_700C)) {
+            if (/*(freedv_get_mode(g_pfreedv) == FREEDV_MODE_700B) ||*/(freedv_get_mode(g_pfreedv) == FREEDV_MODE_700C)) {
             
                 if (wxGetApp().m_FreeDV700Combine) {
                     m_panelScatter->setNc(g_Nc/2); /* m_FreeDV700Combine may have changed at run time */
@@ -1339,7 +1341,7 @@ void MainFrame::OnTimer(wxTimerEvent &evt)
                         m_panelTestFrameErrorsHist->add_new_samples(0, ber, 2*FDMDV_NC_MAX);
                     }
        
-                    if ((freedv_get_mode(g_pfreedv) == FREEDV_MODE_700B) || (freedv_get_mode(g_pfreedv) == FREEDV_MODE_700C)) {
+                    if (/*(freedv_get_mode(g_pfreedv) == FREEDV_MODE_700B) || */(freedv_get_mode(g_pfreedv) == FREEDV_MODE_700C)) {
                         int c;
                         //fprintf(stderr, "after g_error_pattern_fifo read 2\n");
                         
@@ -2402,7 +2404,8 @@ bool MainFrame::OpenHamlibRig() {
 
     int rig = wxGetApp().m_intHamlibRig;
     wxString port = wxGetApp().m_strHamlibSerialPort;
-    bool status = wxGetApp().m_hamlib->connect(rig, port.mb_str(wxConvUTF8));
+    int serial_rate = wxGetApp().m_intHamlibSerialRate;
+    bool status = wxGetApp().m_hamlib->connect(rig, port.mb_str(wxConvUTF8), serial_rate);
     if (status == false)
         wxMessageBox("Couldn't connect to Radio with hamlib", wxT("About"), wxOK | wxICON_ERROR, this);
  
@@ -2434,7 +2437,7 @@ void MainFrame::OnTogBtnOnOff(wxCommandEvent& event)
         vk_state = VK_IDLE;
 
         m_rb1600->Disable();
-        m_rb700b->Disable();
+        //m_rb700b->Disable();
         m_rb700c->Disable();
         m_rb800xa->Disable();
         if (m_rbPlugIn != NULL)
@@ -2447,6 +2450,7 @@ void MainFrame::OnTogBtnOnOff(wxCommandEvent& event)
             g_Nc = 16;
             m_panelScatter->setNc(g_Nc+1);  /* +1 for BPSK pilot */
         }
+        #ifdef DISABLED
         if (m_rb700b->GetValue()) {
             g_mode = FREEDV_MODE_700B;
             g_Nc = 14;
@@ -2457,6 +2461,7 @@ void MainFrame::OnTogBtnOnOff(wxCommandEvent& event)
                 m_panelScatter->setNc(g_Nc); 
             }
         }
+        #endif
         if (m_rb700c->GetValue()) {
             g_mode = FREEDV_MODE_700C;
             g_Nc = 14;
@@ -2631,7 +2636,7 @@ void MainFrame::OnTogBtnOnOff(wxCommandEvent& event)
         m_togBtnVoiceKeyer->Disable();
         m_togBtnOnOff->SetLabel(wxT("Start"));
         m_rb1600->Enable();
-        m_rb700b->Enable();
+        //m_rb700b->Enable();
         m_rb700c->Enable();
         m_rb800xa->Enable();
         if (m_rbPlugIn != NULL)
index f14a758707c63cc89ba9a991a407575f86e38a32..585fc0c7ee9a3257fa784c2fc174f9f49f7ccdf1 100644 (file)
@@ -184,6 +184,7 @@ class MainApp : public wxApp
         bool                m_boolHamlibUseForPTT;
         unsigned int        m_intHamlibRig;
         wxString            m_strHamlibSerialPort;
+        unsigned int        m_intHamlibSerialRate;
         Hamlib              *m_hamlib;
 
         bool                m_boolUseSerialPTT;
index 575f36a81e2bf32aaa15c951cf4e2d5288b9c746..6dbf8d0a7aaa4d343061bec69f306e2daff6cb1e 100644 (file)
@@ -81,12 +81,12 @@ void Hamlib::populateComboBox(wxComboBox *cb) {
     }
 }
 
-bool Hamlib::connect(unsigned int rig_index, const char *serial_port) {
+bool Hamlib::connect(unsigned int rig_index, const char *serial_port, const int serial_rate) {
     /* Look up model from index. */
     if (rig_index >= m_rigList.size()) {
         return false;
     }
-    printf("rig: %s %s (%d)\n", m_rigList[rig_index]->mfg_name,
+    fprintf(stderr, "rig: %s %s (%d)\n", m_rigList[rig_index]->mfg_name,
             m_rigList[rig_index]->model_name, m_rigList[rig_index]->rig_model);
 
        if(m_rig) {
@@ -95,14 +95,28 @@ bool Hamlib::connect(unsigned int rig_index, const char *serial_port) {
        }
 
     /* Initialise, configure and open. */
+
     m_rig = rig_init(m_rigList[rig_index]->rig_model);
-    /* TODO: Also use baud rate from the screen. */
+
     if (!m_rig)
         return false;
+
+    /* TODO we may also need civaddr for Icom */
+
+    strncpy(m_rig->state.rigport.pathname, serial_port, FILPATHLEN - 1);
+    if (serial_rate) {
+        m_rig->state.rigport.parm.serial.rate = serial_rate;
+        fprintf(stderr, "hamlib: setting serial rate: %d\n", serial_rate);
+    }
+
+    /*
     token_t token = rig_token_lookup(m_rig, "rig_pathname");
+
     if (rig_set_conf(m_rig, token, serial_port) != RIG_OK) {
         return false;
     }
+    */
+
     if (rig_open(m_rig) == RIG_OK) {
         return true;
     }
index fe3496ff26ece41b36d31e9b479cced9a7c033f6..cf5f34f777d127d8f5d212b58c8f4fb201edc91d 100644 (file)
@@ -13,7 +13,7 @@ class Hamlib {
         Hamlib();
         ~Hamlib();
         void populateComboBox(wxComboBox *cb);
-        bool connect(unsigned int rig_index, const char *serial_port);
+        bool connect(unsigned int rig_index, const char *serial_port, const int serial_rate);
         bool ptt(bool press);
         void close(void);
 
index 2092ddebaf61096c074daa2730b49569ea6d1653..4bc5cc6ca685d9d8eb3d604a3ade6b7dd9223b88 100644 (file)
@@ -316,9 +316,9 @@ TopFrame::TopFrame(wxString plugInName, wxWindow* parent, wxWindowID id, const w
     sbSizer_mode->Add(m_rb1400, 0, wxALIGN_LEFT|wxALL, 1);
     m_rb700 = new wxRadioButton( this, wxID_ANY, wxT("700"), wxDefaultPosition, wxDefaultSize, wxRB_GROUP);
     sbSizer_mode->Add(m_rb700, 0, wxALIGN_LEFT|wxALL, 1);
-#endif
     m_rb700b = new wxRadioButton( this, wxID_ANY, wxT("700B"), wxDefaultPosition, wxDefaultSize, wxRB_GROUP);
     sbSizer_mode->Add(m_rb700b, 0, wxALIGN_LEFT|wxALL, 1);
+#endif
     m_rb700c = new wxRadioButton( this, wxID_ANY, wxT("700C"), wxDefaultPosition, wxDefaultSize, 0);
     sbSizer_mode->Add(m_rb700c, 0, wxALIGN_LEFT|wxALL, 1);
     m_rb800xa = new wxRadioButton( this, wxID_ANY, wxT("800XA"), wxDefaultPosition, wxDefaultSize, 0);