| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122 |
- #ifndef LIBFRAMEWORK_CONTACTLESSCARD_IMPL_H
- #define LIBFRAMEWORK_CONTACTLESSCARD_IMPL_H
- #include "CILIX_AUX_UTILS.h"
- #include "DRV_XCardReader.h"
- #include "dlfcn.h"
- #include "stddef.h"
- #include "RFICClass.h"
- #include "log4vendor.h"
- typedef DRV_XCardReader *(*pCreate_DRV_XCardReader)();
- typedef void (*pDestroy_DRV_XCardReader)(DRV_XCardReader *p);
- class ContactlessCardImpl : public RFICClass
- {
- public:
- ContactlessCardImpl();
- ~ContactlessCardImpl();
- //DeviceBaseClass
- ErrorCodeEnum GetDevCategory(DevCategoryInfo &devCategory);
- ErrorCodeEnum Reset();
- ErrorCodeEnum DevClose();
- ErrorCodeEnum GetLastErr(DevErrorInfo &devErrInfo);
- //device initialization
- virtual ErrorCodeEnum DevOpen(DWORD dwPort, DWORD dwBaudRate);
- //
- // Get card reader status
- //
- virtual ErrorCodeEnum GetDevStatus(RFICReaderStatus &devStatus);
- //
- // Abort current operation.
- //
- virtual ErrorCodeEnum AbortRead();
- //
- // Active contactless card(Type A,B,Mifare)
- // The first,second,third activation order decided by fstType,scdType,thdType respectively
- // fstType,scdType,thdType can be one of 'A','B','M','0'(30H,no type)
- // outType indicates the type of activation result
- //
- virtual ErrorCodeEnum ActiveContactlessICCard(char fstType, char scdType, char thdType, char &outType);
- //
- // Deactivate contactless IC card
- //
- virtual ErrorCodeEnum DeactContactlessICCard();
- //
- // Warm reset card(IC)
- //
- virtual ErrorCodeEnum WarmReset();
- //
- // Mifare operation
- // Arguments:
- // - eFunType:function type as load key,authentication and so on
- // - 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
- // - sendBuf:[parameter(hex)][data(hex)]
- // - recvBuf:[status(1byte)][return data(hex)]
- // -- [eFunType],[parameter,data],[status(1byte),return data]
- // -- [CI_MIFARE_LOAD_KEY],[key select(1byte),sector num(1byte),uncoded keys(6bytes)],[status(1byte)]
- // -- [CI_MIFARE_AUTH],[key select(1byte),sector num(1byte)],[status(1byte)]
- // -- [CI_MIFARE_READ],[block num(1byte)],[status(1byte),data(16bytes)]
- // -- [CI_MIFARE_WRITE],[block num(1byte),data(16bytes)],[status(1byte)]
- // -- [CI_MIFARE_INC],[source block num(1byte),destination block num(1byte),inc value(4bytes)],[status(1byte)]
- // -- [CI_MIFARE_DEC],[source block num(1byte),destination block num(1byte),dec value(4bytes)],[status(1byte)]
- // -- key select(1byte):AKey(00h),BKey(01h)
- // -- status(1byte):OK(00h),other error code(!00h)
- virtual ErrorCodeEnum MifareCommand(MifareFuctionEnum eFunType, CmdInfo sendBuf, CmdInfo &recvBuf);
- //
- // RF Type A,B command.
- // APDU:Application Protocol Data Unit
- // Arguments:
- // - CmdSend.lpCmd:Command-APDU
- // - CmdRecv.lpData:Response-APDU
- //
- virtual ErrorCodeEnum RFTypeABCommand(CmdInfo sendBuf, CmdInfo &recvBuf);
- //halt card
- //card have been halted must move from induction zone then can be found again
- virtual ErrorCodeEnum HaltCard();
- private:
- int m_mode;
- public:
- CILIXTrace *m_pTrace;
- bool bCancelFlag;
- bool bDevOpen;
- bool bDrvFlag;
- void* pHandle;
- DRV_XCardReader *drv_CardReader;
- pCreate_DRV_XCardReader Create_DRV_XCardReader;
- pDestroy_DRV_XCardReader Destroy_DRV_XCardReader;
- DevErrorInfo m_ErrInfo;
- ErrorCodeEnum m_ErrCode;
- RFICReaderStatus m_tempStatus;
- bool LoadDrvDll();
- };
- #ifdef __cplusplus
- extern "C"
- {
- #endif
- #pragma pack(push, 1)
- #define CONTACTLESS_API __attribute__((visibility("default")))
- CONTACTLESS_API ErrorCodeEnum CreateDevComponent(DeviceBaseClass *&baseObj);
- CONTACTLESS_API ErrorCodeEnum ReleaseDevComponent(DeviceBaseClass *&pBaseObj);
- #pragma pack(pop)
- #ifdef __cplusplus
- }
- #endif
- #endif //LIBFRAMEWORK_CONTACTLESSCARD_IMPL_H
|