File: kenwoodcommander.h

package info (click to toggle)
wfview 2.11-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 15,256 kB
  • sloc: cpp: 43,386; ansic: 3,196; sh: 32; xml: 29; makefile: 11
file content (126 lines) | stat: -rw-r--r-- 3,511 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
#ifndef KENWOODCOMMANDER_H
#define KENWOODCOMMANDER_H
#include "rigcommander.h"
#include "rtpaudio.h"
#include <QSerialPort>

#define audioLevelBufferSize (4)

// This file figures out what to send to the comm and also
// parses returns into useful things.

#define NUMTOASCII  48

class kenwoodCommander : public rigCommander
{
    Q_OBJECT

public:
    explicit kenwoodCommander(rigCommander* parent=nullptr);
    explicit kenwoodCommander(quint8 guid[GUIDLEN], rigCommander* parent = nullptr);
    ~kenwoodCommander();

public slots:
    void process() override;
    void commSetup(rigTypedef rigList, quint8 rigCivAddr, QString rigSerialPort, quint32 rigBaudRate, QString vsp, quint16 tcp, quint8 wf) override;
    void commSetup(rigTypedef rigList, quint8 rigCivAddr, udpPreferences prefs, audioSetup rxSetup, audioSetup txSetup, QString vsp, quint16 tcp) override;

    void lanConnected();
    void lanDisconnected();

    void closeComm() override;
    void setPTTType(pttType_t) override;

    // Power:
    void powerOn() override;
    void powerOff() override;


    // Rig ID and CIV:
    void setRigID(quint8 rigID) override;
    void setCIVAddr(quint8 civAddr) override;

    // UDP:
    void handleNewData(const QByteArray& data) override;
    void receiveBaudRate(quint32 baudrate) override;

    // Housekeeping:
    void receiveCommand(funcs func, QVariant value, uchar receiver) override;

    // Serial:
    void serialPortError(QSerialPort::SerialPortError err);
    void receiveDataFromRig();

    void parseData(QByteArray dataInput);

    void getTxLevels(quint16 amplitudePeak, quint16 amplitudeRMS ,quint16 latency, quint16 current, bool under, bool over);
    void getRxLevels(quint16 amplitudePeak, quint16 amplitudeRMS,quint16 latency,quint16 current, bool under, bool over);


signals:
    // All signals are defined in rigcommander.h as they should be common for all rig types.
    void initRtpAudio();
    void haveSetVolume(quint8 level);
    void haveNetworkError(errorType);
    void haveChangeLatency(quint16 value);
    void haveNetworkStatus(networkStatus);
    void haveNetworkAudioLevels(networkAudioLevels);

private:
    void commonSetup();
    void determineRigCaps();
    funcType getCommand(funcs func, QByteArray &payload, int value, uchar receiver=0);
    bool parseMemory(QByteArray data, QVector<memParserFormat>* memParser, memoryType* mem);

    mutable QMutex serialMutex;
    QIODevice *port=Q_NULLPTR;
    bool portConnected=false;
    bool isTransmitting = false;
    QByteArray lastSentCommand;

    pttyHandler* ptty = Q_NULLPTR;
    tcpServer* tcp = Q_NULLPTR;
    rtpAudio* rtp = Q_NULLPTR;
    QThread* rtpThread = Q_NULLPTR;

    QHash<quint8,rigInfo> rigList;
    quint8 rigCivAddr;
    QString vsp;
    quint16 tcpPort;
    quint8 wf;

    QString rigSerialPort;
    quint32 rigBaudRate;

    scopeData currentScope;
    bool loginRequired = false;
    bool audioStarted = false;

    bool network = false;

    QByteArray partial;

    connectionType_t connType = connectionUSB;

    bool aiModeEnabled=false;
    ushort scopeSplit=0;

    networkStatus status;

    quint8 audioLevelsTxPeak[audioLevelBufferSize];
    quint8 audioLevelsRxPeak[audioLevelBufferSize];

    quint8 audioLevelsTxRMS[audioLevelBufferSize];
    quint8 audioLevelsRxRMS[audioLevelBufferSize];

    quint8 audioLevelsTxPosition = 0;
    quint8 audioLevelsRxPosition = 0;

    quint8 findMean(quint8 *d);
    quint8 findMax(quint8 *d);
};




#endif // KENWOODCOMMANDER_H