xref: /aosp_15_r20/external/pigweed/pw_i2c/backends.rst (revision 61c4878ac05f98d0ceed94b57d316916de578985)
1.. TODO: b/331286149 - Rename this file
2
3.. _module-pw_i2c-impl:
4
5===============
6Implementations
7===============
8.. pigweed-module-subpage::
9   :name: pw_i2c
10
11To use the ``pw_i2c`` API, you need to specify in your build system an
12implementation of the ``pw_i2c`` virtual interface.
13
14------------------------
15Existing implementations
16------------------------
17The following Pigweed modules are ready-made ``pw_i2c`` implementations that
18you can use in your projects:
19
20* :ref:`module-pw_i2c_linux` for Linux userspace.
21* :ref:`module-pw_i2c_mcuxpresso` for the NXP MCUXpresso SDK.
22* :ref:`module-pw_i2c_rp2040` for the Raspberry Pi Pico SDK.
23
24See :ref:`module-pw_i2c-quickstart` for build system configuration examples.
25
26------------------------------
27Create your own implementation
28------------------------------
29If the available implementations don't meet your needs, you can create your
30own:
31
32.. _common_pico.cc: https://pigweed.googlesource.com/pigweed/kudzu/+/refs/heads/main/applications/app_common_impl/common_pico.cc
33
34#. Implement the :cpp:class:`pw::i2c::Initiator` interface. See
35   :ref:`module-pw_i2c_rp2040` for an example Raspberry Pi Pico SDK
36   implementation and `common_pico.cc`_ for example usage of ``pw_i2c_rp2040``.
37
38#. In your build system, take a dependency on the ``pw_i2c`` API headers. See
39   :ref:`module-pw_i2c-quickstart` for build system configuration examples.
40
41.. toctree::
42   :maxdepth: 1
43   :hidden:
44
45   Linux <../pw_i2c_linux/docs>
46   MCUXpresso <../pw_i2c_mcuxpresso/docs>
47   Pico SDK <../pw_i2c_rp2040/docs>
48