Repository navigation
Conversation
…e variant hierarchy David's branch (merged here) adds file-backed CW/FMCW waveform playback (commit 8e02245 and friends), built against the pre-refactor virtual Signal hierarchy. This repo's master had since replaced that hierarchy with a std::variant-based Waveform (d6a8bf9), because sampled/pulsed signals share no meaningful operations with CW-family signals. The two branches independently restructured the same subsystem, so this merge required rewriting the waveform-hierarchy conflicts by hand rather than a mechanical patch. Resolution: - All five existing waveform kinds keep their std::variant design, now renamed for clarity now that "Signal" no longer distinguishes anything: SampledSignal -> PulseWaveform, CwSignal -> CwWaveform, FmcwChirpSignal -> FmcwChirpWaveform, FmcwTriangleSignal -> FmcwTriangleWaveform, SteppedFrequencySignal -> SteppedFrequencyWaveform. RadarSignal's accessors follow suit (isSampled -> isPulsed, getSampledSignal -> getPulseWaveform, etc). - File-backed CW and FMCW playback becomes a single new variant alternative, FileWaveform, carrying a 2-valued FileWaveformKind{Cw,Fmcw} classification tag and a sampleAt() envelope query - not render()/ renderSlice(), since only PulseWaveform participates in the pulsed PropagationModel path. Tracing the runtime evaluator confirmed file-CW and file-FMCW are behaviorally identical everywhere except classification, so splitting them into two alternatives would have been pure duplication. - A new WaveformSampleBuffer component (buffer + load + sampleAt) is shared between PulseWaveform and FileWaveform, so the two don't duplicate file-loading/interpolation code despite being separate types. - waveform_factory.cpp routes a new 3-valued serial::FileWaveformRequestKind{Pulsed,Cw,Fmcw} to PulseWaveform or FileWaveform; Cw/Fmcw remain HDF5-only per David's original constraint. - XML/JSON parsing, serialization, streaming evaluation (StreamingWaveformKind::FileCw/FileFmcw, ActiveStreamingSource.file, envelope-aware computeStreamingEvaluation), and VITA49 metadata (waveform_shape="file", sampled_duration/sampled_count, and the sole-active-CW-source context binding with graceful ambiguity handling) largely auto-merged cleanly from David's side and needed only the type renames plus two small additions (FmcwContext gained sampled_duration/sampled_count, forwarded through the VITA49 JSON sink). - Ported the two genuinely new test cases from the deleted/modified test_channel_model_direct.cpp (file envelope sampling, file-CW direct path) into test_channel_model_streaming.cpp, which superseded it; removed the file since its remaining content (solveRe/solveReDirect/ calculateDirectPathContribution) was already superseded by the unified calculateStreamingPathContribution + PropagationPath abstraction introduced by d6a8bf9. - The 5 commits unrelated to the waveform hierarchy (vcpkg baseline fix, VITA49 pacing/test timing fixes) merged with no conflicts. Full libfers test suite passes (605 test cases, 8221 assertions). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01N1XzsBYaJfodFPoeWEM3eg
Merge David's work into SFBdragon/FERS
… unify Waveform naming
…ders, dedup pointscatter power calculations
…ixes, voltage wiring, fix many warnings, add tests, reorganise files
…tScatterModel-like paths. Replaced with a two tier system: a loose bound based on the world diameter and maximum number of propagation legs, and a tight hueristic based on whether receivers are no longer receiving in-window signal from a source after its streaming segment ends
…ive carrier limit, avoid assuming fixed carrier frequencies, implement exact persistent carrier models for propagation modelling, avoid pre-computing radiation vectors where rays often miss
…into raytracing
…uniform sampling interval, and don't taper outside of pulse reception
…ameters definition
… for scatterers that are only appropriate for modelling by the ray-tracing propagation model, improve launch ray direction computation to mitigate floating-point quantisation
…ation improvements
…n model with engine selection
… on large contribution buffers
…rly return on empty traces
… contain tapering complexity to contruction time
…agationModel functions
…build and launch overhead, fix directPath receiver index bug
…eous carrier frequency modelling
…upported on Windows Server 2025/Ubuntu 24.04
Merge the ray-tracing extension, CW coarse sampling, CW batching, and various improvements into master
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Adds ray-tracing propagation from SFBdragon/FERS, including OptiX and Embree backends, propagation refactoring, CW sampling improvements, and streaming fixes.
Validation: tests not run.