This commit is contained in:
2026-04-13 22:06:52 +03:00
parent 14d983c840
commit dde80e5696
19 changed files with 1599 additions and 1107 deletions
@@ -0,0 +1,140 @@
/**
* @file cusdr_protocol2_profile.cpp
* @brief openHPSDR Protocol 2 board capability helpers
*/
#include "cusdr_protocol2_profile.h"
namespace {
static Protocol2BoardProfile makeDefaultProfile(int boardId) {
Protocol2BoardProfile profile;
profile.boardId = boardId;
profile.boardName = "Protocol2 SDR";
profile.adcCount = 1;
profile.defaultDdcCount = 2;
profile.dspClockHz = 122880000;
profile.phaseWords = true;
profile.hasAlex0 = true;
profile.hasAlex1 = false;
return profile;
}
}
Protocol2BoardProfile protocol2BoardProfile(int boardId) {
Protocol2BoardProfile profile = makeDefaultProfile(boardId);
switch (boardId) {
case 0:
profile.boardName = "ATLAS";
profile.adcCount = 4;
profile.defaultDdcCount = 4;
profile.dspClockHz = 122880000;
profile.phaseWords = false;
profile.hasAlex0 = true;
profile.hasAlex1 = false;
break;
case 1:
profile.boardName = "Hermes / ANAN-10/100";
profile.adcCount = 1;
profile.defaultDdcCount = 2;
profile.dspClockHz = 122880000;
profile.phaseWords = true;
profile.hasAlex0 = true;
profile.hasAlex1 = false;
break;
case 2:
profile.boardName = "Hermes / ANAN-10E/100B";
profile.adcCount = 1;
profile.defaultDdcCount = 2;
profile.dspClockHz = 122880000;
profile.phaseWords = true;
profile.hasAlex0 = false;
profile.hasAlex1 = false;
break;
case 3:
profile.boardName = "Angelia / ANAN-100D";
profile.adcCount = 2;
profile.defaultDdcCount = 4;
profile.dspClockHz = 122880000;
profile.phaseWords = true;
profile.hasAlex0 = true;
profile.hasAlex1 = false;
break;
case 4:
profile.boardName = "Orion / ANAN-200D";
profile.adcCount = 2;
profile.defaultDdcCount = 4;
profile.dspClockHz = 122880000;
profile.phaseWords = true;
profile.hasAlex0 = true;
profile.hasAlex1 = false;
break;
case 5:
profile.boardName = "Orion MkII / ANAN-7/8000DLE";
profile.adcCount = 2;
profile.defaultDdcCount = 4;
profile.dspClockHz = 122880000;
profile.phaseWords = true;
profile.hasAlex0 = true;
profile.hasAlex1 = true;
break;
case 6:
profile.boardName = "Hermes Lite";
profile.adcCount = 1;
profile.defaultDdcCount = 2;
profile.dspClockHz = 76800000;
profile.phaseWords = true;
profile.hasAlex0 = false;
profile.hasAlex1 = false;
break;
case 10:
profile.boardName = "Saturn / ANAN-G2";
profile.adcCount = 2;
profile.defaultDdcCount = 4;
profile.dspClockHz = 122880000;
profile.phaseWords = true;
profile.hasAlex0 = true;
profile.hasAlex1 = true;
break;
default:
break;
}
return profile;
}
QString protocol2DeviceSummary(const TNetworkDevicecard &device) {
QString summary = device.boardName;
if (device.protocolVersion > 0)
summary += QString(" P%1").arg(device.protocolVersion);
if (device.firmwareVersion > 0)
summary += QString(" FW %1.%2").arg(device.firmwareVersion / 10).arg(device.firmwareVersion % 10);
if (device.adcCount > 0 || device.ddcCount > 0)
summary += QString(" %1ADC/%2DDC").arg(device.adcCount).arg(device.ddcCount);
if (device.phaseWords)
summary += " phase";
if (device.hasAlex0 || device.hasAlex1)
summary += device.hasAlex1 ? " Alex0/1" : " Alex";
summary += QString(" (%1)").arg(device.ip_address.toString());
return summary;
}