Compare commits

...

3 Commits

Author SHA1 Message Date
dde80e5696 fix 2026-04-13 22:06:52 +03:00
14d983c840 protocol 2 alex 2026-04-13 20:09:45 +03:00
d00a699141 protocol 2 2026-04-13 19:25:55 +03:00
25 changed files with 2617 additions and 214 deletions

0
Source/.codex Normal file
View File

62
Source/NEXT_STEPS.md Normal file
View File

@ -0,0 +1,62 @@
# Next Steps
## Priority
1. Investigate Protocol 2 stop handling.
2. Complete Protocol 2 Alex support for boards with `Alex1`.
3. Continue UI cleanup for Protocol 2 specific hardware presentation.
## Immediate Issues To Debug
### Protocol 2 stop crash
- Re-test why the application crashes when the user presses `Stop` while working with a Protocol 2 device.
- Re-verify why the Protocol 2 stop command may still not be correctly sent to the transceiver.
- Check the shutdown path across:
- `src/DataEngine/cusdr_dataEngine.cpp`
- `src/DataEngine/cusdr_dataIO.cpp`
- `src/DataEngine/cusdr_protocol2_io.cpp`
- Already fixed one likely cause in `src/DataEngine/cusdr_protocol2_io.cpp`:
- duplicate `P2 stop` send,
- stop without `m_running`,
- timer/socket signal disconnect before deletion.
- Already fixed a second class of issues in `src/DataEngine/cusdr_dataEngine.cpp`:
- `DataIO` control calls now go through `QMetaObject::invokeMethod(..., Qt::BlockingQueuedConnection)`,
- so start/stop/init execute in the `DataIO` thread instead of the caller thread.
- Already fixed a concrete `Protocol 2` destructor bug in `src/DataEngine/cusdr_dataIO.cpp`:
- `m_dataIOSocketOn == true` with `m_dataIOSocket == 0` could dereference a null pointer during shutdown.
- Already moved `CSoundOut` deletion out of `DataIO::stop()` and into the destructor to reduce timer/thread teardown issues.
- Pay special attention to:
- socket lifetime,
- timer lifetime,
- `QObject` ownership and deletion thread,
- repeated stop calls,
- `networkDeviceStartStop(0)`,
- `Protocol2DataPath::stop()`,
- `sendHighPriorityPacket(false)`,
- whether the command socket is still valid when stop is triggered,
- whether `DataIO` / `Protocol2DataPath` should be destroyed via `deleteLater()` in their own thread instead of direct delete from `DataEngine`,
- whether the target `P2` board expects additional shutdown packets or repeated `run = 0` frames.
## Protocol 2 Functional Work
- Implement proper `Alex1/BPF2/RX2` handling for boards that support a second Alex register:
- Orion MkII
- SATURN / ANAN-G2
- Use Appendix D from `doc/openHPSDR Ethernet Protocol v4.3.docx` to map the second Alex register bits correctly.
- Consider extending Protocol 2 capability handling beyond board defaults where discovery returns more precise information.
- Consider support for XML/full hardware description discovery replies for board `254/255`.
## UI Work
- Review UI areas that still assume `Metis/Hermes` semantics internally.
- Make Protocol 2 model/capability presentation more explicit where useful:
- selected model,
- protocol version,
- ADC/DDC count,
- Alex availability.
## Reference
- Detailed log of completed work:
- `WORKLOG_PROTOCOL2_2026-04-13.md`

View File

@ -0,0 +1,187 @@
# cudaSDR Protocol 2 Worklog
Date: 2026-04-13
This file records the Protocol 2 related work completed in this repository so future sessions can quickly restore context.
## Implemented Earlier In This Session History
- Added separate openHPSDR Protocol 2 transport implementation:
- `src/DataEngine/cusdr_protocol2_io.h`
- `src/DataEngine/cusdr_protocol2_io.cpp`
- Added separate Protocol 2 discovery implementation:
- `src/DataEngine/cusdr_discoverer_P2.h`
- `src/DataEngine/cusdr_discoverer_P2.cpp`
- Wired Protocol 2 into the existing project flow without replacing Protocol 1.
- Updated `DataIO` so it delegates network start/stop and receive path to the separate Protocol 2 module when the selected device reports `protocolVersion >= 2`.
- Added Protocol 2 fallback search after Protocol 1 and fixed the `Search` button path so manual search also tries Protocol 2.
- Added initial RX-only Alex support for Protocol 2:
- General packet enables Alex.
- High Priority packet sends `Alex 0`.
- Filters switch automatically by band/frequency using existing Alex settings.
## Implemented Today
### 1. Device capability model for Protocol 2
- Extended `TNetworkDevicecard` in `src/cusdr_settings.h` with Protocol 2 specific fields:
- `adcCount`
- `ddcCount`
- `dspClockHz`
- `iqFormatFlags`
- `phaseWords`
- `hasAlex0`
- `hasAlex1`
### 2. Separate board profile helper
- Added:
- `src/DataEngine/cusdr_protocol2_profile.h`
- `src/DataEngine/cusdr_protocol2_profile.cpp`
- This helper maps Protocol 2 board ID to default hardware capabilities and human-readable model name.
- It also provides a summary string for UI device lists.
### 3. Discovery improvements for Protocol 2
- Updated `src/DataEngine/cusdr_discoverer_P2.cpp` to:
- use board profiles,
- fill the new capability fields in `TNetworkDevicecard`,
- parse extra discovery reply fields from the documentation:
- byte 20: number of implemented DDCs,
- byte 21: frequency vs phase word,
- byte 22: supported IQ/endian formats.
- Updated `src/DataEngine/cusdr_discoverer_P1.cpp` to initialize the new fields to safe defaults for Protocol 1 devices.
### 4. Protocol 2 initialization based on actual device profile
- Updated `src/DataEngine/cusdr_protocol2_io.cpp`:
- fixed General packet bit handling,
- enabled phase-word mode where required,
- selected IQ format only when the discovery flags say it is supported,
- used discovered/default ADC count in the DDC Specific packet,
- routed DDCs across ADCs,
- limited receiver count to hardware DDC count,
- used board DSP clock to compute phase words,
- preserved RX-only behavior.
### 5. Data engine behavior for Protocol 2 devices
- Updated `src/DataEngine/cusdr_dataEngine.cpp` so Protocol 2 devices:
- are treated as modern integrated hardware instead of legacy Mercury/Penelope stacks,
- automatically clamp receiver count to discovered DDC count,
- publish Hermes firmware field from the Protocol 2 discovery result for existing UI/status paths,
- enable Alex UI only if the selected Protocol 2 board profile says Alex is present.
### 6. UI modernization for Protocol 2 devices
- Updated `src/cusdr_networkWidget.cpp` so the device list shows a summary instead of only IP address.
- Updated `src/GL/cusdr_oglDisplayPanel.h` and `src/GL/cusdr_oglDisplayPanel.cpp` so the top status display uses the real Protocol 2 model name instead of always showing `Hermes`.
### 7. Documentation-driven corrections made today
- Re-read local documentation:
- `doc/openHPSDR Ethernet Protocol v4.3.docx`
- Corrected Protocol 2 board naming and assumptions from the document:
- board 1: `Hermes / ANAN-10/100`
- board 2: `Hermes / ANAN-10E/100B`
- board 5: `Orion MkII / ANAN-7/8000DLE`
- board 10: `Saturn / ANAN-G2`
- Corrected one important capability assumption:
- board 2 no longer auto-enables Alex RX support, because the document indicates no Alex receive filters for that board.
## Build Status
- Full build completed successfully:
- `make -j4`
- Output binary:
- `bin/cudaSDR`
## Additional Fix Applied Later Today
### Protocol 2 stop path hardening
- Investigated the stop path after a reported crash when pressing `Stop` with a Protocol 2 device.
- Confirmed that the shutdown flow was effectively hitting Protocol 2 stop twice:
- first through `DataEngine::stop() -> DataIO::networkDeviceStartStop(0)`,
- then again through `DataIO::stop() -> Protocol2DataPath::stop()`.
- Updated `src/DataEngine/cusdr_protocol2_io.cpp` so that:
- `Protocol2DataPath::stop()` only sends the final `run = 0` High Priority packet if the path was actually running,
- `networkDeviceStartStop(0)` returns immediately if Protocol 2 is already stopped,
- `closeSockets()` explicitly disconnects timer and socket signals before deletion.
- This removes the most obvious duplicate-stop race and reduces the chance of a timer/socket callback firing during teardown.
- Build was re-checked after this fix:
- `make -j4`
- success
### Still needs runtime verification
- This stop-path fix is compile-verified but still needs validation on real Protocol 2 hardware.
- If the transceiver still does not stop cleanly, the next thing to verify is whether the specific board expects more than a single `High Priority run = 0` packet before socket teardown.
## Additional Investigation And Fixes After Emulator Testing
### 1. Cross-thread DataIO control calls
- Emulator testing showed that Protocol 2 startup and shutdown were still unreliable.
- Investigation found that `DataIO` is moved to its own `QThread`, but `DataEngine` was still calling these methods directly from another thread:
- `sendInitFramesToNetworkDevice(...)`
- `networkDeviceStartStop(...)`
- `stop()`
- Updated `src/DataEngine/cusdr_dataEngine.cpp` to route those calls through:
- `QMetaObject::invokeMethod(..., Qt::BlockingQueuedConnection)`
- This was done so the Protocol 2 sockets and timers are manipulated from the `DataIO` thread they belong to.
### 2. Additional Protocol 2 stop crash findings
- User logs then showed:
- `QObject::killTimer: Timers cannot be stopped from another thread`
- `QObject::~QObject: Timers cannot be stopped from another thread`
- `DataEngine:: data IO thread not yet finished...`
- This indicated there were still object-lifetime issues during teardown, not only packet-order issues.
### 3. DataIO destructor bug in Protocol 2 mode
- Found a concrete bug in `src/DataEngine/cusdr_dataIO.cpp`:
- in Protocol 2 mode, `m_dataIOSocketOn` can be true while `m_dataIOSocket` is never created,
- but `DataIO::~DataIO()` still dereferenced `m_dataIOSocket`.
- Fixed destructor logic so the legacy socket is only closed/deleted when the pointer is valid.
- This was a direct segfault candidate in Protocol 2 shutdown.
### 4. Sound output teardown issue
- Found that `DataIO::stop()` was stopping and deleting `CSoundOut` while Protocol 2 shutdown was already in progress.
- Adjusted `src/DataEngine/cusdr_dataIO.cpp` so:
- `DataIO::stop()` no longer deletes the sound object,
- `CSoundOut` shutdown is deferred to `DataIO::~DataIO()`.
- This was done to reduce cross-thread/timer teardown problems during the live stop sequence.
### Current status after these fixes
- Build re-checked successfully after each change:
- `make -j4`
- Protocol 2 stop handling is more robust than before, but user testing still shows there may be at least one remaining shutdown/lifetime issue.
- Most likely next area:
- final deletion order of `DataIO` / `Protocol2DataPath` and their child `QObject`s after `m_dataIOThread->quit()`.
## Known Limitations / Remaining Work
- Protocol 2 implementation is still RX-only.
- Protocol 2 Alex support currently sends `Alex 0` only.
- Boards with `Alex1` support such as Orion MkII / SATURN are not yet fully mapped to the second Alex register according to Appendix D.
- Full XML or extended hardware-description discovery modes (`board 254/255`) are not implemented.
- Wideband Protocol 2 path is still not integrated.
- Some UI sections still conceptually assume old `Metis/Hermes` naming internally even though the visible device/model handling is now better.
## Good Starting Points For Next Session
- If continuing Protocol 2 work, read these files first:
- `src/DataEngine/cusdr_protocol2_profile.cpp`
- `src/DataEngine/cusdr_discoverer_P2.cpp`
- `src/DataEngine/cusdr_protocol2_io.cpp`
- `src/DataEngine/cusdr_dataEngine.cpp`
- `src/cusdr_networkWidget.cpp`
- `src/GL/cusdr_oglDisplayPanel.cpp`
- For documentation reference, use:
- `doc/openHPSDR Ethernet Protocol v4.3.docx`
- Highest value next task:
- implement proper `Alex1/BPF2/RX2` handling for Protocol 2 boards that support a second Alex register.

View File

@ -1,7 +1,7 @@
[General]
cudaSDR%20BETA=v0.3.2.13+
cudaSDR%20BETA%20=v0.3.2.13+
saved=\x447\x435\x442\x432\x435\x440\x433 16 \x438\x44e\x43b\x44f 2020 14:05:00
saved=\x43f\x43e\x43d\x435\x434\x435\x43b\x44c\x43d\x438\x43a 13 \x430\x43f\x440\x435\x43b\x44f 2026 22:06:20
[ChirpWSPR]
chirpAmplitude=75
@ -106,16 +106,16 @@ checkfw=false
excalibur=false
hardware=1
interface=hermes
mercury=true
mercury=false
penelope=false
pennylane=false
[network]
audio_port=15000
hpsdr_local_ipAddress=192.168.2.5
hpsdr_local_ipAddress=192.168.122.1
listen_port=11000
metis_port=33626
server_ipAddress=192.168.2.5
metis_port=48349
server_ipAddress=192.168.122.1
server_port=52685
socketBufferSize=32
@ -202,7 +202,7 @@ attenuatorGen=off
audioVolume=73
averaging=on
averagingCnt=5
centerFrequency=22830500
centerFrequency=7055083
clickVFO=on
dBmPanScaleMax10cm=-10
dBmPanScaleMax10m=-30
@ -272,8 +272,8 @@ dspMode70cm=LSB
dspMode80m=LSB
dspModeGen=USB
fftAuto=off
filterHi=3050
filterLo=150
filterHi=-150
filterLo=-3050
framesPerSecond=28
freqRulerPosition=5
grid=on
@ -292,7 +292,7 @@ lastCenterFrequency23cm=902000000
lastCenterFrequency2m=144000000
lastCenterFrequency30m=10100000
lastCenterFrequency33cm=902000000
lastCenterFrequency40m=7080048
lastCenterFrequency40m=7055083
lastCenterFrequency5cm=902000000
lastCenterFrequency60m=5260000
lastCenterFrequency630m=472000
@ -314,7 +314,7 @@ lastVfoFrequency23cm=902000000
lastVfoFrequency2m=144000000
lastVfoFrequency30m=10100000
lastVfoFrequency33cm=902000000
lastVfoFrequency40m=7025700
lastVfoFrequency40m=7087913
lastVfoFrequency5cm=902000000
lastVfoFrequency60m=5260000
lastVfoFrequency630m=472000
@ -325,7 +325,7 @@ lastVfoFrequencyGen=22875900
mouseWheelFreqStep=100
panLocked=off
panMode=FILLEDLINE
vfoFrequency=22875900
vfoFrequency=7087913
waterfallMode=ENHANCED
waterfallOffsetHi=20
waterfallOffsetLo=-5

View File

@ -1,3 +1,3 @@
[General]
geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\0\0\0\0\0\0\0\0\a\x7f\0\0\x4\x19\0\0\0\x1\0\0\x1\x8f\0\0\x3 \0\0\x3\xe6\0\0\0\0\x2\0\0\0\a\x80\0\0\0\0\0\0\0\x17\0\0\a\x7f\0\0\x4\x18)
windowState=@ByteArray(\0\0\0\xff\0\0\0\0\xfd\0\0\0\x1\0\0\0\x1\0\0\0\xf5\0\0\x3@\xfc\x2\0\0\0\x5\xfb\0\0\0\x12\0R\0\x61\0\x64\0i\0o\0\x43\0t\0r\0l\0\0\0\0\0\xff\xff\xff\xff\0\0\0-\0\xff\xff\xff\xfb\0\0\0\x14\0S\0\x65\0r\0v\0\x65\0r\0\x43\0t\0r\0l\0\0\0\0\0\xff\xff\xff\xff\0\0\0-\0\xff\xff\xff\xfb\0\0\0\x12\0H\0P\0S\0\x44\0R\0\x43\0t\0r\0l\0\0\0\0\0\xff\xff\xff\xff\0\0\0-\0\xff\xff\xff\xfb\0\0\0\x12\0\x43\0h\0i\0r\0p\0\x43\0t\0r\0l\0\0\0\0\0\xff\xff\xff\xff\0\0\0-\0\xff\xff\xff\xfb\0\0\0\x16\0\x44\0i\0s\0p\0l\0\x61\0y\0\x43\0t\0r\0l\0\0\0\0\0\xff\xff\xff\xff\0\0\0-\0\xff\xff\xff\0\0\a\x80\0\0\x3@\0\0\0\x4\0\0\0\x4\0\0\0\b\0\0\0\b\xfc\0\0\0\x9a\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\x1\0\0\0\x18\0\x44\0i\0s\0p\0l\0\x61\0y\0P\0\x61\0n\0\x65\0l\x1\0\0\0\0\xff\xff\xff\xff\0\0\0\0\0\0\0\0\0\0\0\x2\0\0\0\x1\0\0\0\x16\0M\0\x61\0i\0n\0\x42\0u\0t\0t\0o\0n\0s\x1\0\0\0\0\xff\xff\xff\xff\0\0\0\0\0\0\0\0)
geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\0\0\0\0\0\0\0\0\x5@\0\0\x3\x1b\0\0\0\0\0\0\0\x1c\0\0\x5@\0\0\x3\x1b\0\0\0\0\0\0\0\0\n\0\0\0\0\0\0\0\0\x1c\0\0\x5@\0\0\x3\x1b)
windowState=@ByteArray(\0\0\0\xff\0\0\0\0\xfd\0\0\0\x1\0\0\0\x1\0\0\0\xf5\0\0\x2<\xfc\x2\0\0\0\x5\xfb\0\0\0\x12\0R\0\x61\0\x64\0i\0o\0\x43\0t\0r\0l\0\0\0\0\0\xff\xff\xff\xff\0\0\0/\0\xff\xff\xff\xfb\0\0\0\x14\0S\0\x65\0r\0v\0\x65\0r\0\x43\0t\0r\0l\0\0\0\0\0\xff\xff\xff\xff\0\0\0/\0\xff\xff\xff\xfb\0\0\0\x12\0H\0P\0S\0\x44\0R\0\x43\0t\0r\0l\0\0\0\0\0\xff\xff\xff\xff\0\0\0/\0\xff\xff\xff\xfb\0\0\0\x12\0\x43\0h\0i\0r\0p\0\x43\0t\0r\0l\0\0\0\0\0\xff\xff\xff\xff\0\0\0/\0\xff\xff\xff\xfb\0\0\0\x16\0\x44\0i\0s\0p\0l\0\x61\0y\0\x43\0t\0r\0l\0\0\0\0\0\xff\xff\xff\xff\0\0\0/\0\xff\xff\xff\0\0\x5\x41\0\0\x2<\0\0\0\x4\0\0\0\x4\0\0\0\b\0\0\0\b\xfc\0\0\0\xa5\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\0\0\0\0\x2\0\0\0\x1\0\0\0\x18\0\x44\0i\0s\0p\0l\0\x61\0y\0P\0\x61\0n\0\x65\0l\x1\0\0\0\0\xff\xff\xff\xff\0\0\0\0\0\0\0\0\0\0\0\x2\0\0\0\x1\0\0\0\x16\0M\0\x61\0i\0n\0\x42\0u\0t\0t\0o\0n\0s\x1\0\0\0\0\xff\xff\xff\xff\0\0\0\0\0\0\0\0)

925
Source/cudaSDR.log Normal file
View File

@ -0,0 +1,925 @@
пн апр. 13 21:48:40 2026: ************************************************************************
пн апр. 13 21:48:40 2026: Settings:: start at: пн апр. 13 21:48:40 2026
пн апр. 13 21:48:40 2026: cudaSDR BETA
пн апр. 13 21:48:41 2026: Settings:: Alex config: 4098
пн апр. 13 21:48:41 2026: Settings:: reading done.
пн апр. 13 21:48:41 2026: Init:: OpenGL found.
пн апр. 13 21:48:41 2026: Init:: Framebuffer Objects found.
пн апр. 13 21:48:41 2026: Init:: main window setup ...
пн апр. 13 21:48:42 2026: MainWindow:: main window init done
пн апр. 13 21:48:42 2026: MainWindow:: server ip from ini-file: "192.168.122.1"
пн апр. 13 21:48:42 2026: MainWindow:: HPSDR device local ip from ini-file: "192.168.122.1"
пн апр. 13 21:48:42 2026: MainWindow:: network interface "bridge0" :
пн апр. 13 21:48:42 2026: MainWindow:: -> broadcast address: 172.16.2.255
пн апр. 13 21:48:42 2026: MainWindow:: -> ip address: 172.16.2.99
пн апр. 13 21:48:42 2026: MainWindow:: network interface "virbr0" :
пн апр. 13 21:48:42 2026: MainWindow:: -> broadcast address: 192.168.122.255
пн апр. 13 21:48:42 2026: MainWindow:: -> ip address: 192.168.122.1
пн апр. 13 21:48:42 2026: MainWindow:: found 2 valid ip addresses.
пн апр. 13 21:48:42 2026: MainWindow:: HPSDR network device interface set to: "virbr0"("192.168.122.1")
пн апр. 13 21:48:42 2026: MainWindow:: HPSDR network device interface set to: "virbr0"("192.168.122.1")
пн апр. 13 21:48:42 2026: MainWindow:: using ip address 192.168.122.1 for the server.
пн апр. 13 21:48:42 2026: MainWindow:: using ip address 192.168.122.1 for connecting to a HPSDR device.
пн апр. 13 21:48:42 2026: Init:: main window setup done.
пн апр. 13 21:48:43 2026: Init:: current path: /home/vladimir/Документы/source/cudaSDR/Source
пн апр. 13 21:48:43 2026: Init:: fftwf_wisdom exists.
пн апр. 13 21:48:43 2026: Init:: found fftwf_wisdom - this will be quick!
пн апр. 13 21:48:43 2026: Init:: running application ...
пн апр. 13 21:48:44 2026:
пн апр. 13 21:48:44 2026: DataEngine:: HPSDR device discovery thread started.
пн апр. 13 21:48:44 2026: DataEngine:: HPSDR network device detection...please wait.
пн апр. 13 21:48:44 2026: Discoverer:: using 192.168.122.1 for discovery.
пн апр. 13 21:48:44 2026: Discoverer:: discovery_socket bound successfully to port 38814
пн апр. 13 21:48:44 2026: Discoverer:: discovery data sent.
пн апр. 13 21:48:45 2026: Discoverer:: no device found - trying again...
пн апр. 13 21:48:45 2026: Discoverer:: using 192.168.122.1 for discovery.
пн апр. 13 21:48:45 2026: Discoverer:: discovery_socket bound successfully to port 55394
пн апр. 13 21:48:45 2026: Discoverer:: discovery data sent.
пн апр. 13 21:48:45 2026: DataEngine:: HPSDR discovery thread stopped and deleted.
пн апр. 13 21:48:45 2026:
пн апр. 13 21:48:45 2026: DataEngine:: HPSDR device discovery thread started.
пн апр. 13 21:48:45 2026: DataEngine:: HPSDR network device detection...please wait.
пн апр. 13 21:48:45 2026: DiscovererP2:: using 192.168.122.1 for discovery protocol 2.
пн апр. 13 21:48:45 2026: DiscovererP2:: discovery_socket protocol 2 bound successfully to port 49021
пн апр. 13 21:48:45 2026: DiscovererP2:: discovery protocol 2 data sent.
пн апр. 13 21:48:46 2026: DiscovererP2:: Device on protocol 2 found at 192.168.122.1:1024; Mac addr: [00:1C:C0:A2:18:EE]
пн апр. 13 21:48:46 2026: DiscovererP2:: Device protocol 2 code version: 19
пн апр. 13 21:48:46 2026: DiscovererP2:: Protocol 2 device board ID: 5
пн апр. 13 21:48:46 2026: DiscovererP2:: Protocol 2 device is: Orion MkII / ANAN-7/8000DLE
пн апр. 13 21:48:46 2026: DiscovererP2:: Protocol 2 capabilities: 2 ADC, 2 DDC, phaseWords=true, iqFlags=0x"3"
пн апр. 13 21:48:46 2026: DiscovererP2:: Device selected: 192.168.122.1
пн апр. 13 21:48:46 2026: DataEngine:: HPSDR discovery thread stopped and deleted.
пн апр. 13 21:48:46 2026: DataEngine:: found 1 network device(s)
пн апр. 13 21:48:46 2026: DataEngine:: Device 0 @ 192.168.122.1 [00:1C:C0:A2:18:EE] P38
пн апр. 13 21:48:46 2026: DataEngine:: using HPSDR network device at 192.168.122.1
пн апр. 13 21:48:46 2026: DataEngine:: shut down done.
пн апр. 13 21:48:46 2026: DataEngine:: got firmware versions:
пн апр. 13 21:48:46 2026: DataEngine:: Metis firmware: 0
пн апр. 13 21:48:46 2026: DataEngine:: Mercury firmware: 0
пн апр. 13 21:48:46 2026: DataEngine:: Penelope firmware: 0
пн апр. 13 21:48:46 2026: DataEngine:: Pennylane firmware: 0
пн апр. 13 21:48:46 2026: DataEngine:: Hermes firmware: 19
пн апр. 13 21:48:46 2026: DataEngine:: stopping and restarting data engine.
пн апр. 13 21:48:46 2026: DataEngine:: trying to init a DSP core for rx 0
пн апр. 13 21:48:46 2026: DSPEngine:: init DSPEngine with size: 1024
пн апр. 13 21:48:46 2026: Receiver:: set DSP mode to: "LSB"
пн апр. 13 21:48:46 2026: Receiver:: QtDSP for receiver: 0 started.
пн апр. 13 21:48:46 2026: DataEngine:: init DSP core for rx 0 successful !
пн апр. 13 21:48:46 2026: DataEngine:: Alex Configuration = 4098
пн апр. 13 21:48:46 2026: Soundcard volume 32768
пн апр. 13 21:48:46 2026: l: "lavrate"
пн апр. 13 21:48:46 2026: l: "samplerate"
пн апр. 13 21:48:46 2026: l: "speexrate"
пн апр. 13 21:48:46 2026: l: "jack"
пн апр. 13 21:48:46 2026: l: "oss"
пн апр. 13 21:48:46 2026: l: "pipewire"
пн апр. 13 21:48:46 2026: l: "pulse"
пн апр. 13 21:48:46 2026: l: "speex"
пн апр. 13 21:48:46 2026: l: "upmix"
пн апр. 13 21:48:46 2026: l: "vdownmix"
пн апр. 13 21:48:46 2026: l: "default"
пн апр. 13 21:48:46 2026: l: "hdmi:CARD=Generic,DEV=0"
пн апр. 13 21:48:46 2026: l: "hdmi:CARD=Generic,DEV=1"
пн апр. 13 21:48:46 2026: l: "hdmi:CARD=Generic,DEV=2"
пн апр. 13 21:48:46 2026: l: "hdmi:CARD=Generic,DEV=3"
пн апр. 13 21:48:46 2026: l: "usbstream:CARD=Generic"
пн апр. 13 21:48:46 2026: l: "sysdefault:CARD=Generic_1"
пн апр. 13 21:48:46 2026: l: "front:CARD=Generic_1,DEV=0"
пн апр. 13 21:48:46 2026: l: "surround21:CARD=Generic_1,DEV=0"
пн апр. 13 21:48:46 2026: l: "surround40:CARD=Generic_1,DEV=0"
пн апр. 13 21:48:46 2026: l: "surround41:CARD=Generic_1,DEV=0"
пн апр. 13 21:48:46 2026: l: "surround50:CARD=Generic_1,DEV=0"
пн апр. 13 21:48:46 2026: l: "surround51:CARD=Generic_1,DEV=0"
пн апр. 13 21:48:46 2026: l: "surround71:CARD=Generic_1,DEV=0"
пн апр. 13 21:48:46 2026: l: "usbstream:CARD=Generic_1"
пн апр. 13 21:48:46 2026: l: "alsa_output.pci-0000_05_00.1.hdmi-stereo"
пн апр. 13 21:48:46 2026: l: "alsa_output.pci-0000_05_00.6.analog-stereo"
пн апр. 13 21:48:46 2026: res: "alsa_output.pci-0000_05_00.1.hdmi-stereo"
пн апр. 13 21:48:46 2026: SoundOutRatio Rate 1 48000
пн апр. 13 21:48:46 2026: DataEngine:: configured for 1 receiver(s) at 192 kHz sample rate
пн апр. 13 21:48:46 2026: DataEngine:: receiver processor thread started for Rx 0
пн апр. 13 21:48:46 2026: DataEngine:: wide band data processor thread started.
пн апр. 13 21:48:46 2026: DataEngine:: data processor thread started.
пн апр. 13 21:48:46 2026: DataProcessor:: Data Processor thread: QThread(0x7fc2ac044000)
пн апр. 13 21:48:46 2026: DataEngine:: data IO thread started.
пн апр. 13 21:48:46 2026: Protocol2:: sockets initialized for 1 receiver(s).
пн апр. 13 21:48:46 2026:
пн апр. 13 21:48:46 2026: Settings:: **********************************************************
пн апр. 13 21:48:46 2026: Settings:: Error: No error
пн апр. 13 21:48:46 2026: Settings:: HW Interface: Hermes
пн апр. 13 21:48:46 2026: Settings:: Server Mode: SDR mode
пн апр. 13 21:48:46 2026: Settings:: DataEngine State: up
пн апр. 13 21:48:46 2026:
пн апр. 13 21:48:46 2026: DataEngine:: Data Engine thread: QThread(0x564408afb080)
пн апр. 13 21:48:59 2026: Settings:: save settings done.
пн апр. 13 21:48:59 2026: DataEngine:: HPSDR device stopped
пн апр. 13 21:48:59 2026: DataEngine:: data IO thread not yet finished...
пн апр. 13 21:48:59 2026: sound thread exit
пн апр. 13 21:48:59 2026: DataEngine:: data IO thread deleted.
пн апр. 13 21:48:59 2026: DataEngine:: iq_queue empty.
пн апр. 13 21:48:59 2026: DataEngine:: data processor thread deleted.
пн апр. 13 21:48:59 2026: WidebandProcessor:: wrong wide band buffer length: 0
пн апр. 13 21:48:59 2026: DataEngine:: wide band data processor thread deleted.
пн апр. 13 21:48:59 2026: DataEngine:: device cards list cleared.
пн апр. 13 21:48:59 2026: DataEngine:: receiver threads deleted, receivers deleted, receiver & thread list cleared.
пн апр. 13 21:48:59 2026: Settings:: switch to receiver: 0
пн апр. 13 21:48:59 2026: MainWindow:: setCurrentReceiver: 0
пн апр. 13 21:48:59 2026:
пн апр. 13 21:48:59 2026: Settings:: **********************************************************
пн апр. 13 21:48:59 2026: Settings:: Error: No error
пн апр. 13 21:48:59 2026: Settings:: HW Interface: Hermes
пн апр. 13 21:48:59 2026: Settings:: Server Mode: SDR mode
пн апр. 13 21:48:59 2026: Settings:: DataEngine State: down
пн апр. 13 21:48:59 2026:
пн апр. 13 21:48:59 2026: DataEngine:: shut down done.
пн апр. 13 21:49:03 2026:
пн апр. 13 21:49:03 2026: DataEngine:: HPSDR device discovery thread started.
пн апр. 13 21:49:03 2026: DataEngine:: HPSDR network device detection...please wait.
пн апр. 13 21:49:03 2026: Discoverer:: using 192.168.122.1 for discovery.
пн апр. 13 21:49:03 2026: Discoverer:: discovery_socket bound successfully to port 41133
пн апр. 13 21:49:03 2026: Discoverer:: discovery data sent.
пн апр. 13 21:49:03 2026: Discoverer:: no device found - trying again...
пн апр. 13 21:49:03 2026: Discoverer:: using 192.168.122.1 for discovery.
пн апр. 13 21:49:03 2026: Discoverer:: discovery_socket bound successfully to port 46632
пн апр. 13 21:49:03 2026: Discoverer:: discovery data sent.
пн апр. 13 21:49:04 2026: DataEngine:: HPSDR discovery thread stopped and deleted.
пн апр. 13 21:49:04 2026:
пн апр. 13 21:49:04 2026: DataEngine:: HPSDR device discovery thread started.
пн апр. 13 21:49:04 2026: DataEngine:: HPSDR network device detection...please wait.
пн апр. 13 21:49:04 2026: DiscovererP2:: using 192.168.122.1 for discovery protocol 2.
пн апр. 13 21:49:04 2026: DiscovererP2:: discovery_socket protocol 2 bound successfully to port 36287
пн апр. 13 21:49:04 2026: DiscovererP2:: discovery protocol 2 data sent.
пн апр. 13 21:49:04 2026: DiscovererP2:: Device on protocol 2 found at 192.168.122.1:1024; Mac addr: [00:1C:C0:A2:18:EE]
пн апр. 13 21:49:04 2026: DiscovererP2:: Device protocol 2 code version: 19
пн апр. 13 21:49:04 2026: DiscovererP2:: Protocol 2 device board ID: 5
пн апр. 13 21:49:04 2026: DiscovererP2:: Protocol 2 device is: Orion MkII / ANAN-7/8000DLE
пн апр. 13 21:49:04 2026: DiscovererP2:: Protocol 2 capabilities: 2 ADC, 2 DDC, phaseWords=true, iqFlags=0x"3"
пн апр. 13 21:49:04 2026: DiscovererP2:: Device selected: 192.168.122.1
пн апр. 13 21:49:04 2026: DataEngine:: HPSDR discovery thread stopped and deleted.
пн апр. 13 21:49:04 2026: DataEngine:: found 1 network device(s)
пн апр. 13 21:49:04 2026: DataEngine:: Device 0 @ 192.168.122.1 [00:1C:C0:A2:18:EE] P38
пн апр. 13 21:49:04 2026: DataEngine:: using HPSDR network device at 192.168.122.1
пн апр. 13 21:49:04 2026: DataEngine:: shut down done.
пн апр. 13 21:49:04 2026: DataEngine:: got firmware versions:
пн апр. 13 21:49:04 2026: DataEngine:: Metis firmware: 0
пн апр. 13 21:49:04 2026: DataEngine:: Mercury firmware: 0
пн апр. 13 21:49:04 2026: DataEngine:: Penelope firmware: 0
пн апр. 13 21:49:04 2026: DataEngine:: Pennylane firmware: 0
пн апр. 13 21:49:04 2026: DataEngine:: Hermes firmware: 19
пн апр. 13 21:49:04 2026: DataEngine:: stopping and restarting data engine.
пн апр. 13 21:49:04 2026: DataEngine:: trying to init a DSP core for rx 0
пн апр. 13 21:49:04 2026: DSPEngine:: init DSPEngine with size: 1024
пн апр. 13 21:49:04 2026: Receiver:: set DSP mode to: "LSB"
пн апр. 13 21:49:04 2026: Receiver:: QtDSP for receiver: 0 started.
пн апр. 13 21:49:04 2026: DataEngine:: init DSP core for rx 0 successful !
пн апр. 13 21:49:04 2026: DataEngine:: Alex Configuration = 4098
пн апр. 13 21:49:05 2026: Soundcard volume 32768
пн апр. 13 21:49:05 2026: l: "lavrate"
пн апр. 13 21:49:05 2026: l: "samplerate"
пн апр. 13 21:49:05 2026: l: "speexrate"
пн апр. 13 21:49:05 2026: l: "jack"
пн апр. 13 21:49:05 2026: l: "oss"
пн апр. 13 21:49:05 2026: l: "pipewire"
пн апр. 13 21:49:05 2026: l: "pulse"
пн апр. 13 21:49:05 2026: l: "speex"
пн апр. 13 21:49:05 2026: l: "upmix"
пн апр. 13 21:49:05 2026: l: "vdownmix"
пн апр. 13 21:49:05 2026: l: "default"
пн апр. 13 21:49:05 2026: l: "hdmi:CARD=Generic,DEV=0"
пн апр. 13 21:49:05 2026: l: "hdmi:CARD=Generic,DEV=1"
пн апр. 13 21:49:05 2026: l: "hdmi:CARD=Generic,DEV=2"
пн апр. 13 21:49:05 2026: l: "hdmi:CARD=Generic,DEV=3"
пн апр. 13 21:49:05 2026: l: "usbstream:CARD=Generic"
пн апр. 13 21:49:05 2026: l: "sysdefault:CARD=Generic_1"
пн апр. 13 21:49:05 2026: l: "front:CARD=Generic_1,DEV=0"
пн апр. 13 21:49:05 2026: l: "surround21:CARD=Generic_1,DEV=0"
пн апр. 13 21:49:05 2026: l: "surround40:CARD=Generic_1,DEV=0"
пн апр. 13 21:49:05 2026: l: "surround41:CARD=Generic_1,DEV=0"
пн апр. 13 21:49:05 2026: l: "surround50:CARD=Generic_1,DEV=0"
пн апр. 13 21:49:05 2026: l: "surround51:CARD=Generic_1,DEV=0"
пн апр. 13 21:49:05 2026: l: "surround71:CARD=Generic_1,DEV=0"
пн апр. 13 21:49:05 2026: l: "usbstream:CARD=Generic_1"
пн апр. 13 21:49:05 2026: l: "alsa_output.pci-0000_05_00.1.hdmi-stereo"
пн апр. 13 21:49:05 2026: l: "alsa_output.pci-0000_05_00.6.analog-stereo"
пн апр. 13 21:49:05 2026: res: "alsa_output.pci-0000_05_00.1.hdmi-stereo"
пн апр. 13 21:49:05 2026: SoundOutRatio Rate 1 48000
пн апр. 13 21:49:05 2026: DataEngine:: configured for 1 receiver(s) at 192 kHz sample rate
пн апр. 13 21:49:05 2026: DataEngine:: receiver processor thread started for Rx 0
пн апр. 13 21:49:05 2026: DataEngine:: wide band data processor thread started.
пн апр. 13 21:49:05 2026: DataEngine:: data processor thread started.
пн апр. 13 21:49:05 2026: DataProcessor:: Data Processor thread: QThread(0x56440ed9c670)
пн апр. 13 21:49:05 2026: DataEngine:: data IO thread started.
пн апр. 13 21:49:05 2026: Protocol2:: sockets initialized for 1 receiver(s).
пн апр. 13 21:49:05 2026:
пн апр. 13 21:49:05 2026: Settings:: **********************************************************
пн апр. 13 21:49:05 2026: Settings:: Error: No error
пн апр. 13 21:49:05 2026: Settings:: HW Interface: Hermes
пн апр. 13 21:49:05 2026: Settings:: Server Mode: SDR mode
пн апр. 13 21:49:05 2026: Settings:: DataEngine State: up
пн апр. 13 21:49:05 2026:
пн апр. 13 21:49:05 2026: DataEngine:: Data Engine thread: QThread(0x564408afb080)
пн апр. 13 21:49:14 2026: Settings:: save settings done.
пн апр. 13 21:49:14 2026: DataEngine:: HPSDR device stopped
пн апр. 13 21:49:14 2026: DataEngine:: data IO thread not yet finished...
пн апр. 13 21:49:14 2026: sound thread exit
пн апр. 13 21:49:14 2026: DataEngine:: data IO thread deleted.
пн апр. 13 21:49:14 2026: DataEngine:: iq_queue empty.
пн апр. 13 21:49:14 2026: DataEngine:: data processor thread deleted.
пн апр. 13 21:49:14 2026: WidebandProcessor:: wrong wide band buffer length: 0
пн апр. 13 21:49:14 2026: DataEngine:: wide band data processor thread deleted.
пн апр. 13 21:49:14 2026: DataEngine:: device cards list cleared.
пн апр. 13 21:49:14 2026: DataEngine:: receiver threads deleted, receivers deleted, receiver & thread list cleared.
пн апр. 13 21:49:14 2026: Settings:: switch to receiver: 0
пн апр. 13 21:49:14 2026: MainWindow:: setCurrentReceiver: 0
пн апр. 13 21:49:14 2026:
пн апр. 13 21:49:14 2026: Settings:: **********************************************************
пн апр. 13 21:49:14 2026: Settings:: Error: No error
пн апр. 13 21:49:14 2026: Settings:: HW Interface: Hermes
пн апр. 13 21:49:14 2026: Settings:: Server Mode: SDR mode
пн апр. 13 21:49:14 2026: Settings:: DataEngine State: down
пн апр. 13 21:49:14 2026:
пн апр. 13 21:49:14 2026: DataEngine:: shut down done.
пн апр. 13 21:49:15 2026:
пн апр. 13 21:49:15 2026: DataEngine:: HPSDR device discovery thread started.
пн апр. 13 21:49:15 2026: DataEngine:: HPSDR network device detection...please wait.
пн апр. 13 21:49:15 2026: Discoverer:: using 192.168.122.1 for discovery.
пн апр. 13 21:49:15 2026: Discoverer:: discovery_socket bound successfully to port 44694
пн апр. 13 21:49:15 2026: Discoverer:: discovery data sent.
пн апр. 13 21:49:16 2026: Discoverer:: no device found - trying again...
пн апр. 13 21:49:16 2026: Discoverer:: using 192.168.122.1 for discovery.
пн апр. 13 21:49:16 2026: Discoverer:: discovery_socket bound successfully to port 53887
пн апр. 13 21:49:16 2026: Discoverer:: discovery data sent.
пн апр. 13 21:49:16 2026: DataEngine:: HPSDR discovery thread stopped and deleted.
пн апр. 13 21:49:16 2026:
пн апр. 13 21:49:16 2026: DataEngine:: HPSDR device discovery thread started.
пн апр. 13 21:49:16 2026: DataEngine:: HPSDR network device detection...please wait.
пн апр. 13 21:49:16 2026: DiscovererP2:: using 192.168.122.1 for discovery protocol 2.
пн апр. 13 21:49:16 2026: DiscovererP2:: discovery_socket protocol 2 bound successfully to port 38861
пн апр. 13 21:49:16 2026: DiscovererP2:: discovery protocol 2 data sent.
пн апр. 13 21:49:17 2026: DiscovererP2:: Device on protocol 2 found at 192.168.122.1:1024; Mac addr: [00:1C:C0:A2:18:EE]
пн апр. 13 21:49:17 2026: DiscovererP2:: Device protocol 2 code version: 19
пн апр. 13 21:49:17 2026: DiscovererP2:: Protocol 2 device board ID: 5
пн апр. 13 21:49:17 2026: DiscovererP2:: Protocol 2 device is: Orion MkII / ANAN-7/8000DLE
пн апр. 13 21:49:17 2026: DiscovererP2:: Protocol 2 capabilities: 2 ADC, 2 DDC, phaseWords=true, iqFlags=0x"3"
пн апр. 13 21:49:17 2026: DiscovererP2:: Device selected: 192.168.122.1
пн апр. 13 21:49:17 2026: DataEngine:: HPSDR discovery thread stopped and deleted.
пн апр. 13 21:49:17 2026: DataEngine:: found 1 network device(s)
пн апр. 13 21:49:17 2026: DataEngine:: Device 0 @ 192.168.122.1 [00:1C:C0:A2:18:EE] P38
пн апр. 13 21:49:17 2026: DataEngine:: using HPSDR network device at 192.168.122.1
пн апр. 13 21:49:17 2026: DataEngine:: shut down done.
пн апр. 13 21:49:17 2026: DataEngine:: got firmware versions:
пн апр. 13 21:49:17 2026: DataEngine:: Metis firmware: 0
пн апр. 13 21:49:17 2026: DataEngine:: Mercury firmware: 0
пн апр. 13 21:49:17 2026: DataEngine:: Penelope firmware: 0
пн апр. 13 21:49:17 2026: DataEngine:: Pennylane firmware: 0
пн апр. 13 21:49:17 2026: DataEngine:: Hermes firmware: 19
пн апр. 13 21:49:17 2026: DataEngine:: stopping and restarting data engine.
пн апр. 13 21:49:17 2026: DataEngine:: trying to init a DSP core for rx 0
пн апр. 13 21:49:17 2026: DSPEngine:: init DSPEngine with size: 1024
пн апр. 13 21:49:17 2026: Receiver:: set DSP mode to: "LSB"
пн апр. 13 21:49:17 2026: Receiver:: QtDSP for receiver: 0 started.
пн апр. 13 21:49:17 2026: DataEngine:: init DSP core for rx 0 successful !
пн апр. 13 21:49:17 2026: DataEngine:: Alex Configuration = 4098
пн апр. 13 21:49:17 2026: Soundcard volume 32768
пн апр. 13 21:49:17 2026: l: "lavrate"
пн апр. 13 21:49:17 2026: l: "samplerate"
пн апр. 13 21:49:17 2026: l: "speexrate"
пн апр. 13 21:49:17 2026: l: "jack"
пн апр. 13 21:49:17 2026: l: "oss"
пн апр. 13 21:49:17 2026: l: "pipewire"
пн апр. 13 21:49:17 2026: l: "pulse"
пн апр. 13 21:49:17 2026: l: "speex"
пн апр. 13 21:49:17 2026: l: "upmix"
пн апр. 13 21:49:17 2026: l: "vdownmix"
пн апр. 13 21:49:17 2026: l: "default"
пн апр. 13 21:49:17 2026: l: "hdmi:CARD=Generic,DEV=0"
пн апр. 13 21:49:17 2026: l: "hdmi:CARD=Generic,DEV=1"
пн апр. 13 21:49:17 2026: l: "hdmi:CARD=Generic,DEV=2"
пн апр. 13 21:49:17 2026: l: "hdmi:CARD=Generic,DEV=3"
пн апр. 13 21:49:17 2026: l: "usbstream:CARD=Generic"
пн апр. 13 21:49:17 2026: l: "sysdefault:CARD=Generic_1"
пн апр. 13 21:49:17 2026: l: "front:CARD=Generic_1,DEV=0"
пн апр. 13 21:49:17 2026: l: "surround21:CARD=Generic_1,DEV=0"
пн апр. 13 21:49:17 2026: l: "surround40:CARD=Generic_1,DEV=0"
пн апр. 13 21:49:17 2026: l: "surround41:CARD=Generic_1,DEV=0"
пн апр. 13 21:49:17 2026: l: "surround50:CARD=Generic_1,DEV=0"
пн апр. 13 21:49:17 2026: l: "surround51:CARD=Generic_1,DEV=0"
пн апр. 13 21:49:17 2026: l: "surround71:CARD=Generic_1,DEV=0"
пн апр. 13 21:49:17 2026: l: "usbstream:CARD=Generic_1"
пн апр. 13 21:49:17 2026: l: "alsa_output.pci-0000_05_00.1.hdmi-stereo"
пн апр. 13 21:49:17 2026: l: "alsa_output.pci-0000_05_00.6.analog-stereo"
пн апр. 13 21:49:17 2026: res: "alsa_output.pci-0000_05_00.1.hdmi-stereo"
пн апр. 13 21:49:17 2026: SoundOutRatio Rate 1 48000
пн апр. 13 21:49:17 2026: DataEngine:: configured for 1 receiver(s) at 192 kHz sample rate
пн апр. 13 21:49:17 2026: DataEngine:: receiver processor thread started for Rx 0
пн апр. 13 21:49:17 2026: DataEngine:: wide band data processor thread started.
пн апр. 13 21:49:17 2026: DataEngine:: data processor thread started.
пн апр. 13 21:49:17 2026: DataProcessor:: Data Processor thread: QThread(0x56440ed8df70)
пн апр. 13 21:49:17 2026: DataEngine:: data IO thread started.
пн апр. 13 21:49:17 2026: Protocol2:: sockets initialized for 1 receiver(s).
пн апр. 13 21:49:17 2026:
пн апр. 13 21:49:17 2026: Settings:: **********************************************************
пн апр. 13 21:49:17 2026: Settings:: Error: No error
пн апр. 13 21:49:17 2026: Settings:: HW Interface: Hermes
пн апр. 13 21:49:17 2026: Settings:: Server Mode: SDR mode
пн апр. 13 21:49:17 2026: Settings:: DataEngine State: up
пн апр. 13 21:49:17 2026:
пн апр. 13 21:49:17 2026: DataEngine:: Data Engine thread: QThread(0x564408afb080)
пн апр. 13 21:49:21 2026: Settings:: save settings done.
пн апр. 13 21:49:21 2026: DataEngine:: HPSDR device stopped
пн апр. 13 21:49:21 2026: DataEngine:: data IO thread not yet finished...
пн апр. 13 21:49:21 2026: sound thread exit
пн апр. 13 21:49:21 2026: DataEngine:: data IO thread deleted.
пн апр. 13 21:49:21 2026: DataEngine:: iq_queue empty.
пн апр. 13 21:49:21 2026: DataEngine:: data processor thread deleted.
пн апр. 13 21:49:21 2026: WidebandProcessor:: wrong wide band buffer length: 0
пн апр. 13 21:49:21 2026: DataEngine:: wide band data processor thread deleted.
пн апр. 13 21:49:22 2026: DataEngine:: device cards list cleared.
пн апр. 13 21:49:22 2026: DataEngine:: receiver threads deleted, receivers deleted, receiver & thread list cleared.
пн апр. 13 21:49:22 2026: Settings:: switch to receiver: 0
пн апр. 13 21:49:22 2026: MainWindow:: setCurrentReceiver: 0
пн апр. 13 21:49:22 2026:
пн апр. 13 21:49:22 2026: Settings:: **********************************************************
пн апр. 13 21:49:22 2026: Settings:: Error: No error
пн апр. 13 21:49:22 2026: Settings:: HW Interface: Hermes
пн апр. 13 21:49:22 2026: Settings:: Server Mode: SDR mode
пн апр. 13 21:49:22 2026: Settings:: DataEngine State: down
пн апр. 13 21:49:22 2026:
пн апр. 13 21:49:22 2026: DataEngine:: shut down done.
пн апр. 13 21:50:30 2026: ************************************************************************
пн апр. 13 21:50:30 2026: Settings:: start at: пн апр. 13 21:50:30 2026
пн апр. 13 21:50:30 2026: cudaSDR BETA
пн апр. 13 21:50:31 2026: Settings:: Alex config: 4098
пн апр. 13 21:50:31 2026: Settings:: reading done.
пн апр. 13 21:50:31 2026: Init:: OpenGL found.
пн апр. 13 21:50:31 2026: Init:: Framebuffer Objects found.
пн апр. 13 21:50:31 2026: Init:: main window setup ...
пн апр. 13 21:50:32 2026: MainWindow:: main window init done
пн апр. 13 21:50:32 2026: MainWindow:: server ip from ini-file: "192.168.122.1"
пн апр. 13 21:50:32 2026: MainWindow:: HPSDR device local ip from ini-file: "192.168.122.1"
пн апр. 13 21:50:32 2026: MainWindow:: network interface "bridge0" :
пн апр. 13 21:50:32 2026: MainWindow:: -> broadcast address: 172.16.2.255
пн апр. 13 21:50:32 2026: MainWindow:: -> ip address: 172.16.2.99
пн апр. 13 21:50:32 2026: MainWindow:: network interface "virbr0" :
пн апр. 13 21:50:32 2026: MainWindow:: -> broadcast address: 192.168.122.255
пн апр. 13 21:50:32 2026: MainWindow:: -> ip address: 192.168.122.1
пн апр. 13 21:50:32 2026: MainWindow:: found 2 valid ip addresses.
пн апр. 13 21:50:32 2026: MainWindow:: HPSDR network device interface set to: "virbr0"("192.168.122.1")
пн апр. 13 21:50:32 2026: MainWindow:: HPSDR network device interface set to: "virbr0"("192.168.122.1")
пн апр. 13 21:50:32 2026: MainWindow:: using ip address 192.168.122.1 for the server.
пн апр. 13 21:50:32 2026: MainWindow:: using ip address 192.168.122.1 for connecting to a HPSDR device.
пн апр. 13 21:50:32 2026: Init:: main window setup done.
пн апр. 13 21:50:33 2026: Init:: current path: /home/vladimir/Документы/source/cudaSDR/Source
пн апр. 13 21:50:33 2026: Init:: fftwf_wisdom exists.
пн апр. 13 21:50:33 2026: Init:: found fftwf_wisdom - this will be quick!
пн апр. 13 21:50:33 2026: Init:: running application ...
пн апр. 13 21:50:34 2026:
пн апр. 13 21:50:34 2026: DataEngine:: HPSDR device discovery thread started.
пн апр. 13 21:50:34 2026: DataEngine:: HPSDR network device detection...please wait.
пн апр. 13 21:50:34 2026: Discoverer:: using 192.168.122.1 for discovery.
пн апр. 13 21:50:34 2026: Discoverer:: discovery_socket bound successfully to port 51309
пн апр. 13 21:50:34 2026: Discoverer:: discovery data sent.
пн апр. 13 21:50:34 2026: Discoverer:: Device found at 192.168.122.1:1024; Mac addr: [00:1C:C0:A2:18:DD]
пн апр. 13 21:50:34 2026: Discoverer:: Device code version: 1f
пн апр. 13 21:50:34 2026: Discoverer:: Device board ID: 10
пн апр. 13 21:50:34 2026: Discoverer:: Device is:
пн апр. 13 21:50:34 2026: Discoverer:: Device selected: 192.168.122.1
пн апр. 13 21:50:34 2026: DataEngine:: HPSDR discovery thread stopped and deleted.
пн апр. 13 21:50:34 2026: DataEngine:: found 1 network device(s)
пн апр. 13 21:50:34 2026: DataEngine:: Device 0 @ 192.168.122.1 [00:1C:C0:A2:18:DD] P1
пн апр. 13 21:50:34 2026: DataEngine:: using HPSDR network device at 192.168.122.1
пн апр. 13 21:50:35 2026: DataEngine:: trying to init a DSP core for rx 0
пн апр. 13 21:50:35 2026: DSPEngine:: init DSPEngine with size: 1024
пн апр. 13 21:50:35 2026: Receiver:: set DSP mode to: "LSB"
пн апр. 13 21:50:35 2026: Receiver:: QtDSP for receiver: 0 started.
пн апр. 13 21:50:35 2026: DataEngine:: init DSP core for rx 0 successful !
пн апр. 13 21:50:35 2026: DataEngine:: Alex Configuration = 4098
пн апр. 13 21:50:35 2026: Soundcard volume 32768
пн апр. 13 21:50:35 2026: l: "lavrate"
пн апр. 13 21:50:35 2026: l: "samplerate"
пн апр. 13 21:50:35 2026: l: "speexrate"
пн апр. 13 21:50:35 2026: l: "jack"
пн апр. 13 21:50:35 2026: l: "oss"
пн апр. 13 21:50:35 2026: l: "pipewire"
пн апр. 13 21:50:35 2026: l: "pulse"
пн апр. 13 21:50:35 2026: l: "speex"
пн апр. 13 21:50:35 2026: l: "upmix"
пн апр. 13 21:50:35 2026: l: "vdownmix"
пн апр. 13 21:50:35 2026: l: "default"
пн апр. 13 21:50:35 2026: l: "hdmi:CARD=Generic,DEV=0"
пн апр. 13 21:50:35 2026: l: "hdmi:CARD=Generic,DEV=1"
пн апр. 13 21:50:35 2026: l: "hdmi:CARD=Generic,DEV=2"
пн апр. 13 21:50:35 2026: l: "hdmi:CARD=Generic,DEV=3"
пн апр. 13 21:50:35 2026: l: "usbstream:CARD=Generic"
пн апр. 13 21:50:35 2026: l: "sysdefault:CARD=Generic_1"
пн апр. 13 21:50:35 2026: l: "front:CARD=Generic_1,DEV=0"
пн апр. 13 21:50:35 2026: l: "surround21:CARD=Generic_1,DEV=0"
пн апр. 13 21:50:35 2026: l: "surround40:CARD=Generic_1,DEV=0"
пн апр. 13 21:50:35 2026: l: "surround41:CARD=Generic_1,DEV=0"
пн апр. 13 21:50:35 2026: l: "surround50:CARD=Generic_1,DEV=0"
пн апр. 13 21:50:35 2026: l: "surround51:CARD=Generic_1,DEV=0"
пн апр. 13 21:50:35 2026: l: "surround71:CARD=Generic_1,DEV=0"
пн апр. 13 21:50:35 2026: l: "usbstream:CARD=Generic_1"
пн апр. 13 21:50:35 2026: l: "alsa_output.pci-0000_05_00.1.hdmi-stereo"
пн апр. 13 21:50:35 2026: l: "alsa_output.pci-0000_05_00.6.analog-stereo"
пн апр. 13 21:50:35 2026: res: "alsa_output.pci-0000_05_00.1.hdmi-stereo"
пн апр. 13 21:50:35 2026: SoundOutRatio Rate 1 48000
пн апр. 13 21:50:35 2026: DataEngine:: configured for 1 receiver(s) at 192 kHz sample rate
пн апр. 13 21:50:35 2026: DataEngine:: data processor thread started.
пн апр. 13 21:50:35 2026: DataEngine:: data IO thread started.
пн апр. 13 21:50:35 2026: DataProcessor:: Data Processor thread: QThread(0x55af709c9240)
пн апр. 13 21:50:35 2026: DataIO:: socket buffer size set to 64 kB.
пн апр. 13 21:50:35 2026: DataIO:: data receiver socket bound successful to local port 51309
пн апр. 13 21:50:35 2026: DataIO:: init frames sent to network device.
пн апр. 13 21:50:35 2026: DataIO:: init frames sent to network device.
пн апр. 13 21:50:35 2026: DataIO:: sent start command to device at: 192.168.122.1
пн апр. 13 21:50:35 2026:
пн апр. 13 21:50:35 2026: Settings:: **********************************************************
пн апр. 13 21:50:35 2026: Settings:: Error: No error
пн апр. 13 21:50:35 2026: Settings:: HW Interface: Hermes
пн апр. 13 21:50:35 2026: Settings:: Server Mode: SDR mode
пн апр. 13 21:50:35 2026: Settings:: DataEngine State: up
пн апр. 13 21:50:35 2026:
пн апр. 13 21:50:35 2026: DataEngine:: Hermes firmware version: 21
пн апр. 13 21:50:35 2026: DataIO:: sent stop command to device at: 192.168.122.1
пн апр. 13 21:50:35 2026: DataEngine:: HPSDR device stopped
пн апр. 13 21:50:35 2026: DataEngine:: data IO thread not yet finished...
пн апр. 13 21:50:35 2026: sound thread exit
пн апр. 13 21:50:35 2026: DataEngine:: data IO thread deleted.
пн апр. 13 21:50:36 2026: DataEngine:: iq_queue empty.
пн апр. 13 21:50:36 2026: DataEngine:: data processor thread deleted.
пн апр. 13 21:50:36 2026: DataEngine:: device cards list cleared.
пн апр. 13 21:50:36 2026: DataEngine:: receiver threads deleted, receivers deleted, receiver & thread list cleared.
пн апр. 13 21:50:36 2026: Settings:: switch to receiver: 0
пн апр. 13 21:50:36 2026: MainWindow:: setCurrentReceiver: 0
пн апр. 13 21:50:36 2026:
пн апр. 13 21:50:36 2026: Settings:: **********************************************************
пн апр. 13 21:50:36 2026: Settings:: Error: No error
пн апр. 13 21:50:36 2026: Settings:: HW Interface: Hermes
пн апр. 13 21:50:36 2026: Settings:: Server Mode: SDR mode
пн апр. 13 21:50:36 2026: Settings:: DataEngine State: down
пн апр. 13 21:50:36 2026:
пн апр. 13 21:50:36 2026: DataEngine:: shut down done.
пн апр. 13 21:50:36 2026: DataEngine:: got firmware versions:
пн апр. 13 21:50:36 2026: DataEngine:: Metis firmware: 0
пн апр. 13 21:50:36 2026: DataEngine:: Mercury firmware: 0
пн апр. 13 21:50:36 2026: DataEngine:: Penelope firmware: 0
пн апр. 13 21:50:36 2026: DataEngine:: Pennylane firmware: 0
пн апр. 13 21:50:36 2026: DataEngine:: Hermes firmware: 21
пн апр. 13 21:50:36 2026: DataEngine:: stopping and restarting data engine.
пн апр. 13 21:50:36 2026: DataEngine:: trying to init a DSP core for rx 0
пн апр. 13 21:50:36 2026: DSPEngine:: init DSPEngine with size: 1024
пн апр. 13 21:50:36 2026: Receiver:: set DSP mode to: "LSB"
пн апр. 13 21:50:36 2026: Receiver:: QtDSP for receiver: 0 started.
пн апр. 13 21:50:36 2026: DataEngine:: init DSP core for rx 0 successful !
пн апр. 13 21:50:36 2026: DataEngine:: Alex Configuration = 4098
пн апр. 13 21:50:36 2026: Soundcard volume 32768
пн апр. 13 21:50:36 2026: l: "lavrate"
пн апр. 13 21:50:36 2026: l: "samplerate"
пн апр. 13 21:50:36 2026: l: "speexrate"
пн апр. 13 21:50:36 2026: l: "jack"
пн апр. 13 21:50:36 2026: l: "oss"
пн апр. 13 21:50:36 2026: l: "pipewire"
пн апр. 13 21:50:36 2026: l: "pulse"
пн апр. 13 21:50:36 2026: l: "speex"
пн апр. 13 21:50:36 2026: l: "upmix"
пн апр. 13 21:50:36 2026: l: "vdownmix"
пн апр. 13 21:50:36 2026: l: "default"
пн апр. 13 21:50:36 2026: l: "hdmi:CARD=Generic,DEV=0"
пн апр. 13 21:50:36 2026: l: "hdmi:CARD=Generic,DEV=1"
пн апр. 13 21:50:36 2026: l: "hdmi:CARD=Generic,DEV=2"
пн апр. 13 21:50:36 2026: l: "hdmi:CARD=Generic,DEV=3"
пн апр. 13 21:50:36 2026: l: "usbstream:CARD=Generic"
пн апр. 13 21:50:36 2026: l: "sysdefault:CARD=Generic_1"
пн апр. 13 21:50:36 2026: l: "front:CARD=Generic_1,DEV=0"
пн апр. 13 21:50:36 2026: l: "surround21:CARD=Generic_1,DEV=0"
пн апр. 13 21:50:36 2026: l: "surround40:CARD=Generic_1,DEV=0"
пн апр. 13 21:50:36 2026: l: "surround41:CARD=Generic_1,DEV=0"
пн апр. 13 21:50:36 2026: l: "surround50:CARD=Generic_1,DEV=0"
пн апр. 13 21:50:36 2026: l: "surround51:CARD=Generic_1,DEV=0"
пн апр. 13 21:50:36 2026: l: "surround71:CARD=Generic_1,DEV=0"
пн апр. 13 21:50:36 2026: l: "usbstream:CARD=Generic_1"
пн апр. 13 21:50:36 2026: l: "alsa_output.pci-0000_05_00.1.hdmi-stereo"
пн апр. 13 21:50:36 2026: l: "alsa_output.pci-0000_05_00.6.analog-stereo"
пн апр. 13 21:50:36 2026: res: "alsa_output.pci-0000_05_00.1.hdmi-stereo"
пн апр. 13 21:50:36 2026: SoundOutRatio Rate 1 48000
пн апр. 13 21:50:36 2026: DataEngine:: configured for 1 receiver(s) at 192 kHz sample rate
пн апр. 13 21:50:36 2026: DataEngine:: receiver processor thread started for Rx 0
пн апр. 13 21:50:36 2026: DataEngine:: wide band data processor thread started.
пн апр. 13 21:50:36 2026: DataEngine:: data processor thread started.
пн апр. 13 21:50:36 2026: DataProcessor:: Data Processor thread: QThread(0x55af70443eb0)
пн апр. 13 21:50:36 2026: DataEngine:: data IO thread started.
пн апр. 13 21:50:36 2026: DataIO:: socket buffer size set to 64 kB.
пн апр. 13 21:50:36 2026: DataIO:: data receiver socket bound successful to local port 51309
пн апр. 13 21:50:36 2026: DataIO:: init frames sent to network device.
пн апр. 13 21:50:36 2026: DataIO:: init frames sent to network device.
пн апр. 13 21:50:36 2026: DataIO:: sent start command to device at: 192.168.122.1
пн апр. 13 21:50:36 2026:
пн апр. 13 21:50:36 2026: Settings:: **********************************************************
пн апр. 13 21:50:36 2026: Settings:: Error: No error
пн апр. 13 21:50:36 2026: Settings:: HW Interface: Hermes
пн апр. 13 21:50:36 2026: Settings:: Server Mode: SDR mode
пн апр. 13 21:50:36 2026: Settings:: DataEngine State: up
пн апр. 13 21:50:36 2026:
пн апр. 13 21:50:36 2026: DataEngine:: Data Engine thread: QThread(0x55af6aa99080)
пн апр. 13 21:50:36 2026: DataEngine:: Hermes firmware version: 21
пн апр. 13 21:51:11 2026: Settings:: save settings done.
пн апр. 13 21:51:11 2026: DataIO:: sent stop command to device at: 192.168.122.1
пн апр. 13 21:51:11 2026: DataEngine:: HPSDR device stopped
пн апр. 13 21:51:11 2026: DataEngine:: data IO thread not yet finished...
пн апр. 13 21:51:11 2026: sound thread exit
пн апр. 13 21:51:11 2026: DataEngine:: data IO thread deleted.
пн апр. 13 21:51:11 2026: DataEngine:: iq_queue empty.
пн апр. 13 21:51:11 2026: DataEngine:: data processor thread deleted.
пн апр. 13 21:51:11 2026: WidebandProcessor:: wrong wide band buffer length: 0
пн апр. 13 21:51:11 2026: DataEngine:: wide band data processor thread deleted.
пн апр. 13 21:51:11 2026: DataEngine:: device cards list cleared.
пн апр. 13 21:51:11 2026: DataEngine:: receiver threads deleted, receivers deleted, receiver & thread list cleared.
пн апр. 13 21:51:11 2026: Settings:: switch to receiver: 0
пн апр. 13 21:51:11 2026: MainWindow:: setCurrentReceiver: 0
пн апр. 13 21:51:11 2026:
пн апр. 13 21:51:11 2026: Settings:: **********************************************************
пн апр. 13 21:51:11 2026: Settings:: Error: No error
пн апр. 13 21:51:11 2026: Settings:: HW Interface: Hermes
пн апр. 13 21:51:11 2026: Settings:: Server Mode: SDR mode
пн апр. 13 21:51:11 2026: Settings:: DataEngine State: down
пн апр. 13 21:51:11 2026:
пн апр. 13 21:51:11 2026: DataEngine:: shut down done.
пн апр. 13 21:51:42 2026:
пн апр. 13 21:51:42 2026: DataEngine:: HPSDR device discovery thread started.
пн апр. 13 21:51:42 2026: DataEngine:: HPSDR network device detection...please wait.
пн апр. 13 21:51:42 2026: Discoverer:: using 192.168.122.1 for discovery.
пн апр. 13 21:51:42 2026: Discoverer:: discovery_socket bound successfully to port 57220
пн апр. 13 21:51:42 2026: Discoverer:: discovery data sent.
пн апр. 13 21:51:43 2026: Discoverer:: no device found - trying again...
пн апр. 13 21:51:43 2026: Discoverer:: using 192.168.122.1 for discovery.
пн апр. 13 21:51:43 2026: Discoverer:: discovery_socket bound successfully to port 49672
пн апр. 13 21:51:43 2026: Discoverer:: discovery data sent.
пн апр. 13 21:51:43 2026: DataEngine:: HPSDR discovery thread stopped and deleted.
пн апр. 13 21:51:43 2026:
пн апр. 13 21:51:43 2026: DataEngine:: HPSDR device discovery thread started.
пн апр. 13 21:51:43 2026: DataEngine:: HPSDR network device detection...please wait.
пн апр. 13 21:51:43 2026: DiscovererP2:: using 192.168.122.1 for discovery protocol 2.
пн апр. 13 21:51:43 2026: DiscovererP2:: discovery_socket protocol 2 bound successfully to port 48403
пн апр. 13 21:51:43 2026: DiscovererP2:: discovery protocol 2 data sent.
пн апр. 13 21:51:44 2026: DiscovererP2:: Device on protocol 2 found at 192.168.122.1:1024; Mac addr: [00:1C:C0:A2:18:EE]
пн апр. 13 21:51:44 2026: DiscovererP2:: Device protocol 2 code version: 19
пн апр. 13 21:51:44 2026: DiscovererP2:: Protocol 2 device board ID: 5
пн апр. 13 21:51:44 2026: DiscovererP2:: Protocol 2 device is: Orion MkII / ANAN-7/8000DLE
пн апр. 13 21:51:44 2026: DiscovererP2:: Protocol 2 capabilities: 2 ADC, 2 DDC, phaseWords=true, iqFlags=0x"3"
пн апр. 13 21:51:44 2026: DiscovererP2:: Device selected: 192.168.122.1
пн апр. 13 21:51:44 2026: DataEngine:: HPSDR discovery thread stopped and deleted.
пн апр. 13 21:51:44 2026: DataEngine:: found 1 network device(s)
пн апр. 13 21:51:44 2026: DataEngine:: Device 0 @ 192.168.122.1 [00:1C:C0:A2:18:EE] P38
пн апр. 13 21:51:44 2026: DataEngine:: using HPSDR network device at 192.168.122.1
пн апр. 13 21:51:44 2026: DataEngine:: shut down done.
пн апр. 13 21:51:44 2026: DataEngine:: got firmware versions:
пн апр. 13 21:51:44 2026: DataEngine:: Metis firmware: 0
пн апр. 13 21:51:44 2026: DataEngine:: Mercury firmware: 0
пн апр. 13 21:51:44 2026: DataEngine:: Penelope firmware: 0
пн апр. 13 21:51:44 2026: DataEngine:: Pennylane firmware: 0
пн апр. 13 21:51:44 2026: DataEngine:: Hermes firmware: 19
пн апр. 13 21:51:44 2026: DataEngine:: stopping and restarting data engine.
пн апр. 13 21:51:44 2026: DataEngine:: trying to init a DSP core for rx 0
пн апр. 13 21:51:44 2026: DSPEngine:: init DSPEngine with size: 1024
пн апр. 13 21:51:44 2026: Receiver:: set DSP mode to: "LSB"
пн апр. 13 21:51:44 2026: Receiver:: QtDSP for receiver: 0 started.
пн апр. 13 21:51:44 2026: DataEngine:: init DSP core for rx 0 successful !
пн апр. 13 21:51:44 2026: DataEngine:: Alex Configuration = 4098
пн апр. 13 21:51:44 2026: Soundcard volume 32768
пн апр. 13 21:51:44 2026: l: "lavrate"
пн апр. 13 21:51:44 2026: l: "samplerate"
пн апр. 13 21:51:44 2026: l: "speexrate"
пн апр. 13 21:51:44 2026: l: "jack"
пн апр. 13 21:51:44 2026: l: "oss"
пн апр. 13 21:51:44 2026: l: "pipewire"
пн апр. 13 21:51:44 2026: l: "pulse"
пн апр. 13 21:51:44 2026: l: "speex"
пн апр. 13 21:51:44 2026: l: "upmix"
пн апр. 13 21:51:44 2026: l: "vdownmix"
пн апр. 13 21:51:44 2026: l: "default"
пн апр. 13 21:51:44 2026: l: "hdmi:CARD=Generic,DEV=0"
пн апр. 13 21:51:44 2026: l: "hdmi:CARD=Generic,DEV=1"
пн апр. 13 21:51:44 2026: l: "hdmi:CARD=Generic,DEV=2"
пн апр. 13 21:51:44 2026: l: "hdmi:CARD=Generic,DEV=3"
пн апр. 13 21:51:44 2026: l: "usbstream:CARD=Generic"
пн апр. 13 21:51:44 2026: l: "sysdefault:CARD=Generic_1"
пн апр. 13 21:51:44 2026: l: "front:CARD=Generic_1,DEV=0"
пн апр. 13 21:51:44 2026: l: "surround21:CARD=Generic_1,DEV=0"
пн апр. 13 21:51:44 2026: l: "surround40:CARD=Generic_1,DEV=0"
пн апр. 13 21:51:44 2026: l: "surround41:CARD=Generic_1,DEV=0"
пн апр. 13 21:51:44 2026: l: "surround50:CARD=Generic_1,DEV=0"
пн апр. 13 21:51:44 2026: l: "surround51:CARD=Generic_1,DEV=0"
пн апр. 13 21:51:44 2026: l: "surround71:CARD=Generic_1,DEV=0"
пн апр. 13 21:51:44 2026: l: "usbstream:CARD=Generic_1"
пн апр. 13 21:51:44 2026: l: "alsa_output.pci-0000_05_00.1.hdmi-stereo"
пн апр. 13 21:51:44 2026: l: "alsa_output.pci-0000_05_00.6.analog-stereo"
пн апр. 13 21:51:44 2026: res: "alsa_output.pci-0000_05_00.1.hdmi-stereo"
пн апр. 13 21:51:44 2026: SoundOutRatio Rate 1 48000
пн апр. 13 21:51:44 2026: DataEngine:: configured for 1 receiver(s) at 192 kHz sample rate
пн апр. 13 21:51:44 2026: DataEngine:: receiver processor thread started for Rx 0
пн апр. 13 21:51:44 2026: DataEngine:: wide band data processor thread started.
пн апр. 13 21:51:44 2026: DataEngine:: data processor thread started.
пн апр. 13 21:51:44 2026: DataProcessor:: Data Processor thread: QThread(0x55af6ac74cc0)
пн апр. 13 21:51:44 2026: DataEngine:: data IO thread started.
пн апр. 13 21:51:44 2026: Protocol2:: sockets initialized for 1 receiver(s).
пн апр. 13 21:51:44 2026:
пн апр. 13 21:51:44 2026: Settings:: **********************************************************
пн апр. 13 21:51:44 2026: Settings:: Error: No error
пн апр. 13 21:51:44 2026: Settings:: HW Interface: Hermes
пн апр. 13 21:51:44 2026: Settings:: Server Mode: SDR mode
пн апр. 13 21:51:44 2026: Settings:: DataEngine State: up
пн апр. 13 21:51:44 2026:
пн апр. 13 21:51:44 2026: DataEngine:: Data Engine thread: QThread(0x55af6aa99080)
пн апр. 13 22:04:00 2026: Settings:: save settings done.
пн апр. 13 22:04:00 2026: DataEngine:: HPSDR device stopped
пн апр. 13 22:04:00 2026: DataEngine:: data IO thread not yet finished...
пн апр. 13 22:04:00 2026: sound thread exit
пн апр. 13 22:04:00 2026: DataEngine:: data IO thread deleted.
пн апр. 13 22:04:00 2026: DataEngine:: iq_queue empty.
пн апр. 13 22:04:00 2026: DataEngine:: data processor thread deleted.
пн апр. 13 22:04:00 2026: WidebandProcessor:: wrong wide band buffer length: 0
пн апр. 13 22:04:00 2026: DataEngine:: wide band data processor thread deleted.
пн апр. 13 22:04:00 2026: DataEngine:: device cards list cleared.
пн апр. 13 22:04:00 2026: DataEngine:: receiver threads deleted, receivers deleted, receiver & thread list cleared.
пн апр. 13 22:04:00 2026: Settings:: switch to receiver: 0
пн апр. 13 22:04:00 2026: MainWindow:: setCurrentReceiver: 0
пн апр. 13 22:04:00 2026:
пн апр. 13 22:04:00 2026: Settings:: **********************************************************
пн апр. 13 22:04:00 2026: Settings:: Error: No error
пн апр. 13 22:04:00 2026: Settings:: HW Interface: Hermes
пн апр. 13 22:04:00 2026: Settings:: Server Mode: SDR mode
пн апр. 13 22:04:00 2026: Settings:: DataEngine State: down
пн апр. 13 22:04:00 2026:
пн апр. 13 22:04:00 2026: DataEngine:: shut down done.
пн апр. 13 22:04:52 2026: ************************************************************************
пн апр. 13 22:04:52 2026: Settings:: start at: пн апр. 13 22:04:52 2026
пн апр. 13 22:04:52 2026: cudaSDR BETA
пн апр. 13 22:04:53 2026: Settings:: Alex config: 4098
пн апр. 13 22:04:53 2026: Settings:: reading done.
пн апр. 13 22:04:53 2026: Init:: OpenGL found.
пн апр. 13 22:04:54 2026: Init:: Framebuffer Objects found.
пн апр. 13 22:04:54 2026: Init:: main window setup ...
пн апр. 13 22:04:54 2026: MainWindow:: main window init done
пн апр. 13 22:04:55 2026: MainWindow:: server ip from ini-file: "192.168.122.1"
пн апр. 13 22:04:55 2026: MainWindow:: HPSDR device local ip from ini-file: "192.168.122.1"
пн апр. 13 22:04:55 2026: MainWindow:: network interface "bridge0" :
пн апр. 13 22:04:55 2026: MainWindow:: -> broadcast address: 172.16.2.255
пн апр. 13 22:04:55 2026: MainWindow:: -> ip address: 172.16.2.99
пн апр. 13 22:04:55 2026: MainWindow:: network interface "virbr0" :
пн апр. 13 22:04:55 2026: MainWindow:: -> broadcast address: 192.168.122.255
пн апр. 13 22:04:55 2026: MainWindow:: -> ip address: 192.168.122.1
пн апр. 13 22:04:55 2026: MainWindow:: found 2 valid ip addresses.
пн апр. 13 22:04:55 2026: MainWindow:: HPSDR network device interface set to: "virbr0"("192.168.122.1")
пн апр. 13 22:04:55 2026: MainWindow:: HPSDR network device interface set to: "virbr0"("192.168.122.1")
пн апр. 13 22:04:55 2026: MainWindow:: using ip address 192.168.122.1 for the server.
пн апр. 13 22:04:55 2026: MainWindow:: using ip address 192.168.122.1 for connecting to a HPSDR device.
пн апр. 13 22:04:55 2026: Init:: main window setup done.
пн апр. 13 22:04:55 2026: Init:: current path: /home/vladimir/Документы/source/cudaSDR/Source
пн апр. 13 22:04:55 2026: Init:: fftwf_wisdom exists.
пн апр. 13 22:04:55 2026: Init:: found fftwf_wisdom - this will be quick!
пн апр. 13 22:04:55 2026: Init:: running application ...
пн апр. 13 22:04:57 2026:
пн апр. 13 22:04:57 2026: DataEngine:: HPSDR device discovery thread started.
пн апр. 13 22:04:57 2026: DataEngine:: HPSDR network device detection...please wait.
пн апр. 13 22:04:57 2026: Discoverer:: using 192.168.122.1 for discovery.
пн апр. 13 22:04:57 2026: Discoverer:: discovery_socket bound successfully to port 55054
пн апр. 13 22:04:57 2026: Discoverer:: discovery data sent.
пн апр. 13 22:04:58 2026: Discoverer:: no device found - trying again...
пн апр. 13 22:04:58 2026: Discoverer:: using 192.168.122.1 for discovery.
пн апр. 13 22:04:58 2026: Discoverer:: discovery_socket bound successfully to port 40036
пн апр. 13 22:04:58 2026: Discoverer:: discovery data sent.
пн апр. 13 22:04:58 2026: DataEngine:: HPSDR discovery thread stopped and deleted.
пн апр. 13 22:04:58 2026:
пн апр. 13 22:04:58 2026: DataEngine:: HPSDR device discovery thread started.
пн апр. 13 22:04:58 2026: DataEngine:: HPSDR network device detection...please wait.
пн апр. 13 22:04:58 2026: DiscovererP2:: using 192.168.122.1 for discovery protocol 2.
пн апр. 13 22:04:58 2026: DiscovererP2:: discovery_socket protocol 2 bound successfully to port 54473
пн апр. 13 22:04:58 2026: DiscovererP2:: discovery protocol 2 data sent.
пн апр. 13 22:04:59 2026: DiscovererP2:: Device on protocol 2 found at 192.168.122.1:1024; Mac addr: [00:1C:C0:A2:18:EE]
пн апр. 13 22:04:59 2026: DiscovererP2:: Device protocol 2 code version: 19
пн апр. 13 22:04:59 2026: DiscovererP2:: Protocol 2 device board ID: 5
пн апр. 13 22:04:59 2026: DiscovererP2:: Protocol 2 device is: Orion MkII / ANAN-7/8000DLE
пн апр. 13 22:04:59 2026: DiscovererP2:: Protocol 2 capabilities: 2 ADC, 2 DDC, phaseWords=true, iqFlags=0x"3"
пн апр. 13 22:04:59 2026: DiscovererP2:: Device selected: 192.168.122.1
пн апр. 13 22:04:59 2026: DataEngine:: HPSDR discovery thread stopped and deleted.
пн апр. 13 22:04:59 2026: DataEngine:: found 1 network device(s)
пн апр. 13 22:04:59 2026: DataEngine:: Device 0 @ 192.168.122.1 [00:1C:C0:A2:18:EE] P38
пн апр. 13 22:04:59 2026: DataEngine:: using HPSDR network device at 192.168.122.1
пн апр. 13 22:04:59 2026: DataEngine:: shut down done.
пн апр. 13 22:04:59 2026: DataEngine:: got firmware versions:
пн апр. 13 22:04:59 2026: DataEngine:: Metis firmware: 0
пн апр. 13 22:04:59 2026: DataEngine:: Mercury firmware: 0
пн апр. 13 22:04:59 2026: DataEngine:: Penelope firmware: 0
пн апр. 13 22:04:59 2026: DataEngine:: Pennylane firmware: 0
пн апр. 13 22:04:59 2026: DataEngine:: Hermes firmware: 19
пн апр. 13 22:04:59 2026: DataEngine:: stopping and restarting data engine.
пн апр. 13 22:04:59 2026: DataEngine:: trying to init a DSP core for rx 0
пн апр. 13 22:04:59 2026: DSPEngine:: init DSPEngine with size: 1024
пн апр. 13 22:04:59 2026: Receiver:: set DSP mode to: "LSB"
пн апр. 13 22:04:59 2026: Receiver:: QtDSP for receiver: 0 started.
пн апр. 13 22:04:59 2026: DataEngine:: init DSP core for rx 0 successful !
пн апр. 13 22:04:59 2026: DataEngine:: Alex Configuration = 4098
пн апр. 13 22:04:59 2026: Soundcard volume 32768
пн апр. 13 22:04:59 2026: l: "lavrate"
пн апр. 13 22:04:59 2026: l: "samplerate"
пн апр. 13 22:04:59 2026: l: "speexrate"
пн апр. 13 22:04:59 2026: l: "jack"
пн апр. 13 22:04:59 2026: l: "oss"
пн апр. 13 22:04:59 2026: l: "pipewire"
пн апр. 13 22:04:59 2026: l: "pulse"
пн апр. 13 22:04:59 2026: l: "speex"
пн апр. 13 22:04:59 2026: l: "upmix"
пн апр. 13 22:04:59 2026: l: "vdownmix"
пн апр. 13 22:04:59 2026: l: "default"
пн апр. 13 22:04:59 2026: l: "hdmi:CARD=Generic,DEV=0"
пн апр. 13 22:04:59 2026: l: "hdmi:CARD=Generic,DEV=1"
пн апр. 13 22:04:59 2026: l: "hdmi:CARD=Generic,DEV=2"
пн апр. 13 22:04:59 2026: l: "hdmi:CARD=Generic,DEV=3"
пн апр. 13 22:04:59 2026: l: "usbstream:CARD=Generic"
пн апр. 13 22:04:59 2026: l: "sysdefault:CARD=Generic_1"
пн апр. 13 22:04:59 2026: l: "front:CARD=Generic_1,DEV=0"
пн апр. 13 22:04:59 2026: l: "surround21:CARD=Generic_1,DEV=0"
пн апр. 13 22:04:59 2026: l: "surround40:CARD=Generic_1,DEV=0"
пн апр. 13 22:04:59 2026: l: "surround41:CARD=Generic_1,DEV=0"
пн апр. 13 22:04:59 2026: l: "surround50:CARD=Generic_1,DEV=0"
пн апр. 13 22:04:59 2026: l: "surround51:CARD=Generic_1,DEV=0"
пн апр. 13 22:04:59 2026: l: "surround71:CARD=Generic_1,DEV=0"
пн апр. 13 22:04:59 2026: l: "usbstream:CARD=Generic_1"
пн апр. 13 22:04:59 2026: l: "alsa_output.pci-0000_05_00.1.hdmi-stereo"
пн апр. 13 22:04:59 2026: l: "alsa_output.pci-0000_05_00.6.analog-stereo"
пн апр. 13 22:04:59 2026: res: "alsa_output.pci-0000_05_00.1.hdmi-stereo"
пн апр. 13 22:04:59 2026: SoundOutRatio Rate 1 48000
пн апр. 13 22:04:59 2026: DataEngine:: configured for 1 receiver(s) at 192 kHz sample rate
пн апр. 13 22:04:59 2026: DataEngine:: receiver processor thread started for Rx 0
пн апр. 13 22:04:59 2026: DataEngine:: wide band data processor thread started.
пн апр. 13 22:04:59 2026: DataEngine:: data processor thread started.
пн апр. 13 22:04:59 2026: DataProcessor:: Data Processor thread: QThread(0x7f2d6400b330)
пн апр. 13 22:04:59 2026: DataEngine:: data IO thread started.
пн апр. 13 22:04:59 2026: Protocol2:: sockets initialized for 1 receiver(s).
пн апр. 13 22:04:59 2026:
пн апр. 13 22:04:59 2026: Settings:: **********************************************************
пн апр. 13 22:04:59 2026: Settings:: Error: No error
пн апр. 13 22:04:59 2026: Settings:: HW Interface: Hermes
пн апр. 13 22:04:59 2026: Settings:: Server Mode: SDR mode
пн апр. 13 22:04:59 2026: Settings:: DataEngine State: up
пн апр. 13 22:04:59 2026:
пн апр. 13 22:04:59 2026: DataEngine:: Data Engine thread: QThread(0x55d0e7c3a080)
пн апр. 13 22:05:28 2026: Settings:: save settings done.
пн апр. 13 22:05:28 2026: DataEngine:: HPSDR device stopped
пн апр. 13 22:05:29 2026: sound thread exit
пн апр. 13 22:05:29 2026: DataEngine:: data IO thread deleted.
пн апр. 13 22:05:29 2026: DataEngine:: iq_queue empty.
пн апр. 13 22:05:29 2026: DataEngine:: data processor thread deleted.
пн апр. 13 22:05:29 2026: WidebandProcessor:: wrong wide band buffer length: 0
пн апр. 13 22:05:29 2026: DataEngine:: wide band data processor thread deleted.
пн апр. 13 22:05:29 2026: DataEngine:: device cards list cleared.
пн апр. 13 22:05:29 2026: DataEngine:: receiver threads deleted, receivers deleted, receiver & thread list cleared.
пн апр. 13 22:05:29 2026: Settings:: switch to receiver: 0
пн апр. 13 22:05:29 2026: MainWindow:: setCurrentReceiver: 0
пн апр. 13 22:05:29 2026:
пн апр. 13 22:05:29 2026: Settings:: **********************************************************
пн апр. 13 22:05:29 2026: Settings:: Error: No error
пн апр. 13 22:05:29 2026: Settings:: HW Interface: Hermes
пн апр. 13 22:05:29 2026: Settings:: Server Mode: SDR mode
пн апр. 13 22:05:29 2026: Settings:: DataEngine State: down
пн апр. 13 22:05:29 2026:
пн апр. 13 22:05:29 2026: DataEngine:: shut down done.
пн апр. 13 22:05:50 2026: ************************************************************************
пн апр. 13 22:05:50 2026: Settings:: start at: пн апр. 13 22:05:50 2026
пн апр. 13 22:05:50 2026: cudaSDR BETA
пн апр. 13 22:05:51 2026: Settings:: Alex config: 4098
пн апр. 13 22:05:51 2026: Settings:: reading done.
пн апр. 13 22:05:52 2026: Init:: OpenGL found.
пн апр. 13 22:05:52 2026: Init:: Framebuffer Objects found.
пн апр. 13 22:05:52 2026: Init:: main window setup ...
пн апр. 13 22:05:52 2026: MainWindow:: main window init done
пн апр. 13 22:05:53 2026: MainWindow:: server ip from ini-file: "192.168.122.1"
пн апр. 13 22:05:53 2026: MainWindow:: HPSDR device local ip from ini-file: "192.168.122.1"
пн апр. 13 22:05:53 2026: MainWindow:: network interface "bridge0" :
пн апр. 13 22:05:53 2026: MainWindow:: -> broadcast address: 172.16.2.255
пн апр. 13 22:05:53 2026: MainWindow:: -> ip address: 172.16.2.99
пн апр. 13 22:05:53 2026: MainWindow:: network interface "virbr0" :
пн апр. 13 22:05:53 2026: MainWindow:: -> broadcast address: 192.168.122.255
пн апр. 13 22:05:53 2026: MainWindow:: -> ip address: 192.168.122.1
пн апр. 13 22:05:53 2026: MainWindow:: found 2 valid ip addresses.
пн апр. 13 22:05:53 2026: MainWindow:: HPSDR network device interface set to: "virbr0"("192.168.122.1")
пн апр. 13 22:05:53 2026: MainWindow:: HPSDR network device interface set to: "virbr0"("192.168.122.1")
пн апр. 13 22:05:53 2026: MainWindow:: using ip address 192.168.122.1 for the server.
пн апр. 13 22:05:53 2026: MainWindow:: using ip address 192.168.122.1 for connecting to a HPSDR device.
пн апр. 13 22:05:53 2026: Init:: main window setup done.
пн апр. 13 22:05:53 2026: Init:: current path: /home/vladimir/Документы/source/cudaSDR/Source
пн апр. 13 22:05:53 2026: Init:: fftwf_wisdom exists.
пн апр. 13 22:05:53 2026: Init:: found fftwf_wisdom - this will be quick!
пн апр. 13 22:05:53 2026: Init:: running application ...
пн апр. 13 22:05:54 2026:
пн апр. 13 22:05:54 2026: DataEngine:: HPSDR device discovery thread started.
пн апр. 13 22:05:54 2026: DataEngine:: HPSDR network device detection...please wait.
пн апр. 13 22:05:54 2026: Discoverer:: using 192.168.122.1 for discovery.
пн апр. 13 22:05:54 2026: Discoverer:: discovery_socket bound successfully to port 46000
пн апр. 13 22:05:54 2026: Discoverer:: discovery data sent.
пн апр. 13 22:05:55 2026: Discoverer:: no device found - trying again...
пн апр. 13 22:05:55 2026: Discoverer:: using 192.168.122.1 for discovery.
пн апр. 13 22:05:55 2026: Discoverer:: discovery_socket bound successfully to port 53869
пн апр. 13 22:05:55 2026: Discoverer:: discovery data sent.
пн апр. 13 22:05:55 2026: DataEngine:: HPSDR discovery thread stopped and deleted.
пн апр. 13 22:05:55 2026:
пн апр. 13 22:05:55 2026: DataEngine:: HPSDR device discovery thread started.
пн апр. 13 22:05:55 2026: DataEngine:: HPSDR network device detection...please wait.
пн апр. 13 22:05:55 2026: DiscovererP2:: using 192.168.122.1 for discovery protocol 2.
пн апр. 13 22:05:55 2026: DiscovererP2:: discovery_socket protocol 2 bound successfully to port 48349
пн апр. 13 22:05:55 2026: DiscovererP2:: discovery protocol 2 data sent.
пн апр. 13 22:05:56 2026: DiscovererP2:: Device on protocol 2 found at 192.168.122.1:1024; Mac addr: [00:1C:C0:A2:17:EE]
пн апр. 13 22:05:56 2026: DiscovererP2:: Device protocol 2 code version: 19
пн апр. 13 22:05:56 2026: DiscovererP2:: Protocol 2 device board ID: 3
пн апр. 13 22:05:56 2026: DiscovererP2:: Protocol 2 device is: Angelia / ANAN-100D
пн апр. 13 22:05:56 2026: DiscovererP2:: Protocol 2 capabilities: 2 ADC, 2 DDC, phaseWords=true, iqFlags=0x"3"
пн апр. 13 22:05:56 2026: DiscovererP2:: Device selected: 192.168.122.1
пн апр. 13 22:05:56 2026: DataEngine:: HPSDR discovery thread stopped and deleted.
пн апр. 13 22:05:56 2026: DataEngine:: found 1 network device(s)
пн апр. 13 22:05:56 2026: DataEngine:: Device 0 @ 192.168.122.1 [00:1C:C0:A2:17:EE] P38
пн апр. 13 22:05:56 2026: DataEngine:: using HPSDR network device at 192.168.122.1
пн апр. 13 22:05:56 2026: DataEngine:: shut down done.
пн апр. 13 22:05:56 2026: DataEngine:: got firmware versions:
пн апр. 13 22:05:56 2026: DataEngine:: Metis firmware: 0
пн апр. 13 22:05:56 2026: DataEngine:: Mercury firmware: 0
пн апр. 13 22:05:56 2026: DataEngine:: Penelope firmware: 0
пн апр. 13 22:05:56 2026: DataEngine:: Pennylane firmware: 0
пн апр. 13 22:05:56 2026: DataEngine:: Hermes firmware: 19
пн апр. 13 22:05:56 2026: DataEngine:: stopping and restarting data engine.
пн апр. 13 22:05:56 2026: DataEngine:: trying to init a DSP core for rx 0
пн апр. 13 22:05:56 2026: DSPEngine:: init DSPEngine with size: 1024
пн апр. 13 22:05:56 2026: Receiver:: set DSP mode to: "LSB"
пн апр. 13 22:05:56 2026: Receiver:: QtDSP for receiver: 0 started.
пн апр. 13 22:05:56 2026: DataEngine:: init DSP core for rx 0 successful !
пн апр. 13 22:05:56 2026: DataEngine:: Alex Configuration = 4098
пн апр. 13 22:05:56 2026: Soundcard volume 32768
пн апр. 13 22:05:56 2026: l: "lavrate"
пн апр. 13 22:05:56 2026: l: "samplerate"
пн апр. 13 22:05:56 2026: l: "speexrate"
пн апр. 13 22:05:56 2026: l: "jack"
пн апр. 13 22:05:56 2026: l: "oss"
пн апр. 13 22:05:56 2026: l: "pipewire"
пн апр. 13 22:05:56 2026: l: "pulse"
пн апр. 13 22:05:56 2026: l: "speex"
пн апр. 13 22:05:56 2026: l: "upmix"
пн апр. 13 22:05:56 2026: l: "vdownmix"
пн апр. 13 22:05:56 2026: l: "default"
пн апр. 13 22:05:56 2026: l: "hdmi:CARD=Generic,DEV=0"
пн апр. 13 22:05:56 2026: l: "hdmi:CARD=Generic,DEV=1"
пн апр. 13 22:05:56 2026: l: "hdmi:CARD=Generic,DEV=2"
пн апр. 13 22:05:56 2026: l: "hdmi:CARD=Generic,DEV=3"
пн апр. 13 22:05:56 2026: l: "usbstream:CARD=Generic"
пн апр. 13 22:05:56 2026: l: "sysdefault:CARD=Generic_1"
пн апр. 13 22:05:56 2026: l: "front:CARD=Generic_1,DEV=0"
пн апр. 13 22:05:56 2026: l: "surround21:CARD=Generic_1,DEV=0"
пн апр. 13 22:05:56 2026: l: "surround40:CARD=Generic_1,DEV=0"
пн апр. 13 22:05:56 2026: l: "surround41:CARD=Generic_1,DEV=0"
пн апр. 13 22:05:56 2026: l: "surround50:CARD=Generic_1,DEV=0"
пн апр. 13 22:05:56 2026: l: "surround51:CARD=Generic_1,DEV=0"
пн апр. 13 22:05:56 2026: l: "surround71:CARD=Generic_1,DEV=0"
пн апр. 13 22:05:56 2026: l: "usbstream:CARD=Generic_1"
пн апр. 13 22:05:56 2026: l: "alsa_output.pci-0000_05_00.1.hdmi-stereo"
пн апр. 13 22:05:56 2026: l: "alsa_output.pci-0000_05_00.6.analog-stereo"
пн апр. 13 22:05:56 2026: res: "alsa_output.pci-0000_05_00.1.hdmi-stereo"
пн апр. 13 22:05:56 2026: SoundOutRatio Rate 1 48000
пн апр. 13 22:05:56 2026: DataEngine:: configured for 1 receiver(s) at 192 kHz sample rate
пн апр. 13 22:05:56 2026: DataEngine:: receiver processor thread started for Rx 0
пн апр. 13 22:05:56 2026: DataEngine:: wide band data processor thread started.
пн апр. 13 22:05:56 2026: DataEngine:: data processor thread started.
пн апр. 13 22:05:56 2026: DataProcessor:: Data Processor thread: QThread(0x55e6b632a040)
пн апр. 13 22:05:56 2026: DataEngine:: data IO thread started.
пн апр. 13 22:05:56 2026: Protocol2:: sockets initialized for 1 receiver(s).
пн апр. 13 22:05:56 2026:
пн апр. 13 22:05:56 2026: Settings:: **********************************************************
пн апр. 13 22:05:56 2026: Settings:: Error: No error
пн апр. 13 22:05:56 2026: Settings:: HW Interface: Hermes
пн апр. 13 22:05:56 2026: Settings:: Server Mode: SDR mode
пн апр. 13 22:05:56 2026: Settings:: DataEngine State: up
пн апр. 13 22:05:56 2026:
пн апр. 13 22:05:56 2026: DataEngine:: Data Engine thread: QThread(0x55e6b00b5080)
пн апр. 13 22:06:20 2026: Settings:: save settings done.
пн апр. 13 22:06:20 2026: DataEngine:: HPSDR device stopped
пн апр. 13 22:06:21 2026: DataEngine:: data IO thread not yet finished...
пн апр. 13 22:06:21 2026: sound thread exit
пн апр. 13 22:06:21 2026: DataEngine:: data IO thread deleted.
пн апр. 13 22:06:21 2026: DataEngine:: iq_queue empty.
пн апр. 13 22:06:21 2026: DataEngine:: data processor thread deleted.
пн апр. 13 22:06:21 2026: WidebandProcessor:: wrong wide band buffer length: 0
пн апр. 13 22:06:21 2026: DataEngine:: wide band data processor thread deleted.
пн апр. 13 22:06:21 2026: DataEngine:: device cards list cleared.
пн апр. 13 22:06:21 2026: DataEngine:: receiver threads deleted, receivers deleted, receiver & thread list cleared.
пн апр. 13 22:06:21 2026: Settings:: switch to receiver: 0
пн апр. 13 22:06:21 2026: MainWindow:: setCurrentReceiver: 0
пн апр. 13 22:06:21 2026:
пн апр. 13 22:06:21 2026: Settings:: **********************************************************
пн апр. 13 22:06:21 2026: Settings:: Error: No error
пн апр. 13 22:06:21 2026: Settings:: HW Interface: Hermes
пн апр. 13 22:06:21 2026: Settings:: Server Mode: SDR mode
пн апр. 13 22:06:21 2026: Settings:: DataEngine State: down
пн апр. 13 22:06:21 2026:
пн апр. 13 22:06:21 2026: DataEngine:: shut down done.

View File

@ -26,6 +26,8 @@ HEADERS += \
./src/DataEngine/cusdr_dataIO.h \
./src/DataEngine/cusdr_discoverer_P1.h \
./src/DataEngine/cusdr_discoverer_P2.h \
./src/DataEngine/cusdr_protocol2_profile.h \
./src/DataEngine/cusdr_protocol2_io.h \
./src/DataEngine/cusdr_receiver.h \
./src/DataEngine/soundout.h \
./src/DataEngine/fractresampler.h \
@ -102,6 +104,8 @@ HEADERS += \
./src/DataEngine/cusdr_dataIO.h \
./src/DataEngine/cusdr_discoverer_P1.h \
./src/DataEngine/cusdr_discoverer_P2.h \
./src/DataEngine/cusdr_protocol2_profile.h \
./src/DataEngine/cusdr_protocol2_io.h \
./src/DataEngine/cusdr_receiver.h \
./src/DataEngine/soundout.h \
./src/DataEngine/fractresampler.h \
@ -176,6 +180,8 @@ SOURCES += \
./src/DataEngine/cusdr_dataIO.cpp \
./src/DataEngine/cusdr_discoverer_P1.cpp \
./src/DataEngine/cusdr_discoverer_P2.cpp \
./src/DataEngine/cusdr_protocol2_profile.cpp \
./src/DataEngine/cusdr_protocol2_io.cpp \
./src/DataEngine/cusdr_receiver.cpp \
./src/DataEngine/soundout.cpp \
./src/DataEngine/fractresampler.cpp \
@ -245,6 +251,8 @@ SOURCES += \
./src/DataEngine/cusdr_dataIO.cpp \
./src/DataEngine/cusdr_discoverer_P1.cpp \
./src/DataEngine/cusdr_discoverer_P2.cpp \
./src/DataEngine/cusdr_protocol2_profile.cpp \
./src/DataEngine/cusdr_protocol2_io.cpp \
./src/DataEngine/cusdr_receiver.cpp \
./src/DataEngine/soundout.cpp \
./src/DataEngine/fractresampler.cpp \

View File

@ -1,10 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE QtCreatorProject>
<!-- Written by QtCreator 13.0.0, 2024-04-12T15:14:32. -->
<!-- Written by QtCreator 19.0.0, 2026-04-13T20:38:08. -->
<qtcreator>
<data>
<variable>EnvironmentId</variable>
<value type="QByteArray">{9df2227e-2f94-4455-9fee-2b0603509b19}</value>
<value type="QByteArray">{96b01fe1-0bbd-4672-be89-b23907511d36}</value>
</data>
<data>
<variable>ProjectExplorer.Project.ActiveTarget</variable>
@ -13,8 +13,8 @@
<data>
<variable>ProjectExplorer.Project.EditorSettings</variable>
<valuemap type="QVariantMap">
<value type="bool" key="EditorConfiguration.AutoDetect">true</value>
<value type="bool" key="EditorConfiguration.AutoIndent">true</value>
<value type="bool" key="EditorConfiguration.AutoSpacesForTabs">false</value>
<value type="bool" key="EditorConfiguration.CamelCaseNavigation">true</value>
<valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.0">
<value type="QString" key="language">Cpp</value>
@ -33,6 +33,7 @@
<value type="bool" key="EditorConfiguration.ConstrainTooltips">false</value>
<value type="int" key="EditorConfiguration.IndentSize">4</value>
<value type="bool" key="EditorConfiguration.KeyboardTooltips">false</value>
<value type="int" key="EditorConfiguration.LineEndingBehavior">0</value>
<value type="int" key="EditorConfiguration.MarginColumn">80</value>
<value type="bool" key="EditorConfiguration.MouseHiding">true</value>
<value type="bool" key="EditorConfiguration.MouseNavigation">true</value>
@ -49,7 +50,7 @@
<value type="bool" key="EditorConfiguration.UseGlobal">true</value>
<value type="bool" key="EditorConfiguration.UseIndenter">false</value>
<value type="int" key="EditorConfiguration.Utf8BomBehavior">1</value>
<value type="bool" key="EditorConfiguration.addFinalNewLine">true</value>
<value type="bool" key="EditorConfiguration.addFinalNewLine">false</value>
<value type="bool" key="EditorConfiguration.cleanIndentation">true</value>
<value type="bool" key="EditorConfiguration.cleanWhitespace">true</value>
<value type="QString" key="EditorConfiguration.ignoreFileTypes">*.md, *.MD, Makefile</value>
@ -69,7 +70,9 @@
<value type="bool" key="AutoTest.Framework.QtQuickTest">true</value>
<value type="bool" key="AutoTest.Framework.QtTest">true</value>
</valuemap>
<value type="bool" key="AutoTest.ApplyFilter">false</value>
<valuemap type="QVariantMap" key="AutoTest.CheckStates"/>
<valuelist type="QVariantList" key="AutoTest.PathFilters"/>
<value type="int" key="AutoTest.RunAfterBuild">0</value>
<value type="bool" key="AutoTest.UseGlobal">true</value>
<valuemap type="QVariantMap" key="ClangTools">
@ -83,22 +86,24 @@
<valuelist type="QVariantList" key="ClangTools.SuppressedDiagnostics"/>
<value type="bool" key="ClangTools.UseGlobalSettings">true</value>
</valuemap>
<value type="int" key="RcSync">0</value>
</valuemap>
</data>
<data>
<variable>ProjectExplorer.Project.Target.0</variable>
<valuemap type="QVariantMap">
<value type="QString" key="DeviceType">Desktop</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Desktop Qt 5.15.2 MinGW 64-bit</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Desktop Qt 5.15.2 MinGW 64-bit</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">qt.qt5.5152.win64_mingw81_kit</value>
<value type="bool" key="HasPerBcDcs">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Qt 5.15.18 (Системная)</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Qt 5.15.18 (Системная)</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">{f03c686f-a66c-435e-a263-3d02bc565002}</value>
<value type="qlonglong" key="ProjectExplorer.Target.ActiveBuildConfiguration">0</value>
<value type="qlonglong" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
<value type="qlonglong" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
<value type="int" key="EnableQmlDebugging">0</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">C:\Users\karpe\Documents\source\cudaSDR\Source\build\Debug</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory.shadowDir">C:/Users/karpe/Documents/source/cudaSDR/Source/build/Debug</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">./build/%{Asciify:%{Kit:FileSystemName}-%{BuildConfig:Name}}</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory.shadowDir">build/Qt_5_15_18-u041eu0442u043bu0430u0434u043au0430</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
@ -133,11 +138,47 @@
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Отладка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
<value type="qlonglong" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
<value type="qlonglong" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">0</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Развёртывание</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Развёртывание</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Deploy</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">1</value>
<valuemap type="QVariantMap" key="ProjectExplorer.DeployConfiguration.CustomData"/>
<value type="bool" key="ProjectExplorer.DeployConfiguration.CustomDataEnabled">false</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.DefaultDeployConfiguration</value>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.Target.DeployConfigurationCount">1</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0">
<value type="bool" key="Analyzer.Perf.Settings.UseGlobalSettings">true</value>
<value type="bool" key="Analyzer.QmlProfiler.Settings.UseGlobalSettings">true</value>
<value type="int" key="Analyzer.Valgrind.Callgrind.CostFormat">0</value>
<value type="bool" key="Analyzer.Valgrind.Settings.UseGlobalSettings">true</value>
<valuelist type="QVariantList" key="Analyzer.Valgrind.SuppressionFiles"/>
<valuelist type="QVariantList" key="CustomOutputParsers"/>
<value type="int" key="PE.EnvironmentAspect.Base">2</value>
<valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
<value type="bool" key="PE.EnvironmentAspect.PrintOnRun">false</value>
<value type="QString" key="PerfRecordArgsId">-e cpu-cycles --call-graph dwarf,4096 -F 250</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4RunConfiguration:</value>
<value type="QString" key="ProjectExplorer.RunConfiguration.BuildKey">/home/vladimir/Документы/source/cudaSDR/Source/cudaSDR.pro</value>
<value type="bool" key="ProjectExplorer.RunConfiguration.Customized">false</value>
<value type="QString" key="ProjectExplorer.RunConfiguration.UniqueId"></value>
<value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
<value type="bool" key="RunConfiguration.UseLibrarySearchPath">true</value>
<value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
<value type="QString" key="RunConfiguration.WorkingDirectory.default">%{RunConfig:Executable:Path}</value>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">2</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.1">
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">C:\Users\karpe\Documents\source\cudaSDR\Source\build\Release</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory.shadowDir">C:/Users/karpe/Documents/source/cudaSDR/Source/build/Release</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/home/vladimir/Документы/source/cudaSDR/Source</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
@ -170,54 +211,47 @@
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.CustomParsers"/>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ParseStandardOutput">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Выпуск</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Выпуск (imported)</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
<value type="int" key="QtQuickCompiler">0</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.2">
<value type="int" key="EnableQmlDebugging">0</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">C:\Users\karpe\Documents\source\cudaSDR\Source\build\Profile</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory.shadowDir">C:/Users/karpe/Documents/source/cudaSDR/Source/build/Profile</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
<valuelist type="QVariantList" key="QtProjectManager.QMakeBuildStep.SelectedAbis"/>
<value type="qlonglong" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
<value type="qlonglong" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">0</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Развёртывание</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Развёртывание</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Deploy</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Сборка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Сборка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">1</value>
<valuemap type="QVariantMap" key="ProjectExplorer.DeployConfiguration.CustomData"/>
<value type="bool" key="ProjectExplorer.DeployConfiguration.CustomDataEnabled">false</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.DefaultDeployConfiguration</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Очистка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Очистка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
<value type="qlonglong" key="ProjectExplorer.Target.DeployConfigurationCount">1</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0">
<value type="bool" key="Analyzer.Perf.Settings.UseGlobalSettings">true</value>
<value type="bool" key="Analyzer.QmlProfiler.Settings.UseGlobalSettings">true</value>
<value type="int" key="Analyzer.Valgrind.Callgrind.CostFormat">0</value>
<value type="bool" key="Analyzer.Valgrind.Settings.UseGlobalSettings">true</value>
<valuelist type="QVariantList" key="Analyzer.Valgrind.SuppressionFiles"/>
<valuelist type="QVariantList" key="CustomOutputParsers"/>
<value type="int" key="PE.EnvironmentAspect.Base">2</value>
<valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
<value type="bool" key="PE.EnvironmentAspect.PrintOnRun">false</value>
<value type="QString" key="PerfRecordArgsId">-e cpu-cycles --call-graph dwarf,4096 -F 250</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.CustomExecutableRunConfiguration</value>
<value type="QString" key="ProjectExplorer.RunConfiguration.BuildKey"></value>
<value type="bool" key="ProjectExplorer.RunConfiguration.Customized">false</value>
<value type="QString" key="ProjectExplorer.RunConfiguration.UniqueId"></value>
<value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
<value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
<value type="QString" key="RunConfiguration.WorkingDirectory.default">%{RunConfig:Executable:Path}</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.CustomParsers"/>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ParseStandardOutput">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Профилирование</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
<value type="qlonglong" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
<value type="int" key="QtQuickCompiler">0</value>
<value type="int" key="SeparateDebugInfo">0</value>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.Target.BuildConfigurationCount">3</value>
<value type="qlonglong" key="ProjectExplorer.Target.BuildConfigurationCount">2</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">0</value>
@ -236,17 +270,21 @@
<value type="bool" key="Analyzer.QmlProfiler.Settings.UseGlobalSettings">true</value>
<value type="int" key="Analyzer.Valgrind.Callgrind.CostFormat">0</value>
<value type="bool" key="Analyzer.Valgrind.Settings.UseGlobalSettings">true</value>
<valuelist type="QVariantList" key="Analyzer.Valgrind.SuppressionFiles"/>
<valuelist type="QVariantList" key="CustomOutputParsers"/>
<value type="int" key="PE.EnvironmentAspect.Base">2</value>
<valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
<value type="bool" key="PE.EnvironmentAspect.PrintOnRun">false</value>
<value type="QString" key="PerfRecordArgsId">-e cpu-cycles --call-graph &quot;dwarf,4096&quot; -F 250</value>
<value type="QString" key="PerfRecordArgsId">-e cpu-cycles --call-graph dwarf,4096 -F 250</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.CustomExecutableRunConfiguration</value>
<value type="QString" key="ProjectExplorer.RunConfiguration.BuildKey"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4RunConfiguration:</value>
<value type="QString" key="ProjectExplorer.RunConfiguration.BuildKey">/home/vladimir/Документы/source/cudaSDR/Source/cudaSDR.pro</value>
<value type="bool" key="ProjectExplorer.RunConfiguration.Customized">false</value>
<value type="QString" key="ProjectExplorer.RunConfiguration.UniqueId"></value>
<value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
<value type="bool" key="RunConfiguration.UseLibrarySearchPath">true</value>
<value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
<value type="QString" key="RunConfiguration.WorkingDirectory.default">%{RunConfig:Executable:Path}</value>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
</valuemap>
@ -255,10 +293,6 @@
<variable>ProjectExplorer.Project.TargetCount</variable>
<value type="qlonglong">1</value>
</data>
<data>
<variable>ProjectExplorer.Project.Updater.FileVersion</variable>
<value type="int">22</value>
</data>
<data>
<variable>Version</variable>
<value type="int">22</value>

Binary file not shown.

210
Source/fftwf_wisdom Normal file
View File

@ -0,0 +1,210 @@
(fftw-3.3.10 fftwf_wisdom #x9e7d4dee #xdb14fed1 #x34bf76a4 #xeb6e8fdf
(fftwf_dft_buffered_register 0 #x11048 #x11048 #x0 #xbf678012 #x4fa660ee #x140158e5 #x1efac71e)
(fftwf_dft_vrank_geq1_register 0 #x10048 #x10048 #x0 #xf697fa78 #xcdc737ef #x327441a3 #x16e103c1)
(fftwf_dft_vrank_geq1_register 0 #x10048 #x10048 #x0 #x3658c180 #xa18ad87a #xde50b473 #xd294bf8b)
(fftwf_dft_buffered_register 0 #x11048 #x11048 #x0 #x2bebc80b #x81f324b9 #x6a4bf0ed #x6c8bf103)
(fftwf_codelet_t2fv_32_avx 0 #x10048 #x10048 #x0 #xc6ca45ce #xf08c5f4a #x61a53ade #xe5e374c8)
(fftwf_dft_buffered_register 0 #x11048 #x11048 #x0 #xcce0f4d3 #x2029d0da #x971e5a53 #xb776e572)
(fftwf_dft_nop_register 0 #x11048 #x11048 #x0 #xb91ee16b #xec933664 #x2ab2cf33 #x5845d482)
(fftwf_codelet_t2bv_32_avx 0 #x10048 #x10048 #x0 #xbf44c489 #xbdb2e056 #x92c9846b #x5d1c048a)
(fftwf_codelet_t2bv_32_avx 0 #x10048 #x10048 #x0 #x5a8b39ad #xb8b02555 #x3c64aabc #x1fed0f6b)
(fftwf_dft_r2hc_register 0 #x11048 #x11048 #x0 #x45aeaaf2 #x0e8ff55c #xd4baf4a3 #x6d2c60b7)
(fftwf_codelet_t1bv_8_avx 0 #x11048 #x11048 #x0 #x0385af82 #x1584993e #x21ff98f5 #x0ea706fe)
(fftwf_codelet_t2fv_32_avx 0 #x10bdd #x10bdd #x0 #xa5af12be #x8ea95383 #xcd10c847 #xe6812dfa)
(fftwf_codelet_n2fv_32_avx 0 #x10048 #x10048 #x0 #x8ceded02 #xd8889599 #x348ed914 #xe7b8d70e)
(fftwf_codelet_q1bv_8_avx 0 #x11048 #x11048 #x0 #x47fd87cc #xeccc4347 #x3482e454 #x84da7ab4)
(fftwf_dft_nop_register 0 #x11048 #x11048 #x0 #x9b4e2f2a #x10bbce26 #xa520eab7 #xb2dded33)
(fftwf_dft_vrank_geq1_register 0 #x10048 #x10048 #x0 #xe828af0f #xfcd40bef #xfc1b366d #x44464cf7)
(fftwf_codelet_n2bv_8_avx 0 #x10048 #x10048 #x0 #x5f9804ff #x109d8d59 #x6cadef76 #xd31f8e66)
(fftwf_dft_vrank_geq1_register 0 #x10048 #x10048 #x0 #x5354d447 #x7457f35d #xc35203b7 #x9b9471e3)
(fftwf_codelet_t2bv_4_avx 0 #x10048 #x10048 #x0 #xdecbd8fc #x48c91b31 #x1e3d2434 #xc732f759)
(fftwf_codelet_n2fv_8_avx 0 #x10048 #x10048 #x0 #xa65d78bf #x28c8422e #x8fef6075 #xac0aeb71)
(fftwf_dft_nop_register 0 #x11048 #x11048 #x0 #x2b40f46e #x5defbfca #xf00e73e3 #x9585f568)
(fftwf_dft_r2hc_register 0 #x11048 #x11048 #x0 #x4317a71b #x5ad4d7ef #x331dd449 #xfb736571)
(fftwf_rdft_rank0_register 2 #x11048 #x11048 #x0 #xde0c3a2f #x9e03c598 #x68f8ef02 #x1037c819)
(fftwf_dft_buffered_register 0 #x11048 #x11048 #x0 #x56b25f30 #x6db26bd5 #x551d412e #x73a7c4af)
(fftwf_dft_nop_register 0 #x11048 #x11048 #x0 #x2f808e1f #x8554593a #x96c3b24b #x2c8a937b)
(fftwf_codelet_t2bv_32_avx 0 #x10048 #x10048 #x0 #xd86f0fcc #x804581bb #x5ccfdfba #x14108c49)
(fftwf_codelet_t1bv_16_avx 0 #x10048 #x10048 #x0 #xa5836669 #xfc0fba54 #x73049780 #x14684861)
(fftwf_codelet_n2fv_8_avx 0 #x10048 #x10048 #x0 #x6af30f58 #x888f2b57 #xe7e2a33a #x9ba6b982)
(fftwf_codelet_t2fv_32_avx 0 #x10048 #x10048 #x0 #xb458c93a #xd17d1b81 #x66376b4c #x0b71675e)
(fftwf_codelet_n2bv_8_avx 0 #x10048 #x10048 #x0 #xdd0f7056 #xbbdc28aa #x74ac7866 #xeb6d5dee)
(fftwf_dft_vrank_geq1_register 0 #x10048 #x10048 #x0 #xfcecc303 #xb8fccff9 #x63dc1862 #xe87bc3b1)
(fftwf_dft_buffered_register 0 #x11048 #x11048 #x0 #xd2823a4d #x9db17531 #x4b791c62 #x3564ec50)
(fftwf_codelet_n2fv_8_avx 0 #x10048 #x10048 #x0 #xe776615d #x3d1226d0 #xd3d61195 #x5ad72fc0)
(fftwf_rdft_rank0_register 0 #x11048 #x11048 #x0 #x99857d35 #x61f5b804 #xc413dfc8 #x38c4da42)
(fftwf_dft_nop_register 0 #x11048 #x11048 #x0 #x154aec9c #xdfc4ed8f #x45044876 #xbfedbe74)
(fftwf_codelet_t2bv_4_avx 0 #x10048 #x10048 #x0 #xf06b0ac4 #x8ab72ac2 #x63b670d4 #xf83e4dff)
(fftwf_rdft_rank0_register 2 #x11048 #x11048 #x0 #x2a30211a #x4db096be #x485978e9 #x7d4e207a)
(fftwf_dft_nop_register 0 #x11bdd #x11bdd #x0 #x5a84361f #x38e7fcfc #x8f97e1b4 #xed5642e5)
(fftwf_codelet_t2bv_32_avx 0 #x10048 #x10048 #x0 #x354634c1 #x7de84de6 #x906765eb #x880d4b2c)
(fftwf_dft_buffered_register 0 #x11048 #x11048 #x0 #x9702d296 #x3a181a15 #xf4ff0639 #x332c90ff)
(fftwf_dft_vrank_geq1_register 0 #x10048 #x10048 #x0 #x49bfd5a6 #xd449989c #x5d2c00b9 #x86924ecd)
(fftwf_dft_nop_register 0 #x11048 #x11048 #x0 #xa5d94cfc #xba335c5d #x2fd70793 #x2b5ec220)
(fftwf_dft_r2hc_register 0 #x11048 #x11048 #x0 #x4c2bcbd2 #x2db07525 #x1292b760 #xcd4030bb)
(fftwf_codelet_n2fv_8_avx 0 #x10048 #x10048 #x0 #x8a70f95a #x3d617279 #xf1aae6ee #x2335e6b2)
(fftwf_dft_nop_register 0 #x11048 #x11048 #x0 #x5046b0b1 #xdb14d36b #x32567afe #x23c1a5b6)
(fftwf_dft_vrank_geq1_register 0 #x11048 #x11048 #x0 #xc9f41270 #x772b994d #x412e4553 #xd7b527c7)
(fftwf_dft_buffered_register 0 #x11048 #x11048 #x0 #x914f085b #x7945eab1 #xb24b3509 #x41ff886a)
(fftwf_dft_vrank_geq1_register 0 #x11048 #x11048 #x0 #xb52700b3 #xfa47dba9 #x7c85764f #x616be215)
(fftwf_dft_nop_register 0 #x11048 #x11048 #x0 #x915169d5 #x99f86bc5 #x380ae3af #xe441f817)
(fftwf_dft_nop_register 0 #x11048 #x11048 #x0 #x8cd648e7 #x3892dc39 #xae8bc0b3 #x6a3e1987)
(fftwf_rdft_rank0_register 0 #x11048 #x11048 #x0 #xbed8e8b9 #x7dfa9d90 #xa67f3e46 #xa4ee79b3)
(fftwf_codelet_t1bv_8_avx 0 #x11048 #x11048 #x0 #xf33cb1b3 #x1a725963 #x6069e4a7 #x306c15fc)
(fftwf_dft_buffered_register 0 #x11048 #x11048 #x0 #x706fca5f #x53aada8b #x94965c5c #x634d2fd8)
(fftwf_codelet_t2fv_16_avx 0 #x10048 #x10048 #x0 #x8f86ac3f #x7cc3d8db #xc7865ecc #xea8b825e)
(fftwf_dft_r2hc_register 0 #x11bdd #x11bdd #x0 #x81ed111e #x16edad1a #xc0ef7522 #xcf76d1d0)
(fftwf_dft_vrank_geq1_register 0 #x10048 #x10048 #x0 #x138aee33 #xc8352e47 #xc44ebf71 #x85806079)
(fftwf_dft_r2hc_register 0 #x11048 #x11048 #x0 #xb6aa2a4f #x2d6fdb68 #x3d3c3f4b #x398161e5)
(fftwf_dft_nop_register 0 #x11048 #x11048 #x0 #x4192e7bc #xa0d41e42 #xccc82904 #xbdc747ca)
(fftwf_codelet_t3fv_8_avx 0 #x10048 #x10048 #x0 #xdcc70e99 #xe6d709f9 #x5ee791c7 #x7d422b59)
(fftwf_dft_vrank_geq1_register 0 #x10048 #x10048 #x0 #x72ce5a30 #x5482f06b #x506065ad #x47a12ff8)
(fftwf_codelet_t2fv_8_avx 0 #x11048 #x11048 #x0 #x61c7cbd7 #x14d54b7c #x382ba1e5 #xd54416a7)
(fftwf_codelet_t2bv_16_avx 0 #x11048 #x11048 #x0 #xf03cffb1 #xd63eb7df #x82dbdfd2 #xaf9e4be5)
(fftwf_dft_buffered_register 0 #x11048 #x11048 #x0 #x89de285e #xea5d14d2 #xc4b52c05 #xe397bf60)
(fftwf_dft_vrank_geq1_register 0 #x10048 #x10048 #x0 #x44365654 #xb5c08cb1 #x3edd6904 #x8b307e7f)
(fftwf_dft_vrank_geq1_register 0 #x10048 #x10048 #x0 #x49a36887 #x31e6c9cb #x813198ae #xe57dfa28)
(fftwf_dft_nop_register 0 #x11bdd #x11bdd #x0 #xa5d94cfc #xba335c5d #x2fd70793 #x2b5ec220)
(fftwf_dft_r2hc_register 0 #x11048 #x11048 #x0 #xe839922e #xe13ab3d6 #x6ab15866 #x59780863)
(fftwf_dft_r2hc_register 0 #x11048 #x11048 #x0 #xd8acdfa7 #x52c4b41b #x96545c23 #x8ae3d854)
(fftwf_codelet_t3bv_8_avx 0 #x11048 #x11048 #x0 #xc07a24d0 #xa87559b1 #xacb5135e #xcfe20ae3)
(fftwf_dft_nop_register 0 #x11048 #x11048 #x0 #xf05d1612 #xeb661327 #x56b40d9b #x41e80030)
(fftwf_dft_nop_register 0 #x11048 #x11048 #x0 #x45f87008 #xf862e179 #x6c9d2b6a #x06422f84)
(fftwf_rdft_rank0_register 0 #x11048 #x11048 #x0 #xaa54d60b #xf700acf5 #xfd0693c3 #x87ea59df)
(fftwf_dft_nop_register 0 #x11048 #x11048 #x0 #x35c81193 #xb264b0ed #x9f9b1cf8 #x94f736e0)
(fftwf_dft_buffered_register 1 #x11048 #x11048 #x0 #xc772c300 #xbd1e274a #x1c96cd74 #xb9977ad0)
(fftwf_dft_r2hc_register 0 #x11048 #x11048 #x0 #x1b81b570 #x56e611b8 #xeda459e8 #x1ecb9c14)
(fftwf_dft_buffered_register 0 #x11048 #x11048 #x0 #x41a1ffd9 #x36f1bdd5 #x82e75fcf #xebe0c760)
(fftwf_dft_r2hc_register 0 #x11048 #x11048 #x0 #x86fd8aaa #xf35f1ad4 #xfa2560ba #x2cb60bf6)
(fftwf_dft_buffered_register 0 #x11048 #x11048 #x0 #xbc1ea005 #xdc206b7d #xd0e1fae4 #x70bb63bb)
(fftwf_dft_buffered_register 0 #x11048 #x11048 #x0 #xfaf646f3 #x00cad654 #x147ab569 #x9ff7f578)
(fftwf_dft_r2hc_register 0 #x11048 #x11048 #x0 #x24dbb8f2 #xc60569cd #x695c7483 #xa67a277e)
(fftwf_dft_buffered_register 0 #x11048 #x11048 #x0 #x1e5fa302 #x4dca4b4b #x68854fe7 #x57f745da)
(fftwf_dft_r2hc_register 0 #x11048 #x11048 #x0 #x775161af #x0c9690a4 #xf9c33690 #x68144260)
(fftwf_dft_r2hc_register 0 #x11048 #x11048 #x0 #xb22b2c91 #x15f7b244 #xe2dcb88a #x445a2d77)
(fftwf_rdft_rank0_register 0 #x11048 #x11048 #x0 #x5cffe061 #xaa815e98 #x2565cca3 #x9e2684da)
(fftwf_dft_r2hc_register 0 #x11048 #x11048 #x0 #xf11c9e6d #xfda297ee #xc23a19f6 #x028f1f16)
(fftwf_codelet_t3bv_8_avx 0 #x11048 #x11048 #x0 #x01dee095 #xc22cc722 #xa96cce78 #x222a6cb0)
(fftwf_rdft_rank0_register 0 #x11048 #x11048 #x0 #x9d3aaef3 #x396b4e63 #x59e4d810 #xb358ae2b)
(fftwf_dft_nop_register 0 #x11048 #x11048 #x0 #x748742f1 #x02518d2d #x940a38c6 #xf6e725eb)
(fftwf_dft_nop_register 0 #x11048 #x11048 #x0 #xeecefd51 #x2166f671 #xa1611d2a #xd04e6a23)
(fftwf_dft_buffered_register 0 #x11bdd #x11bdd #x0 #x9702d296 #x3a181a15 #xf4ff0639 #x332c90ff)
(fftwf_codelet_t2fv_32_avx 0 #x10048 #x10048 #x0 #x82902f64 #xa1f80e73 #xed6633a9 #x5e9c2f4e)
(fftwf_dft_r2hc_register 0 #x11048 #x11048 #x0 #x5f8954c7 #xa30ca998 #x8b48983c #x6b3f25b9)
(fftwf_codelet_t2bv_8_avx 0 #x10048 #x10048 #x0 #xeca2c7ac #xab07871d #xcf2fdd5c #xa724670f)
(fftwf_codelet_q1fv_8_avx 0 #x11048 #x11048 #x0 #xce0c9d82 #x7a1906af #xe4335ac3 #x1515c435)
(fftwf_dft_vrank_geq1_register 0 #x10048 #x10048 #x0 #xabf93701 #x7ee2faf1 #x565156fc #x94d95e58)
(fftwf_dft_vrank_geq1_register 0 #x10048 #x10048 #x0 #x4d3da3c2 #x3cdd488c #x7d81d888 #x3f84c720)
(fftwf_rdft_rank0_register 1 #x11048 #x11048 #x0 #xdef08a3b #x60e2af8b #x46214943 #xe74edad1)
(fftwf_codelet_t2bv_32_avx 0 #x10048 #x10048 #x0 #x889f271b #xfc322bc3 #x77dab9f2 #x358ba725)
(fftwf_dft_nop_register 0 #x11048 #x11048 #x0 #x0a0f2638 #x32aaaa57 #x72d985b6 #x2c793ff3)
(fftwf_codelet_t2bv_32_avx 0 #x10048 #x10048 #x0 #xde21d884 #x3b28cd44 #x6d0c70bc #x14b5084d)
(fftwf_dft_vrank_geq1_register 0 #x10048 #x10048 #x0 #xec2058f9 #x976bdb23 #xbd09b37f #xe2a78192)
(fftwf_dft_nop_register 0 #x11048 #x11048 #x0 #x55cdf1e6 #x3809f899 #x20b600d5 #x69240040)
(fftwf_dft_buffered_register 0 #x11048 #x11048 #x0 #x3c540134 #x544e036b #x4a3d0646 #xab86f544)
(fftwf_codelet_t2bv_32_avx 0 #x10048 #x10048 #x0 #xb070d958 #x23f0478f #x95da449c #x52df1d59)
(fftwf_codelet_t2bv_8_avx 0 #x10048 #x10048 #x0 #xbe023c48 #x57c3e8ad #xd3dc2039 #x20838a60)
(fftwf_codelet_n2bv_8_avx 0 #x10048 #x10048 #x0 #xa73d4f18 #xab7d4dad #xb33a00f6 #x2c4d1cef)
(fftwf_codelet_n2fv_32_avx 0 #x10048 #x10048 #x0 #x1bfd5ad9 #xc4c1f496 #x706c43ea #xb35a0b93)
(fftwf_codelet_t2fv_8_avx 0 #x10048 #x10048 #x0 #x6d50257f #xff715e98 #xbc9e8a5e #x779ffe3b)
(fftwf_dft_nop_register 0 #x11048 #x11048 #x0 #x5d45625a #x80f25011 #x6574fb8b #xd9827f8e)
(fftwf_codelet_t1bv_16_avx 0 #x11048 #x11048 #x0 #x25ff2dc4 #xb27bd269 #x676fa1b6 #x675a4834)
(fftwf_codelet_t1fv_8_avx 0 #x11048 #x11048 #x0 #x3a0fb14f #x423b9fed #x3067af82 #x03b43db6)
(fftwf_rdft_rank0_register 1 #x11bdd #x11bdd #x0 #xd100ff43 #xf8c8f80d #x8d26f4f6 #x41949b46)
(fftwf_dft_vrank_geq1_register 0 #x10048 #x10048 #x0 #x611ef40b #x0ec3adf7 #x0488e4d1 #x6de9ae70)
(fftwf_codelet_n2bv_32_avx 0 #x10048 #x10048 #x0 #xdacbc8bd #xebc59b08 #xc0d6617b #x26bed825)
(fftwf_dft_buffered_register 0 #x11048 #x11048 #x0 #xc0196371 #x452bee68 #x22e21ce7 #xb987384f)
(fftwf_rdft_rank0_register 1 #x11048 #x11048 #x0 #xc8e60148 #x3b8f1795 #xb1557754 #x5aedc31a)
(fftwf_codelet_n2bv_8_avx 0 #x10048 #x10048 #x0 #x692196f4 #xb1736e52 #xeed7664b #x53a9e61f)
(fftwf_dft_nop_register 0 #x11048 #x11048 #x0 #x919470bc #x91f7d5d3 #x507d55fa #x495b9b3b)
(fftwf_codelet_t2fv_8_avx 0 #x10048 #x10048 #x0 #x4e30e5f6 #x6fbac7e4 #xd4268408 #x93bede4b)
(fftwf_dft_nop_register 0 #x11048 #x11048 #x0 #x7b6cd83e #x3719d381 #x70993124 #x32080f66)
(fftwf_dft_r2hc_register 0 #x11048 #x11048 #x0 #xab1286d6 #xa7eb8443 #x7885e372 #x8b88a2f9)
(fftwf_codelet_n2fv_32_avx 0 #x10048 #x10048 #x0 #x407181dc #x8a77cb1e #xa88df8c5 #xa32373b5)
(fftwf_codelet_t2fv_32_avx 0 #x10048 #x10048 #x0 #x001fc58e #x27dce5dd #xdfd1b503 #x0ddd3c3e)
(fftwf_codelet_q1fv_8_avx 0 #x11048 #x11048 #x0 #x0b8ccb37 #xb48da03a #x6d66f038 #xdc85f149)
(fftwf_dft_r2hc_register 0 #x11048 #x11048 #x0 #x746cca09 #xc6673e64 #x38b3a0a1 #x721bbc1f)
(fftwf_codelet_n2fv_64_avx 0 #x10bdd #x10bdd #x0 #xb8f48902 #x3e3cffd5 #x0902e318 #xff82254a)
(fftwf_dft_buffered_register 0 #x11048 #x11048 #x0 #x06798cc0 #xb71d5fb9 #x6860288d #x7643523d)
(fftwf_dft_buffered_register 0 #x11048 #x11048 #x0 #x5d1da51c #x54e5e7ba #x79cf103d #x2115e54f)
(fftwf_codelet_t2bv_32_avx 0 #x11bdd #x11bdd #x0 #xcce0f4d3 #x2029d0da #x971e5a53 #xb776e572)
(fftwf_dft_r2hc_register 0 #x11048 #x11048 #x0 #x277cdc72 #x9b797651 #xcceac7f6 #xa57543d5)
(fftwf_dft_vrank_geq1_register 0 #x10048 #x10048 #x0 #x6262b95b #x5a89ceec #x9747b885 #x227f0de9)
(fftwf_dft_buffered_register 0 #x11048 #x11048 #x0 #x9e007033 #x2492644c #x2214c74b #x113de887)
(fftwf_dft_r2hc_register 0 #x11048 #x11048 #x0 #x67015235 #x7e0a02d1 #x178e099f #x3aa17f88)
(fftwf_dft_r2hc_register 0 #x11048 #x11048 #x0 #x7cfe1332 #x997f9633 #x96cebfbd #x69a7b8b8)
(fftwf_rdft_rank0_register 2 #x11048 #x11048 #x0 #xe5f48c7f #x73ea076e #x620ac891 #x59a03466)
(fftwf_dft_vrank_geq1_register 0 #x11048 #x11048 #x0 #xf9cfd8b3 #xffdd35ff #xaca34269 #x4e329530)
(fftwf_codelet_n2fv_8_avx 0 #x10048 #x10048 #x0 #x9351f675 #x7bf62f77 #x59793867 #x00d8cec1)
(fftwf_dft_nop_register 0 #x11048 #x11048 #x0 #xdcf1b381 #x1fea8184 #x6b6e983d #x7fdde9d2)
(fftwf_dft_r2hc_register 0 #x11048 #x11048 #x0 #xa8efe35c #x59342146 #x22620e48 #xa4c92d5f)
(fftwf_codelet_t2fv_4_avx 0 #x11048 #x11048 #x0 #x8bae44bb #x78f7d4b4 #x9b80a1a8 #xee506046)
(fftwf_dft_vrank_geq1_register 0 #x10048 #x10048 #x0 #xff883af2 #x38b6868f #x1a362913 #xababfc19)
(fftwf_codelet_n2bv_32_avx 0 #x10048 #x10048 #x0 #x6c9b0585 #xd17bef5f #x20df0752 #xda67f938)
(fftwf_codelet_t2bv_8_avx 0 #x11048 #x11048 #x0 #x4445ab84 #xcc57dca8 #xeaeac71c #xca4de992)
(fftwf_codelet_n2fv_64_avx 0 #x10048 #x10048 #x0 #xb8f48902 #x3e3cffd5 #x0902e318 #xff82254a)
(fftwf_codelet_t2bv_32_avx 0 #x10048 #x10048 #x0 #x3ecdd32d #x5ff3dacd #x21fe976e #xd20e902b)
(fftwf_dft_vrank_geq1_register 0 #x10048 #x10048 #x0 #xe363e8b2 #x4313f054 #x96d9aa98 #x7e5a132a)
(fftwf_codelet_n2bv_8_avx 0 #x10048 #x10048 #x0 #x5e6023d1 #x796510e5 #xc15cfcad #xb6487173)
(fftwf_codelet_q1bv_8_avx 0 #x11048 #x11048 #x0 #xcb059760 #x72070345 #x293632f7 #xb3fb4a70)
(fftwf_dft_nop_register 0 #x11048 #x11048 #x0 #x7aaf951d #xf13ca796 #x98d28ec2 #x9426a453)
(fftwf_dft_r2hc_register 0 #x11048 #x11048 #x0 #x81ed111e #x16edad1a #xc0ef7522 #xcf76d1d0)
(fftwf_dft_r2hc_register 0 #x11048 #x11048 #x0 #x90d3a80b #x5e7fa8d7 #xc88351dc #xa38756c6)
(fftwf_dft_buffered_register 1 #x11bdd #x11bdd #x0 #xa2f7e746 #xc19d8119 #xcf28ff1a #xfc92a9a1)
(fftwf_dft_buffered_register 0 #x11048 #x11048 #x0 #x6620455b #x489ef1e0 #x1c4922dd #x121066bd)
(fftwf_codelet_t2fv_8_avx 0 #x10048 #x10048 #x0 #x8a755267 #x6378e3be #x20af89ad #xb4a633e9)
(fftwf_codelet_t2fv_16_avx 0 #x10048 #x10048 #x0 #xfeec02f8 #xbbf06357 #xb26e7a2b #xf7b9dcb8)
(fftwf_rdft_rank0_register 1 #x11048 #x11048 #x0 #xb2e78a54 #x791b0737 #x7128305f #x7aeca171)
(fftwf_dft_r2hc_register 0 #x11048 #x11048 #x0 #x8ec615de #x83b6abee #x95ee41ea #x9f119646)
(fftwf_codelet_n2fv_8_avx 0 #x10048 #x10048 #x0 #x1ed1cfd9 #x0a08a1d5 #xb2f3dfde #xea963620)
(fftwf_rdft_rank0_register 3 #x11048 #x11048 #x0 #xbdb6124a #x9f5eef16 #x9ac509c1 #x558de67c)
(fftwf_codelet_t3fv_8_avx 0 #x11048 #x11048 #x0 #xa1d259de #xce6fddbf #xb72b5fff #x14c025b4)
(fftwf_codelet_n2bv_8_avx 0 #x10048 #x10048 #x0 #x017d7382 #xbd6f3d64 #x1cc0b76d #x12cff5e6)
(fftwf_dft_vrank_geq1_register 0 #x11048 #x11048 #x0 #x2620513b #x20d12ad4 #x3bd43dc6 #x4eb0a878)
(fftwf_codelet_t2fv_32_avx 0 #x10048 #x10048 #x0 #x2c50659a #x343a7df7 #xd727540d #xacfea1f9)
(fftwf_rdft_rank0_register 0 #x11048 #x11048 #x0 #xc52eab0b #x65a67d77 #xdbeeda13 #x3a99ec37)
(fftwf_dft_nop_register 0 #x11048 #x11048 #x0 #xb2ccdb75 #x4b421683 #xf0a42600 #xc748a19a)
(fftwf_rdft_rank0_register 0 #x11048 #x11048 #x0 #x676222b4 #x3bf90562 #x3ecf6426 #x676e17b6)
(fftwf_dft_nop_register 0 #x11048 #x11048 #x0 #x408c8bfd #x559e4b35 #xe3a69b3a #x8780967b)
(fftwf_codelet_n2fv_8_avx 0 #x10048 #x10048 #x0 #xc47077d2 #x0b946f59 #x97b34c14 #x57ad551b)
(fftwf_dft_buffered_register 0 #x11048 #x11048 #x0 #x60aaaba7 #x92f4ebed #xf89abae8 #xe9598c47)
(fftwf_dft_buffered_register 1 #x11048 #x11048 #x0 #x6b9a127c #x8569b7e4 #xeee02f6e #x5f46a49d)
(fftwf_codelet_t2fv_32_avx 0 #x10048 #x10048 #x0 #xd675f99f #xe71be492 #x508feb6a #x493761f2)
(fftwf_dft_vrank_geq1_register 0 #x10048 #x10048 #x0 #xfd469170 #xfe2eb038 #x41160fd0 #x0e870d1b)
(fftwf_dft_r2hc_register 0 #x11048 #x11048 #x0 #xf1c9c6cf #x0fa1a00a #x6524cc29 #x61f14b34)
(fftwf_codelet_t1fv_8_avx 0 #x10048 #x10048 #x0 #xf1915d84 #x56c4bdfa #x16f8d847 #xdbd3c190)
(fftwf_dft_buffered_register 0 #x11048 #x11048 #x0 #x0673d81a #x1fbdf76c #x9d672161 #xb4038088)
(fftwf_dft_vrank_geq1_register 0 #x10048 #x10048 #x0 #x1f9954b3 #x2067df8c #xfc16d2a0 #x150d9670)
(fftwf_codelet_t2fv_4_avx 0 #x10048 #x10048 #x0 #x7eec2f32 #x14404785 #x41e3b96d #xd33c4812)
(fftwf_dft_vrank_geq1_register 0 #x10048 #x10048 #x0 #xe542e2ba #xdcaf0610 #xdfdd35e4 #xe947cb44)
(fftwf_codelet_t1fv_8_avx 0 #x11048 #x11048 #x0 #x44202467 #x8ac28d39 #xa9cf7059 #x76b5bfe5)
(fftwf_codelet_t1bv_8_avx 0 #x11048 #x11048 #x0 #x3330c0b3 #x6e46afbc #xededb5c9 #x20a9decf)
(fftwf_codelet_n2bv_64_avx 0 #x10bdd #x10bdd #x0 #x093ef7e2 #x52543b08 #x2dff6879 #x0aae1ecc)
(fftwf_codelet_t2fv_32_avx 0 #x10048 #x10048 #x0 #x1e46b364 #xd96e9eeb #x7eac6d13 #x3fa2cbae)
(fftwf_rdft_rank0_register 1 #x11048 #x11048 #x0 #x5eeb1347 #x41745ef0 #x7bb3914d #x074224fc)
(fftwf_codelet_t2fv_32_avx 0 #x10048 #x10048 #x0 #xa5af12be #x8ea95383 #xcd10c847 #xe6812dfa)
(fftwf_rdft_rank0_register 0 #x11bdd #x11bdd #x0 #xaa54d60b #xf700acf5 #xfd0693c3 #x87ea59df)
(fftwf_dft_r2hc_register 0 #x11bdd #x11bdd #x0 #xd7e9c742 #x2aa7271c #xc5703d32 #x2307ef1f)
(fftwf_codelet_n2bv_32_avx 0 #x10048 #x10048 #x0 #x9eb2edbf #x922114ae #xb3ba36b9 #x31dd942c)
(fftwf_dft_r2hc_register 0 #x11048 #x11048 #x0 #xf2186dce #x3336d4d4 #xb6c3e379 #xa0c769bf)
(fftwf_codelet_t2fv_8_avx 0 #x10048 #x10048 #x0 #x697b20b6 #x6432f0af #xb6a1bcf0 #x310827eb)
(fftwf_codelet_t1fv_4_avx 0 #x10048 #x10048 #x0 #x5d434298 #x88e29877 #xadad8a78 #x52119eab)
(fftwf_dft_buffered_register 0 #x11048 #x11048 #x0 #x15e9b2b0 #x58491c83 #x479ea6c6 #x96cd0863)
(fftwf_codelet_t2bv_4_avx 0 #x10048 #x10048 #x0 #xb3964c50 #x578456fb #x62e28e4e #x195542ce)
(fftwf_codelet_t2bv_8_avx 0 #x10048 #x10048 #x0 #x89098911 #x7a6d2e32 #x5b2d7c65 #xb570e255)
(fftwf_codelet_t2fv_32_avx 0 #x10048 #x10048 #x0 #x943925ca #xa91c721c #x7ce26e64 #x6c0dac21)
(fftwf_dft_buffered_register 0 #x11048 #x11048 #x0 #x662ba901 #x5a6ae6e9 #xf9e1a94a #x9c9d4368)
(fftwf_codelet_n2fv_8_avx 0 #x10048 #x10048 #x0 #x0c88c289 #x34d63ee3 #xeca9a860 #xae01ca50)
(fftwf_codelet_n2bv_64_avx 0 #x10048 #x10048 #x0 #x6c447a57 #x88d0c094 #x74220cbd #xa4af46b7)
(fftwf_codelet_t2fv_16_avx 0 #x10048 #x10048 #x0 #x80536cc3 #x5458ebc9 #x6181e146 #x355578d6)
(fftwf_rdft_rank0_register 1 #x11048 #x11048 #x0 #xe64bf633 #xa67fdf57 #xf4d05e35 #x27d840d4)
(fftwf_codelet_n2bv_8_avx 0 #x10048 #x10048 #x0 #x2f2a8091 #xded841be #xee8d1000 #x418fcb19)
(fftwf_dft_vrank_geq1_register 0 #x10048 #x10048 #x0 #x71c8ab5a #xff5e8f31 #xc29c3d46 #xecfd8c8e)
(fftwf_dft_buffered_register 0 #x11048 #x11048 #x0 #x94055af3 #x47c04613 #x7c55788b #x735b3c18)
(fftwf_dft_vrank_geq1_register 0 #x10048 #x10048 #x0 #x3fb520e9 #xab95099a #x88162c34 #x7c94252c)
(fftwf_dft_nop_register 0 #x11048 #x11048 #x0 #xec88e263 #x144cb404 #x0619adb6 #x2c028a21)
(fftwf_dft_r2hc_register 0 #x11048 #x11048 #x0 #x9a96afcb #x72bc20b1 #xe9f58b0a #x8b7d2402)
(fftwf_dft_nop_register 0 #x11048 #x11048 #x0 #x7ccc118f #xed40aff8 #x3e3a2bc2 #x415f0622)
(fftwf_dft_r2hc_register 0 #x11048 #x11048 #x0 #xb4a3a02c #x91f630fe #x5f920fcb #x7c48f674)
(fftwf_rdft_rank0_register 3 #x11048 #x11048 #x0 #x023e96d1 #x7146ba5b #x6e09d5e5 #x172339c7)
)

View File

@ -39,6 +39,7 @@
// use WIDEBAND_PROCESSOR_DEBUG
#include "cusdr_dataEngine.h"
#include "cusdr_protocol2_profile.h"
/*!
@ -62,6 +63,45 @@ static int firstTimeRxInit;
static quint8 adc_rx1_4, adc_rx5_8, adc_rx9_16;
static quint8 new_adc_rx1_4, new_adc_rx5_8, new_adc_rx9_16;
namespace {
bool invokeDataIOInitFrame(DataIO *dataIO, int rx) {
if (!dataIO)
return false;
return QMetaObject::invokeMethod(
dataIO,
"sendInitFramesToNetworkDevice",
Qt::BlockingQueuedConnection,
Q_ARG(int, rx));
}
bool invokeDataIOStartStop(DataIO *dataIO, char value) {
if (!dataIO)
return false;
return QMetaObject::invokeMethod(
dataIO,
"networkDeviceStartStop",
Qt::BlockingQueuedConnection,
Q_ARG(char, value));
}
bool invokeDataIOStop(DataIO *dataIO) {
if (!dataIO)
return false;
return QMetaObject::invokeMethod(
dataIO,
"stop",
Qt::BlockingQueuedConnection);
}
}
DataEngine::DataEngine(QObject *parent)
: QObject(parent)
, set(Settings::instance())
@ -88,6 +128,7 @@ DataEngine::DataEngine(QObject *parent)
, m_hpsdrDevices(0)
, m_configure(10)
, m_timeout(5000)
, m_discoveryProtocol(1)
, m_remainingTime(0)
, m_RxFrequencyChange(0)
, m_forwardPower(0)
@ -459,33 +500,32 @@ bool DataEngine::startDataEngineWithoutConnection() {
bool DataEngine::findHPSDRDevices() {
if (!m_discoverer) createDiscoverer();
for (int protocolVersion = 1; protocolVersion <= 2; ++protocolVersion) {
// HPSDR network IO thread
if (!startDiscoverer(QThread::NormalPriority)) {
m_discoveryProtocol = protocolVersion;
if (!m_discoverer)
createDiscoverer();
if (!startDiscoverer(QThread::NormalPriority)) {
io.networkIOMutex.lock();
DATA_ENGINE_DEBUG << "HPSDR device discovery thread could not be started.";
io.networkIOMutex.unlock();
return false;
}
io.networkIOMutex.lock();
DATA_ENGINE_DEBUG << "HPSDR device discovery thread could not be started.";
io.networkIOMutex.unlock();
return false;
}
io.networkIOMutex.lock();
DATA_ENGINE_DEBUG << "HPSDR network device detection...please wait.";
set->setSystemMessage("HPSDR network device detection...please wait", 0);
io.devicefound.wait(&io.networkIOMutex);
m_hpsdrDevices = set->getHpsdrNetworkDevices();
if (m_hpsdrDevices == 0) {
DATA_ENGINE_DEBUG << "HPSDR network device detection...please wait.";
set->setSystemMessage("HPSDR network device detection...please wait", 0);
io.devicefound.wait(&io.networkIOMutex);
m_hpsdrDevices = set->getHpsdrNetworkDevices();
io.networkIOMutex.unlock();
stopDiscoverer();
DATA_ENGINE_DEBUG << "no device found. HPSDR hardware powered? Network connection established?";
set->setSystemMessage("no device found. HPSDR hardware powered? Network connection established?", 10000);
setSystemState(QSDR::HwIOError, m_hwInterface, m_serverMode, QSDR::DataEngineDown);
}
else {
if (m_hpsdrDevices == 0)
continue;
emit clearSystemMessageEvent();
if (m_hpsdrDevices > 1)
@ -493,31 +533,44 @@ bool DataEngine::findHPSDRDevices() {
QList<TNetworkDevicecard> metisList = set->getMetisCardsList();
DATA_ENGINE_DEBUG << "found " << metisList.count() << " network device(s)";
for (int i = 0; i < metisList.count(); i++) {
for (int i = 0; i < metisList.count(); i++) {
DATA_ENGINE_DEBUG << "Device "
<< i << " @ "
<< qPrintable(metisList.at(i).ip_address.toString())
//<< " [" << qPrintable((char *) &metisList.at(i).mac_address) << "]";
<< " [" << metisList.at(i).mac_address << "]";
<< " [" << metisList.at(i).mac_address << "]"
<< " P" << metisList.at(i).protocolVersion;
}
io.hpsdrDeviceIPAddress = set->getCurrentMetisCard().ip_address;
io.hpsdrDeviceName = set->getCurrentMetisCard().boardName;
DATA_ENGINE_DEBUG << "using HPSDR network device at " << qPrintable(io.hpsdrDeviceIPAddress.toString());
//Sleep(100);
SleeperThread::msleep(100);
// stop the discovery thread
io.networkIOMutex.unlock();
stopDiscoverer();
if (set->getCurrentMetisCard().protocolVersion >= 2) {
const TNetworkDevicecard currentDevice = set->getCurrentMetisCard();
set->setHPSDRHardware(1);
set->setMercuryPresence(false);
set->setPenelopePresence(false);
set->setPennyLanePresence(false);
set->setExcaliburPresence(false);
set->setAlexPresence(currentDevice.hasAlex0 || currentDevice.hasAlex1);
if (currentDevice.ddcCount > 0 && set->getNumberOfReceivers() > currentDevice.ddcCount)
set->setReceivers(this, currentDevice.ddcCount);
io.hermesFW = set->getCurrentMetisCard().firmwareVersion;
set->setHermesVersion(io.hermesFW);
return true;
}
if (getFirmwareVersions()) return true;
if (getFirmwareVersions())
return true;
return false;
}
DATA_ENGINE_DEBUG << "no device found. HPSDR hardware powered? Network connection established?";
set->setSystemMessage("no device found. HPSDR hardware powered? Network connection established?", 10000);
setSystemState(QSDR::HwIOError, m_hwInterface, m_serverMode, QSDR::DataEngineDown);
return false;
}
@ -580,12 +633,12 @@ bool DataEngine::getFirmwareVersions() {
//setSampleRate(this, set->getSampleRate());
SleeperThread::msleep(100);
// pre-conditioning
for (int i = 0; i < io.receivers; i++)
m_dataIO->sendInitFramesToNetworkDevice(i);
// pre-conditioning
for (int i = 0; i < io.receivers; i++)
invokeDataIOInitFrame(m_dataIO, i);
if (m_serverMode == QSDR::SDRMode)
m_dataIO->networkDeviceStartStop(0x01); // 0x01 for starting Metis without wide band data
if (m_serverMode == QSDR::SDRMode)
invokeDataIOStartStop(m_dataIO, 0x01); // 0x01 for starting Metis without wide band data
m_networkDeviceRunning = true;
setSystemState(QSDR::NoError, m_hwInterface, m_serverMode, QSDR::DataEngineUp);
@ -988,12 +1041,12 @@ bool DataEngine::start() {
// pre-conditioning
for (int i = 0; i < io.receivers; i++)
m_dataIO->sendInitFramesToNetworkDevice(i);
invokeDataIOInitFrame(m_dataIO, i);
if (m_serverMode == QSDR::SDRMode && set->getWidebandData())
m_dataIO->networkDeviceStartStop(0x03); // 0x03 for starting the device with wide band data
invokeDataIOStartStop(m_dataIO, 0x03); // 0x03 for starting the device with wide band data
else
m_dataIO->networkDeviceStartStop(0x01); // 0x01 for starting the device without wide band data
invokeDataIOStartStop(m_dataIO, 0x01); // 0x01 for starting the device without wide band data
m_networkDeviceRunning = true;
@ -1017,10 +1070,10 @@ void DataEngine::stop() {
// turn time stamping off
setTimeStamp(this, false);
// stop the device
m_dataIO->networkDeviceStartStop(0);
m_networkDeviceRunning = false;
DATA_ENGINE_DEBUG << "HPSDR device stopped";
// stop the device
invokeDataIOStartStop(m_dataIO, 0);
m_networkDeviceRunning = false;
DATA_ENGINE_DEBUG << "HPSDR device stopped";
// stop the threads
//SleeperThread::msleep(100);
@ -1434,7 +1487,10 @@ void DataEngine::disconnectDSPSlots() {
void DataEngine::createDiscoverer() {
m_discoverer = new DiscovererP1(&io);
if (m_discoveryProtocol >= 2)
m_discoverer = new DiscovererP2(&io);
else
m_discoverer = new DiscovererP1(&io);
m_discoveryThread = new QThreadEx();
m_discoverer->moveToThread(m_discoveryThread);
@ -1570,7 +1626,7 @@ void DataEngine::stopDataIO() {
if (m_dataIOThread->isRunning()) {
m_dataIO->stop();
invokeDataIOStop(m_dataIO);
m_dataIOThread->quit();
while (!m_dataIOThread->isFinished()) {
@ -2114,23 +2170,29 @@ float DataEngine::getFilterSizeCalibrationOffset() {
void DataEngine::searchHpsdrNetworkDevices() {
if (!m_discoverer) createDiscoverer();
for (int protocolVersion = 1; protocolVersion <= 2; ++protocolVersion) {
// HPSDR network IO thread
if (!startDiscoverer(QThread::NormalPriority)) {
m_discoveryProtocol = protocolVersion;
DATA_ENGINE_DEBUG << "HPSDR network discovery thread could not be started.";
return;
if (!m_discoverer)
createDiscoverer();
if (!startDiscoverer(QThread::NormalPriority)) {
DATA_ENGINE_DEBUG << "HPSDR network discovery thread could not be started.";
return;
}
io.networkIOMutex.lock();
io.devicefound.wait(&io.networkIOMutex);
const int devicesFound = set->getHpsdrNetworkDevices();
io.networkIOMutex.unlock();
stopDiscoverer();
if (devicesFound > 0)
return;
}
io.networkIOMutex.lock();
io.devicefound.wait(&io.networkIOMutex);
//m_discoverer->findHPSDRDevices();
// stop the discovery thread
io.networkIOMutex.unlock();
stopDiscoverer();
}
void DataEngine::setHPSDRDeviceNumber(int value) {

View File

@ -47,9 +47,10 @@
#include "cusdr_dataIO.h"
#include "cusdr_receiver.h"
#include "cusdr_chirpProcessor.h"
#include "cusdr_audioReceiver.h"
#include "cusdr_discoverer_P1.h"
#include "Util/qcircularbuffer.h"
#include "cusdr_audioReceiver.h"
#include "cusdr_discoverer_P1.h"
#include "cusdr_discoverer_P2.h"
#include "Util/qcircularbuffer.h"
#include "QtDSP/qtdsp_fft.h"
#include "QtDSP/qtdsp_filter.h"
#include "QtDSP/qtdsp_dualModeAverager.h"
@ -198,7 +199,7 @@ private:
AudioEngine* m_audioEngine;
AudioOutProcessor* m_audioOutProcessor;
ChirpProcessor* m_chirpProcessor;
DiscovererP1* m_discoverer;
QObject* m_discoverer;
QThreadEx* m_discoveryThread;
QThreadEx* m_dataIOThread;
@ -256,9 +257,10 @@ private:
int m_fwCount;
int m_configure;
int m_timeout;
int m_txFrame;
int m_bytes;
int m_remainingTime;
int m_txFrame;
int m_bytes;
int m_discoveryProtocol;
int m_remainingTime;
int m_found;
int m_RxFrequencyChange;
int m_counter;

View File

@ -27,6 +27,7 @@
#define LOG_DATAIO
#include "cusdr_dataIO.h"
#include "cusdr_protocol2_io.h"
#include "soundout.h"
#if defined(Q_OS_WIN32)
@ -41,6 +42,7 @@ DataIO::DataIO(THPSDRParameter *ioData)
, set(Settings::instance())
, io(ioData)
, m_dataIOSocketOn(false)
, m_protocol2(0)
, m_setNetworkDeviceHeader(true)
, m_sequence(0)
, m_oldSequence(-1)
@ -56,6 +58,7 @@ DataIO::DataIO(THPSDRParameter *ioData)
, m_stopped(false)
{
m_dataIOSocket = 0;
m_protocol2 = new Protocol2DataPath(set, io, this);
m_metisGetDataSignature.resize(3);
m_metisGetDataSignature[0] = (char)0xEF;
@ -106,11 +109,17 @@ DataIO::DataIO(THPSDRParameter *ioData)
DataIO::~DataIO() {
if (m_dataIOSocketOn) {
if (m_dataIOSocketOn && m_dataIOSocket) {
m_dataIOSocket->close();
delete m_dataIOSocket;
m_dataIOSocket = 0;
}
if (m_pSoundCardOut) {
m_pSoundCardOut->Stop();
delete m_pSoundCardOut;
m_pSoundCardOut = 0;
}
}
void DataIO::stop() {
@ -119,15 +128,20 @@ void DataIO::stop() {
m_stopped = true;
io->networkIOMutex.unlock();
if(m_pSoundCardOut) {
if (m_protocol2 && m_protocol2->isActive())
m_protocol2->stop();
if (m_pSoundCardOut)
SleeperThread::msleep(100);
m_pSoundCardOut->Stop();
delete m_pSoundCardOut;
}
}
void DataIO::initDataReceiverSocket() {
if (m_protocol2 && m_protocol2->isActive()) {
m_dataIOSocketOn = m_protocol2->initSockets();
return;
}
m_dataIOSocket = new QUdpSocket();
int newBufferSize;
@ -230,6 +244,9 @@ void DataIO::initDataReceiverSocket() {
void DataIO::readDeviceData() {
if (m_protocol2 && m_protocol2->isActive())
return;
while (m_dataIOSocket->hasPendingDatagrams()) {
QMutexLocker locker(&io->networkIOMutex);
@ -357,6 +374,11 @@ void DataIO::readData() {
void DataIO::sendInitFramesToNetworkDevice(int rx) {
if (m_protocol2 && m_protocol2->isActive()) {
m_protocol2->sendInitFramesToNetworkDevice(rx);
return;
}
QByteArray initDatagram;
initDatagram.resize(1032);
@ -446,6 +468,11 @@ void DataIO::sendInitFramesToNetworkDevice(int rx) {
void DataIO::networkDeviceStartStop(char value) {
if (m_protocol2 && m_protocol2->isActive()) {
m_protocol2->networkDeviceStartStop(value);
return;
}
TNetworkDevicecard metis = set->getCurrentMetisCard();
//QUdpSocket socket;
@ -517,6 +544,9 @@ void DataIO::sendAudio(u_char *buf) {
void DataIO::writeData() {
if (m_protocol2 && m_protocol2->isActive())
return;
if (m_setNetworkDeviceHeader) {
m_outDatagram.resize(0);
@ -561,6 +591,9 @@ void DataIO::setManualSocketBufferSize(QObject *sender, bool value) {
Q_UNUSED (sender)
if (m_protocol2 && m_protocol2->isActive())
return;
m_manualBufferSize = value;
DATAIO_DEBUG << "m_manualBufferSize to change = " << m_manualBufferSize;
int socketBufferSize = 1032 * set->getSocketBufferSize();
@ -601,6 +634,9 @@ void DataIO::setSocketBufferSize(QObject *sender, int value) {
Q_UNUSED (sender)
if (m_protocol2 && m_protocol2->isActive())
return;
int socketBufferSize = value * 1024;
DATAIO_DEBUG << "m_socketBufferSize = " << value;
@ -621,6 +657,9 @@ void DataIO::setSampleRate(QObject *sender, int value) {
Q_UNUSED(sender)
if (m_protocol2 && m_protocol2->isActive())
return;
int bufferSize;
io->networkIOMutex.lock();
switch (value) {

View File

@ -36,8 +36,8 @@
//#include <QWaitCondition>
//#include <QThread>
#include "cusdr_settings.h"
#include "soundout.h"
#include "cusdr_settings.h"
#include "soundout.h"
#ifdef LOG_DATAIO
# define DATAIO_DEBUG qDebug().nospace() << "DataIO::\t"
@ -46,7 +46,7 @@
#endif
class DataIO : public QObject {
class DataIO : public QObject {
Q_OBJECT
@ -71,10 +71,11 @@ private slots:
void setSocketBufferSize(QObject *sender, int value);
void readDeviceData();
private:
Settings* set;
QUdpSocket* m_dataIOSocket;
//QMutex m_mutex;
private:
Settings* set;
QUdpSocket* m_dataIOSocket;
class Protocol2DataPath* m_protocol2;
//QMutex m_mutex;
QByteArray m_commandDatagram;
QByteArray m_datagram;
QByteArray m_wbDatagram;

View File

@ -226,6 +226,15 @@ int DiscovererP1::findHPSDRDevices() {
mcP1.boardID = no;
mcP1.boardName = str;
mcP1.protocolVersion = 1;
mcP1.firmwareVersion = m_deviceDatagram.at(9) & 0xFF;
mcP1.adcCount = 0;
mcP1.ddcCount = 0;
mcP1.dspClockHz = 0;
mcP1.iqFormatFlags = 0;
mcP1.phaseWords = false;
mcP1.hasAlex0 = false;
mcP1.hasAlex1 = false;
io->networkIOMutex.lock();
DISCOVERER_DEBUG << "Device board ID: " << no;
DISCOVERER_DEBUG << "Device is: " << qPrintable(str);

View File

@ -28,6 +28,7 @@
#define LOG_DISCOVERER
#include "cusdr_discoverer_P2.h"
#include "cusdr_protocol2_profile.h"
#include "Util/cusdr_buttons.h"
@ -185,7 +186,11 @@ int DiscovererP2::findHPSDRDevices() {
m_deviceDatagram.resize(socket.pendingDatagramSize());
socket.readDatagram(m_deviceDatagram.data(), m_deviceDatagram.size(), &mcP2.ip_address, &port);
if (m_deviceDatagram[0] == (char)0 && m_deviceDatagram[1] == (char)0 && m_deviceDatagram[2] == (char)0 && m_deviceDatagram[3] == (char)0) {
if (m_deviceDatagram.size() >= 14 &&
m_deviceDatagram[0] == (char)0 &&
m_deviceDatagram[1] == (char)0 &&
m_deviceDatagram[2] == (char)0 &&
m_deviceDatagram[3] == (char)0) {
status = m_deviceDatagram[4] & 0xFF;
if (status == 2 || status == 3) {
@ -196,41 +201,44 @@ int DiscovererP2::findHPSDRDevices() {
io->networkIOMutex.lock();
DISCOVERER_DEBUG << "Device on protocol 2 found at " << qPrintable(mcP2.ip_address.toString()) << ":" << port << "; Mac addr: [" << mcP2.mac_address << "]";
DISCOVERER_DEBUG << "Device protocol 2 code version: " << qPrintable(QString::number(m_deviceDatagram[13], 10));
DISCOVERER_DEBUG << "Device protocol 2 code version: " << qPrintable(QString::number(m_deviceDatagram[13] & 0xFF, 10));
io->networkIOMutex.unlock();
device = m_deviceDatagram[11] & 0xFF;
QString str;
if (device == 0)
str = "ATLAS";
else if (device == 1)
str = "HERMES_ANAN-10_100)";
else if (device == 2)
str = "HERMES_ANAN_10E_100B)";
else if (device == 3)
str = "ANGELA_ANAN_100D)";
else if (device == 4)
str = "ORION_ANAN_200D)";
else if (device == 5)
str = "ORION_Mk_II_ANAN-7_8000DLE)";
else if (device == 6) {
str = "Hermes-Lite";
}
const Protocol2BoardProfile profile = protocol2BoardProfile(device);
QString str = profile.boardName;
mcP2.boardID = device;
mcP2.boardName = str;
mcP2.protocolVersion = m_deviceDatagram[12] & 0xFF;
mcP2.firmwareVersion = m_deviceDatagram[13] & 0xFF;
mcP2.adcCount = profile.adcCount;
mcP2.ddcCount = profile.defaultDdcCount;
mcP2.dspClockHz = profile.dspClockHz;
mcP2.iqFormatFlags = 0;
mcP2.phaseWords = profile.phaseWords;
mcP2.hasAlex0 = profile.hasAlex0;
mcP2.hasAlex1 = profile.hasAlex1;
if (m_deviceDatagram.size() >= 25) {
mcP2.ddcCount = m_deviceDatagram[20] & 0xFF;
mcP2.phaseWords = (m_deviceDatagram[21] & 0xFF) != 0;
mcP2.iqFormatFlags = m_deviceDatagram[22] & 0xFF;
}
io->networkIOMutex.lock();
DISCOVERER_DEBUG << "Protocol 2 device board ID: " << device;
DISCOVERER_DEBUG << "Protocol 2 device is: " << qPrintable(str);
DISCOVERER_DEBUG << "Protocol 2 capabilities: "
<< mcP2.adcCount << " ADC, "
<< mcP2.ddcCount << " DDC, phaseWords="
<< mcP2.phaseWords << ", iqFlags=0x"
<< QString::number(mcP2.iqFormatFlags, 16);
io->networkIOMutex.unlock();
m_deviceCards.append(mcP2);
str += " (";
str += mcP2.ip_address.toString();
str += ")";
set->addNetworkIOComboBoxEntry(str);
set->addNetworkIOComboBoxEntry(protocol2DeviceSummary(mcP2));
devicesFound++;
}
else {
@ -274,20 +282,11 @@ void DiscovererP2::clear() {
void DiscovererP2::shutdownHPSDRDevice() {
long sequence = 0;
QByteArray arr;
arr.resize(1444);
arr[0] = sequence >> 24;
arr[1] = sequence >> 16;
arr[2] = sequence >> 8;
arr[3] = sequence;
arr[4] = 0;
QByteArray arr(1444, 0x00);
QUdpSocket socket;
QHostAddress addr = mcP2.ip_address;
if (socket.writeDatagram(arr, addr, HIGH_PRIORITY_FROM_HOST_PORT) < 0) {
DISCOVERER_DEBUG << "protocol 2 forced shutdown socket write failed.";
}
if (socket.writeDatagram(arr, addr, HIGH_PRIORITY_FROM_HOST_PORT) < 0)
DISCOVERER_DEBUG << "protocol 2 forced shutdown socket write failed.";
}

View File

@ -0,0 +1,568 @@
/**
* @file cusdr_protocol2_io.cpp
* @brief openHPSDR Protocol 2 transport helper
*/
#define LOG_DATAIO
#include "cusdr_protocol2_io.h"
#include "cusdr_protocol2_profile.h"
#ifdef LOG_DATAIO
# define PROTOCOL2_DEBUG qDebug().nospace() << "Protocol2::\t"
#else
# define PROTOCOL2_DEBUG nullDebug()
#endif
namespace {
static const quint16 kProtocol2DdcSpecificPort = 1025;
static const quint16 kProtocol2HighPriorityToPcPort = 1025;
static const quint16 kProtocol2DdcAudioPort = 1028;
static const quint16 kProtocol2DucIqPort = 1029;
static const quint16 kProtocol2DdcBasePort = 1035;
static const int kProtocol2GeneralPacketSize = 60;
static const int kProtocol2HighPriorityPacketSize = 1444;
static const int kProtocol2StatusPacketMinSize = 31;
int protocol2ReceiverCount(Settings *set) {
const TNetworkDevicecard device = set->getCurrentMetisCard();
const int requestedReceivers = qMax(1, set->getNumberOfReceivers());
if (device.ddcCount > 0)
return qMin(requestedReceivers, device.ddcCount);
return requestedReceivers;
}
quint32 alexFilterWordForFrequency(Settings *set, long frequency, int currentBand) {
if (!set || !set->getAlexPresence())
return 0;
quint32 alexWord = 0;
const quint16 alexConfig = set->getAlexConfig();
const QList<long> hpfLo = set->getHPFLoFrequencies();
const QList<long> hpfHi = set->getHPFHiFrequencies();
const QList<long> lpfLo = set->getLPFLoFrequencies();
const QList<long> lpfHi = set->getLPFHiFrequencies();
const QList<int> alexStates = set->getAlexStates();
if (currentBand >= 0 && currentBand < alexStates.size()) {
const int rxAntenna = alexStates.at(currentBand) & 0x03;
if (rxAntenna >= 1 && rxAntenna <= 3)
alexWord |= (1u << (23 + rxAntenna));
}
if ((alexConfig & 0x02) != 0) {
alexWord |= (1u << 12);
}
else if (hpfLo.size() >= 6 && hpfHi.size() >= 6) {
if (frequency >= hpfLo.at(0) && frequency <= hpfHi.at(0))
alexWord |= (1u << 6);
else if (frequency >= hpfLo.at(1) && frequency <= hpfHi.at(1))
alexWord |= (1u << 5);
else if (frequency >= hpfLo.at(2) && frequency <= hpfHi.at(2))
alexWord |= (1u << 4);
else if (frequency >= hpfLo.at(3) && frequency <= hpfHi.at(3))
alexWord |= (1u << 1);
else if (frequency >= hpfLo.at(4) && frequency <= hpfHi.at(4))
alexWord |= (1u << 2);
else if (frequency >= hpfLo.at(5) && frequency <= hpfHi.at(5)) {
if ((alexConfig & 0x04) != 0)
alexWord |= (1u << 3);
else
alexWord |= (1u << 12);
}
else {
alexWord |= (1u << 12);
}
}
if (lpfLo.size() >= 7 && lpfHi.size() >= 7) {
if (frequency >= lpfLo.at(0) && frequency <= lpfHi.at(0))
alexWord |= (1u << 23);
else if (frequency >= lpfLo.at(1) && frequency <= lpfHi.at(1))
alexWord |= (1u << 22);
else if (frequency >= lpfLo.at(2) && frequency <= lpfHi.at(2))
alexWord |= (1u << 21);
else if (frequency >= lpfLo.at(3) && frequency <= lpfHi.at(3))
alexWord |= (1u << 20);
else if (frequency >= lpfLo.at(4) && frequency <= lpfHi.at(4))
alexWord |= (1u << 31);
else if (frequency >= lpfLo.at(5) && frequency <= lpfHi.at(5))
alexWord |= (1u << 30);
else
alexWord |= (1u << 29);
}
return alexWord;
}
}
Protocol2DataPath::Protocol2DataPath(Settings *settings, THPSDRParameter *ioData, QObject *parent)
: QObject(parent)
, set(settings)
, io(ioData)
, m_commandSocket(0)
, m_statusSocket(0)
, m_heartbeatTimer(0)
, m_running(false)
, m_generalSequence(0)
, m_ddcSequence(0)
, m_highPrioritySequence(0)
{
m_legacyControlBytes = QByteArray(5, 0x00);
}
Protocol2DataPath::~Protocol2DataPath() {
stop();
}
bool Protocol2DataPath::isActive() const {
return set->getCurrentMetisCard().protocolVersion >= 2;
}
bool Protocol2DataPath::initSockets() {
if (!isActive())
return false;
closeSockets();
const QHostAddress localAddress(set->getHPSDRDeviceLocalAddr());
const quint16 discoveryPort = set->getMetisPort();
const int receivers = protocol2ReceiverCount(set);
m_commandSocket = new QUdpSocket(this);
if (!m_commandSocket->bind(localAddress, discoveryPort, QUdpSocket::DontShareAddress)) {
PROTOCOL2_DEBUG << "command socket bind failed on port " << discoveryPort;
closeSockets();
return false;
}
m_statusSocket = new QUdpSocket(this);
if (!m_statusSocket->bind(localAddress, kProtocol2HighPriorityToPcPort, QUdpSocket::DontShareAddress)) {
PROTOCOL2_DEBUG << "status socket bind failed on port " << kProtocol2HighPriorityToPcPort;
closeSockets();
return false;
}
CHECKED_CONNECT(
m_statusSocket,
SIGNAL(readyRead()),
this,
SLOT(readStatusData()));
m_ddcSampleBuffers.clear();
m_ddcSockets.clear();
for (int rx = 0; rx < receivers; ++rx) {
QUdpSocket *socket = new QUdpSocket(this);
const quint16 port = kProtocol2DdcBasePort + rx;
if (!socket->bind(localAddress, port, QUdpSocket::DontShareAddress)) {
PROTOCOL2_DEBUG << "DDC socket bind failed on port " << port;
delete socket;
closeSockets();
return false;
}
CHECKED_CONNECT(
socket,
SIGNAL(readyRead()),
this,
SLOT(readDdcData()));
m_ddcSockets.append(socket);
m_ddcSampleBuffers.append(QList<Protocol2IQSample>());
}
m_heartbeatTimer = new QTimer(this);
m_heartbeatTimer->setInterval(100);
CHECKED_CONNECT(
m_heartbeatTimer,
SIGNAL(timeout()),
this,
SLOT(sendHeartbeat()));
m_partialLegacyFrame.clear();
m_partialLegacyFrame.reserve(BUFFER_SIZE);
m_legacyControlBytes.fill(0x00, 5);
m_running = false;
PROTOCOL2_DEBUG << "sockets initialized for " << receivers << " receiver(s).";
return true;
}
void Protocol2DataPath::stop() {
const bool wasRunning = m_running;
m_running = false;
if (m_heartbeatTimer)
m_heartbeatTimer->stop();
if (wasRunning && m_commandSocket)
sendHighPriorityPacket(false);
closeSockets();
}
void Protocol2DataPath::sendInitFramesToNetworkDevice(int rx) {
Q_UNUSED(rx)
}
void Protocol2DataPath::networkDeviceStartStop(char value) {
if (!m_commandSocket)
return;
if (value == 0) {
if (!m_running)
return;
m_running = false;
if (m_heartbeatTimer)
m_heartbeatTimer->stop();
sendHighPriorityPacket(false);
return;
}
sendGeneralPacket();
sendDdcSpecificPacket();
sendHighPriorityPacket(true);
m_running = true;
if (m_heartbeatTimer)
m_heartbeatTimer->start();
}
void Protocol2DataPath::readStatusData() {
while (m_statusSocket && m_statusSocket->hasPendingDatagrams()) {
m_statusDatagram.resize(m_statusSocket->pendingDatagramSize());
m_statusSocket->readDatagram(m_statusDatagram.data(), m_statusDatagram.size());
if (m_statusDatagram.size() >= kProtocol2StatusPacketMinSize)
updateLegacyControlBytes(m_statusDatagram);
}
}
void Protocol2DataPath::readDdcData() {
QUdpSocket *socket = qobject_cast<QUdpSocket *>(sender());
const int rx = m_ddcSockets.indexOf(socket);
if (rx < 0)
return;
while (socket->hasPendingDatagrams()) {
QByteArray datagram;
datagram.resize(socket->pendingDatagramSize());
socket->readDatagram(datagram.data(), datagram.size());
if (datagram.size() < 16)
continue;
const int bitsPerSample = ((quint8)datagram.at(12) << 8) | (quint8)datagram.at(13);
const int sampleCount = ((quint8)datagram.at(14) << 8) | (quint8)datagram.at(15);
const int payloadBytes = 16 + sampleCount * 6;
if (bitsPerSample != 24 || datagram.size() < payloadBytes)
continue;
for (int i = 0; i < sampleCount; ++i) {
const char *sample = datagram.constData() + 16 + i * 6;
Protocol2IQSample iqSample;
iqSample.i = read24BitSample(sample);
iqSample.q = read24BitSample(sample + 3);
m_ddcSampleBuffers[rx].append(iqSample);
}
}
tryProduceLegacyFrames();
}
void Protocol2DataPath::sendHeartbeat() {
if (!m_running)
return;
sendHighPriorityPacket(true);
}
void Protocol2DataPath::closeSockets() {
if (m_heartbeatTimer) {
disconnect(m_heartbeatTimer, 0, this, 0);
delete m_heartbeatTimer;
m_heartbeatTimer = 0;
}
foreach (QUdpSocket *socket, m_ddcSockets) {
disconnect(socket, 0, this, 0);
socket->close();
delete socket;
}
m_ddcSockets.clear();
m_ddcSampleBuffers.clear();
if (m_statusSocket) {
disconnect(m_statusSocket, 0, this, 0);
m_statusSocket->close();
delete m_statusSocket;
m_statusSocket = 0;
}
if (m_commandSocket) {
disconnect(m_commandSocket, 0, this, 0);
m_commandSocket->close();
delete m_commandSocket;
m_commandSocket = 0;
}
m_partialLegacyFrame.clear();
}
void Protocol2DataPath::sendGeneralPacket() {
QByteArray datagram(kProtocol2GeneralPacketSize, 0x00);
datagram[0] = (m_generalSequence >> 24) & 0xFF;
datagram[1] = (m_generalSequence >> 16) & 0xFF;
datagram[2] = (m_generalSequence >> 8) & 0xFF;
datagram[3] = m_generalSequence & 0xFF;
datagram[4] = 0x00;
datagram[5] = (kProtocol2DdcSpecificPort >> 8) & 0xFF;
datagram[6] = kProtocol2DdcSpecificPort & 0xFF;
datagram[7] = (kProtocol2DucIqPort >> 8) & 0xFF;
datagram[8] = kProtocol2DucIqPort & 0xFF;
datagram[9] = (HIGH_PRIORITY_FROM_HOST_PORT >> 8) & 0xFF;
datagram[10] = HIGH_PRIORITY_FROM_HOST_PORT & 0xFF;
datagram[11] = (kProtocol2HighPriorityToPcPort >> 8) & 0xFF;
datagram[12] = kProtocol2HighPriorityToPcPort & 0xFF;
datagram[13] = (kProtocol2DdcAudioPort >> 8) & 0xFF;
datagram[14] = kProtocol2DdcAudioPort & 0xFF;
datagram[15] = (kProtocol2DucIqPort >> 8) & 0xFF;
datagram[16] = kProtocol2DucIqPort & 0xFF;
datagram[17] = (kProtocol2DdcBasePort >> 8) & 0xFF;
datagram[18] = kProtocol2DdcBasePort & 0xFF;
datagram[21] = (HIGH_PRIORITY_FROM_HOST_PORT >> 8) & 0xFF;
datagram[22] = HIGH_PRIORITY_FROM_HOST_PORT & 0xFF;
datagram[24] = 0x02;
datagram[26] = 0x10;
datagram[27] = 20;
datagram[28] = 32;
const TNetworkDevicecard device = set->getCurrentMetisCard();
if (device.phaseWords)
datagram[37] = (char)((quint8)datagram.at(37) | 0x08);
if ((device.iqFormatFlags & 0x05) == 0x05)
datagram[39] = 0x05;
if (device.boardID == 0)
datagram[56] = qBound(0, protocol2ReceiverCount(set) - 1, 3);
if (device.hasAlex0)
datagram[59] = (char)((quint8)datagram.at(59) | 0x01);
if (device.hasAlex1)
datagram[59] = (char)((quint8)datagram.at(59) | 0x02);
if (m_commandSocket->writeDatagram(datagram, set->getCurrentMetisCard().ip_address, DEVICE_PORT) >= 0)
++m_generalSequence;
else
PROTOCOL2_DEBUG << "general packet write failed.";
}
void Protocol2DataPath::sendDdcSpecificPacket() {
const TNetworkDevicecard device = set->getCurrentMetisCard();
const int receivers = protocol2ReceiverCount(set);
QByteArray datagram(17 + receivers * 6, 0x00);
datagram[0] = (m_ddcSequence >> 24) & 0xFF;
datagram[1] = (m_ddcSequence >> 16) & 0xFF;
datagram[2] = (m_ddcSequence >> 8) & 0xFF;
datagram[3] = m_ddcSequence & 0xFF;
datagram[4] = 0x01;
const int adcCount = qMax(1, device.adcCount);
datagram[4] = adcCount;
for (int adc = 0; adc < adcCount && adc < 8; ++adc) {
if (io->ccTx.dither)
datagram[5] = datagram.at(5) | (1 << adc);
if (io->ccTx.random)
datagram[6] = datagram.at(6) | (1 << adc);
}
for (int rx = 0; rx < receivers; ++rx) {
datagram[7 + rx / 8] = datagram.at(7 + rx / 8) | (1 << (rx % 8));
const int offset = 17 + rx * 6;
datagram[offset + 0] = (adcCount > 1) ? (rx % adcCount) : 0x00;
datagram[offset + 1] = (io->samplerate >> 8) & 0xFF;
datagram[offset + 2] = io->samplerate & 0xFF;
datagram[offset + 3] = 0x00;
datagram[offset + 4] = 0x00;
datagram[offset + 5] = 24;
}
if (m_commandSocket->writeDatagram(datagram, set->getCurrentMetisCard().ip_address, kProtocol2DdcSpecificPort) >= 0)
++m_ddcSequence;
else
PROTOCOL2_DEBUG << "DDC specific packet write failed.";
}
void Protocol2DataPath::sendHighPriorityPacket(bool run) {
QByteArray datagram(kProtocol2HighPriorityPacketSize, 0x00);
const QList<long> frequencies = set->getCtrFrequencies();
const int receivers = protocol2ReceiverCount(set);
const int currentReceiver = set->getCurrentReceiver();
const int currentBand = (int)set->getCurrentHamBand(currentReceiver);
const long currentVfoFrequency = set->getVfoFrequency(currentReceiver);
const quint32 alexWord = alexFilterWordForFrequency(set, currentVfoFrequency, currentBand);
datagram[0] = (m_highPrioritySequence >> 24) & 0xFF;
datagram[1] = (m_highPrioritySequence >> 16) & 0xFF;
datagram[2] = (m_highPrioritySequence >> 8) & 0xFF;
datagram[3] = m_highPrioritySequence & 0xFF;
datagram[4] = run ? 0x01 : 0x00;
for (int rx = 0; rx < receivers; ++rx) {
const quint32 encodedFrequency = encodeFrequency(frequencies.value(rx, frequencies.value(0, 0)));
const int offset = 9 + rx * 4;
datagram[offset + 0] = (encodedFrequency >> 24) & 0xFF;
datagram[offset + 1] = (encodedFrequency >> 16) & 0xFF;
datagram[offset + 2] = (encodedFrequency >> 8) & 0xFF;
datagram[offset + 3] = encodedFrequency & 0xFF;
}
if (set->getAlexPresence()) {
datagram[1432] = (alexWord >> 24) & 0xFF;
datagram[1433] = (alexWord >> 16) & 0xFF;
datagram[1434] = (alexWord >> 8) & 0xFF;
datagram[1435] = alexWord & 0xFF;
}
if (m_commandSocket->writeDatagram(datagram, set->getCurrentMetisCard().ip_address, HIGH_PRIORITY_FROM_HOST_PORT) >= 0)
++m_highPrioritySequence;
else
PROTOCOL2_DEBUG << "high priority packet write failed.";
}
void Protocol2DataPath::updateLegacyControlBytes(const QByteArray &statusDatagram) {
const uchar statusBits = (uchar)statusDatagram.at(4);
const uchar overloadBits = (uchar)statusDatagram.at(5);
char control0 = 0x00;
if (statusBits & 0x01) control0 |= 0x01;
if (statusBits & 0x04) control0 |= 0x02;
if (statusBits & 0x02) control0 |= 0x04;
m_legacyControlBytes[0] = control0;
m_legacyControlBytes[1] = (overloadBits & 0x01) ? 0x01 : 0x00;
m_legacyControlBytes[2] = 0x00;
m_legacyControlBytes[3] = 0x00;
m_legacyControlBytes[4] = (char)(set->getCurrentMetisCard().firmwareVersion & 0xFF);
}
void Protocol2DataPath::tryProduceLegacyFrames() {
const int receivers = qMax(1, set->getNumberOfReceivers());
const int halfFrameSamples = samplesPerLegacyHalfFrame();
if (halfFrameSamples <= 0)
return;
while (true) {
bool hasEnoughData = true;
for (int rx = 0; rx < receivers; ++rx) {
if (rx >= m_ddcSampleBuffers.size() || m_ddcSampleBuffers[rx].size() < halfFrameSamples) {
hasEnoughData = false;
break;
}
}
if (!hasEnoughData)
break;
QByteArray halfFrame(BUFFER_SIZE / 2, 0x00);
int pos = 0;
halfFrame[pos++] = SYNC;
halfFrame[pos++] = SYNC;
halfFrame[pos++] = SYNC;
for (int i = 0; i < m_legacyControlBytes.size(); ++i)
halfFrame[pos++] = m_legacyControlBytes.at(i);
for (int sampleIndex = 0; sampleIndex < halfFrameSamples; ++sampleIndex) {
for (int rx = 0; rx < receivers; ++rx) {
const Protocol2IQSample sample = m_ddcSampleBuffers[rx].takeFirst();
halfFrame[pos++] = (sample.i >> 16) & 0xFF;
halfFrame[pos++] = (sample.i >> 8) & 0xFF;
halfFrame[pos++] = sample.i & 0xFF;
halfFrame[pos++] = (sample.q >> 16) & 0xFF;
halfFrame[pos++] = (sample.q >> 8) & 0xFF;
halfFrame[pos++] = sample.q & 0xFF;
}
halfFrame[pos++] = 0x00;
halfFrame[pos++] = 0x00;
}
m_partialLegacyFrame += halfFrame;
if (m_partialLegacyFrame.size() == BUFFER_SIZE) {
if (!io->iq_queue.isFull())
io->iq_queue.enqueue(m_partialLegacyFrame);
m_partialLegacyFrame.clear();
}
}
}
int Protocol2DataPath::samplesPerLegacyHalfFrame() const {
const int receivers = qMax(1, set->getNumberOfReceivers());
const int bytesPerSample = receivers * 6 + 2;
return (BUFFER_SIZE / 2 - 8) / bytesPerSample;
}
quint32 Protocol2DataPath::encodeFrequency(long frequency) const {
const TNetworkDevicecard device = set->getCurrentMetisCard();
if (!device.phaseWords)
return (quint32)frequency;
const quint64 dspClock = (device.dspClockHz > 0) ? (quint64)device.dspClockHz : 122880000ULL;
return (quint32)(((quint64)(quint32)frequency << 32) / dspClock);
}
qint32 Protocol2DataPath::read24BitSample(const char *data) const {
qint32 value = ((qint32)(quint8)data[0] << 16) |
((qint32)(quint8)data[1] << 8) |
(qint32)(quint8)data[2];
if (value & 0x00800000)
value |= 0xFF000000;
return value;
}

View File

@ -0,0 +1,67 @@
/**
* @file cusdr_protocol2_io.h
* @brief openHPSDR Protocol 2 transport helper
*/
#ifndef _CUSDR_PROTOCOL2_IO_H
#define _CUSDR_PROTOCOL2_IO_H
#include "cusdr_settings.h"
#include <QList>
#include <QTimer>
#include <QUdpSocket>
struct Protocol2IQSample {
qint32 i;
qint32 q;
};
class Protocol2DataPath : public QObject {
Q_OBJECT
public:
Protocol2DataPath(Settings *settings, THPSDRParameter *ioData, QObject *parent = 0);
~Protocol2DataPath();
bool isActive() const;
bool initSockets();
void stop();
void sendInitFramesToNetworkDevice(int rx);
void networkDeviceStartStop(char value);
private slots:
void readStatusData();
void readDdcData();
void sendHeartbeat();
private:
void closeSockets();
void sendGeneralPacket();
void sendDdcSpecificPacket();
void sendHighPriorityPacket(bool run);
void updateLegacyControlBytes(const QByteArray &statusDatagram);
void tryProduceLegacyFrames();
int samplesPerLegacyHalfFrame() const;
quint32 encodeFrequency(long frequency) const;
qint32 read24BitSample(const char *data) const;
private:
Settings* set;
THPSDRParameter* io;
QUdpSocket* m_commandSocket;
QUdpSocket* m_statusSocket;
QList<QUdpSocket*> m_ddcSockets;
QList<QList<Protocol2IQSample> > m_ddcSampleBuffers;
QTimer* m_heartbeatTimer;
QByteArray m_partialLegacyFrame;
QByteArray m_statusDatagram;
QByteArray m_legacyControlBytes;
bool m_running;
quint32 m_generalSequence;
quint32 m_ddcSequence;
quint32 m_highPrioritySequence;
};
#endif // _CUSDR_PROTOCOL2_IO_H

View File

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

View File

@ -0,0 +1,26 @@
/**
* @file cusdr_protocol2_profile.h
* @brief openHPSDR Protocol 2 board capability helpers
*/
#ifndef _CUSDR_PROTOCOL2_PROFILE_H
#define _CUSDR_PROTOCOL2_PROFILE_H
#include "cusdr_settings.h"
struct Protocol2BoardProfile {
int boardId;
const char* boardName;
int adcCount;
int defaultDdcCount;
int dspClockHz;
bool phaseWords;
bool hasAlex0;
bool hasAlex1;
};
Protocol2BoardProfile protocol2BoardProfile(int boardId);
QString protocol2DeviceSummary(const TNetworkDevicecard &device);
#endif // _CUSDR_PROTOCOL2_PROFILE_H

View File

@ -116,8 +116,9 @@ OGLDisplayPanel::OGLDisplayPanel(QWidget *parent)
m_oglTextFreq2 = new OGLText(m_fonts.freqFont2);
m_oglTextImpact = new OGLText(m_fonts.impactFont);
setupConnections();
setupTextstrings();
setupConnections();
setupTextstrings();
setCurrentNetworkDevice(set->getCurrentMetisCard());
set10mhzSource(this, set->get10MHzSource());
set122_88mhzSource(this, set->get122_8MHzSource());
@ -275,11 +276,17 @@ void OGLDisplayPanel::setupConnections() {
this,
SLOT(setPennylaneVersion(int)));
CHECKED_CONNECT(
set,
SIGNAL(hermesVersionChanged(int)),
this,
SLOT(setHermesVersion(int)));
CHECKED_CONNECT(
set,
SIGNAL(hermesVersionChanged(int)),
this,
SLOT(setHermesVersion(int)));
CHECKED_CONNECT(
set,
SIGNAL(hpsdrNetworkDeviceChanged(TNetworkDevicecard)),
this,
SLOT(setCurrentNetworkDevice(TNetworkDevicecard)));
CHECKED_CONNECT(
set,
@ -2725,7 +2732,7 @@ void OGLDisplayPanel::setHermesVersion(int value) {
m_hermesVersion.append(str.setNum(value%10));
}
void OGLDisplayPanel::setMetisVersion(int value) {
void OGLDisplayPanel::setMetisVersion(int value) {
QString str;
switch (m_hwInterface) {
@ -2742,10 +2749,24 @@ void OGLDisplayPanel::setMetisVersion(int value) {
break;
}
}
void OGLDisplayPanel::setExcaliburVersion(QObject *sender, int value) {
}
void OGLDisplayPanel::setCurrentNetworkDevice(TNetworkDevicecard card) {
if (card.protocolVersion >= 2 && !card.boardName.isEmpty()) {
m_hermesString = card.boardName + " ";
m_hermesStringWidth = m_oglTextSmall->fontMetrics().width(m_hermesString);
}
else {
m_hermesString = QString("Hermes ");
m_hermesStringWidth = m_oglTextSmall->fontMetrics().width(m_hermesString);
}
update();
}
void OGLDisplayPanel::setExcaliburVersion(QObject *sender, int value) {
Q_UNUSED (sender)

View File

@ -318,14 +318,15 @@ private slots:
void setPenelopePresence(bool value);
void setPennylanePresence(bool value);
void setAlexPresence(bool value);
void setExcaliburPresence(bool value);
void setHermesVersion(int value);
void setMercuryVersion(int value);
void setPenelopeVersion(int value);
void setPennylaneVersion(int value);
void setMetisVersion(int value);
void setExcaliburVersion(QObject *sender, int value);
void setAlexVersion(QObject *sender, int value);
void setExcaliburPresence(bool value);
void setHermesVersion(int value);
void setMercuryVersion(int value);
void setPenelopeVersion(int value);
void setPennylaneVersion(int value);
void setMetisVersion(int value);
void setCurrentNetworkDevice(TNetworkDevicecard card);
void setExcaliburVersion(QObject *sender, int value);
void setAlexVersion(QObject *sender, int value);
void setMouseWheelFreqStep(QObject *sender, int rx, qreal value);

View File

@ -33,9 +33,10 @@
//#include <QMenu>
//#include <QFileDialog>
//#include <QDebug>
#include <QBoxLayout>
#include "cusdr_networkWidget.h"
#include <QBoxLayout>
#include "cusdr_networkWidget.h"
#include "DataEngine/cusdr_protocol2_profile.h"
#define btn_height 15
@ -499,13 +500,16 @@ void NetworkWidget::setNetworkDeviceList(QList<TNetworkDevicecard> list) {
return;
}
networkDeviceIPAdresses->clear();
foreach (TNetworkDevicecard device, list) {
networkDeviceIPAdresses->addItem(device.ip_address.toString());
networkDeviceIPAdresses->update();
}
}
networkDeviceIPAdresses->clear();
foreach (TNetworkDevicecard device, list) {
if (device.protocolVersion >= 2)
networkDeviceIPAdresses->addItem(protocol2DeviceSummary(device));
else
networkDeviceIPAdresses->addItem(QString("%1 (%2)").arg(device.boardName).arg(device.ip_address.toString()));
networkDeviceIPAdresses->update();
}
}
void NetworkWidget::setCurrentNetworkDevice(TNetworkDevicecard card) {

View File

@ -483,6 +483,15 @@ typedef struct _networkDeviceCard {
char mac_address[18];
int boardID;
QString boardName;
int protocolVersion;
int firmwareVersion;
int adcCount;
int ddcCount;
int dspClockHz;
int iqFormatFlags;
bool phaseWords;
bool hasAlex0;
bool hasAlex1;
} TNetworkDevicecard;

29
cudaSDR.log Normal file
View File

@ -0,0 +1,29 @@
пн апр. 13 21:24:14 2026: ************************************************************************
пн апр. 13 21:24:14 2026: Settings:: start at: пн апр. 13 21:24:14 2026
пн апр. 13 21:24:14 2026: cudaSDR BETA
пн апр. 13 21:24:15 2026: Settings:: Alex config: 4098
пн апр. 13 21:24:15 2026: Settings:: reading done.
пн апр. 13 21:24:15 2026: Init:: OpenGL found.
пн апр. 13 21:24:15 2026: Init:: Framebuffer Objects found.
пн апр. 13 21:24:15 2026: Init:: main window setup ...
пн апр. 13 21:24:16 2026: MainWindow:: main window init done
пн апр. 13 21:24:16 2026: MainWindow:: server ip from ini-file: "192.168.122.1"
пн апр. 13 21:24:16 2026: MainWindow:: HPSDR device local ip from ini-file: "192.168.122.1"
пн апр. 13 21:24:16 2026: MainWindow:: network interface "bridge0" :
пн апр. 13 21:24:16 2026: MainWindow:: -> broadcast address: 172.16.2.255
пн апр. 13 21:24:16 2026: MainWindow:: -> ip address: 172.16.2.99
пн апр. 13 21:24:16 2026: MainWindow:: network interface "virbr0" :
пн апр. 13 21:24:16 2026: MainWindow:: -> broadcast address: 192.168.122.255
пн апр. 13 21:24:16 2026: MainWindow:: -> ip address: 192.168.122.1
пн апр. 13 21:24:16 2026: MainWindow:: found 2 valid ip addresses.
пн апр. 13 21:24:16 2026: MainWindow:: HPSDR network device interface set to: "virbr0"("192.168.122.1")
пн апр. 13 21:24:16 2026: MainWindow:: HPSDR network device interface set to: "virbr0"("192.168.122.1")
пн апр. 13 21:24:16 2026: MainWindow:: using ip address 192.168.122.1 for the server.
пн апр. 13 21:24:16 2026: MainWindow:: using ip address 192.168.122.1 for connecting to a HPSDR device.
пн апр. 13 21:24:16 2026: Init:: main window setup done.
пн апр. 13 21:24:16 2026: Init:: current path: /home/vladimir/Документы/source/cudaSDR
пн апр. 13 21:24:16 2026: Init:: fftw_wisdom does not exist - planning FFT...
пн апр. 13 21:24:22 2026: planning FFT size 64 ...
пн апр. 13 21:24:23 2026: planning FFT size 128 ...
пн апр. 13 21:24:23 2026: planning FFT size 256 ...
пн апр. 13 21:24:24 2026: planning FFT size 512 ...