View Source Circuits.GPIO.Diagnostics (circuits_gpio v2.1.0)

Runtime diagnostics

This module provides simple diagnostics to verify GPIO controller and implementation differences. Along with the device that you're using, this is super helpful for diagnosing issues since some GPIO features aren't supposed to work on some devices.

Summary

Functions

Reminder for how to use report/2

Print a summary of the GPIO diagnostics

Run GPIO tests and return a list of the results

Run GPIO API performance tests

Functions

@spec report() :: String.t()

Reminder for how to use report/2

Link to this function

report(out_gpio_spec, in_gpio_spec)

View Source

Print a summary of the GPIO diagnostics

Connect the pins referred to by out_gpio_spec and in_gpio_spec together. When using the cdev stub implementation, any pair of GPIOs can be used. For example, run:

Circuits.GPIO.Diagnostics.report({"gpiochip0", 0}, {"gpiochip0", 1})

This function is intended for IEx prompt usage. See run/2 for programmatic use.

Link to this function

run(out_gpio_spec, in_gpio_spec)

View Source

Run GPIO tests and return a list of the results

@spec speed_test(Circuits.GPIO.gpio_spec()) :: %{
  write_cps: float(),
  read_cps: float(),
  write_one_cps: float(),
  read_one_cps: float()
}

Run GPIO API performance tests

Disclaimer: There should be a better way than relying on the Circuits.GPIO write performance on nearly every device. Write performance shouldn't be terrible, though.