#pragma once #include namespace boost { namespace system { class error_code; } } namespace acs { class state; class card_reader; class oled_writer; class await_timer; class access_controller { state* state_; gpio* extra_gpio_; card_reader* reader_; oled_writer* writer_; await_timer* timer_; void wait(unsigned duration); void reset(const boost::system::error_code& ec); public: explicit access_controller(); void authorized(); void forbidden(); void force_reset_if_idle(); }; }