contactless_impl.h 3.3 KB

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