31 static QVector<std::function<void()>> cMainThreadInit;
33 mutable QMutex mMutex;
35 QPointer<ReaderManagerWorker> mWorker;
36 QMap<QString, ReaderInfo> mReaderInfoCache;
37 QMap<ReaderManagerPlugInType, ReaderManagerPlugInInfo> mPlugInInfoCache;
55 void reset(ReaderManagerPlugInType pType);
60 void insert(
const ReaderInfo& pReaderInfo,
const QVariant& pData = QVariant());
75 void startScan(ReaderManagerPlugInType pType,
bool pAutoConnect =
true);
80 void stopScanAll(
const QString& pError = QString());
87 void stopScan(ReaderManagerPlugInType pType,
const QString& pError = QString());
89 ReaderManagerPlugInInfo
getPlugInInfo(ReaderManagerPlugInType pType)
const;
96 return QThread::currentThread() == &mThread;
103 return pResult.metaType() == QMetaType::fromType<T>();
114 QMetaObject::Connection
callExecuteCommand(
const std::function<QVariant()>& pFunc,
const typename QtPrivate::FunctionPointer<T>::Object* pReceiver,
T pSlot)
116 const QMutexLocker mutexLocker(&mMutex);
118 if (!mThread.isRunning())
120 qCWarning(card) <<
"Cannot call ExecuteCommand if ReaderManager-Thread is not active";
121 return QMetaObject::Connection();
125 command->moveToThread(&mThread);
133 qCCritical(card) <<
"Cannot invoke ExecuteCommand command";
134 command->deleteLater();
147 template<
typename Func>
150 if (!mThread.isRunning())
152 qCWarning(card) <<
"Cannot call Execute if ReaderManager-Thread is not active";
162 const QMutexLocker mutexLocker(&mMutex);
164 QMetaObject::invokeMethod(mWorker.data(), pFunc, Qt::BlockingQueuedConnection);
188 qCCritical(card) <<
"Cannot invoke CreateCardConnectionCommand command";
189 command->deleteLater();
207 void doUpdateCacheEntry(
const ReaderInfo& pInfo);
208 void doRemoveCacheEntry(
const ReaderInfo& pInfo);
209 void doUpdatePluginCache(
const ReaderManagerPlugInInfo& pInfo);
Definition: CreateCardConnectionCommand.h:26
void fireCommandDone(QSharedPointer< CreateCardConnectionCommand > pCommand)
Definition: ExecuteCommand.h:20
void fireCommandDone(const QVariant &pResult)
Definition: ReaderFilter.h:21
Definition: ReaderInfo.h:18
Definition: ReaderManager.h:26
void insert(const ReaderInfo &pReaderInfo, const QVariant &pData=QVariant())
Insert a "virtual" card if plugin supports it.
Definition: ReaderManager.cpp:121
void fireCardRemoved(const ReaderInfo &pInfo)
void fireCardInserted(const ReaderInfo &pInfo)
void firePluginAdded(const ReaderManagerPlugInInfo &pInfo)
void startScan(ReaderManagerPlugInType pType, bool pAutoConnect=true)
Starts a scan for devices if registered plugin don't scan anytime.
Definition: ReaderManager.cpp:176
ReaderInfo getReaderInfo(const QString &pReaderName) const
Definition: ReaderManager.cpp:271
ReaderManagerPlugInInfo getPlugInInfo(ReaderManagerPlugInType pType) const
Definition: ReaderManager.cpp:228
void updateReaderInfo(const QString &pReaderName)
Definition: ReaderManager.cpp:281
void startScanAll(bool pAutoConnect=true)
Starts a scan for all device types.
Definition: ReaderManager.cpp:193
QMetaObject::Connection callCreateCardConnectionCommand(const QString &pReaderName, const typename QtPrivate::FunctionPointer< T >::Object *pReceiver, T pSlot)
Executes a command to create a CardConnection for a specified reader.
Definition: ReaderManager.h:178
void fireReaderPropertiesUpdated(const ReaderInfo &pInfo)
void fireReaderAdded(const ReaderInfo &pInfo)
void shutdown()
Shuts down the reader manager service.
Definition: ReaderManager.cpp:155
void callExecute(Func pFunc)
Executes a blocking function on ReaderManager-Thread.
Definition: ReaderManager.h:148
void init()
Initialize the reader manager service.
Definition: ReaderManager.cpp:50
void fireReaderRemoved(const ReaderInfo &pInfo)
void fireCardInfoChanged(const ReaderInfo &pInfo)
void fireStatusChanged(const ReaderManagerPlugInInfo &pInfo)
void stopScan(ReaderManagerPlugInType pType, const QString &pError=QString())
Stops started scan for devices.
Definition: ReaderManager.cpp:202
bool isWorkerThread() const
Definition: ReaderManager.h:94
virtual QVector< ReaderInfo > getReaderInfos(const ReaderFilter &pFilter=ReaderFilter()) const
Definition: ReaderManager.cpp:263
QMetaObject::Connection callExecuteCommand(const std::function< QVariant()> &pFunc, const typename QtPrivate::FunctionPointer< T >::Object *pReceiver, T pSlot)
Executes a function on ReaderManager-Thread.
Definition: ReaderManager.h:114
static bool isResultType(const QVariant &pResult)
Definition: ReaderManager.h:101
void reset(ReaderManagerPlugInType pType)
Resets the plugins matching the given type.
Definition: ReaderManager.cpp:104
void shelve()
Shelve all cards that were shelved and inserted before.
Definition: ReaderManager.cpp:138
void stopScanAll(const QString &pError=QString())
Stops scan for all device types.
Definition: ReaderManager.cpp:219
ReaderManager()
Definition: ReaderManager.cpp:19
static void addMainThreadInit(const std::function< void()> &pFunc)
Definition: ReaderManager.cpp:44
~ReaderManager() override
Definition: ReaderManager.cpp:29
#define T(v)
Definition: http_parser.cpp:237
Implementation of GeneralAuthenticate response APDUs.
Definition: CommandApdu.h:16