@@ -109,21 +109,66 @@ pre-configured ``ComponentModel`` — no template filenames needed:
109109 ],
110110 )
111111
112- Available factories (``from adidt.model import components ``):
112+ Typed component classes
113+ ~~~~~~~~~~~~~~~~~~~~~~~
113114
114- - **Simple SPI: ** ``components.adis16495 `` — ADIS16495/16497 IMU
115- - **Clock chips: ** ``components.hmc7044 ``, ``components.ad9523_1 ``,
116- ``components.ad9528 ``
117- - **ADCs / DACs: ** ``components.ad9680 ``, ``components.ad9144 ``,
118- ``components.ad9152 ``, ``components.ad9172 ``
119- - **Transceivers: ** ``components.ad9081 ``, ``components.ad9084 ``
115+ Components are organized into typed base classes per device category.
116+ Each provides factory classmethods and inherits from ``ComponentModel ``:
117+
118+ .. code-block :: python
119+
120+ from adidt.model.components import ClockComponent, AdcComponent, TransceiverComponent
121+
122+ clock = ClockComponent.hmc7044(spi_bus = " spi1" , cs = 0 , vcxo_hz = 122_880_000 , ... )
123+ adc = AdcComponent.ad9680(spi_bus = " spi1" , cs = 1 , clks_str = " <&clk 0>" , ... )
124+ trx = TransceiverComponent.adrv9009(spi_bus = " spi0" , cs = 1 , ... )
125+
126+ Available base classes and their factories:
127+
128+ - **ClockComponent ** — ``hmc7044 ``, ``ad9523_1 ``, ``ad9528 ``, ``ad9545 ``,
129+ ``adf4382 ``, ``ltc6952 ``, ``ltc6953 ``, ``adf4371 ``, ``adf4377 ``,
130+ ``adf4350 ``, ``adf4030 ``
131+ - **AdcComponent ** — ``ad9680 ``, ``ad9088 ``, ``ad9467 ``, ``ad7768 ``,
132+ ``adaq8092 ``
133+ - **DacComponent ** — ``ad9144 ``, ``ad9152 ``, ``ad9172 ``, ``ad9739a ``,
134+ ``ad916x ``
135+ - **TransceiverComponent ** — ``ad9081 ``, ``ad9082 ``, ``ad9083 ``,
136+ ``ad9084 ``, ``adrv9009 ``
137+ - **SensorComponent ** — ``adis16495 ``, ``adxl345 ``, ``ad7124 ``
138+ - **RfFrontendComponent ** — ``admv1013 ``, ``admv1014 ``, ``adrf6780 ``,
139+ ``adar1000 ``
140+
141+ All base classes also provide a ``from_config(part, template, *, config) ``
142+ classmethod for template-only devices without a dedicated factory.
143+
144+ Standalone factory functions (backward compatible)
145+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
146+
147+ The original standalone functions remain available for backward
148+ compatibility:
149+
150+ .. code-block :: python
151+
152+ from adidt.model import components
153+
154+ model = BoardModel(
155+ name = " my_board" ,
156+ platform = " rpi5" ,
157+ components = [
158+ components.adis16495(spi_bus = " spi0" , cs = 0 , interrupt_gpio = 25 ),
159+ ],
160+ )
161+
162+ Available: ``hmc7044 ``, ``ad9523_1 ``, ``ad9528 ``, ``ad9680 ``, ``ad9144 ``,
163+ ``ad9152 ``, ``ad9172 ``, ``ad9081 ``, ``ad9084 ``, ``adis16495 ``, ``adxl345 ``,
164+ ``ad7124 ``.
120165
121166Context builders
122167~~~~~~~~~~~~~~~~
123168
124- Lower-level functions that produce template context dicts. Use these
125- when you need full control over every field, or when no factory exists
126- for your device :
169+ Lower-level functions that produce template context dicts. Organized by
170+ device category in submodules but importable from the top-level
171+ `` adidt.model.contexts `` package :
127172
128173.. code-block :: python
129174
@@ -137,6 +182,30 @@ for your device:
137182 )
138183 # ctx is ready to pass to ad9523_1.tmpl
139184
185+ Context submodules:
186+
187+ - ``adidt.model.contexts.clocks `` — HMC7044, AD9523-1, AD9528, AD9545,
188+ LTC6952, LTC6953, ADF4371, ADF4377, ADF4350, ADF4030, ADF4382
189+ - ``adidt.model.contexts.converters `` — AD9680, AD9144, AD9152, AD9172,
190+ AD9088, AD9467, AD7768, ADAQ8092, AD9739A, AD916x
191+ - ``adidt.model.contexts.transceivers `` — AD9081, AD9082, AD9083, AD9084,
192+ ADRV9009
193+ - ``adidt.model.contexts.sensors `` — ADIS16495, ADXL345, AD7124
194+ - ``adidt.model.contexts.rf_frontends `` — ADMV1013, ADMV1014, ADRF6780,
195+ ADAR1000
196+ - ``adidt.model.contexts.fpga `` — ADXCVR, JESD204 overlay, TPL core,
197+ plus ``fmt_hz `` and ``coerce_board_int `` utilities
198+
199+ JESD validation mixin
200+ ~~~~~~~~~~~~~~~~~~~~~
201+
202+ ``AdcComponent ``, ``DacComponent ``, and ``TransceiverComponent `` include
203+ the ``JesdDeviceMixin `` which provides:
204+
205+ - ``validate_jesd_params(params, direction) `` — validates JESD framing
206+ parameters (F, K, M, L, Np, S are positive integers)
207+ - ``map_jesd_subclass(name) `` — maps ``"jesd204b" `` to ``1 ``, etc.
208+
140209API Reference
141210-------------
142211
@@ -157,6 +226,44 @@ Renderer
157226 :undoc-members:
158227 :show-inheritance:
159228
229+ Component Classes
230+ ~~~~~~~~~~~~~~~~~
231+
232+ .. automodule :: adidt.model.components
233+ :members:
234+ :undoc-members:
235+ :show-inheritance:
236+
237+ .. automodule :: adidt.model.components.base
238+ :members:
239+ :undoc-members:
240+ :show-inheritance:
241+
242+ .. automodule :: adidt.model.components.clocks
243+ :members:
244+ :undoc-members:
245+ :show-inheritance:
246+
247+ .. automodule :: adidt.model.components.converters
248+ :members:
249+ :undoc-members:
250+ :show-inheritance:
251+
252+ .. automodule :: adidt.model.components.transceivers
253+ :members:
254+ :undoc-members:
255+ :show-inheritance:
256+
257+ .. automodule :: adidt.model.components.sensors
258+ :members:
259+ :undoc-members:
260+ :show-inheritance:
261+
262+ .. automodule :: adidt.model.components.rf_frontends
263+ :members:
264+ :undoc-members:
265+ :show-inheritance:
266+
160267Context Builder Functions
161268~~~~~~~~~~~~~~~~~~~~~~~~~
162269
@@ -165,10 +272,32 @@ Context Builder Functions
165272 :undoc-members:
166273 :show-inheritance:
167274
168- Component Factories
169- ~~~~~~~~~~~~~~~~~~~
275+ .. automodule :: adidt.model.contexts.clocks
276+ :members:
277+ :undoc-members:
278+ :show-inheritance:
279+
280+ .. automodule :: adidt.model.contexts.converters
281+ :members:
282+ :undoc-members:
283+ :show-inheritance:
170284
171- .. automodule :: adidt.model.components
285+ .. automodule :: adidt.model.contexts.transceivers
286+ :members:
287+ :undoc-members:
288+ :show-inheritance:
289+
290+ .. automodule :: adidt.model.contexts.sensors
291+ :members:
292+ :undoc-members:
293+ :show-inheritance:
294+
295+ .. automodule :: adidt.model.contexts.rf_frontends
296+ :members:
297+ :undoc-members:
298+ :show-inheritance:
299+
300+ .. automodule :: adidt.model.contexts.fpga
172301 :members:
173302 :undoc-members:
174303 :show-inheritance:
0 commit comments