#include "Atm_blink.h" Atm_blink & Atm_blink::begin( int attached_pin, uint32_t blinkrate ) { const static state_t state_table[] PROGMEM = { /* ON_ENTER ON_LOOP ON_EXIT EVT_TIMER EVT_ON EVT_OFF ELSE */ /* IDLE */ ENT_OFF, -1, -1, -1, LED_ON, -1, -1, /* LED_ON */ ENT_ON, -1, -1, LED_OFF, -1, IDLE, -1, /* LED_OFF */ ENT_OFF, -1, -1, LED_ON, -1, IDLE, -1, }; Machine::begin( state_table, ELSE ); pin = attached_pin; timer.set( blinkrate ); pinMode( pin, OUTPUT ); return *this; } int Atm_blink::event( int id ) { switch ( id ) { case EVT_TIMER : return timer.expired( this ); } return 0; } void Atm_blink::action( int id ) { switch ( id ) { case ENT_ON : digitalWrite( pin, HIGH ); return; case ENT_OFF : digitalWrite( pin, LOW ); return; } } Atm_blink & Atm_blink::trace( Stream & stream ) { Machine::setTrace( &stream, atm_serial_debug::trace, "BLINK\0EVT_TIMER\0EVT_ON\0EVT_OFF\0ELSE\0IDLE\0LED_ON\0LED_OFF" ); return *this; }