# 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)
// Hamlib for CAT PTT
//----------------------------------------------------------------------
+#ifdef TTT
wxStaticBoxSizer* staticBoxSizer18 = new wxStaticBoxSizer( new wxStaticBox(this, wxID_ANY, _("Hamlib Settings")), wxVERTICAL);
wxBoxSizer* gridSizer100 = new wxBoxSizer(wxHORIZONTAL);
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
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");
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__
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 */
wxCheckBox *m_ckUseHamlibPTT;
wxComboBox *m_cbRigName;
wxComboBox *m_cbSerialPort;
+ wxComboBox *m_cbSerialRate;
Hamlib *m_hamlib;
void OnCancel(wxCommandEvent& event);
void OnApply(wxCommandEvent& event);
virtual void OnInitDialog(wxInitDialogEvent& event);
+
};
#endif // __COMPORTS_DIALOG__
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(""));
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)
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);
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())
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 */
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");
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);
vk_state = VK_IDLE;
m_rb1600->Disable();
- m_rb700b->Disable();
+ //m_rb700b->Disable();
m_rb700c->Disable();
m_rb800xa->Disable();
if (m_rbPlugIn != NULL)
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;
m_panelScatter->setNc(g_Nc);
}
}
+ #endif
if (m_rb700c->GetValue()) {
g_mode = FREEDV_MODE_700C;
g_Nc = 14;
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)
bool m_boolHamlibUseForPTT;
unsigned int m_intHamlibRig;
wxString m_strHamlibSerialPort;
+ unsigned int m_intHamlibSerialRate;
Hamlib *m_hamlib;
bool m_boolUseSerialPTT;
}
}
-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) {
}
/* 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;
}
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);
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);