mirror of
https://github.com/f4exb/sdrangel.git
synced 2024-12-23 10:05:46 -05:00
86 lines
2.0 KiB
C++
86 lines
2.0 KiB
C++
#ifndef SPY_SERVER_H
|
|
#define SPY_SERVER_H
|
|
|
|
#include <QtCore>
|
|
|
|
class SpyServerProtocol {
|
|
|
|
public:
|
|
|
|
static constexpr int ProtocolID = (2<<24) | 1700;
|
|
|
|
enum Command {
|
|
setStreamingMode = 0,
|
|
setStreamingEnabled = 1,
|
|
setGain = 2,
|
|
setIQFormat = 100,
|
|
setCenterFrequency = 101,
|
|
setIQDecimation = 102,
|
|
};
|
|
|
|
enum Message {
|
|
DeviceMessage = 0,
|
|
StateMessage = 1,
|
|
IQ8MMessage = 100,
|
|
IQ16Message = 101,
|
|
IQ24Message = 102,
|
|
IQ32Message = 103
|
|
};
|
|
|
|
struct Header {
|
|
quint32 m_id;
|
|
quint32 m_message;
|
|
quint32 m_unused1;
|
|
quint32 m_unused2;
|
|
quint32 m_size;
|
|
};
|
|
|
|
struct Device {
|
|
quint32 m_device;
|
|
quint32 m_serial;
|
|
quint32 m_sampleRate;
|
|
quint32 m_unused1;
|
|
quint32 m_decimationStages; // 8 for Airspy HF, 11 for Airspy, 9 for E4000/R828D/R820
|
|
quint32 m_unused2;
|
|
quint32 m_maxGainIndex; // 8 for Airspy HF, 21 for Airspy, 14 for E4000, 29 for R828D/R820
|
|
quint32 m_minFrequency;
|
|
quint32 m_maxFrequency;
|
|
quint32 m_sampleBits;
|
|
quint32 m_minDecimation; // Set when maximum_bandwidth is set in spyserver.config
|
|
quint32 m_unused3;
|
|
};
|
|
|
|
struct State {
|
|
quint32 m_controllable;
|
|
quint32 m_gain;
|
|
quint32 m_deviceCenterFrequency;
|
|
quint32 m_iqCenterFrequency;
|
|
quint32 m_unused1;
|
|
quint32 m_unused2;
|
|
quint32 m_unused3;
|
|
quint32 m_unused4;
|
|
quint32 m_unused5;
|
|
};
|
|
|
|
static void encodeUInt32(quint8 *p, quint32 data)
|
|
{
|
|
p[3] = (data >> 24) & 0xff;
|
|
p[2] = (data >> 16) & 0xff;
|
|
p[1] = (data >> 8) & 0xff;
|
|
p[0] = data & 0xff;
|
|
}
|
|
|
|
static quint32 extractUInt32(quint8 *p)
|
|
{
|
|
quint32 data;
|
|
data = (p[0] & 0xff)
|
|
| ((p[1] & 0xff) << 8)
|
|
| ((p[2] & 0xff) << 16)
|
|
| ((p[3] & 0xff) << 24);
|
|
return data;
|
|
}
|
|
|
|
};
|
|
|
|
#endif /* SPY_SERVER_H */
|