/** * @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; }