00001
00008
00009 #pragma once
00010 #include "ManagerInterface.h"
00011
00012 struct SmartCardManagerPriv;
00013 struct SmartCardConnectionPriv;
00014
00015 struct SmartCardConnection : public ConnectionBase {
00016 SmartCardConnectionPriv *d;
00017 SmartCardConnection(int manager,ManagerInterface &iface,unsigned int index,
00018 bool force,ManagerInterface &orig);
00019 ~SmartCardConnection();
00020 };
00021
00023
00026 class SmartCardManager : public ManagerInterface {
00027 SmartCardManagerPriv *d;
00028
00029 void makeConnection(ConnectionBase *c,uint idx);
00030 void deleteConnection(ConnectionBase *c);
00031 void beginTransaction(ConnectionBase *c);
00032 void endTransaction(ConnectionBase *c,bool forceReset = false);
00033 void execCommand(ConnectionBase *c,std::vector<byte> &cmd,std::vector<byte> &recv,
00034 unsigned int &recvLen);
00035 bool isT1Protocol(ConnectionBase *c);
00036
00037 public:
00038 SmartCardManager(void);
00039 ~SmartCardManager(void);
00040
00041 uint getReaderCount();
00042 std::string getReaderName(uint idx);
00043 std::string getReaderState(uint idx);
00044 std::string getATRHex(uint idx);
00045 SmartCardConnection * connect(uint idx,bool forceT0);
00046 SmartCardConnection * reconnect(ConnectionBase *c,bool forceT0);
00047 };