Leosac  0.7.0
OpenSourceAccessControl
WiegandPinNBitsOnly.hpp
Go to the documentation of this file.
1 /*
2  Copyright (C) 2014-2016 Leosac
3 
4  This file is part of Leosac.
5 
6  Leosac is free software: you can redistribute it and/or modify
7  it under the terms of the GNU Affero General Public License as published by
8  the Free Software Foundation, either version 3 of the License, or
9  (at your option) any later version.
10 
11  Leosac is distributed in the hope that it will be useful,
12  but WITHOUT ANY WARRANTY; without even the implied warranty of
13  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14  GNU Affero General Public License for more details.
15 
16  You should have received a copy of the GNU Affero General Public License
17  along with this program. If not, see <http://www.gnu.org/licenses/>.
18 */
19 
20 #pragma once
21 
22 #include "PinReading.hpp"
23 
24 namespace Leosac
25 {
26 namespace Module
27 {
28 namespace Wiegand
29 {
30 namespace Strategy
31 {
37 template <unsigned int NbBits>
39 {
40  public:
50  std::chrono::milliseconds pin_timeout, char pin_end_key);
51 
52  // we reset the counter_ and buffer_ for each key.
53  virtual void timeout() override;
54 
55  virtual bool completed() const override;
56 
57  virtual void signal(zmqpp::socket &sock) override;
58 
59  virtual const std::string &get_pin() const override;
60 
61  virtual void reset() override;
62 
63  private:
68  char extract_from_raw(uint8_t input) const;
69 
74  void end_of_input();
75 
76  std::string inputs_;
77  std::chrono::milliseconds pin_timeout_;
79 
80  using TimePoint = std::chrono::system_clock::time_point;
82 
86  bool ready_;
87 };
88 }
89 }
90 }
91 }
virtual void timeout() override
This is called when the module detect a timeout.
virtual void signal(zmqpp::socket &sock) override
Tells the strategy implementation to send a message to the application containing the received creden...
An implementation class that represents a Wiegand Reader.
Interface for a strategy that read a PIN code.
Definition: PinReading.hpp:37
This is the header file for a generated source file, GitSHA1.cpp.
virtual bool completed() const override
Did the strategy gather needed data? If this function returns true, that means that the strategy impl...
WiegandPinNBitsOnly(WiegandReaderImpl *reader, std::chrono::milliseconds pin_timeout, char pin_end_key)
Create a strategy that read N bits-per-key PIN code.
virtual const std::string & get_pin() const override
Retrieve the pin code that was read from the reader.
bool ready_
Are we ready to submit the PIN code ?
char extract_from_raw(uint8_t input) const
Extract the character that was pressed from raw data.
virtual void reset() override
Reset the strategy, meaning that the next time timeout() is called the behavior should be the same th...