VirtualDeviceClass.h 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  1. #ifndef VIRTUAL_DEVICE_CLASS_HEADER_
  2. #define VIRTUAL_DEVICE_CLASS_HEADER_
  3. #include "CardIssuerClass.h"
  4. class VirtualDeviceClassImpl : public CardIssuerClass
  5. {
  6. public:
  7. VirtualDeviceClassImpl();
  8. ~VirtualDeviceClassImpl();
  9. //DeviceBaseClass
  10. ErrorCodeEnum GetDevCategory(DevCategoryInfo& devCategory);
  11. ErrorCodeEnum Reset();
  12. ErrorCodeEnum DevClose();
  13. ErrorCodeEnum GetLastErr(DevErrorInfo& devErrInfo);
  14. //SubDeviceClass
  15. ErrorCodeEnum DevOpen(DWORD dwPort, DWORD dwBaudRate);
  16. ErrorCodeEnum GetDevStatus(CardIssuerStatus& devStatus);
  17. ErrorCodeEnum GetDeviceSN(char*& pDevSN);
  18. ErrorCodeEnum MoveCard(CardPosEnum eCardPos, int hopperNo = 1);
  19. ErrorCodeEnum SetCardInType(CardInEnum eCardIn);
  20. ErrorCodeEnum MagRead(MagTracks& magTracks);
  21. ErrorCodeEnum MagWrite(MagTracks magTracks, MagWriteModeEnum eWriteMode);
  22. ErrorCodeEnum SetRetractCounter(DWORD dwCount);
  23. ErrorCodeEnum SetIssuerCounter(DWORD dwCount, int hopperNo = 1);
  24. ErrorCodeEnum ActiveICCard();
  25. ErrorCodeEnum ContactIC();
  26. ErrorCodeEnum ReleaseIC();
  27. ErrorCodeEnum WarmReset();
  28. ErrorCodeEnum ICCommand(CmdInfo sendBuf, CmdInfo& recvBuf);
  29. //////////////////SAM 卡操作部分////////////////////
  30. ErrorCodeEnum SAMActive(BYTE vcc = 0x30);;
  31. ErrorCodeEnum SAMDeactivate();;
  32. ErrorCodeEnum SAMWarmReset();;
  33. ErrorCodeEnum SAMQueryStatus(SAMStatus& samStatus);;
  34. ErrorCodeEnum SAMSelect(const int sn);;
  35. //即时制卡卡库需要实现SAMCommand,用来执行apdu指令
  36. ErrorCodeEnum SAMCommand(CmdInfo sendBuf, CmdInfo& recvBuf);;
  37. //即时制卡卡库需要实现ActiveICCardATR,用来激活卡片,返回ATR
  38. ErrorCodeEnum ActiveICCardATR(CmdInfo& atrBuf);
  39. ////////////////卡面打印部分(非即时制卡的卡面印刷,即时制卡的卡面打印接口为PrintCardFaceRightNow),部分机型(例如合肥分行大机)有此功能//////////////////
  40. ErrorCodeEnum Print(BYTE*& data, const int dataSize, const int side);;
  41. ErrorCodeEnum QueryPrinterStatus();;
  42. ////////////////////////////////////////////////////////////////////////////
  43. ////////非接(IC)部分 start,没有此部分,在接口实现中直接返回Error_NotImpl///////////////
  44. ////////////////////////////////////////////////////////////////////////////
  45. ErrorCodeEnum ActiveContactlessICCard(char fstType, char scdType, char thdType, char& outType);
  46. //
  47. // Deactivate contact IC card
  48. //
  49. ErrorCodeEnum DeactivateICCard();
  50. //
  51. // Deactivate contactless IC card
  52. //
  53. ErrorCodeEnum DeactContactlessICCard();
  54. //
  55. // RF Mifare Classic protocol operation
  56. // Arguments:
  57. // - eFunType:function type as load key,authentication and so on
  58. // - sendBuf:[parameter][data]
  59. // - recvBuf:[status(1byte)][return data]
  60. //
  61. ErrorCodeEnum MifareCommand(MifareFuctionEnum eFunType, CmdInfo sendBuf, CmdInfo& recvBuf);
  62. //
  63. // RF Type A,B command.
  64. // APDU:Application Protocol Data Unit
  65. // Arguments:
  66. // - CmdSend.lpCmd:Command-APDU
  67. // - CmdRecv.lpData:Response-APDU
  68. //
  69. ErrorCodeEnum RFTypeABCommand(CmdInfo sendBuf, CmdInfo& recvBuf);
  70. ////////非接(IC)部分 end/////////////////////////////////////////////////////////
  71. ErrorCodeEnum DevOpenEx(DWORD dwPort, DWORD dwBaudRate, BYTE btOpenType, const char* pDevSN, BYTE& btType);
  72. /////////////////////////////////////////////////////////////////////////
  73. ///以下是便携式卡机特有API,接口实现中其他机型直接返回Error_NotImpl即可//
  74. /////////////////////////////////////////////////////////////////////////
  75. ErrorCodeEnum TransferEnInit(int& iStatus, BYTE*& Cr1, int& lenR1, BYTE*& Cr3, int& lenR3, BYTE*& dKey, int& lenKey);
  76. ErrorCodeEnum SetR2(int& iStatus, BYTE* pCr2, int lenR2);
  77. ErrorCodeEnum SendWorkingKey(const char* pWorkingKey);
  78. //安全锁接口部分 begin
  79. ErrorCodeEnum SLLoadKey(const SCIKeyInfo key);
  80. ErrorCodeEnum SLSetParam(SCIParamType eType, int value);
  81. ErrorCodeEnum SLLock();
  82. ErrorCodeEnum SLUnLock(const SCICheckCode checkCode, bool bTemp = true);
  83. ErrorCodeEnum SLGetTempData(SCITempData& ksnData, SCITempData& ramData);
  84. ErrorCodeEnum SLOpenDoor(const SCITempData data);
  85. //安全锁接口部分 end
  86. //蓝牙控制部分 start
  87. //蓝牙指令控制,命令参看SCIBluetoothCMD说明
  88. ErrorCodeEnum BluetoothControl(SCIBluetoothCMD eCmd);
  89. //修改配对密码
  90. ErrorCodeEnum BluetoothModifyKey(unsigned char* key);
  91. //修改蓝牙设备名称
  92. ErrorCodeEnum BluetoothModifyName(unsigned char* name);
  93. //获取版本信息
  94. ErrorCodeEnum BluetoothGetVersion(char*& version);
  95. //获取连接设备名称
  96. ErrorCodeEnum BluetoothGetConnectName(unsigned char*& name);
  97. //获取连接设备信号强度
  98. ErrorCodeEnum BluetoothGetSignalStrength(unsigned char*& signal);
  99. //蓝牙控制部分 end
  100. ErrorCodeEnum LightControl(SCILightType eLight, bool bOnOff);
  101. ErrorCodeEnum QueryBatteryPower(int& bat);
  102. ErrorCodeEnum MoveCardToSlot(int slot);
  103. //把卡片从指定卡槽位移动到读卡器
  104. ErrorCodeEnum MoveCardFromSlot(int slot);
  105. //读取卡号
  106. //优先从IC卡解析卡号,如果纯磁条卡,则返回磁道解析的卡号
  107. ErrorCodeEnum ReadAccount(CardNo& cardNo);
  108. //获取总卡槽数
  109. ErrorCodeEnum GetSlotSum(int& sum);
  110. //获取卡槽状态
  111. ErrorCodeEnum QuerySlotsStatus(SlotStatus& slots, const int slot, bool bFull = false);
  112. //即时制卡卡库专用接口
  113. ErrorCodeEnum PrintCardFaceRightNow(const KakuPrintInfo printInfo);
  114. };
  115. #endif //VIRTUAL_DEVICE_CLASS_HEADER_