CW memory keyer

Yaesu only
main
PianetaRadio 2024-04-13 00:46:59 +02:00 zatwierdzone przez GitHub
rodzic 0fdc71f98d
commit 882558b523
Nie znaleziono w bazie danych klucza dla tego podpisu
ID klucza GPG: B5690EEEBB952194
8 zmienionych plików z 136 dodań i 30 usunięć

Wyświetl plik

@ -3,6 +3,7 @@ CatRadio
(+ New, * Updated, - Removed)
1.4.1 - 2024-xx-xx
+ CW memory keyer for Yaesu
+ Check hamlib version on startup
1.4.0 - 2024-03-17

Wyświetl plik

@ -39,7 +39,6 @@
#include <QApplication>
#include <QCoreApplication>
#include <QDir>
#include <QMessageBox>
#include <cwchar>
#include <rig.h> //Hamlib
@ -1079,6 +1078,32 @@ void MainWindow::on_pushButton_BandUp_clicked()
rigCmd.bandUp = 1;
}
void MainWindow::on_pushButton_CW1_clicked()
{
send_cw_mem(1);
}
void MainWindow::on_pushButton_CW2_clicked()
{
send_cw_mem(2);
}
void MainWindow::on_pushButton_CW3_clicked()
{
send_cw_mem(3);
}
void MainWindow::on_pushButton_CW4_clicked()
{
send_cw_mem(4);
}
void MainWindow::on_pushButton_CW5_clicked()
{
send_cw_mem(5);
}
//***** CheckBox *****
void MainWindow::on_checkBox_micCompressor_toggled(bool checked)
{

Wyświetl plik

@ -1,6 +1,6 @@
/**
** This file is part of the CatRadio project.
** Copyright 2022 Gianfranco Sordetti IZ8EWD <iz8ewd@pianetaradio.it>.
** Copyright 2022-2024 Gianfranco Sordetti IZ8EWD <iz8ewd@pianetaradio.it>.
**
** This program is free software: you can redistribute it and/or modify
** it under the terms of the GNU General Public License as published by
@ -212,6 +212,16 @@ private slots:
void on_action_AboutDarkTheme_triggered();
void on_pushButton_CW1_clicked();
void on_pushButton_CW2_clicked();
void on_pushButton_CW3_clicked();
void on_pushButton_CW4_clicked();
void on_pushButton_CW5_clicked();
private:
Ui::MainWindow *ui;
QTimer *timer;

Wyświetl plik

@ -1765,7 +1765,7 @@
</rect>
</property>
<property name="currentIndex">
<number>2</number>
<number>0</number>
</property>
<widget class="QWidget" name="tab_clar">
<property name="autoFillBackground">
@ -1887,6 +1887,40 @@
<string>CW</string>
</attribute>
<layout class="QGridLayout" name="gridLayout_2">
<item row="1" column="1">
<widget class="QPushButton" name="pushButton_CW2">
<property name="text">
<string>2</string>
</property>
</widget>
</item>
<item row="0" column="3">
<widget class="QSpinBox" name="spinBox_WPM">
<property name="minimum">
<number>4</number>
</property>
<property name="maximum">
<number>60</number>
</property>
<property name="value">
<number>20</number>
</property>
</widget>
</item>
<item row="1" column="4">
<widget class="QPushButton" name="pushButton_CW4">
<property name="text">
<string>4</string>
</property>
</widget>
</item>
<item row="1" column="3">
<widget class="QPushButton" name="pushButton_CW3">
<property name="text">
<string>3</string>
</property>
</widget>
</item>
<item row="0" column="0">
<widget class="QCheckBox" name="checkBox_BKIN">
<property name="toolTip">
@ -1898,30 +1932,30 @@
</widget>
</item>
<item row="0" column="1">
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QLabel" name="label_WPM">
<property name="text">
<string>WPM</string>
</property>
</widget>
</item>
<item>
<widget class="QSpinBox" name="spinBox_WPM">
<property name="minimum">
<number>4</number>
</property>
<property name="maximum">
<number>60</number>
</property>
<property name="value">
<number>20</number>
</property>
</widget>
</item>
</layout>
<widget class="QLabel" name="label_WPM">
<property name="text">
<string>WPM</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QPushButton" name="pushButton_CW1">
<property name="text">
<string>1</string>
</property>
</widget>
</item>
<item row="1" column="5">
<widget class="QPushButton" name="pushButton_CW5">
<property name="text">
<string>5</string>
</property>
</widget>
</item>
<item row="0" column="5">
<widget class="QCheckBox" name="checkBox_APF">
<property name="toolTip">
<string>Audio Peak Filter</string>
@ -1931,6 +1965,19 @@
</property>
</widget>
</item>
<item row="0" column="4">
<spacer name="horizontalSpacer_3">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
<widget class="QWidget" name="tab_FM">

Wyświetl plik

@ -1,6 +1,6 @@
/**
** This file is part of the CatRadio project.
** Copyright 2022 Gianfranco Sordetti IZ8EWD <iz8ewd@pianetaradio.it>.
** Copyright 2022-2024 Gianfranco Sordetti IZ8EWD <iz8ewd@pianetaradio.it>.
**
** This program is free software: you can redistribute it and/or modify
** it under the terms of the GNU General Public License as published by
@ -29,6 +29,7 @@ extern rigSettings rigSet;
extern rigCommand rigCmd;
extern rigCommand rigCap;
//* Set band to default frequency or use band change if radio has capability
void set_band (int band)
{
if (rigCap.bandChange==0)
@ -84,6 +85,7 @@ void set_band (int band)
}
}
//* Set split to 5kHz and activate it
void quick_split ()
{
rigSet.freqSub = rigGet.freqMain + 5000;
@ -94,6 +96,14 @@ void quick_split ()
rigCmd.split = 1;
}
//* Send CW keyer message 1-5, Yaesu only
void send_cw_mem (int memory)
{
rigSet.cwMem = (char)(memory + '0');
rigCmd.cwSend = 1;
}
//* Convert AGC int value to hamlib enumerated
agc_level_e levelagcvalue (int agcValue)
{
agc_level_e agcLevel;
@ -113,6 +123,7 @@ agc_level_e levelagcvalue (int agcValue)
return agcLevel;
}
//* Convert AGC string to hamlib enumerated
agc_level_e levelagcstr (QString agcString)
{
agc_level_e agcLevel;
@ -128,6 +139,7 @@ agc_level_e levelagcstr (QString agcString)
return agcLevel;
}
//* Convert AGC hamlib enumerated to hamlib value_t
value_t valueagclevel (agc_level_e agcLevel)
{
value_t value;
@ -143,6 +155,7 @@ value_t valueagclevel (agc_level_e agcLevel)
return value;
}
//* Convert antenna string to hamlib ant_t
ant_t antstr (QString antString)
{
ant_t ant;
@ -160,6 +173,7 @@ ant_t antstr (QString antString)
return ant;
}
//* Convert meter type string to hamlib number
unsigned long long levelmeterstr (QString meterString)
{
unsigned long long levelMeter;

Wyświetl plik

@ -1,6 +1,6 @@
/**
** This file is part of the CatRadio project.
** Copyright 2022 Gianfranco Sordetti IZ8EWD <iz8ewd@pianetaradio.it>.
** Copyright 2022-2024 Gianfranco Sordetti IZ8EWD <iz8ewd@pianetaradio.it>.
**
** This program is free software: you can redistribute it and/or modify
** it under the terms of the GNU General Public License as published by
@ -29,6 +29,7 @@
void set_band (int band);
void quick_split ();
void send_cw_mem (int memory);
agc_level_e levelagcvalue (int agcValue);
agc_level_e levelagcstr (QString agcString);
value_t valueagclevel (agc_level_e agcLevel);

Wyświetl plik

@ -116,6 +116,12 @@ void RigDaemon::rigUpdate(RIG *my_rig)
rigCmd.ptt = 0;
}
if (rigCmd.cwSend)
{
rig_send_morse(my_rig, RIG_VFO_CURR, &rigSet.cwMem);
rigCmd.cwSend = 0;
}
//* VFO
if (rigCmd.freqMain) //VFO Main
{

Wyświetl plik

@ -71,6 +71,7 @@ typedef struct {
int tuner; //Tuner
int bkin; //CW Break-in
int wpm; //CW Keyer speed WPM
char cwMem; //CW memory keyer
int apf; //Audio Peak Filter
int noiseBlanker, noiseBlanker2; //NB
int noiseReduction; //NR
@ -109,9 +110,10 @@ typedef struct {
int tune;
int bandUp, bandDown;
int bandChange;
int bkin;
int wpm;
int apf;
int bkin; //CW break-in
int wpm; //CW wpm
int cwSend; //CW send memory (Yaesu only)
int apf; //CW audio peak filter (Yaesu only)
int noiseBlanker, noiseBlanker2;
int noiseReduction, noiseReductionLevel;
int notchFilter;