Files
cudaSDR/Source/NOTES_PROTOCOL2_RECEIVERS_THETIS.md
T
2026-04-14 22:06:31 +03:00

180 lines
5.8 KiB
Markdown

# Protocol 2 Receiver/DDC Notes from Thetis
Date: 2026-04-14
This note captures findings from two sources:
- local protocol documentation: `doc/openHPSDR Ethernet Protocol v4.3.docx`
- local Thetis source tree: `/home/vladimir/Документы/source/Thetis`
It is intended as a working note for future Protocol 2 receiver work, especially for the second receiver and Orion MkII / ANAN-7000DLE / ANAN-8000DLE behavior.
## High-level conclusion
Protocol 2 does not impose a global "only 2 receivers" limit.
The protocol separates:
- number of ADCs
- number of DDCs
This strongly suggests that DDCs are logical/digital receive channels built on top of available ADC inputs, not a one-to-one count of independent analog hardware chains.
## Protocol document findings
From `openHPSDR Ethernet Protocol v4.3.docx`:
- The protocol tries not to restrict the number of configurable resources.
- Current hardware implementation applies only a broad upper limit of `80 DDCs` and `8 ADCs`.
- Discovery reply includes `Number of DDCs implemented`, so the hardware reports its own DDC capability.
Board capability appendix findings already extracted:
- `Board 1 = Hermes (ANAN-10, 100)`
- `Number of ADCs = 1`
- `Number of DDCs supported = 2`
- `Board 2 = Hermes (ANAN-10E)`
- `Number of ADCs = 1`
- `Number of DDCs supported = 2`
- `Board 3 = Angelia (ANAN-100D)`
- `Number of ADCs = 2`
- `Number of DDCs supported = 7`
- `Board 4 = Orion (ANAN-200D)`
- `Number of ADCs = 2`
- `Number of DDCs supported = 7`
Implication:
- low-end boards really are 2-DDC devices
- higher-end 2-ADC boards support more logical DDC channels than ADC count
## Thetis findings
Relevant files:
- [network.h](/home/vladimir/Документы/source/Thetis/Project Files/Source/ChannelMaster/network.h:414)
- [console.cs](/home/vladimir/Документы/source/Thetis/Project Files/Source/Console/console.cs:8186)
- [networkproto1.c](/home/vladimir/Документы/source/Thetis/Project Files/Source/ChannelMaster/networkproto1.c:497)
### Model grouping
Thetis groups these as the same high-end hardware family for receiver/DDC logic:
- `ANAN-100D`
- `ANAN-200D`
- `ORIONMKII`
- `ANAN7000D`
- `ANAN8000D`
- `ANAN-G2`
- `ANVELINAPRO3`
See:
- [console.cs](/home/vladimir/Документы/source/Thetis/Project Files/Source/Console/console.cs:8211)
### Protocol 1 interpretation in Thetis
For that high-end family, Thetis explicitly sets:
- `P1_rxcount = 5`
- `nddc = 5`
See:
- [console.cs](/home/vladimir/Документы/source/Thetis/Project Files/Source/Console/console.cs:8219)
This means Thetis does not treat `ANAN-7000DLE/8000DLE` as a 2-DDC class device.
`networkproto1.c` also contains special handling for `nddc == 5`, again separating these boards from 2-DDC hardware:
- [networkproto1.c](/home/vladimir/Документы/source/Thetis/Project Files/Source/ChannelMaster/networkproto1.c:504)
- [networkproto1.c](/home/vladimir/Документы/source/Thetis/Project Files/Source/ChannelMaster/networkproto1.c:528)
### Protocol 2 interpretation in Thetis
For Protocol 2, Thetis groups:
- `Angelia`
- `Orion`
- `OrionMKII`
- `Saturn`
into one receiver/DDC mapping block:
- [console.cs](/home/vladimir/Документы/source/Thetis/Project Files/Source/Console/console.cs:8556)
In the normal non-diversity, non-sync mapping, Thetis uses:
- `rx1 = 2`
- `rx2 = 3`
See:
- [console.cs](/home/vladimir/Документы/source/Thetis/Project Files/Source/Console/console.cs:8562)
This is important:
- for high-end Protocol 2 boards, Thetis does not map main receivers onto `DDC0` and `DDC1`
- it maps them onto `DDC2` and `DDC3`
### Frequency map evidence
Thetis has explicit frequency mapping entries up to at least `RX7`:
- [network.c](/home/vladimir/Документы/source/Thetis/Project Files/Source/ChannelMaster/network.c:947)
- [network.c](/home/vladimir/Документы/source/Thetis/Project Files/Source/ChannelMaster/network.c:977)
And sequence/error tracking exists up to `DDC6`:
- [netInterface.c](/home/vladimir/Документы/source/Thetis/Project Files/Source/ChannelMaster/netInterface.c:173)
- [netInterface.c](/home/vladimir/Документы/source/Thetis/Project Files/Source/ChannelMaster/netInterface.c:185)
This again supports the idea that these are logical digital channels, not simply "one DDC per physical receiver front-end".
## Working interpretation for Orion MkII / ANAN-7000DLE / ANAN-8000DLE
Most likely model:
- there are `2` hardware ADC inputs
- there are multiple logical DDC channels built on top of those ADC inputs
- wideband is a separate stream, not "DDC1"
- `DDC0/DDC1` are likely reserved or preferred for sync/diversity/PureSignal related modes on high-end boards
- normal user RX channels on high-end Protocol 2 boards are likely expected on `DDC2` and `DDC3`
This is consistent with:
- protocol appendix: `2 ADC` and more-than-2 supported DDC on high-end hardware
- Thetis P2 receiver mapping
- Thetis P1 special-case handling for `nddc == 5`
## Important caution
One user assertion remains plausible and should not be discarded:
- Orion MkII may have only `2` hardware receive chains in the analog sense
That does not contradict the protocol or Thetis findings.
It would simply mean:
- `2` hardware ADC/analog paths
- multiple digital DDC slices derived from those ADCs
So the likely correction is not "two hardware DDC total", but rather:
- "two hardware ADC/front-end paths, several logical DDC channels"
## Practical implication for cudaSDR Protocol 2 work
For future receiver work, do not assume:
- high-end Protocol 2 boards use the same DDC mapping as Hermes / HermesII
- receiver 1 and receiver 2 should be attached to `DDC0` and `DDC1`
Instead, verify whether our Protocol 2 implementation should follow Thetis-style mapping for high-end boards:
- RX1 -> `DDC2`
- RX2 -> `DDC3`
And keep wideband separate from DDC numbering.