# CycleTimeReport

A development and debugging aid, this plugin will measure average mainloop times
(in microseconds) and print it to `Serial` periodically. While not the most
reliable way to measure the speed of processing, it gives a reasonable
indication nevertheless.

## Using the plugin

The plugin comes with reasonable defaults (see below), and can be used out of
the box, without any further configuration:

```c++
#include <Kaleidoscope.h>
#include <Kaleidoscope-CycleTimeReport.h>

KALEIDOSCOPE_INIT_PLUGINS(CycleTimeReport);

void setup (void) {
  Kaleidoscope.serialPort().begin(9600);
  Kaleidoscope.setup ();
}
```

## Plugin methods

The plugin provides a single object, `CycleTimeReport`, with the following
property. All times are in milliseconds.

### `.average_loop_time`

> A read-only by contract value, the average time of main loop lengths between
> two reports.

## Overrideable methods

### `cycleTimeReport()`

> Reports the average loop time. By default, it does so over `Serial`, every
> time when the report period is up.
>
> It can be overridden, to change how the report looks, or to make the report
> toggleable, among other things.
>
> It takes no arguments, and returns nothing, but has access to
> `CycleTimeReport.average_loop_time` above.

## Further reading

Starting from the [example][plugin:example] is the recommended way of getting
started with the plugin.

 [plugin:example]: /examples/Features/CycleTimeReport/CycleTimeReport.ino