contactless.nantian.1.1.h 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  1. #ifndef LIBFRAMEWORK_CONTACTLESSCARD_IMPL_H
  2. #define LIBFRAMEWORK_CONTACTLESSCARD_IMPL_H
  3. #include "CILIX_AUX_UTILS.h"
  4. #include "DRV_XCardReader.h"
  5. #include "dlfcn.h"
  6. #include "stddef.h"
  7. #include "RFICClass.h"
  8. #include "log4vendor.h"
  9. typedef DRV_XCardReader *(*pCreate_DRV_XCardReader)();
  10. typedef void (*pDestroy_DRV_XCardReader)(DRV_XCardReader *p);
  11. class ContactlessCardImpl : public RFICClass
  12. {
  13. public:
  14. ContactlessCardImpl();
  15. ~ContactlessCardImpl();
  16. //DeviceBaseClass
  17. ErrorCodeEnum GetDevCategory(DevCategoryInfo &devCategory);
  18. ErrorCodeEnum Reset();
  19. ErrorCodeEnum DevClose();
  20. ErrorCodeEnum GetLastErr(DevErrorInfo &devErrInfo);
  21. //device initialization
  22. virtual ErrorCodeEnum DevOpen(DWORD dwPort, DWORD dwBaudRate);
  23. //
  24. // Get card reader status
  25. //
  26. virtual ErrorCodeEnum GetDevStatus(RFICReaderStatus &devStatus);
  27. //
  28. // Abort current operation.
  29. //
  30. virtual ErrorCodeEnum AbortRead();
  31. //
  32. // Active contactless card(Type A,B,Mifare)
  33. // The first,second,third activation order decided by fstType,scdType,thdType respectively
  34. // fstType,scdType,thdType can be one of 'A','B','M','0'(30H,no type)
  35. // outType indicates the type of activation result
  36. //
  37. virtual ErrorCodeEnum ActiveContactlessICCard(char fstType, char scdType, char thdType, char &outType);
  38. //
  39. // Deactivate contactless IC card
  40. //
  41. virtual ErrorCodeEnum DeactContactlessICCard();
  42. //
  43. // Warm reset card(IC)
  44. //
  45. virtual ErrorCodeEnum WarmReset();
  46. //
  47. // Mifare operation
  48. // Arguments:
  49. // - eFunType:function type as load key,authentication and so on
  50. // - return/data(hex) byte order like BIG EDIAN. ex:0x12345678 --> data[i] = 0x12,data[i+1] = 0x34,data[i+2] = 0x56,data[i+3] = 0x78
  51. // - sendBuf:[parameter(hex)][data(hex)]
  52. // - recvBuf:[status(1byte)][return data(hex)]
  53. // -- [eFunType],[parameter,data],[status(1byte),return data]
  54. // -- [CI_MIFARE_LOAD_KEY],[key select(1byte),sector num(1byte),uncoded keys(6bytes)],[status(1byte)]
  55. // -- [CI_MIFARE_AUTH],[key select(1byte),sector num(1byte)],[status(1byte)]
  56. // -- [CI_MIFARE_READ],[block num(1byte)],[status(1byte),data(16bytes)]
  57. // -- [CI_MIFARE_WRITE],[block num(1byte),data(16bytes)],[status(1byte)]
  58. // -- [CI_MIFARE_INC],[source block num(1byte),destination block num(1byte),inc value(4bytes)],[status(1byte)]
  59. // -- [CI_MIFARE_DEC],[source block num(1byte),destination block num(1byte),dec value(4bytes)],[status(1byte)]
  60. // -- key select(1byte):AKey(00h),BKey(01h)
  61. // -- status(1byte):OK(00h),other error code(!00h)
  62. virtual ErrorCodeEnum MifareCommand(MifareFuctionEnum eFunType, CmdInfo sendBuf, CmdInfo &recvBuf);
  63. //
  64. // RF Type A,B command.
  65. // APDU:Application Protocol Data Unit
  66. // Arguments:
  67. // - CmdSend.lpCmd:Command-APDU
  68. // - CmdRecv.lpData:Response-APDU
  69. //
  70. virtual ErrorCodeEnum RFTypeABCommand(CmdInfo sendBuf, CmdInfo &recvBuf);
  71. //halt card
  72. //card have been halted must move from induction zone then can be found again
  73. virtual ErrorCodeEnum HaltCard();
  74. private:
  75. int m_mode;
  76. public:
  77. CILIXTrace *m_pTrace;
  78. bool bCancelFlag;
  79. bool bDevOpen;
  80. bool bDrvFlag;
  81. void* pHandle;
  82. DRV_XCardReader *drv_CardReader;
  83. pCreate_DRV_XCardReader Create_DRV_XCardReader;
  84. pDestroy_DRV_XCardReader Destroy_DRV_XCardReader;
  85. DevErrorInfo m_ErrInfo;
  86. ErrorCodeEnum m_ErrCode;
  87. RFICReaderStatus m_tempStatus;
  88. bool LoadDrvDll();
  89. };
  90. #ifdef __cplusplus
  91. extern "C"
  92. {
  93. #endif
  94. #pragma pack(push, 1)
  95. #define CONTACTLESS_API __attribute__((visibility("default")))
  96. CONTACTLESS_API ErrorCodeEnum CreateDevComponent(DeviceBaseClass *&baseObj);
  97. CONTACTLESS_API ErrorCodeEnum ReleaseDevComponent(DeviceBaseClass *&pBaseObj);
  98. #pragma pack(pop)
  99. #ifdef __cplusplus
  100. }
  101. #endif
  102. #endif //LIBFRAMEWORK_CONTACTLESSCARD_IMPL_H