#pragma once

#include <Automaton.h>

class Atm_sweep: public Machine {

  public:
    Atm_sweep( void ) : Machine() {};

    enum { IDLE, U0, U1, U2, U3, U4, U5, D4, D3, D2, D1, D0 };
    enum { EVT_TIMER, EVT_START, EVT_STOP, EVT_TOGGLE, ELSE };
    enum { ENT_L0, ENT_L1, ENT_L2, ENT_L3, ENT_L4, ENT_L5, ENT_OFF  };

    Atm_sweep & begin( int p1, int p2, int p3, int p4, int p5, int p6 );
    Atm_sweep & speed( uint32_t v );
    Atm_sweep & trace( Stream & stream );
    
  private:  
    short pin[6];
    atm_timer_millis timer;

    int event( int id );
    void action( int id );
};