Lots more changes

rigcreator
Phil Taylor 2023-05-15 10:53:52 +01:00
rodzic 54632924cd
commit 258e152b4f
26 zmienionych plików z 4454 dodań i 3838 usunięć

Wyświetl plik

@ -42,13 +42,12 @@ void cachingQueue::run()
QDeadlineTimer deadline(queueInterval);
QMutexLocker locker(&mutex);
int counter=0;
quint64 counter=0; // Will run for many years!
while (!aborted)
{
if (!waiting.wait(&mutex, deadline.remainingTime()))
{
// Time to process the queue - mutex is locked
//qInfo("Deadline!");
queuePriority prio = priorityImmediate;
// priorityNone=0, priorityImmediate=1, priorityHighest=2, priorityHigh=3, priorityMediumHigh=5, priorityMedium=7, priorityMediumLow=11, priorityLow=19, priorityLowest=23
@ -69,12 +68,12 @@ void cachingQueue::run()
prio = priorityLow;
else if (counter % priorityLowest == 0)
prio = priorityLowest;
}
}
counter++;
auto it = queue.find(prio);
if (it != queue.end())
{
queueItem item = it.value();
auto item = it.value();
emit haveCommand(item.type, item.command,item.param);
@ -82,8 +81,10 @@ void cachingQueue::run()
while (it.key()==prio)
it++;
// Add it back into the queue
if (item.recurring)
if (item.recurring) {
queue.insert(it,prio,item);
updateCache(false,item.command);
}
}
QCoreApplication::processEvents();
@ -91,8 +92,10 @@ void cachingQueue::run()
}
else if (!aborted) {
// We have been woken by a command that needs immediate attention (mutex is locked)
qInfo("Message Received");
// Mutex is locked
while (!items.isEmpty()) {
emit sendValue(items.dequeue());
}
}
}
}
@ -106,24 +109,53 @@ void cachingQueue::interval(quint64 val)
void cachingQueue::add(queuePriority prio ,funcs func, bool recurring)
{
QMutexLocker locker(&mutex);
queue.insert(prio, queueItem(func,recurring));
if (recurring) qInfo() << "adding" << funcString[func] << "recurring" << recurring << "priority" << prio;
queueItem q(func,recurring);
add(prio,q);
}
void cachingQueue::add(queuePriority prio ,queueItem item)
{
QMutexLocker locker(&mutex);
queue.insert(prio, item);
if (item.recurring) qInfo() << "adding" << funcString[item.command] << "recurring" << item.recurring << "priority" << prio;
if (item.command != funcNone)
{
QMutexLocker locker(&mutex);
if (!item.recurring || isRecurring(item.command) != prio)
{
if (item.recurring && prio == queuePriority::priorityImmediate) {
qWarning() << "Warning, cannot add recurring command with immediate priority!" << funcString[item.command];
} else {
queue.insert(prio, item);
updateCache(false,item.command,item.param);
if (item.recurring) qInfo() << "adding" << funcString[item.command] << "recurring" << item.recurring << "priority" << prio;
}
}
}
}
void cachingQueue::addUnique(queuePriority prio ,funcs func, bool recurring)
{
queueItem q(func,recurring);
addUnique(prio,q);
}
void cachingQueue::addUnique(queuePriority prio ,queueItem item)
{
QMutexLocker locker(&mutex);
queue.erase(std::remove_if(queue.begin(), queue.end(), [item](const queueItem& c) { return (c.command == item.command); }), queue.end());
queue.insert(prio, item);
if (item.recurring) qInfo() << "adding" << funcString[item.command] << "recurring" << item.recurring << "priority" << prio;
if (item.command != funcNone)
{
QMutexLocker locker(&mutex);
if (!item.recurring || isRecurring(item.command) != prio)
{
if (item.recurring && prio == queuePriority::priorityImmediate) {
qWarning() << "Warning, cannot add unique recurring command with immediate priority!" << funcString[item.command];
} else {
queue.erase(std::remove_if(queue.begin(), queue.end(), [item](const queueItem& c) { return (c.command == item.command && c.recurring == item.recurring); }), queue.end());
queue.insert(prio, item);
updateCache(false,item.command,item.param);
if (item.recurring) qInfo() << "adding" << funcString[item.command] << "recurring" << item.recurring << "priority" << prio;
}
}
}
}
void cachingQueue::del(funcs func)
@ -133,6 +165,17 @@ void cachingQueue::del(funcs func)
qInfo() << "deleting" << funcString[func];
}
queuePriority cachingQueue::isRecurring(funcs func)
{
// Does NOT lock the mutex
auto rec = std::find_if(queue.begin(), queue.end(), [func](const queueItem& c) { return (c.command == func && c.recurring); });
if (rec != queue.end())
{
return rec.value().priority;
}
return queuePriority::priorityNone;
}
void cachingQueue::clear()
{
QMutexLocker locker(&mutex);
@ -144,49 +187,67 @@ void cachingQueue::message(QString msg)
waiting.wakeOne();
}
void cachingQueue::setCache(funcs func, QVariant val)
void cachingQueue::receiveValue(funcs func, QVariant value)
{
QMutexLocker locker = QMutexLocker(&mutex);
cache.insert(func,val);
QMutexLocker locker(&mutex);
cacheItem c = cacheItem(func,value);
items.enqueue(c);
updateCache(true,func,value);
waiting.wakeOne();
}
void cachingQueue::updateCache(bool reply, funcs func, QVariant value)
{
// Mutex MUST be locked by the calling function.
auto cv = cache.find(func);
if (cv != cache.end()) {
if (reply) {
cv->reply = QDateTime::currentDateTime();
cv->value = value;
} else {
cv->req = QDateTime::currentDateTime();
}
return;
}
cacheItem c;
c.command = func;
if (reply) {
c.reply = QDateTime::currentDateTime();
c.value = value;
} else {
c.req = QDateTime::currentDateTime();
}
cache.insert(func,c);
}
QVariant cachingQueue::getCache(funcs func)
cacheItem cachingQueue::getCache(funcs func)
{
QMutexLocker locker = QMutexLocker(&mutex);
QMutexLocker locker(&mutex);
auto it = cache.find(func);
if (it != cache.end())
{
return it.value();
}
return NULL;
return cacheItem();
}
bool cachingQueue::getCache(funcs func, quint8& val)
//Calling function MUST call unlockMutex() once finished with data
QMap<funcs,cacheItem> cachingQueue::getCacheItems()
{
QVariant variant = getCache(func);
if (variant.isNull())
return false;
val=variant.toUInt();
return true;
mutex.lock();
return cache;
}
bool cachingQueue::getCache(funcs func, quint16& val)
//Calling function MUST call unlockMutex() once finished with data
QMultiMap <queuePriority,queueItem> cachingQueue::getQueueItems()
{
QVariant variant = getCache(func);
if (variant.isNull())
return false;
val=variant.toUInt();
return true;
mutex.lock();
return queue;
}
bool cachingQueue::getCache(funcs func, quint32& val)
void cachingQueue::unlockMutex()
{
QVariant variant = getCache(func);
if (variant.isNull())
return false;
val=variant.toUInt();
return true;
mutex.unlock();
}

Wyświetl plik

@ -5,14 +5,17 @@
#include <QThread>
#include <QMutex>
#include <QMutexLocker>
#include <QMap>
#include <QMultiMap>
#include <QVariant>
#include <QQueue>
#include <QRect>
#include <atomic>
#include <QWaitCondition>
#include <QDateTime>
#include "wfviewtypes.h"
#include "rigidentities.h"
enum queuePriority {
// Use prime numbers for priority, so that each queue is processed
@ -31,38 +34,58 @@ struct queueItem {
queueItem (funcs command) : type(queueCommandGet), command(command) {};
queueItem (funcs command, QVariant param) : type(queueCommandSet), command(command), param(param) {};
queueItem (queueItemType type, funcs command, QVariant param) : type(type), command(command), param(param) {};
queuePriority priority;
queueItemType type = queueCommandNone;
funcs command = funcNone;
QVariant param;
QVariant param=QVariant();
bool recurring = false;
};
struct cacheItem {
cacheItem () {};
cacheItem (funcs command, QVariant value) : command(command), value(value) {};
funcs command = funcNone;
QDateTime req=QDateTime();
QDateTime reply=QDateTime();
QVariant value=QVariant();
};
class cachingQueue : public QThread
{
Q_OBJECT
signals:
void haveCommand(queueItemType type, funcs func, QVariant param);
void sendValue(cacheItem item);
public slots:
// Can be called directly or via emit.
void receiveValue(funcs func, QVariant value);
private:
static cachingQueue *instance;
static QMutex mutex;
QMultiMap <queuePriority,queueItem> queue;
QHash<funcs,QVariant> cache;
QMap<funcs,cacheItem> cache;
QQueue<cacheItem> items;
// Command to set cache value
void setCache(funcs func, QVariant val);
// Various commands to get cache value
QVariant getCache(funcs func);
bool getCache(funcs func, quint8& val);
bool getCache(funcs func, quint16& val);
bool getCache(funcs func, quint32& val);
queuePriority isRecurring(funcs func);
// Various other values
std::atomic<bool> aborted=false;
QWaitCondition waiting;
void run();
quint64 queueInterval=0; // Don't start the timer!
// Functions
void run();
protected:
cachingQueue(QObject* parent = Q_NULLPTR) : QThread(parent) {};
~cachingQueue();
@ -74,11 +97,19 @@ public:
static cachingQueue *getInstance(QObject* parent = Q_NULLPTR);
void message(QString msg);
void add(queuePriority prio ,funcs func, bool recurring=false);
void add(queuePriority,queueItem);
void addUnique(queuePriority,queueItem);
void add(queuePriority prio,queueItem item);
void addUnique(queuePriority prio ,funcs func, bool recurring=false);
void addUnique(queuePriority prio,queueItem item);
void del(funcs func);
void clear();
void interval(quint64 val);
void updateCache(bool reply, funcs func, QVariant value=QVariant());
cacheItem getCache(funcs func);
QMap<funcs,cacheItem> getCacheItems();
QMultiMap <queuePriority,queueItem> getQueueItems();
void unlockMutex();
};
#endif // CACHINGQUEUE_H

185
debugwindow.cpp 100644
Wyświetl plik

@ -0,0 +1,185 @@
#include "debugwindow.h"
#include "ui_debugwindow.h"
#include "logcategories.h"
debugWindow::debugWindow(QWidget *parent) :
QDialog(parent),
ui(new Ui::debugWindow)
{
ui->setupUi(this);
qDebug() << "debugWindow() Creating new window";
queue = cachingQueue::getInstance();
ui->cacheView->setColumnWidth(0,20);
ui->queueView->setColumnWidth(0,20);
ui->cacheView->horizontalHeader()->setSectionResizeMode(QHeaderView::ResizeToContents);
ui->queueView->horizontalHeader()->setSectionResizeMode(QHeaderView::ResizeToContents);
//QTimer::singleShot(100, this, &debugWindow::getCache);
//QTimer::singleShot(300, this, &debugWindow::getQueue);
cacheTimer.setInterval(ui->cacheInterval->text().toInt());
queueTimer.setInterval(ui->queueInterval->text().toInt());
connect(&cacheTimer,SIGNAL(timeout()),this,SLOT(getCache()));
connect(&queueTimer,SIGNAL(timeout()),this,SLOT(getQueue()));
cacheTimer.start();
queueTimer.start();
}
debugWindow::~debugWindow()
{
qDebug() << "debugWindow() destroying window";
cacheTimer.stop();
queueTimer.stop();
delete ui;
}
void debugWindow::getCache()
{
QMap<funcs,cacheItem> cacheItems = queue->getCacheItems();
ui->cacheLabel->setText(QString("Current cache items in cachingView(%0)").arg(cacheItems.size()));
int c=0;
QMap<funcs,cacheItem>::const_iterator i = cacheItems.constBegin();
while (i != cacheItems.constEnd())
{
if (c >= ui->cacheView->rowCount())
{
ui->cacheView->insertRow(ui->cacheView->rowCount());
for (int j=0;j< ui->cacheView->columnCount();j++)
{
ui->cacheView->setItem(c,j,new QTableWidgetItem());
}
}
//QString::number(i.value().command).rightJustified(3,'0'));
ui->cacheView->item(c,0)->setText(QString::number(i.value().command).rightJustified(3,'0'));
ui->cacheView->item(c,1)->setText(funcString[i.value().command]);
ui->cacheView->item(c,2)->setText(getValue(i.value().value));
ui->cacheView->item(c,3)->setText((i.value().req.isValid()?i.value().req.toString("hh:mm:ss.zzz"):"<none>"));
ui->cacheView->item(c,4)->setText((i.value().reply.isValid()?i.value().reply.toString("hh:mm:ss.zzz"):"<none>"));
c++;
i++;
}
if (ui->cacheView->rowCount() > c)
ui->cacheView->model()->removeRows(c,ui->cacheView->rowCount());
queue->unlockMutex();
}
void debugWindow::getQueue()
{
QMultiMap <queuePriority,queueItem> queueItems = queue->getQueueItems();
ui->queueLabel->setText(QString("Current queue items in cachingView(%0)").arg(queueItems.size()));
int c=0;
QMultiMap<queuePriority,queueItem>::const_iterator i = queueItems.constBegin();
while (i != queueItems.constEnd())
{
if (c >= ui->queueView->rowCount())
{
ui->queueView->insertRow(ui->queueView->rowCount());
for (int j=0;j< ui->queueView->columnCount();j++)
{
ui->queueView->setItem(c,j,new QTableWidgetItem());
}
}
ui->queueView->item(c,0)->setText(QString::number(i.value().command).rightJustified(3,'0'));
ui->queueView->item(c,1)->setText(funcString[i.value().command]);
ui->queueView->item(c,2)->setText(QString::number(i.key()));
ui->queueView->item(c,3)->setText((i.value().param.isValid()?"Set":"Get"));
ui->queueView->item(c,4)->setText(getValue(i.value().param));
ui->queueView->item(c,5)->setText((i.value().recurring?"True":"False"));
c++;
i++;
}
ui->queueView->model()->removeRows(c,ui->queueView->rowCount());
queue->unlockMutex();
}
QString debugWindow::getValue(QVariant val)
{
QString value="";
if (val.isValid()) {
if (!strcmp(val.typeName(),"bool"))
{
value = (val.value<bool>()?"True":"False");
}
else if (!strcmp(val.typeName(),"uchar"))
{
value = QString("uchar: %0").arg(val.value<uchar>());
}
else if (!strcmp(val.typeName(),"ushort"))
{
value = QString("ushort: %0").arg(val.value<ushort>());
}
else if (!strcmp(val.typeName(),"short"))
{
value = QString("short: %0").arg(val.value<short>());
}
else if (!strcmp(val.typeName(),"uint"))
{
value = QString("Gr: %0 Me: %1").arg(val.value<uint>() >> 16 & 0xffff).arg(val.value<uint>() & 0xffff);
}
else if (!strcmp(val.typeName(),"mode_info"))
{
mode_info mi = val.value<mode_info>();
value = QString("%0(V:%1) D:%2 F%3").arg(mi.name).arg(mi.VFO).arg(mi.data).arg(mi.filter);
}
else if(!strcmp(val.typeName(),"freqt"))
{
freqt f = val.value<freqt>();
value = QString("(V:%0) %1 Mhz").arg(f.VFO).arg(f.MHzDouble);
}
else if(!strcmp(val.typeName(),"scopeData"))
{
scopeData s = val.value<scopeData>();
value = QString("(V:%0) %1").arg(s.mainSub).arg((s.valid?"Valid":"Invalid"));
}
else if (!strcmp(val.typeName(),"antennaInfo"))
{
antennaInfo a = val.value<antennaInfo>();
value = QString("Ant: %0 RX: %1").arg(a.antenna).arg(a.rx);
}
else if (!strcmp(val.typeName(),"memoryType"))
{
memoryType m = val.value<memoryType>();
value = QString("Mem:%0 G:%1 %2").arg(m.name).arg(m.group).arg(m.channel);
}
else if (!strcmp(val.typeName(),"rigInput"))
{
rigInput i = val.value<rigInput>();
value = QString("Input:%0 R:%1 (%2)").arg(i.name).arg(i.reg).arg(i.type);
}
else
{
value = QString("%0: <nosup>").arg(val.typeName());
}
}
return value;
}
void debugWindow::on_cachePause_clicked(bool checked)
{
if (checked)
cacheTimer.stop();
else
cacheTimer.start();
}
void debugWindow::on_queuePause_clicked(bool checked)
{
if (checked)
queueTimer.stop();
else
queueTimer.start();
}
void debugWindow::on_cacheInterval_textChanged(QString text)
{
cacheTimer.setInterval(text.toInt());
}
void debugWindow::on_queueInterval_textChanged(QString text)
{
queueTimer.setInterval(text.toInt());
}

43
debugwindow.h 100644
Wyświetl plik

@ -0,0 +1,43 @@
#ifndef DEBUGWINDOW_H
#define DEBUGWINDOW_H
#include <QDialog>
#include <QDebug>
#include <QMap>
#include <QMultiMap>
#include <QQueue>
#include <QTimer>
#include "cachingqueue.h"
namespace Ui {
class debugWindow;
}
class debugWindow : public QDialog
{
Q_OBJECT
private slots:
void getCache();
void getQueue();
void on_cachePause_clicked(bool checked);
void on_queuePause_clicked(bool checked);
void on_cacheInterval_textChanged(QString text);
void on_queueInterval_textChanged(QString text);
public:
explicit debugWindow(QWidget *parent = nullptr);
~debugWindow();
private:
Ui::debugWindow *ui;
cachingQueue* queue = Q_NULLPTR;
QMultiMap <queuePriority,queueItem> queueItems;
QMap<funcs,cacheItem> cacheItems;
QString getValue(QVariant val);
QTimer cacheTimer;
QTimer queueTimer;
};
#endif // DEBUGWINDOW_H

280
debugwindow.ui 100644
Wyświetl plik

@ -0,0 +1,280 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>debugWindow</class>
<widget class="QDialog" name="debugWindow">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>896</width>
<height>575</height>
</rect>
</property>
<property name="windowTitle">
<string>Dialog</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_2">
<item>
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
<widget class="QLabel" name="cacheLabel">
<property name="text">
<string>Current cache items in cachingView()</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="queueLabel">
<property name="text">
<string>Current queue items in cachingView()</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
</layout>
</item>
<item>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QTableWidget" name="cacheView">
<property name="editTriggers">
<set>QAbstractItemView::NoEditTriggers</set>
</property>
<property name="alternatingRowColors">
<bool>true</bool>
</property>
<property name="sortingEnabled">
<bool>true</bool>
</property>
<attribute name="horizontalHeaderDefaultSectionSize">
<number>95</number>
</attribute>
<attribute name="horizontalHeaderStretchLastSection">
<bool>true</bool>
</attribute>
<attribute name="verticalHeaderShowSortIndicator" stdset="0">
<bool>false</bool>
</attribute>
<column>
<property name="text">
<string>ID</string>
</property>
</column>
<column>
<property name="text">
<string>Function</string>
</property>
</column>
<column>
<property name="text">
<string>Value</string>
</property>
</column>
<column>
<property name="text">
<string>Request</string>
</property>
</column>
<column>
<property name="text">
<string>Reply</string>
</property>
</column>
</widget>
</item>
<item>
<widget class="QTableWidget" name="queueView">
<property name="editTriggers">
<set>QAbstractItemView::NoEditTriggers</set>
</property>
<attribute name="horizontalHeaderDefaultSectionSize">
<number>80</number>
</attribute>
<column>
<property name="text">
<string>ID</string>
</property>
</column>
<column>
<property name="text">
<string>Function</string>
</property>
</column>
<column>
<property name="text">
<string>Priority</string>
</property>
</column>
<column>
<property name="text">
<string>Get/Set</string>
</property>
</column>
<column>
<property name="text">
<string>Value</string>
</property>
</column>
<column>
<property name="text">
<string>Recurring</string>
</property>
</column>
</widget>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_3">
<item>
<widget class="QCheckBox" name="cachePause">
<property name="text">
<string>Pause refresh</string>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QLabel" name="label">
<property name="text">
<string>Refresh Interval (ms)</string>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="cacheInterval">
<property name="inputMask">
<string>99999</string>
</property>
<property name="text">
<string>500</string>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="queuePause">
<property name="text">
<string>Pause refresh</string>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_2">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QLabel" name="label_2">
<property name="text">
<string>Refresh Interval (ms)</string>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="queueInterval">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="inputMask">
<string>99999</string>
</property>
<property name="text">
<string>1000</string>
</property>
</widget>
</item>
</layout>
</item>
<item>
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QDialogButtonBox" name="buttonBox">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="standardButtons">
<set>QDialogButtonBox::Apply|QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
<resources/>
<connections>
<connection>
<sender>buttonBox</sender>
<signal>accepted()</signal>
<receiver>debugWindow</receiver>
<slot>accept()</slot>
<hints>
<hint type="sourcelabel">
<x>248</x>
<y>254</y>
</hint>
<hint type="destinationlabel">
<x>157</x>
<y>274</y>
</hint>
</hints>
</connection>
<connection>
<sender>buttonBox</sender>
<signal>rejected()</signal>
<receiver>debugWindow</receiver>
<slot>reject()</slot>
<hints>
<hint type="sourcelabel">
<x>316</x>
<y>260</y>
</hint>
<hint type="destinationlabel">
<x>286</x>
<y>274</y>
</hint>
</hints>
</connection>
</connections>
</ui>

Plik diff jest za duży Load Diff

Wyświetl plik

@ -169,7 +169,6 @@ public slots:
void setMemoryMode();
void getMemory(quint32 mem);
void getSatMemory(quint32 mem);
void setMemory(memoryType mem);
void clearMemory(quint32 mem);
void recallMemory(quint32 mem);
@ -179,8 +178,8 @@ public slots:
void getAfGain();
void getSql();
void getIFShift();
void getTPBFInner();
void getTPBFOuter();
void getPBTInner();
void getPBTOuter();
void getTxLevel();
void getMicGain();
void getCompLevel();
@ -201,8 +200,8 @@ public slots:
void setRfGain(unsigned char level);
void setAfGain(unsigned char level);
void setIFShift(unsigned char level);
void setTPBFInner(unsigned char level);
void setTPBFOuter(unsigned char level);
void setPBTInner(unsigned char level);
void setPBTOuter(unsigned char level);
void setTxPower(unsigned char power);
void setMicGain(unsigned char gain);
void setUSBGain(unsigned char gain);
@ -348,8 +347,8 @@ signals:
void haveRfGain(unsigned char level);
void haveAfGain(unsigned char level);
void haveSql(unsigned char level);
void haveTPBFInner(unsigned char level);
void haveTPBFOuter(unsigned char level);
void havePBTInner(unsigned char level);
void havePBTOuter(unsigned char level);
void haveIFShift(unsigned char level);
void haveTxPower(unsigned char level);
void haveMicGain(unsigned char level);
@ -408,6 +407,7 @@ signals:
void selectedRadio(quint8 radio);
void getMoreDebug();
void finished();
void haveReceivedValue(funcs func, QVariant value);
private:
void commonSetup();
@ -419,18 +419,20 @@ private:
unsigned int bcdHexToUInt(unsigned char hundreds, unsigned char tensunits);
QByteArray bcdEncodeChar(unsigned char num);
QByteArray bcdEncodeInt(unsigned int);
void parseFrequency();
QByteArray setMemory(memoryType mem);
freqt parseFrequency();
freqt parseFrequency(QByteArray data, unsigned char lastPosition); // supply index where Mhz is found
quint64 parseFreqDataToInt(QByteArray data);
freqt parseFrequencyRptOffset(QByteArray data);
bool parseMemory(QVector<memParserFormat>* memParser, memoryType* mem);
QByteArray makeFreqPayloadRptOffset(freqt freq);
QByteArray makeFreqPayload(double frequency);
QByteArray makeFreqPayload(freqt freq);
QByteArray encodeTone(quint16 tone, bool tinv, bool rinv);
QByteArray encodeTone(quint16 tone);
unsigned char convertNumberToHex(unsigned char num);
quint16 decodeTone(QByteArray eTone);
quint16 decodeTone(QByteArray eTone, bool &tinv, bool &rinv);
toneInfo decodeTone(QByteArray eTone);
//quint16 decodeTone(QByteArray eTone, bool &tinv, bool &rinv);
uchar makeFilterWidth(ushort width);
@ -439,8 +441,8 @@ private:
unsigned char audioLevelTxMean[50];
unsigned char audioLevelTxPeak[50];
void parseMode(quint8 mode, quint8 filter);
void parseSpectrum();
mode_info parseMode(quint8 mode, quint8 filter);
bool parseSpectrum(scopeData& d);
void parseWFData();
void parseSpectrumRefLevel();
void parseDetailedRegisters1A05();

Wyświetl plik

@ -166,9 +166,9 @@ void rigCreator::loadRigFile(QString file)
{
settings->setArrayIndex(c);
ui->inputs->insertRow(ui->inputs->rowCount());
ui->inputs->model()->setData(ui->inputs->model()->index(c,0),QString::number(settings->value("Num", 0).toUInt(),16).rightJustified(2,'0'));
ui->inputs->model()->setData(ui->inputs->model()->index(c,1),settings->value("Name", "").toString());
ui->inputs->model()->setData(ui->inputs->model()->index(c,0),QString::number(settings->value("Num", 0).toUInt()).rightJustified(2,'0'));
ui->inputs->model()->setData(ui->inputs->model()->index(c,1),QString::number(settings->value("Reg", 0).toUInt(),16).rightJustified(2,'0'));
ui->inputs->model()->setData(ui->inputs->model()->index(c,2),settings->value("Name", "").toString());
}
settings->endArray();
}
@ -395,8 +395,9 @@ void rigCreator::saveRigFile(QString file)
for (int n = 0; n<ui->inputs->rowCount();n++)
{
settings->setArrayIndex(n);
settings->setValue("Num", (ui->inputs->item(n,0) == NULL) ? 0 : ui->inputs->item(n,0)->text().toUInt(nullptr,16));
settings->setValue("Name", (ui->inputs->item(n,1) == NULL) ? "" : ui->inputs->item(n,1)->text());
settings->setValue("Num", (ui->inputs->item(n,0) == NULL) ? 0 : ui->inputs->item(n,0)->text().toUInt());
settings->setValue("Reg", (ui->inputs->item(n,1) == NULL) ? 0 : ui->inputs->item(n,1)->text().toUInt(nullptr,16));
settings->setValue("Name", (ui->inputs->item(n,2) == NULL) ? "" : ui->inputs->item(n,2)->text());
}
settings->endArray();
@ -496,13 +497,15 @@ QStandardItemModel* rigCreator::createModel(QStandardItemModel* model, QString s
for (int i=0; i < NUMFUNCS;i++)
{
QStandardItem *itemName = new QStandardItem(strings[i]);
QStandardItem *itemId = new QStandardItem(i);
if (!strings[i].startsWith('-')) {
QStandardItem *itemName = new QStandardItem(strings[i]);
QStandardItem *itemId = new QStandardItem(i);
QList<QStandardItem*> row;
row << itemName << itemId;
QList<QStandardItem*> row;
row << itemName << itemId;
model->appendRow(row);
model->appendRow(row);
}
}
return model;

Wyświetl plik

@ -287,7 +287,7 @@
<rect>
<x>10</x>
<y>50</y>
<width>151</width>
<width>191</width>
<height>171</height>
</rect>
</property>
@ -299,7 +299,7 @@
<rect>
<x>0</x>
<y>30</y>
<width>151</width>
<width>191</width>
<height>141</height>
</rect>
</property>
@ -322,13 +322,13 @@
<number>0</number>
</property>
<property name="columnCount">
<number>2</number>
<number>3</number>
</property>
<attribute name="horizontalHeaderMinimumSectionSize">
<number>0</number>
</attribute>
<attribute name="horizontalHeaderDefaultSectionSize">
<number>60</number>
<number>56</number>
</attribute>
<attribute name="verticalHeaderVisible">
<bool>false</bool>
@ -344,6 +344,11 @@
<string>Num</string>
</property>
</column>
<column>
<property name="text">
<string>Reg</string>
</property>
</column>
<column>
<property name="text">
<string>Name</string>
@ -514,9 +519,9 @@
<widget class="QGroupBox" name="groupBox_6">
<property name="geometry">
<rect>
<x>170</x>
<x>210</x>
<y>50</y>
<width>261</width>
<width>221</width>
<height>171</height>
</rect>
</property>
@ -528,7 +533,7 @@
<rect>
<x>0</x>
<y>30</y>
<width>261</width>
<width>221</width>
<height>141</height>
</rect>
</property>
@ -554,7 +559,7 @@
<number>0</number>
</attribute>
<attribute name="horizontalHeaderDefaultSectionSize">
<number>60</number>
<number>50</number>
</attribute>
<attribute name="verticalHeaderVisible">
<bool>false</bool>

Wyświetl plik

@ -50,13 +50,16 @@ enum model_kind {
enum inputTypes{ inputMic=0,
inputACC=1,
inputMICACC=2,
inputACCA=1,
inputACCB=2,
inputUSB=3,
inputMICUSB=4,
inputLAN=5,
inputACCA=6,
inputACCB=7,
inputLAN=4,
inputMICACCA=5,
inputMICACCB=6,
inputACCAACCB=7,
inputMICACCAACCB=8,
inputSPDIF=9,
inputMICUSB=10,
inputNone,
inputUnknown=0xff
};
@ -64,9 +67,11 @@ enum inputTypes{ inputMic=0,
struct rigInput {
rigInput() {}
rigInput(inputTypes type) : type(type) {}
rigInput(inputTypes type, QString name) : type(type), name(name) {}
inputTypes type = inputNone;
rigInput(inputTypes type, uchar reg, QString name) : type(type), reg(reg), name(name) {}
inputTypes type = inputUnknown;
uchar reg = 0;
QString name = "";
uchar level = 0;
};

Wyświetl plik

@ -524,131 +524,131 @@ Inputs\3\Name=M/U
Inputs\4\Num=3
Inputs\4\Name=WLAN
Inputs\size=4
Bands\1\Num=23
Bands\1\BSR=15
Bands\1\Name=60m
Bands\1\Start=5250000
Bands\1\End=5450000
Bands\1\Range=0
Bands\1\Num=20
Bands\1\BSR=1
Bands\1\Name=160m
Bands\1\Start=1800000
Bands\1\End=2000000
Bands\1\Range=2
Bands\1\MemoryGroup=-1
Bands\2\Num=22
Bands\2\BSR=15
Bands\2\Name=Gen
Bands\2\Start=10000
Bands\2\End=30000000
Bands\2\Range=1.6
Bands\2\Num=19
Bands\2\BSR=2
Bands\2\Name=80m
Bands\2\Start=3500000
Bands\2\End=4000000
Bands\2\Range=6
Bands\2\MemoryGroup=-1
Bands\3\Num=21
Bands\3\BSR=15
Bands\3\Name=2200m
Bands\3\Start=135000
Bands\3\End=138000
Bands\3\Range=0
Bands\3\Num=17
Bands\3\BSR=3
Bands\3\Name=40m
Bands\3\Start=7000000
Bands\3\End=7300000
Bands\3\Range=11
Bands\3\MemoryGroup=-1
Bands\4\Num=20
Bands\4\BSR=1
Bands\4\Name=160m
Bands\4\Start=1800000
Bands\4\End=2000000
Bands\4\Range=2
Bands\4\Num=16
Bands\4\BSR=4
Bands\4\Name=30m
Bands\4\Start=10100000
Bands\4\End=10150000
Bands\4\Range=15
Bands\4\MemoryGroup=-1
Bands\5\Num=19
Bands\5\BSR=2
Bands\5\Name=80m
Bands\5\Start=3500000
Bands\5\End=4000000
Bands\5\Range=6
Bands\5\Num=15
Bands\5\BSR=5
Bands\5\Name=20m
Bands\5\Start=14000000
Bands\5\End=14350000
Bands\5\Range=20
Bands\5\MemoryGroup=-1
Bands\6\Num=18
Bands\6\BSR=15
Bands\6\Name=630m
Bands\6\Start=493000
Bands\6\End=595000
Bands\6\Range=8
Bands\6\Num=14
Bands\6\BSR=6
Bands\6\Name=17m
Bands\6\Start=18068000
Bands\6\End=18168000
Bands\6\Range=22
Bands\6\MemoryGroup=-1
Bands\7\Num=17
Bands\7\BSR=3
Bands\7\Name=40m
Bands\7\Start=7000000
Bands\7\End=7300000
Bands\7\Range=11
Bands\7\Num=13
Bands\7\BSR=7
Bands\7\Name=15m
Bands\7\Start=21000000
Bands\7\End=21450000
Bands\7\Range=26
Bands\7\MemoryGroup=-1
Bands\8\Num=16
Bands\8\BSR=4
Bands\8\Name=30m
Bands\8\Start=10100000
Bands\8\End=10150000
Bands\8\Range=15
Bands\8\Num=12
Bands\8\BSR=8
Bands\8\Name=12m
Bands\8\Start=24890000
Bands\8\End=24990000
Bands\8\Range=30
Bands\8\MemoryGroup=-1
Bands\9\Num=15
Bands\9\BSR=5
Bands\9\Name=20m
Bands\9\Start=14000000
Bands\9\End=14350000
Bands\9\Range=20
Bands\9\Num=11
Bands\9\BSR=9
Bands\9\Name=10m
Bands\9\Start=28000000
Bands\9\End=29700000
Bands\9\Range=45
Bands\9\MemoryGroup=-1
Bands\10\Num=14
Bands\10\BSR=6
Bands\10\Name=17m
Bands\10\Start=18068000
Bands\10\End=18168000
Bands\10\Range=22
Bands\10\Num=10
Bands\10\BSR=16
Bands\10\Name=6m
Bands\10\Start=50000000
Bands\10\End=54000000
Bands\10\Range=60
Bands\10\MemoryGroup=-1
Bands\11\Num=13
Bands\11\BSR=7
Bands\11\Name=15m
Bands\11\Start=21000000
Bands\11\End=21450000
Bands\11\Range=26
Bands\11\Num=8
Bands\11\BSR=17
Bands\11\Name=WFM
Bands\11\Start=74800000
Bands\11\End=74800000
Bands\11\Range=108
Bands\11\MemoryGroup=-1
Bands\12\Num=12
Bands\12\BSR=8
Bands\12\Name=12m
Bands\12\Start=24890000
Bands\12\End=24990000
Bands\12\Range=30
Bands\12\Num=7
Bands\12\BSR=18
Bands\12\Name=Air
Bands\12\Start=108000000
Bands\12\End=0
Bands\12\Range=137
Bands\12\MemoryGroup=-1
Bands\13\Num=11
Bands\13\BSR=9
Bands\13\Name=10m
Bands\13\Start=28000000
Bands\13\End=29700000
Bands\13\Range=45
Bands\13\Num=6
Bands\13\BSR=19
Bands\13\Name=2m
Bands\13\Start=144000000
Bands\13\End=148000000
Bands\13\Range=148
Bands\13\MemoryGroup=-1
Bands\14\Num=10
Bands\14\BSR=10
Bands\14\Name=6m
Bands\14\Start=50000000
Bands\14\End=54000000
Bands\14\Range=60
Bands\14\Num=5
Bands\14\BSR=20
Bands\14\Name=70cm
Bands\14\Start=420000000
Bands\14\End=450000000
Bands\14\Range=450
Bands\14\MemoryGroup=-1
Bands\15\Num=8
Bands\15\BSR=11
Bands\15\Name=WFM
Bands\15\Start=74800000
Bands\15\End=74800000
Bands\15\Range=108
Bands\15\Num=18
Bands\15\BSR=21
Bands\15\Name=630m
Bands\15\Start=493000
Bands\15\End=595000
Bands\15\Range=8
Bands\15\MemoryGroup=-1
Bands\16\Num=7
Bands\16\BSR=12
Bands\16\Name=Air
Bands\16\Start=108000000
Bands\16\End=0
Bands\16\Range=137
Bands\16\Num=21
Bands\16\BSR=21
Bands\16\Name=2200m
Bands\16\Start=135000
Bands\16\End=138000
Bands\16\Range=0
Bands\16\MemoryGroup=-1
Bands\17\Num=6
Bands\17\BSR=13
Bands\17\Name=2m
Bands\17\Start=144000000
Bands\17\End=148000000
Bands\17\Range=148
Bands\17\Num=22
Bands\17\BSR=21
Bands\17\Name=Gen
Bands\17\Start=10000
Bands\17\End=30000000
Bands\17\Range=1.6
Bands\17\MemoryGroup=-1
Bands\18\Num=5
Bands\18\BSR=14
Bands\18\Name=70cm
Bands\18\Start=420000000
Bands\18\End=450000000
Bands\18\Range=450
Bands\18\Num=23
Bands\18\BSR=21
Bands\18\Name=60m
Bands\18\Start=5250000
Bands\18\End=5450000
Bands\18\Range=0
Bands\18\MemoryGroup=-1
Bands\size=18
Modes\1\Num=0
@ -688,7 +688,7 @@ Modes\9\Reg=8
Modes\9\Name=RTTY-R
Modes\9\BW=1
Modes\10\Num=12
Modes\10\Reg=17
Modes\10\Reg=23
Modes\10\Name=DV
Modes\10\BW=1
Modes\size=10
@ -742,16 +742,16 @@ Tuning%20Steps\12\Hz=10000
Tuning%20Steps\13\Num=9
Tuning%20Steps\13\Name=12.5 KHz
Tuning%20Steps\13\Hz=12500
Tuning%20Steps\14\Num=10
Tuning%20Steps\14\Num=16
Tuning%20Steps\14\Name=20 KHz
Tuning%20Steps\14\Hz=20000
Tuning%20Steps\15\Num=11
Tuning%20Steps\15\Num=17
Tuning%20Steps\15\Name=25 KHz
Tuning%20Steps\15\Hz=25000
Tuning%20Steps\16\Num=12
Tuning%20Steps\16\Num=18
Tuning%20Steps\16\Name=50 Khz
Tuning%20Steps\16\Hz=50000
Tuning%20Steps\17\Num=13
Tuning%20Steps\17\Num=19
Tuning%20Steps\17\Name=100 Khz
Tuning%20Steps\17\Hz=100000
Tuning%20Steps\18\Num=0

Wyświetl plik

@ -80,11 +80,11 @@ Commands\14\Max=12
Commands\15\Type=Tuning Step
Commands\15\String=\\x10
Commands\15\Min=0
Commands\15\Max=8
Commands\15\Max=18
Commands\16\Type=Attenuator Status
Commands\16\String=\\x11
Commands\16\Min=0
Commands\16\Max=18
Commands\16\Max=32
Commands\17\Type=Speech
Commands\17\String=\\x13
Commands\17\Min=0
@ -269,31 +269,43 @@ Commands\62\Type=RIT Frequency
Commands\62\String=\\x21\\x01
Commands\62\Min=0
Commands\62\Max=1
Commands\63\Type=Main/Sub Freq
Commands\63\String=\\x25
Commands\63\Type=Selected Freq
Commands\63\String=\\x25\\x00
Commands\63\Min=0
Commands\63\Max=1
Commands\64\Type=Main/Sub Mode
Commands\64\String=\\x26
Commands\63\Max=0
Commands\64\Type=Unselected Freq
Commands\64\String=\\x25\\x01
Commands\64\Min=0
Commands\64\Max=1
Commands\65\Type=Command Error FA
Commands\65\String=\\xfa
Commands\64\Max=0
Commands\65\Type=Selected Mode
Commands\65\String=\\x26\\x00
Commands\65\Min=0
Commands\65\Max=0
Commands\66\Type=Command OK FB
Commands\66\String=\\xfb
Commands\66\Type=Unselected Mode
Commands\66\String=\\x26\\x01
Commands\66\Min=0
Commands\66\Max=0
Commands\size=66
Commands\67\Type=Command Error FA
Commands\67\String=\\xfa
Commands\67\Min=0
Commands\67\Max=0
Commands\68\Type=Command OK FB
Commands\68\String=\\xfb
Commands\68\Min=0
Commands\68\Max=0
Commands\size=68
Spans\size=0
Inputs\1\Num=0
Inputs\1\Reg=0
Inputs\1\Name=MIC
Inputs\2\Num=1
Inputs\2\Reg=0
Inputs\2\Name=ACC
Inputs\3\Num=2
Inputs\3\Reg=0
Inputs\3\Name=MIC/ACC
Inputs\4\Num=3
Inputs\4\Reg=0
Inputs\4\Name=USB
Inputs\size=4
Bands\1\Num=20
@ -303,117 +315,117 @@ Bands\1\Start=1800000
Bands\1\End=2000000
Bands\1\Range=2
Bands\1\MemoryGroup=-1
Bands\2\Num=10
Bands\2\BSR=10
Bands\2\Name=6m
Bands\2\Start=50000000
Bands\2\End=54000000
Bands\2\Range=60
Bands\2\Num=19
Bands\2\BSR=2
Bands\2\Name=80m
Bands\2\Start=3500000
Bands\2\End=4000000
Bands\2\Range=6
Bands\2\MemoryGroup=-1
Bands\3\Num=6
Bands\3\BSR=11
Bands\3\Name=2m
Bands\3\Start=144000000
Bands\3\End=148000000
Bands\3\Range=148
Bands\3\Num=17
Bands\3\BSR=3
Bands\3\Name=40m
Bands\3\Start=7000000
Bands\3\End=7300000
Bands\3\Range=11
Bands\3\MemoryGroup=-1
Bands\4\Num=5
Bands\4\BSR=12
Bands\4\Name=70cm
Bands\4\Start=430000000
Bands\4\End=450000000
Bands\4\Range=450
Bands\4\Num=16
Bands\4\BSR=4
Bands\4\Name=30m
Bands\4\Start=10100000
Bands\4\End=10150000
Bands\4\Range=15
Bands\4\MemoryGroup=-1
Bands\5\Num=23
Bands\5\BSR=13
Bands\5\Name=Gen
Bands\5\Start=10000
Bands\5\End=30000000
Bands\5\Range=1.6
Bands\5\Num=15
Bands\5\BSR=5
Bands\5\Name=20m
Bands\5\Start=14000000
Bands\5\End=14350000
Bands\5\Range=20
Bands\5\MemoryGroup=-1
Bands\6\Num=9
Bands\6\BSR=13
Bands\6\Name=4m
Bands\6\Start=70000000
Bands\6\End=70500000
Bands\6\Range=0
Bands\6\Num=14
Bands\6\BSR=6
Bands\6\Name=17m
Bands\6\Start=18068000
Bands\6\End=18168000
Bands\6\Range=22
Bands\6\MemoryGroup=-1
Bands\7\Num=18
Bands\7\BSR=13
Bands\7\Name=60m
Bands\7\Start=5250000
Bands\7\End=5450000
Bands\7\Range=0
Bands\7\Num=13
Bands\7\BSR=7
Bands\7\Name=15m
Bands\7\Start=21000000
Bands\7\End=21450000
Bands\7\Range=26
Bands\7\MemoryGroup=-1
Bands\8\Num=21
Bands\8\BSR=13
Bands\8\Name=630m
Bands\8\Start=493000
Bands\8\End=595000
Bands\8\Range=8
Bands\8\Num=12
Bands\8\BSR=8
Bands\8\Name=12m
Bands\8\Start=24890000
Bands\8\End=24990000
Bands\8\Range=30
Bands\8\MemoryGroup=-1
Bands\9\Num=22
Bands\9\BSR=13
Bands\9\Name=2200m
Bands\9\Start=135000
Bands\9\End=138000
Bands\9\Range=0
Bands\9\Num=11
Bands\9\BSR=9
Bands\9\Name=10m
Bands\9\Start=28000000
Bands\9\End=29700000
Bands\9\Range=45
Bands\9\MemoryGroup=-1
Bands\10\Num=19
Bands\10\BSR=2
Bands\10\Name=80m
Bands\10\Start=3500000
Bands\10\End=4000000
Bands\10\Range=6
Bands\10\Num=10
Bands\10\BSR=16
Bands\10\Name=6m
Bands\10\Start=50000000
Bands\10\End=54000000
Bands\10\Range=60
Bands\10\MemoryGroup=-1
Bands\11\Num=17
Bands\11\BSR=3
Bands\11\Name=40m
Bands\11\Start=7000000
Bands\11\End=7300000
Bands\11\Range=11
Bands\11\Num=6
Bands\11\BSR=17
Bands\11\Name=2m
Bands\11\Start=144000000
Bands\11\End=148000000
Bands\11\Range=148
Bands\11\MemoryGroup=-1
Bands\12\Num=16
Bands\12\BSR=4
Bands\12\Name=30m
Bands\12\Start=10100000
Bands\12\End=10150000
Bands\12\Range=15
Bands\12\Num=5
Bands\12\BSR=18
Bands\12\Name=70cm
Bands\12\Start=430000000
Bands\12\End=450000000
Bands\12\Range=450
Bands\12\MemoryGroup=-1
Bands\13\Num=15
Bands\13\BSR=5
Bands\13\Name=20m
Bands\13\Start=14000000
Bands\13\End=14350000
Bands\13\Range=20
Bands\13\Num=9
Bands\13\BSR=19
Bands\13\Name=4m
Bands\13\Start=70000000
Bands\13\End=70500000
Bands\13\Range=0
Bands\13\MemoryGroup=-1
Bands\14\Num=14
Bands\14\BSR=6
Bands\14\Name=17m
Bands\14\Start=18068000
Bands\14\End=18168000
Bands\14\Range=22
Bands\14\Num=18
Bands\14\BSR=19
Bands\14\Name=60m
Bands\14\Start=5250000
Bands\14\End=5450000
Bands\14\Range=0
Bands\14\MemoryGroup=-1
Bands\15\Num=13
Bands\15\BSR=7
Bands\15\Name=15m
Bands\15\Start=21000000
Bands\15\End=21450000
Bands\15\Range=26
Bands\15\Num=21
Bands\15\BSR=19
Bands\15\Name=630m
Bands\15\Start=493000
Bands\15\End=595000
Bands\15\Range=8
Bands\15\MemoryGroup=-1
Bands\16\Num=12
Bands\16\BSR=8
Bands\16\Name=12m
Bands\16\Start=24890000
Bands\16\End=24990000
Bands\16\Range=30
Bands\16\Num=22
Bands\16\BSR=19
Bands\16\Name=2200m
Bands\16\Start=135000
Bands\16\End=138000
Bands\16\Range=0
Bands\16\MemoryGroup=-1
Bands\17\Num=11
Bands\17\BSR=9
Bands\17\Name=10m
Bands\17\Start=28000000
Bands\17\End=29700000
Bands\17\Range=45
Bands\17\Num=23
Bands\17\BSR=19
Bands\17\Name=Gen
Bands\17\Start=10000
Bands\17\End=30000000
Bands\17\Range=1.6
Bands\17\MemoryGroup=-1
Bands\size=17
Modes\1\Num=0
@ -448,13 +460,13 @@ Modes\8\Num=7
Modes\8\Reg=8
Modes\8\Name=RTTY-R
Modes\8\BW=1
Modes\9\Num=17
Modes\9\Reg=12
Modes\9\Num=12
Modes\9\Reg=23
Modes\9\Name=DV
Modes\9\BW=0
Modes\size=9
Attenuators\1\dB=0
Attenuators\2\dB=12
Attenuators\2\dB=18
Attenuators\size=2
Preamps\1\Num=0
Preamps\1\Name=OFF
@ -497,13 +509,13 @@ Tuning%20Steps\10\Hz=20000
Tuning%20Steps\11\Num=9
Tuning%20Steps\11\Name=25 KHz
Tuning%20Steps\11\Hz=25000
Tuning%20Steps\12\Num=10
Tuning%20Steps\12\Num=16
Tuning%20Steps\12\Name=50 KHz
Tuning%20Steps\12\Hz=50000
Tuning%20Steps\13\Num=11
Tuning%20Steps\13\Num=17
Tuning%20Steps\13\Name=100 KHz
Tuning%20Steps\13\Hz=100000
Tuning%20Steps\14\Num=12
Tuning%20Steps\14\Num=18
Tuning%20Steps\14\Name=1 MHz
Tuning%20Steps\14\Hz=1000000
Tuning%20Steps\size=14

Wyświetl plik

@ -249,67 +249,75 @@ Commands\57\Type=RIT Frequency
Commands\57\String=\\x21\\x01
Commands\57\Min=0
Commands\57\Max=1
Commands\58\Type=Main/Sub Freq
Commands\58\String=\\x25
Commands\58\Type=Selected Freq
Commands\58\String=\\x25\\x00
Commands\58\Min=0
Commands\58\Max=1
Commands\59\Type=Main/Sub Mode
Commands\59\String=\\x26
Commands\58\Max=0
Commands\59\Type=Unselected Freq
Commands\59\String=\\x25\\x01
Commands\59\Min=0
Commands\59\Max=1
Commands\60\Type=Scope Wave Data
Commands\60\String=\\x27\\x00
Commands\59\Max=0
Commands\60\Type=Selected Mode
Commands\60\String=\\x26\\x00
Commands\60\Min=0
Commands\60\Max=0
Commands\61\Type=Scope On/Off
Commands\61\String=\\x27\\x10
Commands\61\Type=Unselected Mode
Commands\61\String=\\x26\\x01
Commands\61\Min=0
Commands\61\Max=1
Commands\61\Max=0
Commands\62\Type=Scope Wave Data
Commands\62\String=\\x27\\x11
Commands\62\String=\\x27\\x00
Commands\62\Min=0
Commands\62\Max=1
Commands\63\Type=Scope Center Fixed
Commands\63\String=\\x27\\x14
Commands\62\Max=0
Commands\63\Type=Scope On/Off
Commands\63\String=\\x27\\x10
Commands\63\Min=0
Commands\63\Max=0
Commands\64\Type=Scope Center Span
Commands\64\String=\\x27\\x15
Commands\63\Max=1
Commands\64\Type=Scope Wave Data
Commands\64\String=\\x27\\x11
Commands\64\Min=0
Commands\64\Max=0
Commands\65\Type=Scope Edge Number
Commands\65\String=\\x27\\x16
Commands\64\Max=1
Commands\65\Type=Scope Center Fixed
Commands\65\String=\\x27\\x14
Commands\65\Min=0
Commands\65\Max=0
Commands\66\Type=Scope Hold
Commands\66\String=\\x27\\x17
Commands\66\Type=Scope Center Span
Commands\66\String=\\x27\\x15
Commands\66\Min=0
Commands\66\Max=1
Commands\67\Type=Scope Ref
Commands\67\String=\\x27\\x19
Commands\66\Max=0
Commands\67\Type=Scope Edge Number
Commands\67\String=\\x27\\x16
Commands\67\Min=0
Commands\67\Max=255
Commands\68\Type=Scope Speed
Commands\68\String=\\x27\\x1a
Commands\67\Max=0
Commands\68\Type=Scope Hold
Commands\68\String=\\x27\\x17
Commands\68\Min=0
Commands\68\Max=255
Commands\69\Type=Scope During TX
Commands\69\String=\\x27\\x1b
Commands\68\Max=1
Commands\69\Type=Scope Ref
Commands\69\String=\\x27\\x19
Commands\69\Min=0
Commands\69\Max=1
Commands\70\Type=Scope Center Type
Commands\70\String=\\x27\\x1c
Commands\69\Max=255
Commands\70\Type=Scope Speed
Commands\70\String=\\x27\\x1a
Commands\70\Min=0
Commands\70\Max=2
Commands\71\Type=Command Error FA
Commands\71\String=\\xfa
Commands\70\Max=255
Commands\71\Type=Scope During TX
Commands\71\String=\\x27\\x1b
Commands\71\Min=0
Commands\71\Max=0
Commands\72\Type=Command OK FB
Commands\72\String=\\xfb
Commands\71\Max=1
Commands\72\Type=Scope Center Type
Commands\72\String=\\x27\\x1c
Commands\72\Min=0
Commands\72\Max=0
Commands\size=72
Commands\72\Max=2
Commands\73\Type=Command Error FA
Commands\73\String=\\xfa
Commands\73\Min=0
Commands\73\Max=0
Commands\74\Type=Command OK FB
Commands\74\String=\\xfb
Commands\74\Min=0
Commands\74\Max=0
Commands\size=74
Spans\1\Num=0
Spans\1\Name=±2.5 KHz
Spans\1\Freq=2500
@ -336,12 +344,16 @@ Spans\8\Name=±500 KHz
Spans\8\Freq=500000
Spans\size=8
Inputs\1\Num=0
Inputs\1\Reg=0
Inputs\1\Name=MIC
Inputs\2\Num=1
Inputs\2\Reg=0
Inputs\2\Name=ACC
Inputs\3\Num=2
Inputs\3\Reg=0
Inputs\3\Name=MIC/ACC
Inputs\4\Num=3
Inputs\4\Reg=0
Inputs\4\Name=USB
Inputs\size=4
Bands\1\Num=9
@ -351,47 +363,47 @@ Bands\1\Start=70000000
Bands\1\End=70500000
Bands\1\Range=0
Bands\1\MemoryGroup=-1
Bands\2\Num=10
Bands\2\BSR=10
Bands\2\Name=6m
Bands\2\Start=50000000
Bands\2\End=54000000
Bands\2\Range=60
Bands\2\Num=18
Bands\2\BSR=0
Bands\2\Name=60m
Bands\2\Start=5250000
Bands\2\End=5450000
Bands\2\Range=0
Bands\2\MemoryGroup=-1
Bands\3\Num=11
Bands\3\BSR=9
Bands\3\Name=10m
Bands\3\Start=28000000
Bands\3\End=29700000
Bands\3\Range=45
Bands\3\Num=21
Bands\3\BSR=0
Bands\3\Name=630m
Bands\3\Start=493000
Bands\3\End=595000
Bands\3\Range=8
Bands\3\MemoryGroup=-1
Bands\4\Num=12
Bands\4\BSR=8
Bands\4\Name=12m
Bands\4\Start=24890000
Bands\4\End=24990000
Bands\4\Range=30
Bands\4\Num=22
Bands\4\BSR=0
Bands\4\Name=2200m
Bands\4\Start=135000
Bands\4\End=138000
Bands\4\Range=0
Bands\4\MemoryGroup=-1
Bands\5\Num=13
Bands\5\BSR=7
Bands\5\Name=15m
Bands\5\Start=21000000
Bands\5\End=21450000
Bands\5\Range=26
Bands\5\Num=20
Bands\5\BSR=1
Bands\5\Name=160m
Bands\5\Start=1800000
Bands\5\End=2000000
Bands\5\Range=2
Bands\5\MemoryGroup=-1
Bands\6\Num=14
Bands\6\BSR=6
Bands\6\Name=17m
Bands\6\Start=18068000
Bands\6\End=18168000
Bands\6\Range=22
Bands\6\Num=19
Bands\6\BSR=2
Bands\6\Name=80m
Bands\6\Start=3500000
Bands\6\End=4000000
Bands\6\Range=6
Bands\6\MemoryGroup=-1
Bands\7\Num=15
Bands\7\BSR=5
Bands\7\Name=20m
Bands\7\Start=14000000
Bands\7\End=14350000
Bands\7\Range=20
Bands\7\Num=17
Bands\7\BSR=3
Bands\7\Name=40m
Bands\7\Start=7000000
Bands\7\End=7300000
Bands\7\Range=11
Bands\7\MemoryGroup=-1
Bands\8\Num=16
Bands\8\BSR=4
@ -400,50 +412,50 @@ Bands\8\Start=10100000
Bands\8\End=10150000
Bands\8\Range=15
Bands\8\MemoryGroup=-1
Bands\9\Num=17
Bands\9\BSR=3
Bands\9\Name=40m
Bands\9\Start=7000000
Bands\9\End=7300000
Bands\9\Range=11
Bands\9\Num=15
Bands\9\BSR=5
Bands\9\Name=20m
Bands\9\Start=14000000
Bands\9\End=14350000
Bands\9\Range=20
Bands\9\MemoryGroup=-1
Bands\10\Num=18
Bands\10\BSR=0
Bands\10\Name=60m
Bands\10\Start=5250000
Bands\10\End=5450000
Bands\10\Range=0
Bands\10\Num=14
Bands\10\BSR=6
Bands\10\Name=17m
Bands\10\Start=18068000
Bands\10\End=18168000
Bands\10\Range=22
Bands\10\MemoryGroup=-1
Bands\11\Num=19
Bands\11\BSR=2
Bands\11\Name=80m
Bands\11\Start=3500000
Bands\11\End=4000000
Bands\11\Range=6
Bands\11\Num=13
Bands\11\BSR=7
Bands\11\Name=15m
Bands\11\Start=21000000
Bands\11\End=21450000
Bands\11\Range=26
Bands\11\MemoryGroup=-1
Bands\12\Num=20
Bands\12\BSR=1
Bands\12\Name=160m
Bands\12\Start=1800000
Bands\12\End=2000000
Bands\12\Range=2
Bands\12\Num=12
Bands\12\BSR=8
Bands\12\Name=12m
Bands\12\Start=24890000
Bands\12\End=24990000
Bands\12\Range=30
Bands\12\MemoryGroup=-1
Bands\13\Num=21
Bands\13\BSR=0
Bands\13\Name=630m
Bands\13\Start=493000
Bands\13\End=595000
Bands\13\Range=8
Bands\13\Num=11
Bands\13\BSR=9
Bands\13\Name=10m
Bands\13\Start=28000000
Bands\13\End=29700000
Bands\13\Range=45
Bands\13\MemoryGroup=-1
Bands\14\Num=22
Bands\14\BSR=0
Bands\14\Name=2200m
Bands\14\Start=135000
Bands\14\End=138000
Bands\14\Range=0
Bands\14\Num=10
Bands\14\BSR=16
Bands\14\Name=6m
Bands\14\Start=50000000
Bands\14\End=54000000
Bands\14\Range=60
Bands\14\MemoryGroup=-1
Bands\15\Num=23
Bands\15\BSR=11
Bands\15\BSR=17
Bands\15\Name=Gen
Bands\15\Start=10000
Bands\15\End=30000000

Plik diff jest za duży Load Diff

Wyświetl plik

@ -380,7 +380,7 @@ Commands\89\Max=45
Commands\90\Type=Data Mode Filter
Commands\90\String=\\x1a\\x06
Commands\90\Min=0
Commands\90\Max=1
Commands\90\Max=0
Commands\91\Type=Satellite Memory
Commands\91\String=\\x1a\\x07
Commands\91\Min=0
@ -425,83 +425,91 @@ Commands\101\Type=GPS Position
Commands\101\String=\\x23\\x00
Commands\101\Min=0
Commands\101\Max=0
Commands\102\Type=Main/Sub Freq
Commands\102\String=\\x25
Commands\102\Type=Selected Freq
Commands\102\String=\\x25\\x00
Commands\102\Min=0
Commands\102\Max=1
Commands\103\Type=Main/Sub Mode
Commands\103\String=\\x26
Commands\102\Max=0
Commands\103\Type=Unselected Freq
Commands\103\String=\\x25\\x01
Commands\103\Min=0
Commands\103\Max=1
Commands\104\Type=Scope Wave Data
Commands\104\String=\\x27\\x00
Commands\103\Max=0
Commands\104\Type=Selected Mode
Commands\104\String=\\x26\\x00
Commands\104\Min=0
Commands\104\Max=1
Commands\105\Type=Scope On/Off
Commands\105\String=\\x27\\x10
Commands\104\Max=0
Commands\105\Type=Unselected Mode
Commands\105\String=\\x26\\x01
Commands\105\Min=0
Commands\105\Max=1
Commands\106\Type=Scope Data Output
Commands\106\String=\\x27\\x11
Commands\105\Max=0
Commands\106\Type=Scope Wave Data
Commands\106\String=\\x27\\x00
Commands\106\Min=0
Commands\106\Max=1
Commands\107\Type=Scope Main/Sub
Commands\107\String=\\x27\\x12
Commands\107\Type=Scope On/Off
Commands\107\String=\\x27\\x10
Commands\107\Min=0
Commands\107\Max=1
Commands\108\Type=Scope Center Fixed
Commands\108\String=\\x27\\x14
Commands\108\Type=Scope Data Output
Commands\108\String=\\x27\\x11
Commands\108\Min=0
Commands\108\Max=1
Commands\109\Type=Scope Center Span
Commands\109\String=\\x27\\x15
Commands\109\Type=Scope Main/Sub
Commands\109\String=\\x27\\x12
Commands\109\Min=0
Commands\109\Max=7
Commands\110\Type=Scope Edge Number
Commands\110\String=\\x27\\x16
Commands\110\Min=1
Commands\110\Max=4
Commands\111\Type=Scope Hold
Commands\111\String=\\x27\\x17
Commands\109\Max=1
Commands\110\Type=Scope Center Fixed
Commands\110\String=\\x27\\x14
Commands\110\Min=0
Commands\110\Max=1
Commands\111\Type=Scope Center Span
Commands\111\String=\\x27\\x15
Commands\111\Min=0
Commands\111\Max=1
Commands\112\Type=Scope Ref
Commands\112\String=\\x27\\x19
Commands\112\Min=-30
Commands\112\Max=10
Commands\113\Type=Scope Speed
Commands\113\String=\\x27\\x1a
Commands\111\Max=7
Commands\112\Type=Scope Edge Number
Commands\112\String=\\x27\\x16
Commands\112\Min=1
Commands\112\Max=4
Commands\113\Type=Scope Hold
Commands\113\String=\\x27\\x17
Commands\113\Min=0
Commands\113\Max=2
Commands\114\Type=Scope During TX
Commands\114\String=\\x27\\x1b
Commands\114\Min=0
Commands\114\Max=1
Commands\115\Type=Scope Center Type
Commands\115\String=\\x27\\x1c
Commands\113\Max=1
Commands\114\Type=Scope Ref
Commands\114\String=\\x27\\x19
Commands\114\Min=-30
Commands\114\Max=10
Commands\115\Type=Scope Speed
Commands\115\String=\\x27\\x1a
Commands\115\Min=0
Commands\115\Max=2
Commands\116\Type=Scope VBW
Commands\116\String=\\x27\\x1d
Commands\116\Type=Scope During TX
Commands\116\String=\\x27\\x1b
Commands\116\Min=0
Commands\116\Max=1
Commands\117\Type=Scope Fixed Freq
Commands\117\String=\\x27\\x1e
Commands\117\Min=1
Commands\117\Max=12
Commands\118\Type=Voice TX
Commands\118\String=\\x28\\x00
Commands\117\Type=Scope Center Type
Commands\117\String=\\x27\\x1c
Commands\117\Min=0
Commands\117\Max=2
Commands\118\Type=Scope VBW
Commands\118\String=\\x27\\x1d
Commands\118\Min=0
Commands\118\Max=8
Commands\119\Type=Command Error FA
Commands\119\String=\\xfa
Commands\119\Min=0
Commands\119\Max=0
Commands\120\Type=Command OK FB
Commands\120\String=\\xfb
Commands\118\Max=1
Commands\119\Type=Scope Fixed Freq
Commands\119\String=\\x27\\x1e
Commands\119\Min=1
Commands\119\Max=12
Commands\120\Type=Voice TX
Commands\120\String=\\x28\\x00
Commands\120\Min=0
Commands\120\Max=0
Commands\size=120
Commands\120\Max=8
Commands\121\Type=Command Error FA
Commands\121\String=\\xfa
Commands\121\Min=0
Commands\121\Max=0
Commands\122\Type=Command OK FB
Commands\122\String=\\xfb
Commands\122\Min=0
Commands\122\Max=0
Commands\size=122
Spans\1\Num=0
Spans\1\Name=±2.5 KHz
Spans\1\Freq=2500
@ -528,16 +536,22 @@ Spans\8\Name=±500 KHz
Spans\8\Freq=500000
Spans\size=8
Inputs\1\Num=0
Inputs\1\Reg=0
Inputs\1\Name=MIC
Inputs\2\Num=1
Inputs\2\Reg=0
Inputs\2\Name=ACC
Inputs\3\Num=2
Inputs\3\Reg=0
Inputs\3\Name=M/A
Inputs\4\Num=3
Inputs\4\Reg=0
Inputs\4\Name=USB
Inputs\5\Num=4
Inputs\5\Reg=0
Inputs\5\Name=M/U
Inputs\6\Num=5
Inputs\6\Reg=0
Inputs\6\Name=LAN
Inputs\size=6
Bands\1\Num=6
@ -595,16 +609,16 @@ Modes\8\Reg=8
Modes\8\Name=RTTY-R
Modes\8\BW=1
Modes\9\Num=12
Modes\9\Reg=17
Modes\9\Reg=23
Modes\9\Name=DV
Modes\9\BW=0
Modes\10\Num=14
Modes\10\Reg=22
Modes\10\Reg=34
Modes\10\Name=DD
Modes\10\BW=0
Modes\size=10
Attenuators\1\dB=0
Attenuators\2\dB=10
Attenuators\2\dB=16
Attenuators\size=2
Preamps\1\Num=0
Preamps\1\Name=INT/EXT OFF
@ -629,7 +643,7 @@ Tuning%20Steps\4\Num=2
Tuning%20Steps\4\Name=500 Hz
Tuning%20Steps\4\Hz=500
Tuning%20Steps\5\Num=3
Tuning%20Steps\5\Name=1 KHz
Tuning%20Steps\5\Name=1 Khz
Tuning%20Steps\5\Hz=1000
Tuning%20Steps\6\Num=0
Tuning%20Steps\6\Name=2.5 KHz
@ -661,11 +675,11 @@ Tuning%20Steps\14\Hz=20000
Tuning%20Steps\15\Num=9
Tuning%20Steps\15\Name=25 KHz
Tuning%20Steps\15\Hz=25000
Tuning%20Steps\16\Num=10
Tuning%20Steps\16\Num=16
Tuning%20Steps\16\Name=50 KHz
Tuning%20Steps\16\Hz=50000
Tuning%20Steps\17\Num=11
Tuning%20Steps\17\Name=100 Khz
Tuning%20Steps\17\Num=17
Tuning%20Steps\17\Name=100 KHz
Tuning%20Steps\17\Hz=100000
Tuning%20Steps\18\Num=0
Tuning%20Steps\18\Name=250 KHz

Plik diff jest za duży Load Diff

Wyświetl plik

@ -58,26 +58,26 @@ void transceiverAdjustments::on_IFShiftSlider_valueChanged(int value)
}
else
{
unsigned char inner = ui->TPBFInnerSlider->value();
unsigned char outer = ui->TPBFOuterSlider->value();
unsigned char inner = ui->PBTInnerSlider->value();
unsigned char outer = ui->PBTOuterSlider->value();
int shift = value - previousIFShift;
inner = qMax( 0, qMin(255,int (inner + shift)) );
outer = qMax( 0, qMin(255,int (outer + shift)) );
ui->TPBFInnerSlider->setValue(inner);
ui->TPBFOuterSlider->setValue(outer);
ui->PBTInnerSlider->setValue(inner);
ui->PBTOuterSlider->setValue(outer);
previousIFShift = value;
}
}
void transceiverAdjustments::on_TPBFInnerSlider_valueChanged(int value)
void transceiverAdjustments::on_PBTInnerSlider_valueChanged(int value)
{
emit setTPBFInner(value);
emit setPBTInner(value);
}
void transceiverAdjustments::on_TPBFOuterSlider_valueChanged(int value)
void transceiverAdjustments::on_PBTOuterSlider_valueChanged(int value)
{
emit setTPBFOuter(value);
emit setPBTOuter(value);
}
void transceiverAdjustments::setRig(rigCapabilities rig)
@ -88,11 +88,11 @@ void transceiverAdjustments::setRig(rigCapabilities rig)
//ui->IFShiftSlider->setVisible(rigCaps.hasIFShift);
//ui->IFShiftLabel->setVisible(rigCaps.hasIFShift);
ui->TPBFInnerSlider->setVisible(rigCaps.commands.contains(funcPBTInner));
ui->TPBFInnerLabel->setVisible(rigCaps.commands.contains(funcPBTInner));
ui->PBTInnerSlider->setVisible(rigCaps.commands.contains(funcPBTInner));
ui->PBTInnerLabel->setVisible(rigCaps.commands.contains(funcPBTInner));
ui->TPBFOuterSlider->setVisible(rigCaps.commands.contains(funcPBTOuter));
ui->TPBFOuterLabel->setVisible(rigCaps.commands.contains(funcPBTOuter));
ui->PBTOuterSlider->setVisible(rigCaps.commands.contains(funcPBTOuter));
ui->PBTOuterLabel->setVisible(rigCaps.commands.contains(funcPBTOuter));
haveRigCaps = true;
}
@ -105,18 +105,18 @@ void transceiverAdjustments::updateIFShift(unsigned char level)
ui->IFShiftSlider->blockSignals(false);
}
void transceiverAdjustments::updateTPBFInner(unsigned char level)
void transceiverAdjustments::updatePBTInner(unsigned char level)
{
ui->TPBFInnerSlider->blockSignals(true);
ui->TPBFInnerSlider->setValue(level);
ui->TPBFInnerSlider->blockSignals(false);
ui->PBTInnerSlider->blockSignals(true);
ui->PBTInnerSlider->setValue(level);
ui->PBTInnerSlider->blockSignals(false);
}
void transceiverAdjustments::updateTPBFOuter(unsigned char level)
void transceiverAdjustments::updatePBTOuter(unsigned char level)
{
ui->TPBFOuterSlider->blockSignals(true);
ui->TPBFOuterSlider->setValue(level);
ui->TPBFOuterSlider->blockSignals(false);
ui->PBTOuterSlider->blockSignals(true);
ui->PBTOuterSlider->setValue(level);
ui->PBTOuterSlider->blockSignals(false);
}
void transceiverAdjustments::updatePassband(quint16 passbandHz)
@ -137,8 +137,8 @@ void transceiverAdjustments::updatePassband(quint16 passbandHz)
void transceiverAdjustments::on_resetPBTbtn_clicked()
{
ui->TPBFInnerSlider->setValue(128);
ui->TPBFOuterSlider->setValue(128);
ui->PBTInnerSlider->setValue(128);
ui->PBTOuterSlider->setValue(128);
ui->IFShiftSlider->blockSignals(true);
ui->IFShiftSlider->setValue(128);
ui->IFShiftSlider->blockSignals(false);

Wyświetl plik

@ -26,24 +26,24 @@ public:
signals:
void setIFShift(unsigned char level);
void setTPBFInner(unsigned char level);
void setTPBFOuter(unsigned char level);
void setPBTInner(unsigned char level);
void setPBTOuter(unsigned char level);
void setPassband(quint16 passbandHz);
public slots:
void setRig(rigCapabilities rig);
void updateIFShift(unsigned char level);
void updateTPBFInner(unsigned char level);
void updateTPBFOuter(unsigned char level);
void updatePBTInner(unsigned char level);
void updatePBTOuter(unsigned char level);
void updatePassband(quint16 passbandHz);
private slots:
void on_IFShiftSlider_valueChanged(int value);
void on_TPBFInnerSlider_valueChanged(int value);
void on_PBTInnerSlider_valueChanged(int value);
void on_TPBFOuterSlider_valueChanged(int value);
void on_PBTOuterSlider_valueChanged(int value);
void on_resetPBTbtn_clicked();

Wyświetl plik

@ -184,7 +184,7 @@
<number>0</number>
</property>
<item>
<widget class="QLabel" name="TPBFOuterLabel">
<widget class="QLabel" name="PBTOuterLabel">
<property name="minimumSize">
<size>
<width>70</width>
@ -203,7 +203,7 @@
</widget>
</item>
<item>
<widget class="QSlider" name="TPBFOuterSlider">
<widget class="QSlider" name="PBTOuterSlider">
<property name="minimumSize">
<size>
<width>230</width>
@ -235,7 +235,7 @@
<number>0</number>
</property>
<item>
<widget class="QLabel" name="TPBFInnerLabel">
<widget class="QLabel" name="PBTInnerLabel">
<property name="minimumSize">
<size>
<width>70</width>
@ -254,7 +254,7 @@
</widget>
</item>
<item>
<widget class="QSlider" name="TPBFInnerSlider">
<widget class="QSlider" name="PBTInnerSlider">
<property name="minimumSize">
<size>
<width>230</width>

Wyświetl plik

@ -680,14 +680,14 @@ void usbController::runTimer()
qDebug(logUsbControl()) << QString("On Button event for button %0: %1").arg(but->num).arg(but->onCommand->text);
if (but->onCommand->command == cmdPageUp)
emit changePage(dev, dev->currentPage+1);
else if (but->onCommand->command == cmdPageDown)
else if (but->onCommand->command == funcPageDown)
emit changePage(dev, dev->currentPage-1);
else if (but->onCommand->command == cmdLCDSpectrum)
dev->lcd = cmdLCDSpectrum;
else if (but->onCommand->command == cmdLCDWaterfall)
dev->lcd = cmdLCDWaterfall;
else if (but->onCommand->command == cmdLCDNothing) {
dev->lcd = cmdLCDNothing;
else if (but->onCommand->command == funcLCDSpectrum)
dev->lcd = funcLCDSpectrum;
else if (but->onCommand->command == funcLCDWaterfall)
dev->lcd = funcLCDWaterfall;
else if (but->onCommand->command == funcLCDNothing) {
dev->lcd = funcLCDNothing;
QTimer::singleShot(0, this, [=]() { sendRequest(dev,usbFeatureType::featureColor,i,"",Q_NULLPTR, &dev->color); });
}else {
emit button(but->onCommand);
@ -701,16 +701,16 @@ void usbController::runTimer()
else if ((but->toggle && but->isOn) && ((tempButtons >> i & 1) && !(dev->buttons >> i & 1)))
{
qDebug(logUsbControl()) << QString("Off Button (toggle) event for button %0: %1").arg(but->num).arg(but->onCommand->text);
if (but->offCommand->command == cmdPageUp)
if (but->offCommand->command == funcPageUp)
emit changePage(dev, dev->currentPage+1);
else if (but->offCommand->command == cmdPageDown)
else if (but->offCommand->command == funcPageDown)
emit changePage(dev, dev->currentPage-1);
else if (but->offCommand->command == cmdLCDSpectrum)
dev->lcd = cmdLCDSpectrum;
else if (but->offCommand->command == cmdLCDWaterfall)
dev->lcd = cmdLCDWaterfall;
else if (but->offCommand->command == cmdLCDNothing) {
dev->lcd = cmdLCDNothing;
else if (but->offCommand->command == funcLCDSpectrum)
dev->lcd = funcLCDSpectrum;
else if (but->offCommand->command == funcLCDWaterfall)
dev->lcd = funcLCDWaterfall;
else if (but->offCommand->command == funcLCDNothing) {
dev->lcd = funcLCDNothing;
QTimer::singleShot(0, this, [=]() { sendRequest(dev,usbFeatureType::featureColor,i,"",Q_NULLPTR, &dev->color); });
} else {
emit button(but->offCommand);
@ -720,13 +720,13 @@ void usbController::runTimer()
}
else if ((!but->toggle && but->isOn) && ((dev->buttons >> i & 1) && !(tempButtons >> i & 1)))
{
if (but->offCommand->command == cmdLCDSpectrum)
dev->lcd = cmdLCDSpectrum;
else if (but->offCommand->command == cmdLCDWaterfall)
dev->lcd = cmdLCDWaterfall;
else if (but->offCommand->command == cmdLCDNothing) {
if (but->offCommand->command == funcLCDSpectrum)
dev->lcd = funcLCDSpectrum;
else if (but->offCommand->command == funcLCDWaterfall)
dev->lcd = funcLCDWaterfall;
else if (but->offCommand->command == funcLCDNothing) {
QTimer::singleShot(0, this, [=]() { sendRequest(dev,usbFeatureType::featureColor,i,"",Q_NULLPTR, &dev->color); });
dev->lcd = cmdLCDNothing;
dev->lcd = funcLCDNothing;
} else
{
qDebug(logUsbControl()) << QString("Off Button event for button %0: %1").arg(but->num).arg(but->offCommand->text);
@ -1585,103 +1585,105 @@ void usbController::loadCommands()
int num = 0;
// Important commands at the top!
commands.append(COMMAND(num++, "None", commandAny, cmdNone, (quint8)0x0));
commands.append(COMMAND(num++, "PTT On", commandButton, cmdSetPTT, cmdGetPTT, (quint8)0x1));
commands.append(COMMAND(num++, "PTT Off", commandButton, cmdSetPTT, cmdGetPTT, (quint8)0x0));
commands.append(COMMAND(num++, "VFOA", commandKnob, cmdSetFreq, cmdGetFreq, (quint8)0x0));
commands.append(COMMAND(num++, "VFOB", commandKnob, cmdSetFreq, cmdGetFreq, (quint8)0x1));
commands.append(COMMAND(num++, "Freq Down", commandButton, cmdSetFreq, cmdGetFreq, (int)-1));
commands.append(COMMAND(num++, "Freq Up", commandButton, cmdSetFreq, cmdGetFreq, (int)1));
commands.append(COMMAND(num++, "PTT Off", commandButton, cmdSetPTT, cmdGetPTT, (quint8)0x0));
commands.append(COMMAND(num++, "PTT Toggle", commandButton, cmdPTTToggle, cmdGetPTT, (quint8)0x0));
commands.append(COMMAND(num++, "Span/Step", commandKnob, cmdSeparator, (quint8)0x0));
commands.append(COMMAND(num++, "Tune", commandButton, cmdStartATU, (quint8)0x0));
commands.append(COMMAND(num++, "Span/Step", commandButton, cmdSeparator, (quint8)0x0));
commands.append(COMMAND(num++, "Step+", commandButton, cmdSetStepUp, (quint8)0x0));
commands.append(COMMAND(num++, "Step-", commandButton, cmdSetStepDown, (quint8)0x0));
commands.append(COMMAND(num++, "Span+", commandButton, cmdSetSpanUp, (quint8)0x0));
commands.append(COMMAND(num++, "Span-", commandButton, cmdSetSpanDown, (quint8)0x0));
commands.append(COMMAND(num++, "Modes", commandButton, cmdSeparator, (quint8)0x0));
commands.append(COMMAND(num++, "Mode+", commandButton, cmdSetModeUp, (quint8)0x0));
commands.append(COMMAND(num++, "Mode-", commandButton, cmdSetModeDown, (quint8)0x0));
commands.append(COMMAND(num++, "Mode LSB", commandButton, cmdSetMode, modeLSB));
commands.append(COMMAND(num++, "Mode USB", commandButton, cmdSetMode, modeUSB));
commands.append(COMMAND(num++, "Mode LSBD", commandButton, cmdSetMode, modeLSB_D));
commands.append(COMMAND(num++, "Mode USBD", commandButton, cmdSetMode, modeUSB_D));
commands.append(COMMAND(num++, "Mode CW", commandButton, cmdSetMode, modeCW));
commands.append(COMMAND(num++, "Mode CWR", commandButton, cmdSetMode, modeCW_R));
commands.append(COMMAND(num++, "Mode FM", commandButton, cmdSetMode, modeFM));
commands.append(COMMAND(num++, "Mode AM", commandButton, cmdSetMode, modeAM));
commands.append(COMMAND(num++, "Mode RTTY", commandButton, cmdSetMode, modeRTTY));
commands.append(COMMAND(num++, "Mode RTTYR", commandButton, cmdSetMode, modeRTTY_R));
commands.append(COMMAND(num++, "Mode PSK", commandButton, cmdSetMode, modePSK));
commands.append(COMMAND(num++, "Mode PSKR", commandButton, cmdSetMode, modePSK_R));
commands.append(COMMAND(num++, "Mode DV", commandButton, cmdSetMode, modeDV));
commands.append(COMMAND(num++, "Mode DD", commandButton, cmdSetMode, modeDD));
commands.append(COMMAND(num++, "Bands", commandButton, cmdSeparator, (quint8)0x0));
commands.append(COMMAND(num++, "Band+", commandButton, cmdSetBandUp, (quint8)0x0));
commands.append(COMMAND(num++, "Band-", commandButton, cmdSetBandDown, (quint8)0x0));
commands.append(COMMAND(num++, "Band 23cm", commandButton, cmdGetBandStackReg, band23cm));
commands.append(COMMAND(num++, "Band 70cm", commandButton, cmdGetBandStackReg, band70cm));
commands.append(COMMAND(num++, "Band 2m", commandButton, cmdGetBandStackReg, band2m));
commands.append(COMMAND(num++, "Band AIR", commandButton, cmdGetBandStackReg, bandAir));
commands.append(COMMAND(num++, "Band WFM", commandButton, cmdGetBandStackReg, bandWFM));
commands.append(COMMAND(num++, "Band 4m", commandButton, cmdGetBandStackReg, band4m));
commands.append(COMMAND(num++, "Band 6m", commandButton, cmdGetBandStackReg, band6m));
commands.append(COMMAND(num++, "Band 10m", commandButton, cmdGetBandStackReg, band10m));
commands.append(COMMAND(num++, "Band 12m", commandButton, cmdGetBandStackReg, band12m));
commands.append(COMMAND(num++, "Band 15m", commandButton, cmdGetBandStackReg, band15m));
commands.append(COMMAND(num++, "Band 17m", commandButton, cmdGetBandStackReg, band17m));
commands.append(COMMAND(num++, "Band 20m", commandButton, cmdGetBandStackReg, band20m));
commands.append(COMMAND(num++, "Band 30m", commandButton, cmdGetBandStackReg, band30m));
commands.append(COMMAND(num++, "Band 40m", commandButton, cmdGetBandStackReg, band40m));
commands.append(COMMAND(num++, "Band 60m", commandButton, cmdGetBandStackReg, band60m));
commands.append(COMMAND(num++, "Band 80m", commandButton, cmdGetBandStackReg, band80m));
commands.append(COMMAND(num++, "Band 160m", commandButton, cmdGetBandStackReg, band160m));
commands.append(COMMAND(num++, "Band 630m", commandButton, cmdGetBandStackReg, band630m));
commands.append(COMMAND(num++, "Band 2200m", commandButton, cmdGetBandStackReg, band2200m));
commands.append(COMMAND(num++, "Band GEN", commandButton, cmdGetBandStackReg, bandGen));
commands.append(COMMAND(num++, "NB/NR", commandButton, cmdSeparator, (quint8)0x0));
commands.append(COMMAND(num++, "NR On", commandButton, cmdSetNR, cmdGetNR, (quint8)0x01));
commands.append(COMMAND(num++, "NR Off", commandButton, cmdSetNR, cmdGetNR, (quint8)0x0));
commands.append(COMMAND(num++, "NB On", commandButton, cmdSetNB, cmdGetNB, (quint8)0x01));
commands.append(COMMAND(num++, "NB Off", commandButton, cmdSetNB, cmdGetNB, (quint8)0x0));
commands.append(COMMAND(num++, "Moni On", commandButton, cmdSetMonitor, cmdGetMonitor, (quint8)0x01));
commands.append(COMMAND(num++, "Moni Off", commandButton, cmdSetMonitor, cmdGetMonitor, (quint8)0x0));
commands.append(COMMAND(num++, "Comp On", commandButton, cmdSetComp, cmdGetComp, (quint8)0x01));
commands.append(COMMAND(num++, "Comp Off", commandButton, cmdSetComp, cmdGetComp, (quint8)0x0));
commands.append(COMMAND(num++, "Vox On", commandButton, cmdSetVox, cmdGetVox, (quint8)0x01));
commands.append(COMMAND(num++, "Vox Off", commandButton, cmdSetVox, cmdGetVox, (quint8)0x0));
commands.append(COMMAND(num++, "Split", commandButton, cmdNone, (quint8)0x0));
commands.append(COMMAND(num++, "Split On", commandButton, cmdSetQuickSplit, cmdGetDuplexMode, (quint8)0x01));
commands.append(COMMAND(num++, "Split Off", commandButton, cmdSetQuickSplit, cmdGetDuplexMode, (quint8)0x0));
commands.append(COMMAND(num++, "Swap VFO", commandButton, cmdVFOSwap, (quint8)0x0));
commands.append(COMMAND(num++, "Scope", commandButton, cmdNone, (quint8)0x0));
commands.append(COMMAND(num++, "Spectrum", commandButton, cmdLCDSpectrum, (quint8)0x0));
commands.append(COMMAND(num++, "Waterfall", commandButton, cmdLCDWaterfall, (quint8)0x0));
commands.append(COMMAND(num++, "No Display", commandButton, cmdLCDNothing, (quint8)0x0));
commands.append(COMMAND(num++, "PTT On", commandButton, funcTransceiverStatus, funcTransceiverStatus, (quint8)0x1));
commands.append(COMMAND(num++, "PTT Off", commandButton, funcTransceiverStatus, funcTransceiverStatus, (quint8)0x0));
commands.append(COMMAND(num++, "VFOA", commandKnob, funcFreqSet, funcFreqSet, (quint8)0x0));
commands.append(COMMAND(num++, "VFOB", commandKnob, funcFreqSet, funcFreqSet, (quint8)0x1));
commands.append(COMMAND(num++, "Freq Down", commandButton, funcFreqSet, funcFreqSet, (int)-1));
commands.append(COMMAND(num++, "Freq Up", commandButton, funcFreqSet, funcFreqSet, (int)1));
commands.append(COMMAND(num++, "PTT Off", commandButton, funcTransceiverStatus, funcTransceiverStatus, (quint8)0x0));
commands.append(COMMAND(num++, "PTT Toggle", commandButton, funcTransceiverStatus, funcTransceiverStatus, (quint8)0x0));
commands.append(COMMAND(num++, "Span/Step", commandKnob, funcSeparator, (quint8)0x0));
commands.append(COMMAND(num++, "Tune", commandButton, funcTunerStatus, (quint8)0x0));
commands.append(COMMAND(num++, "Span/Step", commandButton, funcSeparator, (quint8)0x0));
commands.append(COMMAND(num++, "Step+", commandButton, funcTuningStep, 100));
commands.append(COMMAND(num++, "Step-", commandButton, funcTuningStep, -100));
commands.append(COMMAND(num++, "Span+", commandButton, funcScopeCenterSpan, 100));
commands.append(COMMAND(num++, "Span-", commandButton, funcScopeCenterSpan, -100));
commands.append(COMMAND(num++, "Modes", commandButton, funcSeparator, (quint8)0x0));
commands.append(COMMAND(num++, "Mode+", commandButton, funcModeSet, 100));
commands.append(COMMAND(num++, "Mode-", commandButton, funcModeSet, -100));
commands.append(COMMAND(num++, "Mode LSB", commandButton, funcModeSet, modeLSB));
commands.append(COMMAND(num++, "Mode USB", commandButton, funcModeSet, modeUSB));
commands.append(COMMAND(num++, "Mode LSBD", commandButton, funcModeSet, modeLSB_D));
commands.append(COMMAND(num++, "Mode USBD", commandButton, funcModeSet, modeUSB_D));
commands.append(COMMAND(num++, "Mode CW", commandButton, funcModeSet, modeCW));
commands.append(COMMAND(num++, "Mode CWR", commandButton, funcModeSet, modeCW_R));
commands.append(COMMAND(num++, "Mode FM", commandButton, funcModeSet, modeFM));
commands.append(COMMAND(num++, "Mode AM", commandButton, funcModeSet, modeAM));
commands.append(COMMAND(num++, "Mode RTTY", commandButton, funcModeSet, modeRTTY));
commands.append(COMMAND(num++, "Mode RTTYR", commandButton, funcModeSet, modeRTTY_R));
commands.append(COMMAND(num++, "Mode PSK", commandButton, funcModeSet, modePSK));
commands.append(COMMAND(num++, "Mode PSKR", commandButton, funcModeSet, modePSK_R));
commands.append(COMMAND(num++, "Mode DV", commandButton, funcModeSet, modeDV));
commands.append(COMMAND(num++, "Mode DD", commandButton, funcModeSet, modeDD));
commands.append(COMMAND(num++, "Bands", commandButton, funcSeparator, (quint8)0x0));
commands.append(COMMAND(num++, "Band+", commandButton, funcBandStackReg, 100));
commands.append(COMMAND(num++, "Band-", commandButton, funcBandStackReg, -100));
commands.append(COMMAND(num++, "Band 23cm", commandButton, funcBandStackReg, band23cm));
commands.append(COMMAND(num++, "Band 70cm", commandButton, funcBandStackReg, band70cm));
commands.append(COMMAND(num++, "Band 2m", commandButton, funcBandStackReg, band2m));
commands.append(COMMAND(num++, "Band AIR", commandButton, funcBandStackReg, bandAir));
commands.append(COMMAND(num++, "Band WFM", commandButton, funcBandStackReg, bandWFM));
commands.append(COMMAND(num++, "Band 4m", commandButton, funcBandStackReg, band4m));
commands.append(COMMAND(num++, "Band 6m", commandButton, funcBandStackReg, band6m));
commands.append(COMMAND(num++, "Band 10m", commandButton, funcBandStackReg, band10m));
commands.append(COMMAND(num++, "Band 12m", commandButton, funcBandStackReg, band12m));
commands.append(COMMAND(num++, "Band 15m", commandButton, funcBandStackReg, band15m));
commands.append(COMMAND(num++, "Band 17m", commandButton, funcBandStackReg, band17m));
commands.append(COMMAND(num++, "Band 20m", commandButton, funcBandStackReg, band20m));
commands.append(COMMAND(num++, "Band 30m", commandButton, funcBandStackReg, band30m));
commands.append(COMMAND(num++, "Band 40m", commandButton, funcBandStackReg, band40m));
commands.append(COMMAND(num++, "Band 60m", commandButton, funcBandStackReg, band60m));
commands.append(COMMAND(num++, "Band 80m", commandButton, funcBandStackReg, band80m));
commands.append(COMMAND(num++, "Band 160m", commandButton, funcBandStackReg, band160m));
commands.append(COMMAND(num++, "Band 630m", commandButton, funcBandStackReg, band630m));
commands.append(COMMAND(num++, "Band 2200m", commandButton, funcBandStackReg, band2200m));
commands.append(COMMAND(num++, "Band GEN", commandButton, funcBandStackReg, bandGen));
commands.append(COMMAND(num++, "NB/NR", commandButton, funcSeparator, (quint8)0x0));
commands.append(COMMAND(num++, "NR On", commandButton, funcNoiseReduction, cmdGetNR, (quint8)0x01));
commands.append(COMMAND(num++, "NR Off", commandButton, funcNoiseReduction, cmdGetNR, (quint8)0x0));
commands.append(COMMAND(num++, "NB On", commandButton, funcNoiseBlanker, cmdGetNB, (quint8)0x01));
commands.append(COMMAND(num++, "NB Off", commandButton, funcNoiseBlanker, cmdGetNB, (quint8)0x0));
commands.append(COMMAND(num++, "Moni On", commandButton, funcMonitor, cmdGetMonitor, (quint8)0x01));
commands.append(COMMAND(num++, "Moni Off", commandButton, funcMonitor, cmdGetMonitor, (quint8)0x0));
commands.append(COMMAND(num++, "Comp On", commandButton, funcCompressor, cmdGetComp, (quint8)0x01));
commands.append(COMMAND(num++, "Comp Off", commandButton, funcCompressor, cmdGetComp, (quint8)0x0));
commands.append(COMMAND(num++, "Vox On", commandButton, funcVox, cmdGetVox, (quint8)0x01));
commands.append(COMMAND(num++, "Vox Off", commandButton, funcVox, cmdGetVox, (quint8)0x0));
commands.append(COMMAND(num++, "Split", commandButton, funcSeparator, (quint8)0x0));
commands.append(COMMAND(num++, "Split On", commandButton, funcQuickSplit, cmdGetDuplexMode, (quint8)0x01));
commands.append(COMMAND(num++, "Split Off", commandButton, funcQuickSplit, cmdGetDuplexMode, (quint8)0x0));
commands.append(COMMAND(num++, "Swap VFO AB", commandButton, funcVFOSwapAB, (quint8)0x0));
commands.append(COMMAND(num++, "Swap VFO MS", commandButton, funcVFOSwapMS, (quint8)0x0));
commands.append(COMMAND(num++, "Scope", commandButton, funcSeparator, (quint8)0x0));
commands.append(COMMAND(num++, "Spectrum", commandButton, funcLCDSpectrum, (quint8)0x0));
commands.append(COMMAND(num++, "Waterfall", commandButton, funcLCDWaterfall, (quint8)0x0));
commands.append(COMMAND(num++, "No Display", commandButton, funcLCDNothing, (quint8)0x0));
commands.append(COMMAND(num++, "Pages", commandButton, cmdSeparator, (quint8)0x0));
commands.append(COMMAND(num++, "Page Down", commandButton, cmdPageDown, (quint8)0x0));
commands.append(COMMAND(num++, "Page Up", commandButton, cmdPageUp, (quint8)0x0));
commands.append(COMMAND(num++, "Page Down", commandButton, funcPageDown, (quint8)0x0));
commands.append(COMMAND(num++, "Page Up", commandButton, funcPageUp, (quint8)0x0));
commands.append(COMMAND(num++, "AF Gain", commandKnob, cmdSetAfGain, cmdGetAfGain, (quint8)0xff));
commands.append(COMMAND(num++, "RF Gain", commandKnob, cmdSetRxRfGain, cmdGetRxGain, (quint8)0xff));
commands.append(COMMAND(num++, "TX Power", commandKnob, cmdSetTxPower, cmdGetTxPower, (quint8)0xff));
commands.append(COMMAND(num++, "Mic Gain", commandKnob, cmdSetMicGain, cmdGetMicGain, (quint8)0xff));
commands.append(COMMAND(num++, "Mod Level", commandKnob, cmdSetModLevel, cmdNone, (quint8)0xff));
commands.append(COMMAND(num++, "Squelch", commandKnob, cmdSetSql, cmdGetSql, (quint8)0xff));
commands.append(COMMAND(num++, "Monitor", commandKnob, cmdSetMonitorGain, cmdGetMonitorGain, (quint8)0xff));
commands.append(COMMAND(num++, "Compressor", commandKnob, cmdSetCompLevel, cmdGetCompLevel, (quint8)0xff));
commands.append(COMMAND(num++, "Vox Level", commandKnob, cmdSetVoxGain, cmdGetVoxGain, (quint8)0xff));
commands.append(COMMAND(num++, "Anti-Vox", commandKnob, cmdSetAntiVoxGain, cmdGetAntiVoxGain, (quint8)0xff));
commands.append(COMMAND(num++, "NB Level", commandKnob, cmdSetNBLevel, cmdGetNBLevel, (quint8)0xff));
commands.append(COMMAND(num++, "NR Level", commandKnob, cmdSetNRLevel, cmdGetNRLevel, (quint8)0xff));
commands.append(COMMAND(num++, "AF Gain", commandKnob, funcAfGain, funcAfGain, (quint8)0xff));
commands.append(COMMAND(num++, "RF Gain", commandKnob, funcRfGain, funcRfGain, (quint8)0xff));
commands.append(COMMAND(num++, "TX Power", commandKnob, funcRFPower, funcRFPower, (quint8)0xff));
commands.append(COMMAND(num++, "Mic Gain", commandKnob, funcMicGain, funcMicGain, (quint8)0xff));
commands.append(COMMAND(num++, "Mod Level", commandKnob, funcDATAOffMod, funcDATAOffMod, (quint8)0xff));
commands.append(COMMAND(num++, "Data Mod", commandKnob, funcDATAOffMod, funcDATAOffMod, (quint8)0xff));
commands.append(COMMAND(num++, "Squelch", commandKnob, funcSquelch, funcSquelch, (quint8)0xff));
commands.append(COMMAND(num++, "Monitor", commandKnob, funcMonitorGain, funcMonitorGain, (quint8)0xff));
commands.append(COMMAND(num++, "Compressor", commandKnob, funcCompressorLevel, funcCompressorLevel, (quint8)0xff));
commands.append(COMMAND(num++, "Vox Level", commandKnob, funcVoxGain, funcVoxGain, (quint8)0xff));
commands.append(COMMAND(num++, "Anti-Vox", commandKnob, funcAntiVoxGain, funcAntiVoxGain, (quint8)0xff));
commands.append(COMMAND(num++, "NB Level", commandKnob, funcNBLevel, funcNBLevel, (quint8)0xff));
commands.append(COMMAND(num++, "NR Level", commandKnob, funcNRLevel, funcNRLevel, (quint8)0xff));
commands.append(COMMAND(num++, "Span/Step", commandKnob, cmdSeparator, (quint8)0x0));
commands.append(COMMAND(num++, "IF Shift", commandKnob, cmdSetIFShift, cmdGetIFShift, (quint8)0xff));
commands.append(COMMAND(num++, "In PBT", commandKnob, cmdSetTPBFInner, cmdGetTPBFInner, (quint8)0xff));
commands.append(COMMAND(num++, "Out PBT", commandKnob, cmdSetTPBFOuter, cmdGetTPBFOuter, (quint8)0xff));
commands.append(COMMAND(num++, "IF Shift", commandKnob, funcIFShift, funcIFShift, (quint8)0xff));
commands.append(COMMAND(num++, "In PBT", commandKnob, funcPBTInner, funcPBTInner, (quint8)0xff));
commands.append(COMMAND(num++, "Out PBT", commandKnob, funcPBTOuter, funcPBTOuter, (quint8)0xff));
commands.append(COMMAND(num++, "Span/Step", commandKnob, cmdSeparator, (quint8)0x0));
commands.append(COMMAND(num++, "CW Pitch", commandKnob, cmdSetCwPitch, cmdGetCwPitch, (quint8)0xff));
commands.append(COMMAND(num++, "CW Speed", commandKnob, cmdSetKeySpeed, cmdGetKeySpeed, (quint8)0xff));
commands.append(COMMAND(num++, "CW Pitch", commandKnob, funcCwPitch, funcCwPitch, (quint8)0xff));
commands.append(COMMAND(num++, "CW Speed", commandKnob, funcKeySpeed, funcKeySpeed, (quint8)0xff));
}
@ -1951,7 +1953,7 @@ void usbController::restoreController(USBDEVICE* dev, QString file)
dev->speed = (quint8)settings->value("Speed", 2).toInt();
dev->timeout = (quint8)settings->value("Timeout", 30).toInt();
dev->color.setNamedColor(settings->value("Color", QColor(Qt::white).name(QColor::HexArgb)).toString());
dev->lcd = (cmds)settings->value("LCD",0).toInt();
dev->lcd = (funcs)settings->value("LCD",0).toInt();
qInfo(logUsbControl()) << "Restore of" << dev->product << "path" << dev->path << "from" << file;

Wyświetl plik

@ -108,7 +108,7 @@ struct USBDEVICE {
quint8 brightness=2;
quint8 orientation=0;
QColor color=Qt::darkGray;
cmds lcd=cmdNone;
funcs lcd=funcNone;
hid_device* handle = NULL;
QString product = "";
@ -154,8 +154,8 @@ struct COMMAND {
int index=0;
QString text;
usbCommandType cmdType = commandButton;
int command=0;
int getCommand=0;
int command=funcNone;
int getCommand=funcNone;
unsigned char suffix=0x0;
int value=0;
availableBands band=bandGen;

2365
wfmain.cpp

Plik diff jest za duży Load Diff

143
wfmain.h
Wyświetl plik

@ -48,6 +48,7 @@
#include "cluster.h"
#include "audiodevices.h"
#include "sidebandchooser.h"
#include "debugWindow.h"
#include <qcustomplot.h>
#include <qserialportinfo.h>
@ -171,8 +172,8 @@ signals:
void getAfGain();
void getSql();
void getIfShift();
void getTPBFInner();
void getTPBFOuter();
void getPBTInner();
void getPBTOuter();
void getTxPower();
void getMicGain();
void getSpectrumRefLevel();
@ -202,12 +203,12 @@ signals:
void setAfGain(unsigned char level);
void setSql(unsigned char level);
void setIFShift(unsigned char level);
void setTPBFInner(unsigned char level);
void setTPBFOuter(unsigned char level);
void setPBTInner(unsigned char level);
void setPBTOuter(unsigned char level);
void setIFShiftWindow(unsigned char level);
void setTPBFInnerWindow(unsigned char level);
void setTPBFOuterWindow(unsigned char level);
void setPBTInnerWindow(unsigned char level);
void setPBTOuterWindow(unsigned char level);
void setMicGain(unsigned char);
void setCompLevel(unsigned char);
void setTxPower(unsigned char);
@ -300,7 +301,11 @@ signals:
void setFrequencyRange(double low, double high);
void sendControllerRequest(USBDEVICE* dev, usbFeatureType request, int val=0, QString text="", QImage* img=Q_NULLPTR, QColor* color=Q_NULLPTR);
// Signals to forward incoming data onto other areas
void haveMemory(memoryType mem);
private slots:
void receiveValue(cacheItem val);
void setAudioDevicesUI();
void updateSizes(int tabIndex);
void shortcutF1();
@ -345,54 +350,48 @@ private slots:
void receiveCommReady();
void receiveFreq(freqt);
void receiveMode(unsigned char mode, unsigned char filter);
void receiveMode(mode_info mode);
void receiveSpectrumData(QByteArray spectrum, double startFreq, double endFreq);
void receiveSpectrumMode(spectrumMode spectMode);
void receiveSpectrumSpan(freqt freqspan, bool isSub);
void handleScopeOutOfRange(bool outOfRange);
void receivePTTstatus(bool pttOn);
void receiveDataModeStatus(bool dataOn);
void receiveDataModeStatus(unsigned char data, unsigned char filter);
void receiveBandStackReg(freqt f, char mode, char filter, bool dataOn); // freq, mode, (filter,) datamode
void receiveRITStatus(bool ritEnabled);
void receiveRITValue(int ritValHz);
void receiveModInput(inputTypes input, bool dataOn);
void receiveModInput(rigInput input, unsigned char data);
//void receiveDuplexMode(duplexMode dm);
void receivePassband(quint16 pass);
void receiveMonitorGain(unsigned char pass);
void receiveNBLevel(unsigned char pass);
void receiveNRLevel(unsigned char pass);
void receiveCwPitch(unsigned char pitch);
void receiveTPBFInner(unsigned char level);
void receiveTPBFOuter(unsigned char level);
void receivePBTInner(unsigned char level);
void receivePBTOuter(unsigned char level);
void receiveVox(bool en);
void receiveMonitor(bool en);
void receiveComp(bool en);
void receiveNB(bool en);
void receiveNR(bool en);
void receiveTuningStep(unsigned char step);
void receiveMemory(memoryType mem);
// Levels:
void receiveRfGain(unsigned char level);
void receiveAfGain(unsigned char level);
void receiveSql(unsigned char level);
void receiveIFShift(unsigned char level);
void receiveTBPFInner(unsigned char level);
void receiveTBPFOuter(unsigned char level);
// 'change' from data in transceiver controls window:
void changeIFShift(unsigned char level);
void changeTPBFInner(unsigned char level);
void changeTPBFOuter(unsigned char level);
void changePBTInner(unsigned char level);
void changePBTOuter(unsigned char level);
void receiveTxPower(unsigned char power);
void receiveMicGain(unsigned char gain);
void receiveCompLevel(unsigned char compLevel);
void receiveVoxGain(unsigned char voxGain);
void receiveAntiVoxGain(unsigned char antiVoxGain);
void receiveSpectrumRefLevel(int level);
void receiveACCGain(unsigned char level, unsigned char ab);
void receiveUSBGain(unsigned char level);
void receiveLANGain(unsigned char level);
// Meters:
void receiveMeter(meterKind meter, unsigned char level);
@ -419,7 +418,6 @@ private slots:
void handleWFDoubleClick(QMouseEvent *);
void handleWFScroll(QWheelEvent *);
void handlePlotScroll(QWheelEvent *);
void sendRadioCommandLoop();
void showStatusBarText(QString text);
void receiveBaudRate(quint32 baudrate);
void radioSelection(QList<radio_cap_packet> radios);
@ -518,6 +516,10 @@ private slots:
void on_afGainSlider_valueChanged(int value);
void on_monitorSlider_valueChanged(int value);
void on_monitorCheck_clicked(bool checked);
void on_tuneNowBtn_clicked();
void on_tuneEnableChk_clicked(bool checked);
@ -572,7 +574,7 @@ private slots:
void on_modeFilterCombo_activated(int index);
void on_dataModeBtn_toggled(bool checked);
void on_datamodeCombo_activated(int index);
void on_transmitBtn_clicked();
@ -1003,43 +1005,6 @@ private:
unsigned char setModeVal=0;
unsigned char setFilterVal=0;
std::deque <commandtype> delayedCmdQue; // rapid commands from user interaction
std::deque <cmds> periodicCmdQueue; // rapid que for metering
std::deque <cmds> slowPollCmdQueue; // slow, regular checking for UI sync
std::deque <cmds> rapidPollCmdQueue; // rapid regular polling for non-meter actions
void doCmd(cmds cmd);
void doCmd(commandtype cmddata);
bool rapidPollCmdQueueEnabled = false;
void issueCmd(cmds cmd, freqt f);
void issueCmd(cmds cmd, mode_info m);
void issueCmd(cmds cmd, vfo_t v);
void issueCmd(cmds cmd, rptrTone_t t);
void issueCmd(cmds cmd, rptrAccessData_t rd);
void issueCmd(cmds cmd, timekind t);
void issueCmd(cmds cmd, datekind d);
void issueCmd(cmds cmd, int i);
void issueCmd(cmds cmd, unsigned char c);
void issueCmd(cmds cmd, char c);
void issueCmd(cmds cmd, bool b);
void issueCmd(cmds cmd, quint16 c);
void issueCmd(cmds cmd, quint32 c);
void issueCmd(cmds cmd, qint16 c);
void issueCmd(cmds cmd, QString s);
void issueCmd(cmds cmd, memoryType s);
// These commands pop_front and remove similar commands:
void issueCmdUniquePriority(cmds cmd, bool b);
void issueCmdUniquePriority(cmds cmd, unsigned char c);
void issueCmdUniquePriority(cmds cmd, char c);
void issueCmdUniquePriority(cmds cmd, freqt f);
void issueCmdUniquePriority(cmds cmd, quint16 c);
void issueCmdUniquePriority(cmds cmd, qint16 c);
void removeSimilarCommand(cmds cmd);
qint64 lastFreqCmdTime_ms;
int pCmdNum = 0;
@ -1091,6 +1056,11 @@ private:
void setColorButtonOperations(QColor *colorStore, QLineEdit *e, QLedLabel *d);
void setColorLineEditOperations(QColor *colorStore, QLineEdit *e, QLedLabel *d);
void calculateTimingParameters();
void initPeriodicCommands();
void changePollTiming(int timing_ms, bool setUI=false);
void detachSettingsTab();
void reattachSettingsTab();
void prepareSettingsWindow();
@ -1108,9 +1078,6 @@ private:
void setUIFreq();
void changeTxBtn();
void issueDelayedCommand(cmds cmd);
void issueDelayedCommandPriority(cmds cmd);
void issueDelayedCommandUnique(cmds cmd);
void changeSliderQuietly(QSlider *slider, int value);
void statusFromSliderPercent(QString name, int percentValue);
void statusFromSliderRaw(QString name, int rawValue);
@ -1119,29 +1086,13 @@ private:
void processChangingCurrentModLevel(unsigned char level);
void changeModLabel(inputTypes source);
void changeModLabel(inputTypes source, bool updateLevel);
void changeModLabel(rigInput source);
void changeModLabel(rigInput source, bool updateLevel);
void changeModLabelAndSlider(inputTypes source);
void initPeriodicCommands();
// Fast command queue for S-Meter:
void insertPeriodicCommand(cmds cmd, unsigned char priority);
void insertPeriodicCommandUnique(cmds cmd);
void removePeriodicCommand(cmds cmd);
// Fast command queue for other functions:
void insertPeriodicRapidCmd(cmds cmd);
void insertPeriodicRapidCmdUnique(cmds cmd);
void removePeriodicRapidCmd(cmds cmd);
void insertSlowPeriodicCommand(cmds cmd, unsigned char priority);
void removeSlowPeriodicCommand(cmds cmd);
void calculateTimingParameters();
void changePollTiming(int timing_ms, bool setUI=false);
void changeModLabelAndSlider(rigInput source);
void changeMode(mode_kind mode);
void changeMode(mode_kind mode, bool dataOn);
void changeMode(mode_kind mode, unsigned char data);
void connectionHandler(bool connect);
@ -1153,22 +1104,19 @@ private:
QHash<unsigned char,QString> rigList;
rigCapabilities rigCaps;
inputTypes currentModSrc = inputUnknown;
inputTypes currentModDataSrc = inputUnknown;
mode_kind currentMode = modeUSB;
mode_info currentModeInfo;
rigInput currentModDataOffSrc = rigInput(inputUnknown);
rigInput currentModData1Src = rigInput(inputUnknown);
rigInput currentModData2Src = rigInput(inputUnknown);
rigInput currentModData3Src = rigInput(inputUnknown);
mode_kind currentMode = modeUnknown;
mode_info currentModeInfo = mode_info();
bool haveRigCaps;
bool amTransmitting = false;
bool splitModeEnabled = false;
bool usingDataMode = false;
unsigned char micGain=0;
unsigned char accAGain=0;
unsigned char accBGain=0;
unsigned char accGain=0;
unsigned char usbGain=0;
unsigned char lanGain=0;
unsigned char usingDataMode = 99; // Set to invalid value initially
// Widgets and Special Windows:
calibrationWindow *cal = Q_NULLPTR;
@ -1211,8 +1159,8 @@ private:
rigstate* rigState = Q_NULLPTR;
passbandActions passbandAction = passbandStatic;
double TPBFInner = 0.0;
double TPBFOuter = 0.0;
double PBTInner = 0.0;
double PBTOuter = 0.0;
double passbandCenterFrequency = 0.0;
double pbtDefault = 0.0;
quint16 cwPitch = 600;
@ -1240,7 +1188,6 @@ private:
QSocketNotifier* uDevNotifier = nullptr;
#endif
#endif
memories* memWindow = Q_NULLPTR;
dxClusterClient* cluster = Q_NULLPTR;
QThread* clusterThread = Q_NULLPTR;
@ -1290,6 +1237,8 @@ Q_DECLARE_METATYPE(enum usbFeatureType)
Q_DECLARE_METATYPE(enum cmds)
Q_DECLARE_METATYPE(rigTypedef)
Q_DECLARE_METATYPE(struct memoryType)
Q_DECLARE_METATYPE(struct antennaInfo)
Q_DECLARE_METATYPE(struct scopeData)
//void (*wfmain::logthistext)(QString text) = NULL;

477
wfmain.ui
Wyświetl plik

@ -6,8 +6,8 @@
<rect>
<x>0</x>
<y>0</y>
<width>1042</width>
<height>660</height>
<width>1063</width>
<height>569</height>
</rect>
</property>
<property name="windowTitle">
@ -489,15 +489,15 @@
</widget>
</item>
<item>
<widget class="QCheckBox" name="dataModeBtn">
<property name="accessibleName">
<string>Data Mode Enable</string>
</property>
<widget class="QLabel" name="label_55">
<property name="text">
<string>Data</string>
<string>Data:</string>
</property>
</widget>
</item>
<item>
<widget class="QComboBox" name="datamodeCombo"/>
</item>
<item>
<widget class="QLabel" name="label_22">
<property name="text">
@ -535,18 +535,40 @@
<property name="rightMargin">
<number>0</number>
</property>
<item>
<spacer name="verticalSpacer_17">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Fixed</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>0</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QSlider" name="rfGainSlider">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>70</height>
<height>100</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>80</height>
<height>16777215</height>
</size>
</property>
<property name="toolTip">
@ -579,6 +601,22 @@
</property>
</widget>
</item>
<item>
<spacer name="verticalSpacer_8">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Fixed</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
<item>
@ -586,18 +624,40 @@
<property name="rightMargin">
<number>0</number>
</property>
<item>
<spacer name="verticalSpacer_18">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Fixed</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QSlider" name="afGainSlider">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>70</height>
<height>100</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>80</height>
<height>16777215</height>
</size>
</property>
<property name="toolTip">
@ -630,6 +690,22 @@
</property>
</widget>
</item>
<item>
<spacer name="verticalSpacer_9">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Fixed</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
<item>
@ -637,18 +713,40 @@
<property name="leftMargin">
<number>0</number>
</property>
<item>
<spacer name="verticalSpacer_19">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Fixed</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QSlider" name="sqlSlider">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>70</height>
<height>100</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>80</height>
<height>16777215</height>
</size>
</property>
<property name="toolTip">
@ -681,6 +779,22 @@
</property>
</widget>
</item>
<item>
<spacer name="verticalSpacer_10">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Fixed</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
<item>
@ -688,18 +802,40 @@
<property name="rightMargin">
<number>0</number>
</property>
<item>
<spacer name="verticalSpacer_20">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Fixed</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QSlider" name="txPowerSlider">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>70</height>
<height>100</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>80</height>
<height>16777215</height>
</size>
</property>
<property name="toolTip">
@ -732,6 +868,22 @@
</property>
</widget>
</item>
<item>
<spacer name="verticalSpacer_11">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Fixed</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
<item>
@ -739,18 +891,40 @@
<property name="leftMargin">
<number>0</number>
</property>
<item>
<spacer name="verticalSpacer_21">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Fixed</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QSlider" name="micGainSlider">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>70</height>
<height>100</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>80</height>
<height>16777215</height>
</size>
</property>
<property name="toolTip">
@ -783,6 +957,22 @@
</property>
</widget>
</item>
<item>
<spacer name="verticalSpacer_12">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Fixed</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
<item>
@ -790,18 +980,40 @@
<property name="leftMargin">
<number>0</number>
</property>
<item>
<spacer name="verticalSpacer_22">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Fixed</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QSlider" name="scopeRefLevelSlider">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>70</height>
<height>100</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>80</height>
<height>16777215</height>
</size>
</property>
<property name="toolTip">
@ -843,6 +1055,22 @@
</property>
</widget>
</item>
<item>
<spacer name="verticalSpacer_13">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Fixed</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
<item>
@ -850,18 +1078,40 @@
<property name="rightMargin">
<number>0</number>
</property>
<item>
<spacer name="verticalSpacer_23">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Fixed</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QSlider" name="wfLengthSlider">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>70</height>
<height>100</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>80</height>
<height>16777215</height>
</size>
</property>
<property name="toolTip">
@ -897,6 +1147,22 @@
</property>
</widget>
</item>
<item>
<spacer name="verticalSpacer_14">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Fixed</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
<item>
@ -907,18 +1173,40 @@
<property name="topMargin">
<number>0</number>
</property>
<item>
<spacer name="verticalSpacer_24">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Fixed</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QSlider" name="topLevelSlider">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>70</height>
<height>100</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>80</height>
<height>16777215</height>
</size>
</property>
<property name="toolTip">
@ -954,6 +1242,22 @@
</property>
</widget>
</item>
<item>
<spacer name="verticalSpacer_15">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Fixed</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
<item>
@ -970,18 +1274,40 @@
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<spacer name="verticalSpacer_25">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Fixed</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QSlider" name="botLevelSlider">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>70</height>
<height>100</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>80</height>
<height>16777215</height>
</size>
</property>
<property name="toolTip">
@ -1008,6 +1334,99 @@
</property>
</widget>
</item>
<item>
<spacer name="verticalSpacer_16">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Fixed</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
<item>
<layout class="QVBoxLayout" name="verticalLayout_29">
<item>
<spacer name="verticalSpacer_26">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Fixed</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QSlider" name="monitorSlider">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>100</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>16777215</height>
</size>
</property>
<property name="toolTip">
<string>Set the rado monitor level</string>
</property>
<property name="maximum">
<number>255</number>
</property>
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="label_54">
<property name="maximumSize">
<size>
<width>16777215</width>
<height>15</height>
</size>
</property>
<property name="text">
<string>Mon</string>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="monitorCheck">
<property name="minimumSize">
<size>
<width>25</width>
<height>25</height>
</size>
</property>
<property name="text">
<string/>
</property>
</widget>
</item>
</layout>
</item>
<item>
@ -2258,7 +2677,7 @@
<item>
<widget class="QStackedWidget" name="settingsStack">
<property name="currentIndex">
<number>0</number>
<number>2</number>
</property>
<widget class="QWidget" name="radioAccess">
<layout class="QVBoxLayout" name="verticalLayout_21">
@ -3483,7 +3902,7 @@ Please use the &quot;Radio Server&quot; page to select server audio</string>
<rect>
<x>0</x>
<y>0</y>
<width>579</width>
<width>824</width>
<height>254</height>
</rect>
</property>
@ -5562,7 +5981,7 @@ Please use the &quot;Radio Server&quot; page to select server audio</string>
<rect>
<x>0</x>
<y>0</y>
<width>1042</width>
<width>1063</width>
<height>22</height>
</rect>
</property>
@ -5590,8 +6009,8 @@ Please use the &quot;Radio Server&quot; page to select server audio</string>
<resources/>
<connections/>
<buttongroups>
<buttongroup name="underlayButtonGroup"/>
<buttongroup name="buttonGroup"/>
<buttongroup name="pollingButtonGroup"/>
<buttongroup name="underlayButtonGroup"/>
</buttongroups>
</ui>

Wyświetl plik

@ -233,6 +233,7 @@ SOURCES += main.cpp\
cachingqueue.cpp \
cwsender.cpp \
cwsidetone.cpp \
debugwindow.cpp \
loggingwindow.cpp \
memories.cpp \
rigcreator.cpp \
@ -276,6 +277,7 @@ HEADERS += wfmain.h \
commhandler.h \
cwsender.h \
cwsidetone.h \
debugwindow.h \
loggingwindow.h \
memories.h \
prefs.h \
@ -325,6 +327,7 @@ HEADERS += wfmain.h \
FORMS += wfmain.ui \
calibrationwindow.ui \
cwsender.ui \
debugwindow.ui \
loggingwindow.ui \
memories.ui \
rigcreator.ui \

Wyświetl plik

@ -117,17 +117,38 @@ struct rptrAccessData_t {
};
struct mode_info {
mode_info() {};
mode_info () {};
mode_info(mode_kind mk, quint8 reg, QString name, bool bw): mk(mk), reg(reg), name(name),bw(bw) {};
mode_kind mk;
unsigned char reg;
unsigned char filter;
mode_kind mk=modeUnknown;
unsigned char reg=99;
unsigned char filter=1; // Default filter is always 1
selVFO_t VFO = activeVFO;
bool data = false;
QString name;
bool bw; // Can the bandwidth of the current filter be changed?
unsigned char data = 0;
QString name="";
bool bw=false; // Can the bandwidth of the current filter be changed?
quint16 pass = 0;
};
struct antennaInfo {
quint8 antenna;
bool rx;
};
struct scopeData {
bool valid=false;
QByteArray data;
bool mainSub;
uchar mode;
bool oor;
double startFreq;
double endFreq;
};
struct toneInfo {
quint16 tone=0;
bool tinv=false;
bool rinv=false;
};
enum breakIn_t {
brkinOff = 0x00,
@ -154,41 +175,41 @@ struct timekind {
};
enum cmds {
cmdNone, cmdGetRigID, cmdGetRigCIV, cmdGetFreq, cmdGetFreqB, cmdSetFreq, cmdGetMode, cmdSetMode,
cmdGetDataMode, cmdSetModeFilter, cmdSetDataModeOn, cmdSetDataModeOff, cmdGetRitEnabled, cmdGetRitValue,
cmdSpecOn, cmdSpecOff, cmdDispEnable, cmdDispDisable, cmdGetRxGain, cmdSetRxRfGain, cmdGetAfGain, cmdSetAfGain,
cmdGetSql, cmdSetSql, cmdGetIFShift, cmdSetIFShift, cmdGetNRLevel, cmdSetNRLevel, cmdGetTPBFInner, cmdSetTPBFInner,
cmdGetTPBFOuter, cmdSetTPBFOuter, cmdGetPassband, cmdSetPassband, cmdGetNBLevel, cmdSetNBLevel,
cmdGetCompLevel, cmdSetCompLevel, cmdGetTuningStep, cmdSetTuningStep,
cmdGetMonitorGain, cmdSetMonitorGain, cmdGetVoxGain, cmdSetVoxGain, cmdGetAntiVoxGain, cmdSetAntiVoxGain,
cmdGetCwPitch, cmdGetPskTone, cmdGetRttyMark, cmdSetCwPitch, cmdSetPskTone, cmdSetRttyMark,
cmdGetVox,cmdSetVox, cmdGetMonitor,cmdSetMonitor, cmdGetComp, cmdSetComp, cmdGetNB, cmdSetNB, cmdGetNR, cmdSetNR,
cmdSetATU, cmdStartATU, cmdGetATUStatus,
cmdGetSpectrumMode, cmdGetSpectrumSpan, cmdScopeCenterMode, cmdScopeFixedMode,
cmdGetPTT, cmdSetPTT,cmdPTTToggle,
cmdGetTxPower, cmdSetTxPower, cmdGetMicGain, cmdSetMicGain, cmdGetModLevel, cmdSetModLevel,
cmdGetSpectrumRefLevel, cmdGetDuplexMode, cmdGetModInput, cmdGetModDataInput,
cmdGetCurrentModLevel, cmdStartRegularPolling, cmdStopRegularPolling, cmdQueNormalSpeed,
cmdGetVdMeter, cmdGetIdMeter, cmdGetSMeter, cmdGetCenterMeter, cmdGetPowerMeter,
cmdGetSWRMeter, cmdGetALCMeter, cmdGetCompMeter, cmdGetTxRxMeter,
cmdGetTone, cmdGetTSQL, cmdGetToneEnabled, cmdGetTSQLEnabled, cmdGetDTCS,
cmdSetToneEnabled, cmdSetTSQLEnabled, cmdGetRptAccessMode, cmdSetTone, cmdSetTSQL,
cmdSetRptAccessMode, cmdSetRptDuplexOffset, cmdGetRptDuplexOffset,
cmdSelVFO, cmdVFOSwap, cmdVFOEqualAB, cmdVFOEqualMS, cmdSetQuickSplit,
cmdGetPreamp, cmdGetAttenuator, cmdGetAntenna,
cmdGetBandStackReg, cmdGetKeySpeed, cmdSetKeySpeed, cmdGetBreakMode, cmdSetBreakMode, cmdSendCW, cmdStopCW, cmdGetDashRatio, cmdSetDashRatio,
cmdSetTime, cmdSetDate, cmdSetUTCOffset,
cmdGetTransceive, cmdSetTransceive,cmdGetPower,cmdSetPower,
cmdGetMemory, cmdGetSatMemory, cmdSetMemory, cmdClearMemory,cmdRecallMemory, cmdSetVFOMode, cmdSetMemoryMode, cmdSetSatelliteMode,
// Below Only used for USB Controller at the moment.
cmdSetBandUp, cmdSetBandDown, cmdSetModeUp, cmdSetModeDown, cmdSetStepUp, cmdSetStepDown,
cmdSetSpanUp, cmdSetSpanDown, cmdIFFilterUp, cmdIFFilterDown, cmdPageDown, cmdPageUp,
cmdLCDWaterfall, cmdLCDSpectrum, cmdLCDNothing, cmdSeparator
cmdNone, cmdGetRigID, cmdGetRigCIV, cmdGetFreq, cmdGetFreqB, cmdSetFreq, cmdGetMode, cmdSetMode,
cmdGetDataMode, cmdSetModeFilter, cmdSetDataModeOn, cmdSetDataModeOff, cmdGetRitEnabled, cmdGetRitValue,
cmdSpecOn, cmdSpecOff, cmdDispEnable, cmdDispDisable, cmdGetRxGain, cmdSetRxRfGain, cmdGetAfGain, cmdSetAfGain,
cmdGetSql, cmdSetSql, cmdGetIFShift, cmdSetIFShift, cmdGetNRLevel, cmdSetNRLevel, cmdGetPBTInner, cmdSetPBTInner,
cmdGetPBTOuter, cmdSetPBTOuter, cmdGetPassband, cmdSetPassband, cmdGetNBLevel, cmdSetNBLevel,
cmdGetCompLevel, cmdSetCompLevel, cmdGetTuningStep, cmdSetTuningStep,
cmdGetMonitorGain, cmdSetMonitorGain, cmdGetVoxGain, cmdSetVoxGain, cmdGetAntiVoxGain, cmdSetAntiVoxGain,
cmdGetCwPitch, cmdGetPskTone, cmdGetRttyMark, cmdSetCwPitch, cmdSetPskTone, cmdSetRttyMark,
cmdGetVox,cmdSetVox, cmdGetMonitor,cmdSetMonitor, cmdGetComp, cmdSetComp, cmdGetNB, cmdSetNB, cmdGetNR, cmdSetNR,
cmdSetATU, cmdStartATU, cmdGetATUStatus,
cmdGetSpectrumMode, cmdGetSpectrumSpan, cmdScopeCenterMode, cmdScopeFixedMode,
cmdGetPTT, cmdSetPTT,cmdPTTToggle,
cmdGetTxPower, cmdSetTxPower, cmdGetMicGain, cmdSetMicGain, cmdGetModLevel, cmdSetModLevel,
cmdGetSpectrumRefLevel, cmdGetDuplexMode, cmdGetModInput, cmdGetModDataInput,
cmdGetCurrentModLevel, cmdStartRegularPolling, cmdStopRegularPolling, cmdQueNormalSpeed,
cmdGetVdMeter, cmdGetIdMeter, cmdGetSMeter, cmdGetCenterMeter, cmdGetPowerMeter,
cmdGetSWRMeter, cmdGetALCMeter, cmdGetCompMeter, cmdGetTxRxMeter,
cmdGetTone, cmdGetTSQL, cmdGetToneEnabled, cmdGetTSQLEnabled, cmdGetDTCS,
cmdSetToneEnabled, cmdSetTSQLEnabled, cmdGetRptAccessMode, cmdSetTone, cmdSetTSQL,
cmdSetRptAccessMode, cmdSetRptDuplexOffset, cmdGetRptDuplexOffset,
cmdSelVFO, cmdVFOSwap, cmdVFOEqualAB, cmdVFOEqualMS, cmdSetQuickSplit,
cmdGetPreamp, cmdGetAttenuator, cmdGetAntenna,
cmdGetBandStackReg, cmdGetKeySpeed, cmdSetKeySpeed, cmdGetBreakMode, cmdSetBreakMode, cmdSendCW, cmdStopCW, cmdGetDashRatio, cmdSetDashRatio,
cmdSetTime, cmdSetDate, cmdSetUTCOffset,
cmdGetTransceive, cmdSetTransceive,cmdGetPower,cmdSetPower,
cmdGetMemory, cmdGetSatMemory, cmdSetMemory, cmdClearMemory,cmdRecallMemory, cmdSetVFOMode, cmdSetMemoryMode, cmdSetSatelliteMode,
// Below Only used for USB Controller at the moment.
cmdSetBandUp, cmdSetBandDown, cmdSetModeUp, cmdSetModeDown, cmdSetStepUp, cmdSetStepDown,
cmdSetSpanUp, cmdSetSpanDown, cmdIFFilterUp, cmdIFFilterDown, cmdPageDown, cmdPageUp,
cmdLCDWaterfall, cmdLCDSpectrum, cmdLCDNothing, cmdSeparator
};
// funcs and funcString MUST match exactly (and NUMFUNCS must be updated)
#define NUMFUNCS 188
#define NUMFUNCS 197
enum funcs { funcNone,
funcfreqTR, funcModeTR, funcBandEdgeFreq, funcFreqGet, funcModeGet, funcFreqSet, // \x00
@ -209,7 +230,7 @@ funcDSPIFFilter, funcNotchWidth, funcSSBBandwidth, funcMainSu
funcToneSquelchType, funcIPPlus, funcSendCW, funcPowerControl, funcTransceiverId, funcFilterWidth,
funcMemoryContents, funcBandStackReg, funcMemoryKeyer, funcIFFilterWidth, funcQuickDualWatch, funcQuickSplit,
funcAutoRepeater, funcTunerStatus, funcTransverter, funcTransverterOffset, funcLockFunction, funcREFAdjust,
funcREFAdjustFine, funcACC1ModLevel, funcACC2ModLevel, funcUSBModLevel, funcLANModLevel, funcDATAOffMod,
funcREFAdjustFine, funcACCAModLevel, funcACCBModLevel, funcUSBModLevel, funcLANModLevel, funcSPDIFModLevel, funcDATAOffMod,
funcDATA1Mod, funcDATA2Mod, funcDATA3Mod, funcCIVTransceive, funcTime, funcDate,
funcUTCOffset, funcCLOCK2, funcCLOCK2UTCOffset, funcCLOCK2Name, funcDashRatio, funcScanSpeed,
funcScanResume, funcRecorderMode, funcRecorderTX, funcRecorderRX, funcRecorderSplit, funcRecorderPTTAuto,
@ -217,14 +238,16 @@ funcRecorderPreRec, funcRXAntConnector, funcAntennaSelectMode, funcNBDept
funcVOXVoiceDelay, funcAPFType, funcAPFTypeLevel, funcPSKTone, funcRTTYMarkTone, funcDataModeWithFilter,
funcAFMute, funcToneFreq, funcTSQLFreq, funcDTCSCode, funcCSQLCode, funcTransceiverStatus,
funcXFCStatus, funcReadTXFreq, funcCIVOutput, funcReadTXFreqs, funcReadUserTXFreqs, funcUserTXBandEdgeFreq,
funcRITFreq, funcRitStatus, funcRitTXStatus, funcMainSubFreq, funcMainSubMode, funcScopeWaveData,
funcRITFreq, funcRitStatus, funcRitTXStatus, funcSelectedFreq, funcSelectedMode, funcUnselectedFreq,
funcUnselectedMode, funcScopeWaveData,
funcScopeOnOff, funcScopeDataOutput, funcScopeMainSub, funcScopeSingleDual, funcScopeCenterFixed, funcScopeCenterSpan,
funcScopeEdgeNumber, funcScopeHold, funcScopeRef, funcScopeSpeed, funcScopeDuringTX, funcScopeCenterType,
funcScopeVBW, funcScopeFixedFreq, funcScopeRBW, funcVoiceTX, funcMainSubPrefix, funcAFCSetting,
funcGPSTXMode, funcSatelliteMemory, funcGPSPosition, funcMemoryGroup, funcSelectVFO, funcFA,
funcGPSTXMode, funcSatelliteMemory, funcGPSPosition, funcMemoryGroup, funcSelectVFO, funcSeparator,
funcLCDWaterfall, funcLCDSpectrum, funcLCDNothing, funcPageUp, funcPageDown, funcFA,
funcFB
};
// Any changes to these strings WILL break rig definitions, add new ones to end. **Missing commas concatenate strings!**
static QString funcString[] { "None",
@ -246,19 +269,21 @@ static QString funcString[] { "None",
"Tone Squelch Type", "IP Plus Status", "Send CW", "Power Control", "Transceiver ID", "Filter Width",
"Memory Contents", "Band Stacking Reg", "Memory Keyer", "IF Filter Width", "Quick Dual Watch", "Quick Split",
"Auto Repeater Mode", "Tuner/ATU Status", "Transverter Function", "Transverter Offset", "Lock Function", "REF Adjust",
"REF Adjust Fine", "ACC1 Mod Level", "ACC2 Mod Level", "USB Mod Level", "LAN Mod Level", "Data Off Mod Input",
"REF Adjust Fine", "ACC1 Mod Level", "ACC2 Mod Level", "USB Mod Level", "LAN Mod Level", "SPDIF Mod Level", "Data Off Mod Input",
"DATA1 Mod Input", "DATA2 Mod Input", "DATA3 Mod Input", "CIV Transceive", "System Time", "System Date",
"UTC Offset", "CLOCK2 Setting", "CLOCK2 UTC Offset", "CLOCK 2 Name", "Dash Ratio", "Scanning Speed",
"Scanning Resume", "Recorder Mode", "Recorder TX", "Recorder RX", "Recorder Split", "Recorder PTT Auto",
"Recorder Pre Rec", "RX Ant Connector", "Antenna Select Mode", "NB Depth", "NB Width", "VOX Delay",
"VOX Voice Delay", "APF Type", "APF Type Level", "PSK Tone", "RTTY Mark Tone", "Data Mode Filter",
"AF Mute Status", "Tone Frequency", "TSQL Frequency", "DTCS Code/Polarity", "CSQL Code", "Transceiver Status",
"AF Mute Status", "Tone Frequency", "TSQL Frequency", "DTCS Code/Polarity", "CSQL Code", "Transceiver Status",
"XFC Status", "Read TX Freq", "CI-V Output", "Read TX Freqs", "Read User TX Freqs", "User TX Band Edge Freq",
"RIT Frequency", "RIT Status", "RIT TX Status", "Main/Sub Freq", "Main/Sub Mode", "Scope Wave Data",
"RIT Frequency", "RIT Status", "RIT TX Status", "Selected Freq", "Selected Mode", "Unselected Freq",
"Unselected Mode", "Scope Wave Data",
"Scope On/Off", "Scope Data Output", "Scope Main/Sub", "Scope Single/Dual", "Scope Center Fixed", "Scope Center Span",
"Scope Edge Number", "Scope Hold", "Scope Ref", "Scope Speed", "Scope During TX", "Scope Center Type",
"Scope VBW", "Scope Fixed Freq", "Scope RBW", "Voice TX", "Main/Sub Prefix", "AFC Function",
"GPS TX Mode", "Satellite Memory", "GPS Position", "Memory Group", "(int)Select VFO", "Command Error FA",
"GPS TX Mode", "Satellite Memory", "GPS Position", "Memory Group", "-Select VFO", "-Seperator",
"-LCD Waterfall", "-LCD Spectrum", "-LCD Nothing", "-Page Up", "-Page Down", "Command Error FA",
"Command OK FB"
};