protocol 2 fix
This commit is contained in:
@@ -0,0 +1,179 @@
|
||||
# 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.
|
||||
Reference in New Issue
Block a user