Skip to content

doc: family taxonomy + concepts page + FAQ for end-user docs - #761

Open
tfcollins wants to merge 28 commits into
mainfrom
doc-improvements
Open

doc: family taxonomy + concepts page + FAQ for end-user docs#761
tfcollins wants to merge 28 commits into
mainfrom
doc-improvements

Conversation

@tfcollins

Copy link
Copy Markdown
Collaborator

Summary

End-user documentation refresh on top of the existing Sphinx + adi_doctools build.

  • Family taxonomy. 145 per-part docs are now reachable through 12 hand-authored family pages under doc/source/devices/families/ (RF Transceivers, JESD ADCs, JESD DACs, Precision ADCs, Precision DACs, IMUs, Clocks/PLLs, RF Front-End, Beamformers, Sensors & Specialty, Eval Systems, Utility). doc/source/devices/index.rst becomes a 12-row family landing page. Per-part adi.<part>.rst files stay flat on disk so doc/update_devs.py keeps working.
  • New concepts page (doc/source/concepts.rst) explains the rx/tx/attribute/URI mental model — bridges quick-start to per-part API reference. Cross-linked from attr/, buffers/, connectivity.
  • Getting-started refresh. quick.rst modernized (Python 3.10, libiio v1.x, make dev), examples.rst expanded with four end-to-end workflows, new troubleshooting.rst with 10 seed FAQ entries.
  • New invoke checkdocs gate (tasks.py) asserts every per-part adi.*.rst is referenced from at least one family file. Wired into precommit and the CheckParts CI job. update_devs.py now skips overwriting the hand-authored devices/index.rst.

Test plan

  • make html SPHINXOPTS="-W" passes with zero warnings
  • invoke checkdocs reports "All 145 per-part doc pages are assigned to a family"
  • make linkcheck passes
  • Visual review of the rendered docs on the GH Pages preview
  • Confirm CI CheckParts job runs invoke checkdocs as expected

tfcollins added 28 commits May 24, 2026 22:28
Reorganizes the supported-devices section so users land on a family
landing page instead of a flat 130-row toctree. Each family stub
contains a per-part toctree so all existing autodoc pages remain
reachable; family overview content is filled in by later commits.

Signed-off-by: Travis Collins <travis.collins@analog.com>
Adds a structural assertion so the per-part regenerator cannot
silently start managing families/ or the supported-devices index.

Signed-off-by: Travis Collins <travis.collins@analog.com>
The supported-devices landing page is now hand-authored (family
taxonomy from Task 1 of the doc-improvements plan). The earlier
guard assertion was structural only; this commit removes the actual
write path that was overwriting it. The script still removes
excluded-class per-part rst files and cleans up the temporary
adi.rst that sphinx-apidoc produces.

Signed-off-by: Travis Collins <travis.collins@analog.com>
Every adi.*.rst under doc/source/devices/ must be referenced from a
family file under doc/source/devices/families/. New parts that land
without a family assignment now fail CI in the same way that missing
emulation contexts do.

Signed-off-by: Travis Collins <travis.collins@analog.com>
Two correctness fixes to the new invoke checkdocs gate:
- Replace str.removesuffix (Py3.9+) with os.path.splitext so the
  gate works on the declared Python floor (3.8 per pyproject.toml).
- Match toctree lines via a re.M-anchored regex instead of a bare
  substring check, so a prefix-overlap like '../adi.tdd' inside
  '../adi.tddn' can't satisfy coverage for both names.

Signed-off-by: Travis Collins <travis.collins@analog.com>
Signed-off-by: Travis Collins <travis.collins@analog.com>
CheckParts already installs invoke and groups the sibling
checkparts/checkemulation gates. checkdocs is the third member of
that family (per tasks.py:381 precommit decorator). Moving it
removes a duplicate pip install invoke and lets the gate fail
independently of the CheckDocs Sphinx build.

Signed-off-by: Travis Collins <travis.collins@analog.com>
Task-oriented symptom -> cause -> fix entries covering the
libiio-not-found, no-device-found, empty-rx, cyclic-tx-rearm,
stale-property, attr-not-defined, multi-chip-discovery, libiio-v0/v1,
and jesd-extras pitfalls. Designed to grow over time as users report
issues.

Signed-off-by: Travis Collins <travis.collins@analog.com>
New top-level concepts.rst explains the rx/tx/attribute/URI mental
model so users have somewhere to land between the quick start and the
per-device API reference. Existing pages link into it where they
previously assumed prior knowledge.

Signed-off-by: Travis Collins <travis.collins@analog.com>
- Complex parts return complex128 (NumPy promotion from int16 I/Q),
  not complex64. The page now says so explicitly.
- The cyclic-buffer rearm path raises a clean exception; the page no
  longer says 'hangs or errors'.

Signed-off-by: Travis Collins <travis.collins@analog.com>
Drops Python 3.6.8 / libiio 0.18 / pyadi 0.0.5 examples in favor of
current versions, removes the dated long-form virtualenv walkthrough,
and points readers at the concepts page, supported-devices landing,
and troubleshooting from the bottom of the page.

Signed-off-by: Travis Collins <travis.collins@analog.com>
Replaces the flat list of 5-line snippets with four narrated workflows
(capture+plot, cyclic TX, multi-channel capture, annotated IMU output)
that show how the pieces fit together. Cross-links to concepts and
buffers pages instead of re-explaining mechanics.

Signed-off-by: Travis Collins <travis.collins@analog.com>
- Capture example comment now says complex128 to match what NumPy's
  int16 -> complex promotion actually produces.
- Drop the redundant .astype(np.complex64) from the cyclic TX
  example; tx() extracts I/Q from any complex dtype.

Signed-off-by: Travis Collins <travis.collins@analog.com>
- gain_control_mode does not exist on Pluto; use the per-channel
  gain_control_mode_chan0 (the canonical example at examples/pluto.py
  uses this form).
- ADIS16495 channel order is [anglvel_xyz, accel_xyz, temp], so
  [0, 3] is anglvel_x + accel_x. The example previously had the
  comment and dict-key claims inverted; flip rx_enabled_channels
  to [3, 0] so it matches the prose.
- Use double backticks for inline literal in the see-also line.
- Point the examples/ link at tree/main instead of tree/master.

Signed-off-by: Travis Collins <travis.collins@analog.com>
Signed-off-by: Travis Collins <travis.collins@analog.com>
NumPy promotes int16 I/Q to complex128, not complex64. The family
page was inconsistent with concepts.rst; aligning.

Signed-off-by: Travis Collins <travis.collins@analog.com>
Signed-off-by: Travis Collins <travis.collins@analog.com>
Signed-off-by: Travis Collins <travis.collins@analog.com>
Signed-off-by: Travis Collins <travis.collins@analog.com>
Signed-off-by: Travis Collins <travis.collins@analog.com>
Signed-off-by: Travis Collins <travis.collins@analog.com>
Signed-off-by: Travis Collins <travis.collins@analog.com>
Signed-off-by: Travis Collins <travis.collins@analog.com>
Signed-off-by: Travis Collins <travis.collins@analog.com>
Signed-off-by: Travis Collins <travis.collins@analog.com>
Signed-off-by: Travis Collins <travis.collins@analog.com>
Closes out Phase 4 of the doc-improvements branch.

Signed-off-by: Travis Collins <travis.collins@analog.com>
The _mc constructor takes phy_dev_name (singular string), not
phy_dev_names (plural list).

Signed-off-by: Travis Collins <travis.collins@analog.com>
@github-actions

github-actions Bot commented May 25, 2026

Copy link
Copy Markdown

Test Results

1 821 tests  ±0     529 ✅ ±0   4m 29s ⏱️ -2s
    1 suites ±0   1 292 💤 ±0 
    1 files   ±0       0 ❌ ±0 

Results for commit ead8b02. ± Comparison against base commit fdcb09e.

♻️ This comment has been updated with latest results.

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.

1 participant