#ifndef LIBFRAMEWORK_CARDISSUER_IMPL_H #define LIBFRAMEWORK_CARDISSUER_IMPL_H #include "CardIssuerClass.h" class CardIssuerClassImpl : public CardIssuerClass { public: CardIssuerClassImpl(); ~CardIssuerClassImpl(); //DeviceBaseClass ErrorCodeEnum GetDevCategory(DevCategoryInfo &devCategory); ErrorCodeEnum Reset(); ErrorCodeEnum DevClose(); ErrorCodeEnum GetLastErr(DevErrorInfo &devErrInfo); public: virtual ErrorCodeEnum DevOpen(DWORD dwPort, DWORD dwBaudRate) { return Error_Succeed; } virtual ErrorCodeEnum GetDevStatus(CardIssuerStatus& devStatus) { return Error_NotImpl; } virtual ErrorCodeEnum GetDeviceSN(char*& pDevSN) { return Error_NotImpl; } virtual ErrorCodeEnum MoveCard(CardPosEnum eCardPos, int hopperNo = 1) { return Error_NotImpl; } // // Set card entry // virtual ErrorCodeEnum SetCardInType(CardInEnum eCardIn) { return Error_NotImpl; } // // Read data from magnetic track. // virtual ErrorCodeEnum MagRead(MagTracks& magTracks) { return Error_NotImpl; } // // Write data to magnetic track. // virtual ErrorCodeEnum MagWrite(MagTracks magTracks, MagWriteModeEnum eWriteMode) { return Error_NotImpl; } // // Set retract counter // virtual ErrorCodeEnum SetRetractCounter(DWORD dwCount) { return Error_NotImpl; } // // Set issuer counter // hopperNo:多卡箱发卡时指定发卡箱号(面对发卡机,从左往右依次是1,2,3,...号卡箱) // virtual ErrorCodeEnum SetIssuerCounter(DWORD dwCount, int hopperNo = 1) { return Error_NotImpl; } // // Active contact IC card // virtual ErrorCodeEnum ActiveICCard() { return Error_NotImpl; } // // Move IC card to contact position // virtual ErrorCodeEnum ContactIC() { return Error_NotImpl; } // // Release IC contact // virtual ErrorCodeEnum ReleaseIC() { return Error_NotImpl; } // // Warm reset card(IC) // virtual ErrorCodeEnum WarmReset() { return Error_NotImpl; } // // APDU:Application Protocol Data Unit // CmdSend.lpCmd:Command-APDU // CmdRecv.lpData:Response-APDU // virtual ErrorCodeEnum ICCommand(CmdInfo sendBuf, CmdInfo& recvBuf) { return Error_NotImpl; } //////////////////SAM 卡操作部分//////////////////// virtual ErrorCodeEnum SAMActive(BYTE vcc = 0x30) { return Error_NotImpl; }; virtual ErrorCodeEnum SAMDeactivate() { return Error_NotImpl; }; virtual ErrorCodeEnum SAMWarmReset() { return Error_NotImpl; }; virtual ErrorCodeEnum SAMCommand(CmdInfo sendBuf, CmdInfo& recvBuf) { return Error_NotImpl; }; virtual ErrorCodeEnum SAMQueryStatus(SAMStatus& samStatus) { return Error_NotImpl; }; virtual ErrorCodeEnum SAMSelect(const int sn) { return Error_NotImpl; }; virtual ErrorCodeEnum ActiveICCardATR(CmdInfo& atrBuf) { return Error_NotImpl; } ////////////////卡面打印部分,部分机型有此功能////////////////// virtual ErrorCodeEnum Print(BYTE*& data, const int dataSize, const int side) { return Error_NotImpl; }; virtual ErrorCodeEnum QueryPrinterStatus() { return Error_NotImpl; }; //////////////////////////////////////////////////////////////////////////// ////////非接(IC)部分 start,没有此部分,在接口实现中直接返回Error_NotImpl/////////////// //////////////////////////////////////////////////////////////////////////// // Active contactless IC 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) { return Error_NotImpl; } // // Deactivate contact IC card // virtual ErrorCodeEnum DeactivateICCard() { return Error_NotImpl; } // // Deactivate contactless IC card // virtual ErrorCodeEnum DeactContactlessICCard() { return Error_NotImpl; } // // RF Mifare Classic protocol operation // Arguments: // - eFunType:function type as load key,authentication and so on // - sendBuf:[parameter][data] // - recvBuf:[status(1byte)][return data] // virtual ErrorCodeEnum MifareCommand(MifareFuctionEnum eFunType, CmdInfo sendBuf, CmdInfo& recvBuf) { return Error_NotImpl; } // // 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) { return Error_NotImpl; } ////////非接(IC)部分 end///////////////////////////////////////////////////////// virtual ErrorCodeEnum DevOpenEx(DWORD dwPort, DWORD dwBaudRate, BYTE btOpenType, const char* pDevSN, BYTE& btType) { return Error_Succeed; } ///////////////////////////////////////////////////////////////////////// ///以下是便携式卡机特有API,接口实现中其他机型直接返回Error_NotImpl即可// ///////////////////////////////////////////////////////////////////////// // 返回值Error_Succeed表示成功,其他值表示失败 // iStatus 0:成功 -1:银行公钥不存在 -2:产生设备密钥故障 -x:其他厂商自定义故障 // Cr1:随机数r1的密文; Cr3:随机数r3的密文,dKey:用银行公钥加密的设备公钥密文 // r1,r3第16字节为数据完整性校验字节,例如r1为B1B2...B15B16,则B16=B1^B2^...^B15 virtual ErrorCodeEnum TransferEnInit(int& iStatus, BYTE*& Cr1, int& lenR1, BYTE*& Cr3, int& lenR3, BYTE*& dKey, int& lenKey) { return Error_NotImpl; } // 返回值Error_Succeed表示成功,其他值表示失败 // iStatus 0:成功 -x:厂商自定义故障 // r2第16字节为数据完整性校验字节,例如r2为B1B2...B15B16,则B16=B1^B2^...^B15 virtual ErrorCodeEnum SetR2(int& iStatus, BYTE* pCr2, int lenR2) { return Error_NotImpl; } // // 设置会话密钥 // pWorkingKey:会话密钥,传递16进制的字符形式,例如0x123456FFAB --> "123456FFAB" virtual ErrorCodeEnum SendWorkingKey(const char* pWorkingKey) { return Error_NotImpl; } //安全锁接口部分 begin virtual ErrorCodeEnum SLLoadKey(const SCIKeyInfo key) { return Error_NotImpl; } //case ParamBeep: value:0,close beep;value:1,open beep //case ParamLed: value:0,close led;value:1,open led //case ParamLevelTime: value:the duration of level,100ms per unit // ex. the value 10 means duration time is 1 second virtual ErrorCodeEnum SLSetParam(SCIParamType eType, int value) { return Error_NotImpl; } virtual ErrorCodeEnum SLLock() { return Error_NotImpl; } virtual ErrorCodeEnum SLUnLock(const SCICheckCode checkCode, bool bTemp = true) { return Error_NotImpl; } virtual ErrorCodeEnum SLGetTempData(SCITempData& ksnData, SCITempData& ramData) { return Error_NotImpl; } virtual ErrorCodeEnum SLOpenDoor(const SCITempData data) { return Error_NotImpl; } //安全锁接口部分 end //蓝牙控制部分 start //蓝牙指令控制,命令参看SCIBluetoothCMD说明 virtual ErrorCodeEnum BluetoothControl(SCIBluetoothCMD eCmd) { return Error_NotImpl; } //修改配对密码 virtual ErrorCodeEnum BluetoothModifyKey(unsigned char* key) { return Error_NotImpl; } //修改蓝牙设备名称 virtual ErrorCodeEnum BluetoothModifyName(unsigned char* name) { return Error_NotImpl; } //获取版本信息 virtual ErrorCodeEnum BluetoothGetVersion(char*& version) { return Error_NotImpl; } //获取连接设备名称 virtual ErrorCodeEnum BluetoothGetConnectName(unsigned char*& name) { return Error_NotImpl; } //获取连接设备信号强度 virtual ErrorCodeEnum BluetoothGetSignalStrength(unsigned char*& signal) { return Error_NotImpl; } //蓝牙控制部分 end //控制灯光 //eLight:所控制的灯 ; //bOnOff:true 亮灯;fasle 灭灯 virtual ErrorCodeEnum LightControl(SCILightType eLight, bool bOnOff) { return Error_NotImpl; } //以百分比数值返回剩余电量(1-100),例如剩余51%,则bat赋值为51 virtual ErrorCodeEnum QueryBatteryPower(int& bat) { return Error_NotImpl; } //把卡片从读卡器移动到指定卡槽位 virtual ErrorCodeEnum MoveCardToSlot(int slot) { return Error_NotImpl; } //把卡片从指定卡槽位移动到读卡器 virtual ErrorCodeEnum MoveCardFromSlot(int slot) { return Error_NotImpl; } //读取卡号 //优先从IC卡解析卡号,如果纯磁条卡,则返回磁道解析的卡号 virtual ErrorCodeEnum ReadAccount(CardNo& cardNo) { return Error_NotImpl; } //获取总卡槽数 virtual ErrorCodeEnum GetSlotSum(int& sum) { return Error_NotImpl; } //获取卡槽状态 virtual ErrorCodeEnum QuerySlotsStatus(SlotStatus& slots, const int slot, bool bFull = false) { return Error_NotImpl; } private: int m_mode; }; #endif //LIBFRAMEWORK_CARDISSUER_IMPL_H