Leosac  0.8.0
Open Source Access Control
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 }
Leosac::Module::Wiegand::Strategy::WiegandPinNBitsOnly::inputs_
std::string inputs_
Definition: WiegandPinNBitsOnly.hpp:76
Leosac::Module::Wiegand::Strategy::WiegandPinNBitsOnly::extract_from_raw
char extract_from_raw(uint8_t input) const
Extract the character that was pressed from raw data.
Definition: WiegandPinNBitsOnly.cpp:40
Leosac::Module::Wiegand::Strategy::WiegandPinNBitsOnly::WiegandPinNBitsOnly
WiegandPinNBitsOnly(WiegandReaderImpl *reader, std::chrono::milliseconds pin_timeout, char pin_end_key)
Create a strategy that read N bits-per-key PIN code.
Definition: WiegandPinNBitsOnly.cpp:28
Leosac::Module::Wiegand::Strategy::WiegandPinNBitsOnly::ready_
bool ready_
Are we ready to submit the PIN code ?
Definition: WiegandPinNBitsOnly.hpp:86
Leosac::Module::Wiegand::WiegandReaderImpl
An implementation class that represents a Wiegand Reader.
Definition: WiegandReaderImpl.hpp:41
Leosac::Module::Wiegand::Strategy::WiegandPinNBitsOnly::pin_timeout_
std::chrono::milliseconds pin_timeout_
Definition: WiegandPinNBitsOnly.hpp:77
Leosac::Module::Wiegand::Strategy::PinReading
Interface for a strategy that read a PIN code.
Definition: PinReading.hpp:37
Leosac::Module::Wiegand::Strategy::WiegandPinNBitsOnly::timeout
virtual void timeout() override
This is called when the module detect a timeout.
Definition: WiegandPinNBitsOnly.cpp:71
PinReading.hpp
Leosac::Module::Wiegand::Strategy::WiegandPinNBitsOnly::reset
virtual void reset() override
Reset the strategy, meaning that the next time timeout() is called the behavior should be the same th...
Definition: WiegandPinNBitsOnly.cpp:140
Leosac
This is the header file for a generated source file, GitSHA1.cpp.
Definition: APIStatusCode.hpp:22
Leosac::Module::Wiegand::Strategy::WiegandPinNBitsOnly::TimePoint
std::chrono::system_clock::time_point TimePoint
Definition: WiegandPinNBitsOnly.hpp:80
Leosac::Module::Wiegand::Strategy::WiegandPinNBitsOnly::get_pin
virtual const std::string & get_pin() const override
Retrieve the pin code that was read from the reader.
Definition: WiegandPinNBitsOnly.cpp:134
Leosac::Module::Wiegand::Strategy::WiegandPinNBitsOnly::end_of_input
void end_of_input()
Timeout or pin_end_key read.
Definition: WiegandPinNBitsOnly.cpp:106
Leosac::Module::Wiegand::Strategy::WiegandPinNBitsOnly::completed
virtual bool completed() const override
Did the strategy gather needed data? If this function returns true, that means that the strategy impl...
Definition: WiegandPinNBitsOnly.cpp:115
Leosac::Module::Wiegand::Strategy::WiegandPinNBitsOnly::pin_end_key_
char pin_end_key_
Definition: WiegandPinNBitsOnly.hpp:78
Leosac::Module::Wiegand::Strategy::WiegandPinNBitsOnly
Strategy for ready PIN only.
Definition: WiegandPinNBitsOnly.hpp:38
Leosac::Module::Wiegand::Strategy::WiegandPinNBitsOnly::last_update_
TimePoint last_update_
Definition: WiegandPinNBitsOnly.hpp:81
Leosac::Module::Wiegand::Strategy::WiegandPinNBitsOnly::signal
virtual void signal(zmqpp::socket &sock) override
Tells the strategy implementation to send a message to the application containing the received creden...
Definition: WiegandPinNBitsOnly.cpp:121