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/1
Run GPIO diagnostics and print a report
Run diagnostics and print a report for a single pair of GPIOs
Run GPIO tests and return a list of the results
Run GPIO API performance tests
Types
@type gpio_pair() :: {Circuits.GPIO.gpio_spec(), Circuits.GPIO.gpio_spec()}
Functions
@spec report() :: String.t()
Reminder for how to use report/1
Run GPIO diagnostics and print a report
Connect each output GPIO to the corresponding input GPIO. When using the cdev stub implementation, any connected pairs can be used. For example, run:
Circuits.GPIO.Diagnostics.report([
{{"gpiochip0", 0}, {"gpiochip0", 1}},
{{"gpiochip0", 2}, {"gpiochip0", 3}}
])Pass more than one pair to also run multi-GPIO group diagnostics. This
function is intended for IEx prompt usage. See run/1 for programmatic use.
@spec report(Circuits.GPIO.gpio_spec(), Circuits.GPIO.gpio_spec()) :: boolean()
Run diagnostics and print a report for a single pair of GPIOs
This calls report/1.
Run GPIO tests and return a list of the results
@spec run(Circuits.GPIO.gpio_spec(), Circuits.GPIO.gpio_spec()) :: list()
@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.