Ver Fonte

Z991239-678 #comment temp: linux 大小写敏感,回传

gifur há 5 anos atrás
pai
commit
1353c69aa2

+ 34 - 0
DevAdapter/test/CMakeLists.txt

@@ -0,0 +1,34 @@
+cmake_minimum_required(VERSION 2.8)
+
+project(cmbsz C CXX)
+
+set(CMAKE_COLOR_MAKEFILE ON)
+
+IF(RVC_VERSION)
+    SET(RVC_INTEGRATE_BUILD TRUE)
+ENDIF(RVC_VERSION)
+
+include_directories("${CMAKE_CURRENT_SOURCE_DIR}/../include")
+
+macro(rvc_dev_target_install _target)
+
+if(MSVC)
+	install(TARGETS ${_target} 
+    RUNTIME DESTINATION "${RVC_VENDOR_PATH}" COMPONENT devadapters
+    ARCHIVE DESTINATION "${RVC_LIBRARY_PATH}" COMPONENT develops EXCLUDE_FROM_ALL
+    LIBRARY DESTINATION "${RVC_VENDOR_PATH}" COMPONENT devadapters
+    )
+else()
+install(TARGETS ${_target} 
+    RUNTIME DESTINATION "${RVC_VENDOR_PATH}"
+    ARCHIVE DESTINATION "${RVC_LIBRARY_PATH}"
+    LIBRARY DESTINATION "${RVC_VENDOR_PATH}"
+    COMPONENT libraries)
+endif(MSVC)
+
+endmacro(rvc_dev_target_install)
+
+add_subdirectory(pinpad)
+add_subdirectory(cardswiper)
+
+

+ 29 - 0
DevAdapter/test/cardswiper/CMakeLists.txt

@@ -0,0 +1,29 @@
+set(MODULE_NAME "CardSwiper")
+set(MOUDLE_PREFIX "CARDSWIPER")
+
+set(${MODULE_PREFIX}_VENDOR "cmbsz")
+set(${MODULE_PREFIX}_VERSION "1")
+set(${MODULE_PREFIX}_BATCH "1")
+
+set(${MODULE_PREFIX}_CHARACTERISTIC "${${MODULE_PREFIX}_VENDOR}.${${MODULE_PREFIX}_VERSION}.${${MODULE_PREFIX}_BATCH}")
+set(MODULE_FULL_NAME "${MODULE_NAME}_${${MODULE_PREFIX}_VENDOR}_${${MODULE_PREFIX}_VERSION}_${${MODULE_PREFIX}_BATCH}")
+
+
+set(${MODULE_PREFIX}_SRCS SHARED
+        cardswiper_impl.cpp
+        )
+
+
+add_library(${MODULE_FULL_NAME} ${${MODULE_PREFIX}_SRCS})
+
+set_target_properties(${MODULE_FULL_NAME} PROPERTIES COMPILE_DEFINITIONS "DEVICEBASE_EXPORTS")
+
+set_target_properties(${MODULE_FULL_NAME} PROPERTIES 
+    OUTPUT_NAME "${MODULE_NAME}.${${MODULE_PREFIX}_CHARACTERISTIC}")
+
+if(SIMULATE_DEV_AND_TEST_TEMP)
+    set_target_properties(${MODULE_FULL_NAME} 
+    PROPERTIES LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/run/version/1.2.3.4/dep")
+endif(SIMULATE_DEV_AND_TEST_TEMP)
+
+rvc_dev_target_install(${MODULE_FULL_NAME})

+ 195 - 0
DevAdapter/test/cardswiper/cardswiper_impl.cpp

@@ -0,0 +1,195 @@
+//
+// Created by LocalUser on 2019/1/7.
+//
+
+#include "cardwiper_impl.h"
+#include <cstring>
+
+CardSwiperImpl::CardSwiperImpl()
+    :m_mode(0)
+{
+
+}
+
+CardSwiperImpl::~CardSwiperImpl()
+{
+
+}
+
+ErrorCodeEnum CardSwiperImpl::GetDevCategory(DevCategoryInfo &devCategory)
+{
+
+    ErrorCodeEnum err = Error_Succeed;
+    std::strcpy(devCategory.szModel, "szModel");
+    std::strcpy(devCategory.szType, "szCategory");
+    std::strcpy(devCategory.szVendor, "szVendor");
+    return err;
+}
+
+ErrorCodeEnum CardSwiperImpl::Reset()
+{
+    ErrorCodeEnum err = Error_Unexpect;
+    m_mode = 0;
+    return err;
+}
+#if DEVICE_BASE_INTERFACE_FILE_VERSION == 2
+ErrorCodeEnum CardSwiperImpl::DevOpen(int argNum, char* argArray)
+#else
+ErrorCodeEnum CardSwiperImpl::DevOpen(DWORD dwPort, DWORD dwBaudRate)
+#endif
+{
+    ErrorCodeEnum err = Error_Succeed;
+    return err;
+}
+
+ErrorCodeEnum CardSwiperImpl::DevClose()
+{
+    ErrorCodeEnum err = Error_Succeed;
+    return err;
+}
+
+
+ErrorCodeEnum CardSwiperImpl::GetLastErr(DevErrorInfo &devErrInfo)
+{
+    strcpy(devErrInfo.szErrMsg, "hello from cardwiper.cmbsz");
+    devErrInfo.dwErrMsgLen = strlen("hello from cardwiper.cmbsz");
+    return Error_Succeed;
+}
+
+ErrorCodeEnum CardSwiperImpl::GetDevStatus(CardSwiperStatus& devStatus)
+{
+    return Error_NotImpl;
+}
+
+ErrorCodeEnum CardSwiperImpl::AbortRead()
+{
+    return Error_NotImpl;
+}
+
+ErrorCodeEnum CardSwiperImpl::QueryCardStatus(const DWORD dwPos, int& iStatus, MagTracks& magTracks)
+{
+    return Error_NotImpl;
+}
+
+ErrorCodeEnum CardSwiperImpl::MagRead(MagTracks& magTracks)
+{
+    return Error_NotImpl;
+}
+
+ErrorCodeEnum CardSwiperImpl::ActiveICCard()
+{
+    return Error_NotImpl;
+}
+
+ErrorCodeEnum CardSwiperImpl::ActiveContactlessICCard(char fstType, char scdType, char thdType, char& outType)
+{
+    return Error_NotImpl;
+}
+
+ErrorCodeEnum CardSwiperImpl::ContactIC()
+{
+    return Error_NotImpl;
+}
+
+ErrorCodeEnum CardSwiperImpl::ReleaseIC()
+{
+    return Error_NotImpl;
+}
+
+ErrorCodeEnum CardSwiperImpl::DeactivateICCard()
+{
+    return Error_NotImpl;
+}
+
+ErrorCodeEnum CardSwiperImpl::DeactContactlessICCard()
+{
+    return Error_NotImpl;
+}
+
+ErrorCodeEnum CardSwiperImpl::WarmReset()
+{
+    return Error_NotImpl;
+}
+
+ErrorCodeEnum CardSwiperImpl::ICCommand(CmdInfo sendBuf, CmdInfo& recvBuf)
+{
+    return Error_NotImpl;
+}
+
+ErrorCodeEnum CardSwiperImpl::MifareCommand(MifareFuctionEnum eFunType, CmdInfo sendBuf, CmdInfo& recvBuf)
+{
+    return Error_NotImpl;
+}
+
+ErrorCodeEnum CardSwiperImpl::RFTypeABCommand(CmdInfo sendBuf, CmdInfo& recvBuf)
+{
+    return Error_NotImpl;
+}
+
+ErrorCodeEnum CardSwiperImpl::GetKeyPair(char*& priKey, int& priSize, char*& pubKey, int& pubSize)
+{
+    return Error_NotImpl;
+}
+
+ErrorCodeEnum CardSwiperImpl::LoadPrivateKey(const char* pKey, const int size)
+{
+    return Error_NotImpl;
+}
+
+ErrorCodeEnum CardSwiperImpl::SendRandomNum(const char* pRandomNum, const char* pRamChk, char*& pData)
+{
+    return Error_NotImpl;
+}
+
+ErrorCodeEnum CardSwiperImpl::SendWorkingKey(const char* pWorkingKey)
+{
+    return Error_NotImpl;
+}
+
+ErrorCodeEnum CardSwiperImpl::GetDeviceSN(char*& pDevSN)
+{
+    return Error_NotImpl;
+}
+
+ErrorCodeEnum CardSwiperImpl::TransferEnInit(int& iStatus, BYTE*& Cr1, int& lenR1, BYTE*& Cr3, int& lenR3, BYTE*& dKey, int& lenKey)
+{
+    return Error_NotImpl;
+}
+
+ErrorCodeEnum CardSwiperImpl::SetR2(int& iStatus, BYTE* pCr2, int lenR2)
+{
+    return Error_NotImpl;
+}
+
+#if DEVICE_BASE_INTERFACE_FILE_VERSION == 2
+DEVICEBASE_API ErrorCodeEnum  CreateDevComponent(DWORD dwDevClassID, DeviceBaseClass*& pOutDevAptObj)
+#else
+DEVICEBASE_API ErrorCodeEnum  CreateDevComponent(DeviceBaseClass*& pOutDevAptObj)
+#endif
+{
+    pOutDevAptObj = new CardSwiperImpl();
+    if(pOutDevAptObj == NULL)
+    {
+        return Error_Resource;
+    }
+    return Error_Succeed;
+}
+
+#if DEVICE_BASE_INTERFACE_FILE_VERSION == 2
+DEVICEBASE_API ErrorCodeEnum  ReleaseDevComponent(DWORD dwDevClassID, DeviceBaseClass*& pInDevAptObj)
+#else
+DEVICEBASE_API ErrorCodeEnum  ReleaseDevComponent(DeviceBaseClass*& pInDevAptObj)
+#endif
+{
+    if(pInDevAptObj == NULL)
+    {
+        return Error_Param;
+    }
+    if(CardSwiperImpl* pTmp = dynamic_cast<CardSwiperImpl*>(pInDevAptObj))
+    {
+        delete pTmp;
+        pTmp = NULL;
+        return Error_Succeed;
+    }
+    return Error_Param;
+}

+ 58 - 0
DevAdapter/test/cardswiper/cardwiper_impl.h

@@ -0,0 +1,58 @@
+//
+// Created by LocalUser on 2019/1/7.
+//
+
+#ifndef LIBFRAMEWORK_CARDSWIPER_IMPL_H
+#define LIBFRAMEWORK_CARDSWIPER_IMPL_H
+
+#include "CardSwiperClass.h"
+
+class CardSwiperImpl : public CardSwiperClass
+{
+public:
+    CardSwiperImpl();
+    ~CardSwiperImpl();
+
+#if DEVICE_BASE_INTERFACE_FILE_VERSION == 2
+	ErrorCodeEnum DevOpen(int argNum, char* argArray);
+#else
+	ErrorCodeEnum DevOpen(DWORD dwPort, DWORD dwBaudRate);
+#endif
+
+    //DeviceBaseClass
+    ErrorCodeEnum GetDevCategory(DevCategoryInfo &devCategory);
+    ErrorCodeEnum Reset();
+    ErrorCodeEnum DevClose();
+    ErrorCodeEnum GetLastErr(DevErrorInfo &devErrInfo);
+
+    //CardSwiperClass
+    virtual ErrorCodeEnum GetDevStatus(CardSwiperStatus& devStatus);
+    virtual ErrorCodeEnum AbortRead();
+    virtual ErrorCodeEnum QueryCardStatus(const DWORD dwPos, int& iStatus, MagTracks& magTracks);
+	virtual ErrorCodeEnum MagRead(MagTracks& magTracks);
+	virtual ErrorCodeEnum ActiveICCard();
+	virtual ErrorCodeEnum ActiveContactlessICCard(char fstType, char scdType, char thdType, char& outType);
+	virtual ErrorCodeEnum ContactIC();
+	virtual ErrorCodeEnum ReleaseIC();
+	virtual ErrorCodeEnum DeactivateICCard();
+	virtual ErrorCodeEnum DeactContactlessICCard();
+	virtual ErrorCodeEnum WarmReset();
+	virtual ErrorCodeEnum ICCommand(CmdInfo sendBuf, CmdInfo& recvBuf);
+	virtual ErrorCodeEnum MifareCommand(MifareFuctionEnum eFunType, CmdInfo sendBuf, CmdInfo& recvBuf);
+	virtual ErrorCodeEnum RFTypeABCommand(CmdInfo sendBuf, CmdInfo& recvBuf);
+	virtual ErrorCodeEnum GetKeyPair(char*& priKey, int& priSize, char*& pubKey, int& pubSize);
+	virtual ErrorCodeEnum LoadPrivateKey(const char* pKey, const int size);
+	virtual ErrorCodeEnum SendRandomNum(const char* pRandomNum, const char* pRamChk, char*& pData);
+	virtual ErrorCodeEnum SendWorkingKey(const char* pWorkingKey);
+	virtual ErrorCodeEnum GetDeviceSN(char*& pDevSN);
+	virtual ErrorCodeEnum TransferEnInit(int& iStatus, BYTE*& Cr1, int& lenR1, BYTE*& Cr3, int& lenR3, BYTE*& dKey, int& lenKey);
+	virtual ErrorCodeEnum SetR2(int& iStatus, BYTE* pCr2, int lenR2);
+	virtual ErrorCodeEnum IfDevOnline(int& bOn) { bOn = 1; return Error_Succeed; }
+	virtual ErrorCodeEnum EjectCard(CardPosEnum ePos) { return Error_Succeed; }
+
+protected:
+	int m_mode;
+};
+
+
+#endif //LIBFRAMEWORK_CARDSWIPER_IMPL_H

+ 22 - 0
DevAdapter/test/idcer/CMakeLists.txt

@@ -0,0 +1,22 @@
+
+
+set(MODULE_NAME "idcertificate")
+set(MOUDLE_PREFIX "IDCERTIFICATE")
+
+set(${MODULE_PREFIX}_VENDOR "cmbsz")
+set(${MODULE_PREFIX}_VERSION "1")
+set(${MODULE_PREFIX}_BATCH "1")
+
+set(${MODULE_PREFIX}_CHARACTERISTIC "${${MODULE_PREFIX}_VENDOR}.${${MODULE_PREFIX}_VERSION}.${${MODULE_PREFIX}_BATCH}")
+
+
+set(${MODULE_PREFIX}_SRCS SHARED
+        idcer_impl.cpp
+        )
+
+
+add_library(${MODULE_NAME} ${${MODULE_PREFIX}_SRCS})
+
+
+set_target_properties(${MODULE_NAME} 
+    PROPERTIES OUTPUT_NAME "${MODULE_NAME}.${${MODULE_PREFIX}_CHARACTERISTIC}")

+ 187 - 0
DevAdapter/test/idcer/idcer_impl.cpp

@@ -0,0 +1,187 @@
+//
+// Created by LocalUser on 2019/1/7.
+//
+
+#include "idcer_impl.h"
+#if defined(ANDROID)
+
+#include <android/log.h>
+#include <cstring>
+#include <cstdio>
+#include <cstdlib>
+
+#define LOGI(...)   \
+    ((void)__android_log_print(ANDROID_LOG_INFO, "IDCER::", __VA_ARGS__))
+#endif
+
+IDCerClassImpl::IDCerClassImpl()
+        :m_mode(0)
+{
+
+}
+
+IDCerClassImpl::~IDCerClassImpl()
+{
+
+}
+
+ErrorCodeEnum IDCerClassImpl::GetDevCategory(DevCategoryInfo &devCategory)
+{
+
+    ErrorCodeEnum err = Error_Succeed;
+    std::strcpy(devCategory.szModel, "szModel");
+    std::strcpy(devCategory.szType, "szCategory");
+    std::strcpy(devCategory.szVendor, "szVendor");
+    return err;
+}
+
+ErrorCodeEnum IDCerClassImpl::Reset()
+{
+    ErrorCodeEnum err = Error_Succeed;
+    m_mode = 0;
+    return err;
+}
+
+ErrorCodeEnum IDCerClassImpl::IDCerAuthenticate()
+{
+    ErrorCodeEnum err = Error_Succeed;
+    m_mode = 0;
+    return err;
+}
+
+ErrorCodeEnum IDCerClassImpl::ForceIDEject()
+{
+    ErrorCodeEnum err = Error_Succeed;
+    m_mode = 0;
+    return err;
+}
+
+ErrorCodeEnum IDCerClassImpl::ScanIDAndSaveImage(IDDataBuf &frontImageBuf, IDDataBuf &backImageBuf)
+{
+    ErrorCodeEnum err = Error_Succeed;
+    m_mode = 0;
+    return err;
+}
+
+ErrorCodeEnum IDCerClassImpl::QueryCardPos(int &pos)
+{
+    ErrorCodeEnum err = Error_Succeed;
+    m_mode = 0;
+    return err;
+}
+
+ErrorCodeEnum IDCerClassImpl::IDCerRFControl(bool bControl)
+{
+    ErrorCodeEnum err = Error_Succeed;
+    m_mode = 0;
+    return err;
+}
+
+ErrorCodeEnum IDCerClassImpl::DevOpen(DWORD dwPort)
+{
+    ErrorCodeEnum err = Error_Succeed;
+    return err;
+}
+
+ErrorCodeEnum IDCerClassImpl::DevClose()
+{
+    ErrorCodeEnum err = Error_Succeed;
+    return err;
+}
+
+ErrorCodeEnum IDCerClassImpl::IDCerGetData(IDCerInfo &idCerInfo, IDDataBuf &zpBmpBuf)
+{
+    ErrorCodeEnum err = Error_Succeed;
+    memset(&idCerInfo, 0, sizeof(IDCerInfo));
+
+    std::strcpy(idCerInfo.name.data, "廖桂发");
+    idCerInfo.name.dwSize = strlen("廖桂发");
+
+    std::strcpy(idCerInfo.sex.data, "男");
+    idCerInfo.sex.dwSize = strlen("男");
+
+    std::strcpy(idCerInfo.birthday.data, "1992年09月09日");
+    idCerInfo.birthday.dwSize = strlen("1992年09月09日");
+
+    std::strcpy(idCerInfo.nation.data, "汉族");
+    idCerInfo.nation.dwSize = strlen("汉族");
+
+    std::strcpy(idCerInfo.address.data, "15号科兴科学园A3单元15楼");
+    idCerInfo.address.dwSize = strlen("15号科兴科学园A3单元15楼");
+
+    std::strcpy(idCerInfo.idno.data, "441621199201011234");
+    idCerInfo.idno.dwSize = strlen("441621199201011234");
+
+    std::strcpy(idCerInfo.department.data, "深圳市南山公安局");
+    idCerInfo.department.dwSize = strlen("深圳市南山公安局");
+
+    std::strcpy(idCerInfo.startDate.data, "2009.03.25");
+    idCerInfo.startDate.dwSize = strlen("2009.03.25");
+
+    std::strcpy(idCerInfo.endDate.data, "2029.03.24");
+    idCerInfo.endDate.dwSize = strlen("2029.03.24");
+
+
+    FILE* file_;
+    file_ = fopen("/sdcard/rvc/download/zp.bmp", "rb");
+    if(file_) {
+        fseek(file_, 0, SEEK_END);
+        long size = ftell(file_);
+        fseek(file_, 0, SEEK_SET);
+        zpBmpBuf.data = (char*)malloc(size);
+        if(zpBmpBuf.data) {
+            size_t bytes = fread(zpBmpBuf.data, 1, size, file_);
+            if(bytes == size) {
+                zpBmpBuf.dwSize = size;
+            } else {
+                err = Error_Overflow;
+                free(zpBmpBuf.data);
+                zpBmpBuf.data = NULL;
+            }
+        }
+        fclose(file_);
+    } else {
+        err = Error_Resource;
+    }
+    return err;
+}
+
+ErrorCodeEnum IDCerClassImpl::IDCerGetDataEx(IDCerInfoEx &idCerInfoEx, IDDataBuf &zpBmpBuf)
+{
+    ErrorCodeEnum err = Error_NotImpl;
+    return err;
+}
+
+
+ErrorCodeEnum IDCerClassImpl::GetLastErr(DevErrorInfo &devErrInfo)
+{
+    static int times = 0;
+    char szMessage[128];
+    sprintf(szMessage, "this is the %d times error message", ++times);
+    strcpy(devErrInfo.szErrMsg, szMessage);
+    devErrInfo.dwErrMsgLen = strlen(szMessage);
+    return Error_Succeed;
+}
+
+DEVICEBASE_API ErrorCodeEnum CreateDevComponent(DeviceBaseClass *&baseObj)
+{
+    baseObj = new IDCerClassImpl();
+    if(baseObj == NULL) {
+    return Error_Resource;
+    } else {
+    return Error_Succeed;
+    }
+}
+DEVICEBASE_API ErrorCodeEnum  ReleaseDevComponent(DeviceBaseClass *&pBaseObj)
+{
+    if(pBaseObj == NULL) {
+    return Error_Param;
+    }
+    if(IDCerClassImpl* pTmp = dynamic_cast<IDCerClassImpl*>(pBaseObj))
+    {
+    delete pTmp;
+    pTmp = NULL;
+    return Error_Succeed;
+    }
+    return Error_Param;
+}

+ 39 - 0
DevAdapter/test/idcer/idcer_impl.h

@@ -0,0 +1,39 @@
+//
+// Created by LocalUser on 2019/1/7.
+//
+
+#ifndef LIBFRAMEWORK_IDCER_IMPL_H
+#define LIBFRAMEWORK_IDCER_IMPL_H
+
+#include "IDCerClass.h"
+
+class IDCerClassImpl : public IDCerClass
+{
+public:
+    IDCerClassImpl();
+    ~IDCerClassImpl();
+
+
+    //DeviceBaseClass
+    ErrorCodeEnum GetDevCategory(DevCategoryInfo &devCategory);
+    ErrorCodeEnum Reset();
+    ErrorCodeEnum DevClose();
+    ErrorCodeEnum GetLastErr(DevErrorInfo &devErrInfo);
+
+    ErrorCodeEnum DevOpen(DWORD dwPort);
+    ErrorCodeEnum IDCerRFControl(bool bControl);
+    ErrorCodeEnum IDCerAuthenticate();
+
+    ErrorCodeEnum IDCerGetData(IDCerInfo &idCerInfo, IDDataBuf &zpBmpBuf);
+    ErrorCodeEnum IDCerGetDataEx(IDCerInfoEx &idCerInfoEx, IDDataBuf &zpBmpBuf);
+
+    ErrorCodeEnum ForceIDEject();
+    ErrorCodeEnum ScanIDAndSaveImage(IDDataBuf &frontImageBuf, IDDataBuf &backImageBuf);
+    ErrorCodeEnum QueryCardPos(int &pos);
+
+private:
+    int m_mode;
+};
+
+
+#endif //LIBFRAMEWORK_IDCER_IMPL_H

+ 33 - 0
DevAdapter/test/pinpad/CMakeLists.txt

@@ -0,0 +1,33 @@
+
+
+set(MODULE_NAME "PinPad")
+set(MOUDLE_PREFIX "PINPAD")
+
+set(${MODULE_PREFIX}_VENDOR "cmbsz")
+set(${MODULE_PREFIX}_VERSION "1")
+set(${MODULE_PREFIX}_BATCH "1")
+
+set(${MODULE_PREFIX}_CHARACTERISTIC "${${MODULE_PREFIX}_VENDOR}.${${MODULE_PREFIX}_VERSION}.${${MODULE_PREFIX}_BATCH}")
+set(MODULE_FULL_NAME "${MODULE_NAME}_${${MODULE_PREFIX}_VENDOR}_${${MODULE_PREFIX}_VERSION}_${${MODULE_PREFIX}_BATCH}")
+
+
+set(${MODULE_PREFIX}_SRCS SHARED
+        pinpad_impl.cpp
+        
+        )
+
+
+add_library(${MODULE_FULL_NAME} ${${MODULE_PREFIX}_SRCS})
+
+set_target_properties(${MODULE_FULL_NAME} PROPERTIES COMPILE_DEFINITIONS "DEVICEBASE_EXPORTS")
+
+set_target_properties(${MODULE_FULL_NAME} 
+    PROPERTIES OUTPUT_NAME "${MODULE_NAME}.${${MODULE_PREFIX}_CHARACTERISTIC}")
+
+
+if(SIMULATE_DEV_AND_TEST_TEMP)
+    set_target_properties(${MODULE_FULL_NAME} 
+    PROPERTIES LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/run/version/1.2.3.4/dep")
+endif(SIMULATE_DEV_AND_TEST_TEMP)
+
+rvc_dev_target_install(${MODULE_FULL_NAME})

+ 194 - 0
DevAdapter/test/pinpad/pinpad_impl.cpp

@@ -0,0 +1,194 @@
+//
+// Created by LocalUser on 2019/1/7.
+//
+
+#include "pinpad_impl.h"
+#include <cstring>
+
+PinPadClassImpl::PinPadClassImpl()
+    :m_mode(0)
+{
+
+}
+
+PinPadClassImpl::~PinPadClassImpl()
+{
+
+}
+
+ErrorCodeEnum PinPadClassImpl::GetDevCategory(DevCategoryInfo &devCategory)
+{
+
+    ErrorCodeEnum err = Error_Succeed;
+    std::strcpy(devCategory.szModel, "szModel");
+    std::strcpy(devCategory.szType, "szCategory");
+    std::strcpy(devCategory.szVendor, "szVendor");
+    return err;
+}
+
+ErrorCodeEnum PinPadClassImpl::Reset()
+{
+    ErrorCodeEnum err = Error_Unexpect;
+    m_mode = 0;
+    return err;
+}
+
+#if DEVICE_BASE_INTERFACE_FILE_VERSION == 2
+ErrorCodeEnum PinPadClassImpl::DevOpen(int argNum, char* argArray)
+#else
+ErrorCodeEnum PinPadClassImpl::DevOpen(DWORD dwPort, DWORD dwBaudRate)
+#endif
+{
+    ErrorCodeEnum err = Error_Succeed;
+    return err;
+}
+
+ErrorCodeEnum PinPadClassImpl::DevClose()
+{
+    ErrorCodeEnum err = Error_Succeed;
+    return err;
+}
+
+ErrorCodeEnum PinPadClassImpl::KeyRead(BYTE &ch)
+{
+    ErrorCodeEnum err = Error_Succeed;
+    static int cursor = 0;
+    if(m_mode == 0) {
+        ch = 0x0d;
+        cursor = 0;
+    }
+    else {
+        ch = 0x3f;
+    }
+    return err;
+}
+
+ErrorCodeEnum PinPadClassImpl::StartPinInput(BYTE byLen)
+{
+    ErrorCodeEnum err = Error_Succeed;
+    m_mode = 1;
+    return err;
+}
+
+ErrorCodeEnum PinPadClassImpl::StartPinInputConfirm(BYTE byLen)
+{
+    ErrorCodeEnum err = Error_Succeed;
+    m_mode = 1;
+    return err;
+}
+
+ErrorCodeEnum PinPadClassImpl::StartPlainInput()
+{
+    ErrorCodeEnum err = Error_Succeed;
+    m_mode = 0;
+    return err;
+}
+
+ErrorCodeEnum PinPadClassImpl::StopInput()
+{
+    ErrorCodeEnum err = Error_Succeed;
+    m_mode = 0;
+    return err;
+}
+
+ErrorCodeEnum PinPadClassImpl::LoadMasterKey(MasterKeyParam masterKey)
+{
+    ErrorCodeEnum err = Error_Succeed;
+    return err;
+}
+
+ErrorCodeEnum PinPadClassImpl::LoadWorkingKey(WorkKeyParam wkKey)
+{
+    ErrorCodeEnum err = Error_Succeed;
+    return err;
+}
+
+ErrorCodeEnum PinPadClassImpl::ActiveWorkingKey(DWORD dwMkSN, DWORD dwWkSN)
+{
+    ErrorCodeEnum err = Error_Succeed;
+    return err;
+}
+
+ErrorCodeEnum PinPadClassImpl::SetParam(SetParamTypeEnum eType, SetParamValueEnum eValue)
+{
+    ErrorCodeEnum err = Error_Succeed;
+    return err;
+}
+
+ErrorCodeEnum PinPadClassImpl::EncryptData(EnDecryptInfo srcInfo, EnDecryptInfo &destInfo)
+{
+    ErrorCodeEnum err = Error_Succeed;
+    memset(destInfo.data, 0, sizeof(destInfo.data));
+    if(std::strcmp((const char*)srcInfo.data, "0000000000000000") == 0) {
+        std::strcpy((char*)destInfo.data, "EC6162E6E08C7279");
+        destInfo.dwSize = 16;
+    } else if(std::strcmp((const char*)srcInfo.data, "1234567890123456ff00ff001122334400000000000000001234567890123456ff00ff001122334400000000000000001234567890123456ff00ff001122334400000000000000001234567890123456ff00ff001122334400000000000000001234567890123456ff00ff001122334400000000000000001234567890123456") == 0) {
+        std::strcpy((char*)destInfo.data, "9DFE47D355F40F33FC634AF5BA511337DC36261313DDF70F6B7E5696EC55BDE4C39F7CE724AA864AC3074B2F4A51FC87C2A160A9102507E8126312B204392EB4BDA42A724E2F75FC9B87EE02B4CB47813A0F9A734EF5680D20D897CB2DB4EB2EF0D24B8AE2FA277F569F222AABE660AA2D276B9432D8941AAA64D1E62209ABFC");
+        destInfo.dwSize = 256;
+    } else {
+        err = Error_NotImpl;
+    }
+    return err;
+}
+
+ErrorCodeEnum PinPadClassImpl::MacEncrypt(EnDecryptInfo srcInfo, EnDecryptInfo &destInfo)
+{
+    ErrorCodeEnum err = Error_NotImpl;
+    return err;
+}
+
+ErrorCodeEnum PinPadClassImpl::GetPinBlock(PinBlock &block)
+{
+    ErrorCodeEnum err = Error_Succeed;
+    std::strcpy((char*)block.data, "147DE54A44497DDB");
+    block.dwSize = 16;
+    return err;
+}
+
+ErrorCodeEnum PinPadClassImpl::SetAccNo(AccountInfo accInfo)
+{
+    ErrorCodeEnum err = Error_Succeed;
+    return err;
+}
+
+
+ErrorCodeEnum PinPadClassImpl::GetLastErr(DevErrorInfo &devErrInfo)
+{
+    strcpy(devErrInfo.szErrMsg, "hello from pinpad.cmbsz");
+    devErrInfo.dwErrMsgLen = strlen("hello from pinpad.cmbsz");
+    return Error_Succeed;
+}
+
+#if DEVICE_BASE_INTERFACE_FILE_VERSION == 2
+DEVICEBASE_API ErrorCodeEnum  CreateDevComponent(DWORD dwDevClassID, DeviceBaseClass*& pOutDevAptObj)
+#else
+DEVICEBASE_API ErrorCodeEnum  CreateDevComponent(DeviceBaseClass*& pOutDevAptObj)
+#endif
+{
+    pOutDevAptObj = new PinPadClassImpl();
+    if(pOutDevAptObj == NULL)
+    {
+        return Error_Resource;
+    }
+    return Error_Succeed;
+}
+
+#if DEVICE_BASE_INTERFACE_FILE_VERSION == 2
+DEVICEBASE_API ErrorCodeEnum  ReleaseDevComponent(DWORD dwDevClassID, DeviceBaseClass*& pInDevAptObj)
+#else
+DEVICEBASE_API ErrorCodeEnum  ReleaseDevComponent(DeviceBaseClass*& pInDevAptObj)
+#endif
+{
+    if(pInDevAptObj == NULL)
+    {
+        return Error_Param;
+    }
+    if(PinPadClassImpl* pTmp = dynamic_cast<PinPadClassImpl*>(pInDevAptObj))
+    {
+        delete pTmp;
+        pTmp = NULL;
+        return Error_Succeed;
+    }
+    return Error_Param;
+
+}

+ 51 - 0
DevAdapter/test/pinpad/pinpad_impl.h

@@ -0,0 +1,51 @@
+//
+// Created by LocalUser on 2019/1/7.
+//
+
+#ifndef LIBFRAMEWORK_PINPAD_IMPL_H
+#define LIBFRAMEWORK_PINPAD_IMPL_H
+
+#include "PinPadClass.h"
+
+class PinPadClassImpl : public PinPadClass
+{
+public:
+    PinPadClassImpl();
+    ~PinPadClassImpl();
+
+#if DEVICE_BASE_INTERFACE_FILE_VERSION == 2
+    ErrorCodeEnum DevOpen(int argNum, char* argArray);
+#else
+    ErrorCodeEnum DevOpen(DWORD dwPort, DWORD dwBaudRate);
+#endif
+
+    //DeviceBaseClass
+    ErrorCodeEnum GetDevCategory(DevCategoryInfo &devCategory);
+    ErrorCodeEnum Reset();
+    ErrorCodeEnum DevClose();
+    ErrorCodeEnum GetLastErr(DevErrorInfo &devErrInfo);
+
+    //PinPadClass
+    ErrorCodeEnum KeyRead(BYTE &ch);
+    ErrorCodeEnum PinRead(BYTE &ch);
+
+    ErrorCodeEnum StartPinInput(BYTE byLen);
+    ErrorCodeEnum StartPinInputConfirm(BYTE byLen);
+
+    ErrorCodeEnum StartPlainInput();
+    ErrorCodeEnum StopInput();
+    ErrorCodeEnum LoadMasterKey(MasterKeyParam masterKey);
+    ErrorCodeEnum LoadWorkingKey(WorkKeyParam wkKey);
+    ErrorCodeEnum ActiveWorkingKey(DWORD dwMkSN, DWORD dwWkSN);
+    ErrorCodeEnum SetParam(SetParamTypeEnum eType, SetParamValueEnum eValue);
+    ErrorCodeEnum EncryptData(EnDecryptInfo srcInfo, EnDecryptInfo &destInfo);
+    ErrorCodeEnum MacEncrypt(EnDecryptInfo srcInfo, EnDecryptInfo &destInfo);
+    ErrorCodeEnum GetPinBlock(PinBlock &block);
+    ErrorCodeEnum SetAccNo(AccountInfo accInfo);
+    int GetEncryptFunc(){ return 1;}
+private:
+    int m_mode;
+};
+
+
+#endif //LIBFRAMEWORK_PINPAD_IMPL_H