cardissuer_impl.h 9.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301
  1. #ifndef LIBFRAMEWORK_CARDISSUER_IMPL_H
  2. #define LIBFRAMEWORK_CARDISSUER_IMPL_H
  3. #include "CardIssuerClass.h"
  4. class CardIssuerClassImpl : public CardIssuerClass
  5. {
  6. public:
  7. CardIssuerClassImpl();
  8. ~CardIssuerClassImpl();
  9. //DeviceBaseClass
  10. ErrorCodeEnum GetDevCategory(DevCategoryInfo &devCategory);
  11. ErrorCodeEnum Reset();
  12. ErrorCodeEnum DevClose();
  13. ErrorCodeEnum GetLastErr(DevErrorInfo &devErrInfo);
  14. public:
  15. virtual ErrorCodeEnum DevOpen(DWORD dwPort, DWORD dwBaudRate)
  16. {
  17. return Error_Succeed;
  18. }
  19. virtual ErrorCodeEnum GetDevStatus(CardIssuerStatus& devStatus)
  20. {
  21. return Error_NotImpl;
  22. }
  23. virtual ErrorCodeEnum GetDeviceSN(char*& pDevSN)
  24. {
  25. return Error_NotImpl;
  26. }
  27. virtual ErrorCodeEnum MoveCard(CardPosEnum eCardPos, int hopperNo = 1)
  28. {
  29. return Error_NotImpl;
  30. }
  31. //
  32. // Set card entry
  33. //
  34. virtual ErrorCodeEnum SetCardInType(CardInEnum eCardIn)
  35. {
  36. return Error_NotImpl;
  37. }
  38. //
  39. // Read data from magnetic track.
  40. //
  41. virtual ErrorCodeEnum MagRead(MagTracks& magTracks)
  42. {
  43. return Error_NotImpl;
  44. }
  45. //
  46. // Write data to magnetic track.
  47. //
  48. virtual ErrorCodeEnum MagWrite(MagTracks magTracks, MagWriteModeEnum eWriteMode)
  49. {
  50. return Error_NotImpl;
  51. }
  52. //
  53. // Set retract counter
  54. //
  55. virtual ErrorCodeEnum SetRetractCounter(DWORD dwCount)
  56. {
  57. return Error_NotImpl;
  58. }
  59. //
  60. // Set issuer counter
  61. // hopperNo:多卡箱发卡时指定发卡箱号(面对发卡机,从左往右依次是1,2,3,...号卡箱)
  62. //
  63. virtual ErrorCodeEnum SetIssuerCounter(DWORD dwCount, int hopperNo = 1)
  64. {
  65. return Error_NotImpl;
  66. }
  67. //
  68. // Active contact IC card
  69. //
  70. virtual ErrorCodeEnum ActiveICCard()
  71. {
  72. return Error_NotImpl;
  73. }
  74. //
  75. // Move IC card to contact position
  76. //
  77. virtual ErrorCodeEnum ContactIC()
  78. {
  79. return Error_NotImpl;
  80. }
  81. //
  82. // Release IC contact
  83. //
  84. virtual ErrorCodeEnum ReleaseIC()
  85. {
  86. return Error_NotImpl;
  87. }
  88. //
  89. // Warm reset card(IC)
  90. //
  91. virtual ErrorCodeEnum WarmReset()
  92. {
  93. return Error_NotImpl;
  94. }
  95. //
  96. // APDU:Application Protocol Data Unit
  97. // CmdSend.lpCmd:Command-APDU
  98. // CmdRecv.lpData:Response-APDU
  99. //
  100. virtual ErrorCodeEnum ICCommand(CmdInfo sendBuf, CmdInfo& recvBuf)
  101. {
  102. return Error_NotImpl;
  103. }
  104. //////////////////SAM 卡操作部分////////////////////
  105. virtual ErrorCodeEnum SAMActive(BYTE vcc = 0x30) { return Error_NotImpl; };
  106. virtual ErrorCodeEnum SAMDeactivate() { return Error_NotImpl; };
  107. virtual ErrorCodeEnum SAMWarmReset() { return Error_NotImpl; };
  108. virtual ErrorCodeEnum SAMCommand(CmdInfo sendBuf, CmdInfo& recvBuf) { return Error_NotImpl; };
  109. virtual ErrorCodeEnum SAMQueryStatus(SAMStatus& samStatus) { return Error_NotImpl; };
  110. virtual ErrorCodeEnum SAMSelect(const int sn) { return Error_NotImpl; };
  111. virtual ErrorCodeEnum ActiveICCardATR(CmdInfo& atrBuf) { return Error_NotImpl; }
  112. ////////////////卡面打印部分,部分机型有此功能//////////////////
  113. virtual ErrorCodeEnum Print(BYTE*& data, const int dataSize, const int side) { return Error_NotImpl; };
  114. virtual ErrorCodeEnum QueryPrinterStatus() { return Error_NotImpl; };
  115. ////////////////////////////////////////////////////////////////////////////
  116. ////////非接(IC)部分 start,没有此部分,在接口实现中直接返回Error_NotImpl///////////////
  117. ////////////////////////////////////////////////////////////////////////////
  118. // Active contactless IC card(Type A,B,Mifare)
  119. // The first,second,third activation order decided by fstType,scdType,thdType respectively
  120. // fstType,scdType,thdType can be one of 'A','B','M','0'(30H,no type)
  121. // outType indicates the type of activation result
  122. //
  123. virtual ErrorCodeEnum ActiveContactlessICCard(char fstType, char scdType, char thdType, char& outType)
  124. {
  125. return Error_NotImpl;
  126. }
  127. //
  128. // Deactivate contact IC card
  129. //
  130. virtual ErrorCodeEnum DeactivateICCard()
  131. {
  132. return Error_NotImpl;
  133. }
  134. //
  135. // Deactivate contactless IC card
  136. //
  137. virtual ErrorCodeEnum DeactContactlessICCard()
  138. {
  139. return Error_NotImpl;
  140. }
  141. //
  142. // RF Mifare Classic protocol operation
  143. // Arguments:
  144. // - eFunType:function type as load key,authentication and so on
  145. // - sendBuf:[parameter][data]
  146. // - recvBuf:[status(1byte)][return data]
  147. //
  148. virtual ErrorCodeEnum MifareCommand(MifareFuctionEnum eFunType, CmdInfo sendBuf, CmdInfo& recvBuf)
  149. {
  150. return Error_NotImpl;
  151. }
  152. //
  153. // RF Type A,B command.
  154. // APDU:Application Protocol Data Unit
  155. // Arguments:
  156. // - CmdSend.lpCmd:Command-APDU
  157. // - CmdRecv.lpData:Response-APDU
  158. //
  159. virtual ErrorCodeEnum RFTypeABCommand(CmdInfo sendBuf, CmdInfo& recvBuf)
  160. {
  161. return Error_NotImpl;
  162. }
  163. ////////非接(IC)部分 end/////////////////////////////////////////////////////////
  164. virtual ErrorCodeEnum DevOpenEx(DWORD dwPort, DWORD dwBaudRate, BYTE btOpenType, const char* pDevSN, BYTE& btType)
  165. {
  166. return Error_Succeed;
  167. }
  168. /////////////////////////////////////////////////////////////////////////
  169. ///以下是便携式卡机特有API,接口实现中其他机型直接返回Error_NotImpl即可//
  170. /////////////////////////////////////////////////////////////////////////
  171. // 返回值Error_Succeed表示成功,其他值表示失败
  172. // iStatus 0:成功 -1:银行公钥不存在 -2:产生设备密钥故障 -x:其他厂商自定义故障
  173. // Cr1:随机数r1的密文; Cr3:随机数r3的密文,dKey:用银行公钥加密的设备公钥密文
  174. // r1,r3第16字节为数据完整性校验字节,例如r1为B1B2...B15B16,则B16=B1^B2^...^B15
  175. virtual ErrorCodeEnum TransferEnInit(int& iStatus, BYTE*& Cr1, int& lenR1, BYTE*& Cr3, int& lenR3, BYTE*& dKey, int& lenKey)
  176. {
  177. return Error_NotImpl;
  178. }
  179. // 返回值Error_Succeed表示成功,其他值表示失败
  180. // iStatus 0:成功 -x:厂商自定义故障
  181. // r2第16字节为数据完整性校验字节,例如r2为B1B2...B15B16,则B16=B1^B2^...^B15
  182. virtual ErrorCodeEnum SetR2(int& iStatus, BYTE* pCr2, int lenR2)
  183. {
  184. return Error_NotImpl;
  185. }
  186. //
  187. // 设置会话密钥
  188. // pWorkingKey:会话密钥,传递16进制的字符形式,例如0x123456FFAB --> "123456FFAB"
  189. virtual ErrorCodeEnum SendWorkingKey(const char* pWorkingKey)
  190. {
  191. return Error_NotImpl;
  192. }
  193. //安全锁接口部分 begin
  194. virtual ErrorCodeEnum SLLoadKey(const SCIKeyInfo key)
  195. {
  196. return Error_NotImpl;
  197. }
  198. //case ParamBeep: value:0,close beep;value:1,open beep
  199. //case ParamLed: value:0,close led;value:1,open led
  200. //case ParamLevelTime: value:the duration of level,100ms per unit
  201. // ex. the value 10 means duration time is 1 second
  202. virtual ErrorCodeEnum SLSetParam(SCIParamType eType, int value)
  203. {
  204. return Error_NotImpl;
  205. }
  206. virtual ErrorCodeEnum SLLock()
  207. {
  208. return Error_NotImpl;
  209. }
  210. virtual ErrorCodeEnum SLUnLock(const SCICheckCode checkCode, bool bTemp = true)
  211. {
  212. return Error_NotImpl;
  213. }
  214. virtual ErrorCodeEnum SLGetTempData(SCITempData& ksnData, SCITempData& ramData)
  215. {
  216. return Error_NotImpl;
  217. }
  218. virtual ErrorCodeEnum SLOpenDoor(const SCITempData data)
  219. {
  220. return Error_NotImpl;
  221. }
  222. //安全锁接口部分 end
  223. //蓝牙控制部分 start
  224. //蓝牙指令控制,命令参看SCIBluetoothCMD说明
  225. virtual ErrorCodeEnum BluetoothControl(SCIBluetoothCMD eCmd)
  226. {
  227. return Error_NotImpl;
  228. }
  229. //修改配对密码
  230. virtual ErrorCodeEnum BluetoothModifyKey(unsigned char* key)
  231. {
  232. return Error_NotImpl;
  233. }
  234. //修改蓝牙设备名称
  235. virtual ErrorCodeEnum BluetoothModifyName(unsigned char* name)
  236. {
  237. return Error_NotImpl;
  238. }
  239. //获取版本信息
  240. virtual ErrorCodeEnum BluetoothGetVersion(char*& version)
  241. {
  242. return Error_NotImpl;
  243. }
  244. //获取连接设备名称
  245. virtual ErrorCodeEnum BluetoothGetConnectName(unsigned char*& name)
  246. {
  247. return Error_NotImpl;
  248. }
  249. //获取连接设备信号强度
  250. virtual ErrorCodeEnum BluetoothGetSignalStrength(unsigned char*& signal)
  251. {
  252. return Error_NotImpl;
  253. }
  254. //蓝牙控制部分 end
  255. //控制灯光
  256. //eLight:所控制的灯 ;
  257. //bOnOff:true 亮灯;fasle 灭灯
  258. virtual ErrorCodeEnum LightControl(SCILightType eLight, bool bOnOff)
  259. {
  260. return Error_NotImpl;
  261. }
  262. //以百分比数值返回剩余电量(1-100),例如剩余51%,则bat赋值为51
  263. virtual ErrorCodeEnum QueryBatteryPower(int& bat)
  264. {
  265. return Error_NotImpl;
  266. }
  267. //把卡片从读卡器移动到指定卡槽位
  268. virtual ErrorCodeEnum MoveCardToSlot(int slot) { return Error_NotImpl; }
  269. //把卡片从指定卡槽位移动到读卡器
  270. virtual ErrorCodeEnum MoveCardFromSlot(int slot) { return Error_NotImpl; }
  271. //读取卡号
  272. //优先从IC卡解析卡号,如果纯磁条卡,则返回磁道解析的卡号
  273. virtual ErrorCodeEnum ReadAccount(CardNo& cardNo) { return Error_NotImpl; }
  274. //获取总卡槽数
  275. virtual ErrorCodeEnum GetSlotSum(int& sum) { return Error_NotImpl; }
  276. //获取卡槽状态
  277. virtual ErrorCodeEnum QuerySlotsStatus(SlotStatus& slots, const int slot, bool bFull = false) { return Error_NotImpl; }
  278. private:
  279. int m_mode;
  280. };
  281. #endif //LIBFRAMEWORK_CARDISSUER_IMPL_H