libmems: IncludeBraces LSC

This removes the IncludeBraces workaround from .clang-tidy in this
project, and runs `cros format` to bring files in line with
Chromium's new style.

For more information on this LSC, see go/cros-insert-braces-lsc.

To reproduce _just_ this CL, inside of the chroot, run:
    $ ${toolchain_utils}/py/bin/llvm_tools/insert_braces.py \
        --start-project=libmems \
        -n 1 \
        --platform2-commit=d0f72ba10e3ba8d5068bb6e3460f9fa9b4f693ac

To reproduce the stack this was a part of, you can run the same
command, but with `--start-project` set to libhwsec and
-n set to 5.

BUG=b:370478040
TEST=CQ

Change-Id: I41a2c3366ef14d0af9ac4dba7dadac68f4b5e119
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform2/+/5995096
Owners-Override: Hidehiko Abe <[email protected]>
Reviewed-by: Hidehiko Abe <[email protected]>
Tested-by: George Burgess <[email protected]>
Commit-Queue: George Burgess <[email protected]>
NOKEYCHECK=True
GitOrigin-RevId: ad345347c6a9c27e2b9e507ddd22eff13fd52313
12 files changed
tree: 2f63421a6ab5a9b9735af0644b50e2891e4df034
  1. BUILD.gn
  2. common_types.cc
  3. common_types.h
  4. DIR_METADATA
  5. export.h
  6. iio_channel.h
  7. iio_channel_impl.cc
  8. iio_channel_impl.h
  9. iio_context.h
  10. iio_context_impl.cc
  11. iio_context_impl.h
  12. iio_device.cc
  13. iio_device.h
  14. iio_device_impl.cc
  15. iio_device_impl.h
  16. iio_device_test.cc
  17. iio_device_trigger_impl.cc
  18. iio_device_trigger_impl.h
  19. iio_event.cc
  20. iio_event.h
  21. iio_event_impl.cc
  22. iio_event_impl.h
  23. iio_event_impl_test.cc
  24. iio_event_test.cc
  25. OWNERS
  26. README.md
  27. test_fakes.cc
  28. test_fakes.h
README.md

Chrome OS IIO Sensor Utility Library

Project goal and motivation

This library provides a set of wrapper and test helpers around libiio.

It is meant to provide a common foundation for Chrome OS to access and interface IIO sensors, with:

  • a strong emphasis on testability;
  • readable code, with the ergonomics typical of platform2;
  • high performance.

Class hierarchy

At the root of the hierarchy, there exists the IioContext, which represents the IIO devices currently available on the system. These can be retrieved by name and inspected, via instances of IioDevice.

An IioDevice allows reading and writing attributes of an IIO device via type-safe helper APIs. It also offers support for configuring the buffer and trigger of an IIO device, which we use in order to allow the Chrome UI to read accelerometer data and support screen rotation.

An IioDevice also exposes a list of IioChannels, which can individually be enabled and disabled.

Test mocks

Useful mocks for the core classes are provided, such that a test author can focus on the logic of the unit tests and share a common testing language with other engineers working in this space. Sharing the foundation of testing IIO sensor access helps ensure that any improvement in this area can benefit all clients.