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