Skip to content

SDR frameworks chapter - #181

Merged
777arc merged 5 commits into
masterfrom
sdr-frameworks-chapter
Oct 14, 2026
Merged

777arc merged 5 commits into
masterfrom
sdr-frameworks-chapter

Conversation

@777arc

@777arc 777arc commented Oct 14, 2026

Copy link
Copy Markdown
Owner

No description provided.

Copilot AI balanced review requested due to automatic review settings October 14, 2026 06:55
@777arc
777arc merged commit 0501186 into master Oct 14, 2026
1 check failed
@777arc
777arc deleted the sdr-frameworks-chapter branch October 14, 2026 06:55

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

Two C++ examples contain a nonexistent namespace and an invalidated output pointer.

2 open findings
What changed in this PR

Adds an SDR frameworks textbook chapter with comparative FM receiver examples and supporting diagrams.

Changes:

  • Covers GNU Radio, FutureSDR, REDHAWK, OpenCPI, and CyberEther.
  • Adds reproducible FM and figure-generation scripts.
  • Registers the chapter and corrects cyclostationary anchors.
File Description
content/​sdr_frameworks.rst Adds the chapter and framework examples.
index.rst Registers the chapter.
spelling_wordlist.txt Adds relevant technical terms.
figure-generating-scripts/​sdr_frameworks.py Generates chapter diagrams.
figure-generating-scripts/​sdr_frameworks_fm_python.py Provides the baseline FM receiver.
_images/​sdr_frameworks_anatomy.svg Adds the framework anatomy diagram.
_images/​sdr_frameworks_timeline.svg Adds the framework timeline.
content/​cyclostationary.rst Corrects the English anchor.
content-ukraine/​cyclostationary.rst Corrects the Ukrainian anchor.
content-nl/​cyclostationary.rst Corrects the Dutch anchor.

🧠 Review effort: Balanced


💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.


Graph fg;
auto& src = fg.emplaceBlock<blocks::fileio::BasicFileSource<std::complex<float>>>({{"file_name", std::string("./fm_rds_250k_1Msamples.iq")}});
auto& demod = fg.emplaceBlock<incubator::analog::QuadratureDemod<float>>({{"gain", sample_rate / (2 * std::numbers::pi * 75e3)}});
Comment on lines +462 to +464
RCCFloat* outData = output.sample().data().data();
output.setOpCode(Float_timed_sampleSample_OPERATION);
output.sample().data().resize(length);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants