AusweisApp2
Reader.h
gehe zur Dokumentation dieser Datei
1 
5 #pragma once
6 
7 #include "Card.h"
8 #include "ReaderInfo.h"
9 
10 #include <QObject>
11 #include <QSharedPointer>
12 #include <QTimerEvent>
13 
14 namespace governikus
15 {
16 
17 class Reader
18  : public QObject
19 {
20  Q_OBJECT
21  friend class MockReader;
22 
23  protected:
24  void setInfoBasicReader(bool pBasicReader);
25  void setInfoMaxApduLength(int pMaxApduLength);
26  void setInfoCardInfo(const CardInfo& pCardInfo);
28  void removeCardInfo();
29  void fetchCardInfo(QSharedPointer<CardConnectionWorker> pCardConnection);
30 
31  [[nodiscard]] int getTimerId();
32  void setTimerId(int pTimerId);
33 
34  void timerEvent(QTimerEvent* pEvent) override;
35 
36  private:
37  ReaderInfo mReaderInfo;
38  int mTimerId;
39 
40  struct RetryCounterResult
41  {
42  CardReturnCode cardReturnCode = CardReturnCode::COMMAND_FAILED;
43  int retryCounter = -1;
44  bool pinDeactivated = false;
45  bool pinInitial = false;
46  };
47  RetryCounterResult getRetryCounter(QSharedPointer<CardConnectionWorker> pCardConnectionWorker);
48 
49  public:
50  Reader(ReaderManagerPlugInType pPlugInType, const QString& pReaderName);
51  ~Reader() override = default;
52 
56  virtual void updateCard()
57  {
58  }
59 
60 
61  [[nodiscard]] const QString& getName() const
62  {
63  return mReaderInfo.getName();
64  }
65 
66 
67  [[nodiscard]] const ReaderInfo& getReaderInfo() const
68  {
69  return mReaderInfo;
70  }
71 
72 
73  virtual void insertCard(const QVariant& pData = QVariant());
74 
75  void shelveCard();
76 
77  [[nodiscard]] virtual Card* getCard() const = 0;
78 
79  void setPukInoperative();
80 
85  QSharedPointer<CardConnectionWorker> createCardConnectionWorker();
86 
87  CardReturnCode updateRetryCounter(QSharedPointer<CardConnectionWorker> pCardConnectionWorker);
88 
89  Q_SIGNALS:
90  void fireCardInserted(const ReaderInfo& pInfo);
91  void fireCardRemoved(const ReaderInfo& pInfo);
92  void fireCardInfoChanged(const ReaderInfo& pInfo);
94 };
95 
96 
98  : public Reader
99 {
100  Q_OBJECT
101 
102  public:
103  using Reader::Reader;
104  ~ConnectableReader() override = default;
105 
106  virtual void connectReader() = 0;
107  virtual void disconnectReader(const QString& pError = QString()) = 0;
108 
109  Q_SIGNALS:
111 };
112 
113 } // namespace governikus
Holds smart card information.
Definition: CardInfo.h:30
TagType
Definition: CardInfo.h:37
Definition: Card.h:45
Definition: Reader.h:99
~ConnectableReader() override=default
virtual void connectReader()=0
virtual void disconnectReader(const QString &pError=QString())=0
Definition: ReaderInfo.h:18
const QString & getName() const
Definition: ReaderInfo.h:157
Definition: Reader.h:19
void setInfoCardInfo(const CardInfo &pCardInfo)
Definition: Reader.cpp:43
void fireCardInfoChanged(const ReaderInfo &pInfo)
void fireCardInserted(const ReaderInfo &pInfo)
void setCardInfoTagType(CardInfo::TagType pTagType)
Definition: Reader.cpp:49
CardReturnCode updateRetryCounter(QSharedPointer< CardConnectionWorker > pCardConnectionWorker)
Definition: Reader.cpp:180
void shelveCard()
Definition: Reader.cpp:111
void setPukInoperative()
Definition: Reader.cpp:139
void setInfoMaxApduLength(int pMaxApduLength)
Definition: Reader.cpp:37
const QString & getName() const
Definition: Reader.h:61
Reader(ReaderManagerPlugInType pPlugInType, const QString &pReaderName)
Definition: Reader.cpp:23
friend class MockReader
Definition: Reader.h:21
void removeCardInfo()
Definition: Reader.cpp:55
virtual void insertCard(const QVariant &pData=QVariant())
Definition: Reader.cpp:86
~Reader() override=default
void timerEvent(QTimerEvent *pEvent) override
Definition: Reader.cpp:171
int getTimerId()
Definition: Reader.cpp:74
void fireCardRemoved(const ReaderInfo &pInfo)
void setInfoBasicReader(bool pBasicReader)
Definition: Reader.cpp:31
const ReaderInfo & getReaderInfo() const
Definition: Reader.h:67
QSharedPointer< CardConnectionWorker > createCardConnectionWorker()
Creates a new CardConnectionWorker if and only if there is a card in the reader which is not already ...
Definition: Reader.cpp:146
void fetchCardInfo(QSharedPointer< CardConnectionWorker > pCardConnection)
Definition: Reader.cpp:62
void setTimerId(int pTimerId)
Definition: Reader.cpp:80
virtual Card * getCard() const =0
virtual void updateCard()
Periodically called to perform an update of the readers and cards state.
Definition: Reader.h:56
void fireReaderPropertiesUpdated(const ReaderInfo &pInfo)
A simple template renderer.
Definition: ActivationContext.h:15