---
title: "timer"
---

{{< callout type="info">}}
  Header: `timer.h`  
{{< /callout >}}


Contains definitions common to timers.

## timer
```cpp
struct timer
{
  // Timer modes.
  struct mode
 {
    enum
    {
      SINGLE_SHOT = false,
      REPEATING   = true
    };

    typedef bool type;
  };

  // Timer start status.
  struct start
  {
    enum
    {
      DELAYED   = false,
      IMMEDIATE = true
    };

    typedef bool type;
  };

  // Timer id.
  struct id
  {
    enum
    {
      NO_TIMER = 255
    };

    typedef uint_least8_t type;
  };

  // Timer state.
  struct state
  {
    enum
    {
      INACTIVE = 0xFFFFFFFF
    };
  };
};
```

### mode
**Types**  
`type`
The type for timer mode.  
Defined as `bool`.

**Constants**  
`SINGLE_SHOT`  
The timer expires once and then stops.  

`REPEATING`  
The timer is restarted after every timeout.  

### start
**Types**  
`type`
The type for timer start mode.  
Defined as `bool`.

**Constants**  
`IMMEDIATE`  
- *Single Shot*  
The timer is triggered on the next tick. The normal timeout does not occur.  

- *Repeating*  
The timer is triggered on the next tick and then on subsequent timeouts.  

`DELAYED`  
The timer is triggered on the timeout.

### id
**Types**  
`type`  
The type for timer identifiers.  
Defined as `uint_least8_t`.

**Constants**  
`NO_TIMER`  
The id of an unregistered timer.

