Эх сурвалжийг харах

#IQRV #comment: 非接读卡,模拟器数据获取功能

陈纪林80310970 10 сар өмнө
parent
commit
f062b5aeee

+ 1 - 8
DevAdapter/simulator/contactlesscard.1.1/CMakeLists.txt

@@ -14,25 +14,18 @@ rvc_dev_config_library(${MODULE_NAME} ${MODULE_PREFIX})
 #头文件地址
 target_include_directories(${MODULE_FULL_NAME} PRIVATE
 	${DevHeadPath}
-	${ModuleCommonHeadPath}
-	${RVC_FRAMEWORK_INCLUDES_DIR}
-	${CONAN_RVCFRAMEWORK_ROOT}/include
 	${DEVADAPTER_BASE_DIR}/liblog4vendor
 	${VENDOR_CURRENT_DEPS_DIR}/libSimulaRestful
 	${CONAN_INCLUDE_DIRS_JSONCPP}
-	${RVC_TOOLKIT_INCLUDE_DIR}
 )
 
 #库链接地址
 target_link_directories(${MODULE_FULL_NAME} PRIVATE
     ${CONAN_LIB_DIRS_JSONCPP}
-	${RVC_FRAMEWORK_LIBRARIES_DIR}
-	${ThirdPartyLib}
-	${CONAN_RVCFRAMEWORK_ROOT}/lib
 )
 
 #需要链接的库
-set(${MODULE_PREFIX}_LIBS SimulaRestful ${CONAN_PKG_LIBS_JSONCPP} RVCComm ${VENDOR_LOG_LIB_NAME})
+set(${MODULE_PREFIX}_LIBS SimulaRestful ${CONAN_PKG_LIBS_JSONCPP} ${VENDOR_LOG_LIB_NAME})
 if(MSVC)
 	list(APPEND ${MODULE_PREFIX}_LIBS Ws2_32 IPHLPAPI)
 endif(MSVC)

+ 24 - 1
DevAdapter/simulator/contactlesscard.1.1/contactless_httpans.h

@@ -1 +1,24 @@
-#include "RFICClass.h"
+#include "RFICClass.h"
+#include "DeviceSimulator.h"
+
+typedef struct RFICReaderStatusAns {
+	int errNum;
+	int eMediaPos;
+
+	JSONCONVERT2OBJECT_MEMEBER_REGISTER(errNum, eMediaPos)
+}RFICReaderStatusAns;
+
+typedef struct ActiveContactlessICCardAns {
+	int errNum;
+	int outType;
+
+	JSONCONVERT2OBJECT_MEMEBER_REGISTER(errNum, outType)
+}ActiveContactlessICCardAns;
+
+typedef struct CmdInfoAns {
+	int errNum;
+	int dwSize;
+	BYTE data[MAX_IC_BUFFER_SIZE];
+
+	JSONCONVERT2OBJECT_MEMEBER_REGISTER(errNum, dwSize, data)
+}CmdInfoAns;

+ 168 - 14
DevAdapter/simulator/contactlesscard.1.1/contactless_impl.cpp

@@ -1,6 +1,11 @@
 #include "contactless_impl.h"
+#include "contactless_httpans.h"
 #include<cstring>
 #include <cstdio>
+#include <cstring>
+#include <cstdio>
+#include "log4vendor.h"
+#include <path.h>
 ContactlessCardImpl::ContactlessCardImpl()
         :m_mode(0)
 {
@@ -16,35 +21,174 @@ ErrorCodeEnum ContactlessCardImpl::GetDevCategory(DevCategoryInfo &devCategory)
 {
 
     ErrorCodeEnum err = Error_Succeed;
-    std::strcpy(devCategory.szModel, "szModel");
-    std::strcpy(devCategory.szType, "szCategory");
-    std::strcpy(devCategory.szVendor, "szVendor");
+    SimulatorDevCategoryAns ans;
+
+    err = SimulatorHttpFunction(EntityName, "GetDevCategory", ans);
+    LOG4VTM(INFO, "GetDevCategory err = " << err);
+
+    strcpy(devCategory.szType, ans.szType.c_str());
+    strcpy(devCategory.szModel, ans.szModel.c_str());
+    strcpy(devCategory.szVendor, ans.szVendor.c_str());
+    devCategory.eState = (DevStateEnum)ans.eState;
+    devCategory.version.wMajor = ans.version.wMajor;
+    devCategory.version.wMinor = ans.version.wMinor;
+    devCategory.version.wRevision = ans.version.wRevision;
+    devCategory.version.wBuild = ans.version.wBuild;
+
     return err;
 }
 
 ErrorCodeEnum ContactlessCardImpl::Reset()
 {
     ErrorCodeEnum err = Error_Succeed;
-    m_mode = 0;
+    SimulatorCommonAns ans;
+
+    err = SimulatorHttpFunction(EntityName, "Reset", ans);
+    LOG4VTM(INFO, "Reset err = " << err);
+
     return err;
 }
 
 ErrorCodeEnum ContactlessCardImpl::DevClose()
 {
     ErrorCodeEnum err = Error_Succeed;
+    SimulatorCommonAns ans;
+
+    err = SimulatorHttpFunction(EntityName, "DevClose", ans);
+    LOG4VTM(INFO, "DevClose err = " << err);
+
     return err;
 }
 
 ErrorCodeEnum ContactlessCardImpl::GetLastErr(DevErrorInfo &devErrInfo)
 {
-    static int times = 0;
-	char szMessage[128];
-	char szSubMessage[64];
-	sprintf(szSubMessage, "%d", ++times);
-	sprintf(szMessage, "{\"ErrCode\":9555, \"Description\":\"Func:%s,Line:%d,Msg:%s\"}", __FUNCTION__, __LINE__, szSubMessage);
-    strcpy(devErrInfo.szErrMsg, szMessage);
-    devErrInfo.dwErrMsgLen = strlen(szMessage);
-    return Error_Succeed;
+    ErrorCodeEnum err = Error_Succeed;
+    SimulatorDevErrInfoAns ans;
+
+    err = SimulatorHttpFunction(EntityName, "GetLastErr", ans);
+    LOG4VTM(INFO, "GetLastErr err = " << err);
+
+    devErrInfo.dwErrMsgLen = ans.dwErrMsgLen;
+    strcpy(devErrInfo.szErrMsg, ans.szErrMsg.c_str());
+
+    return err;
+}
+
+ErrorCodeEnum ContactlessCardImpl::DevOpen(DWORD dwPort, DWORD dwBaudRate)
+{
+    ErrorCodeEnum err = Error_Succeed;
+    SimulatorCommonAns ans;
+
+    err = SimulatorHttpFunction(EntityName, "DevOpen", ans);
+    LOG4VTM(INFO, "DevOpen err = " << err);
+
+    return err;
+}
+
+ErrorCodeEnum ContactlessCardImpl::GetDevStatus(RFICReaderStatus& devStatus)
+{
+    ErrorCodeEnum err = Error_Succeed;
+    RFICReaderStatusAns ans;
+
+    err = SimulatorHttpFunction(EntityName, "GetDevStatus", ans);
+    LOG4VTM(INFO, "GetDevStatus err = " << err);
+
+    if (err == Error_Succeed) {
+        devStatus.eMediaPos = (CardStatusEnum)ans.eMediaPos;
+    }
+
+    return err;
+}
+
+ErrorCodeEnum ContactlessCardImpl::AbortRead()
+{
+    ErrorCodeEnum err = Error_Succeed;
+    SimulatorCommonAns ans;
+
+    err = SimulatorHttpFunction(EntityName, "AbortRead", ans);
+    LOG4VTM(INFO, "AbortRead err = " << err);
+
+    return err;
+}
+
+ErrorCodeEnum ContactlessCardImpl::ActiveContactlessICCard(char fstType, char scdType, char thdType, char& outType)
+{
+    ErrorCodeEnum err = Error_Succeed;
+    ActiveContactlessICCardAns ans;
+
+    err = SimulatorHttpFunction(EntityName, "ActiveContactlessICCard", ans);
+    LOG4VTM(INFO, "ActiveContactlessICCard err = " << err);
+
+    if (err == Error_Succeed) {
+        outType = (char)ans.outType;
+    }
+
+    return err;
+}
+
+ErrorCodeEnum ContactlessCardImpl::DeactContactlessICCard()
+{
+    ErrorCodeEnum err = Error_Succeed;
+    SimulatorCommonAns ans;
+
+    err = SimulatorHttpFunction(EntityName, "DeactContactlessICCard", ans);
+    LOG4VTM(INFO, "DeactContactlessICCard err = " << err);
+
+    return err;
+}
+
+ErrorCodeEnum ContactlessCardImpl::WarmReset()
+{
+    ErrorCodeEnum err = Error_Succeed;
+    SimulatorCommonAns ans;
+
+    err = SimulatorHttpFunction(EntityName, "WarmReset", ans);
+    LOG4VTM(INFO, "WarmReset err = " << err);
+
+    return err;
+}
+
+ErrorCodeEnum ContactlessCardImpl::MifareCommand(MifareFuctionEnum eFunType, CmdInfo sendBuf, CmdInfo& recvBuf)
+{
+    ErrorCodeEnum err = Error_Succeed;
+    CmdInfoAns ans;
+
+    err = SimulatorHttpFunction(EntityName, "ActiveContactlessICCard", ans);
+    LOG4VTM(INFO, "ActiveContactlessICCard err = " << err);
+
+    if (err == Error_Succeed) {
+        recvBuf.dwSize = ans.dwSize;
+        memcpy(recvBuf.data, ans.data, sizeof(BYTE) * MAX_IC_BUFFER_SIZE);
+    }
+
+    return err;
+}
+
+ErrorCodeEnum ContactlessCardImpl::RFTypeABCommand(CmdInfo sendBuf, CmdInfo& recvBuf)
+{
+    ErrorCodeEnum err = Error_Succeed;
+    CmdInfoAns ans;
+
+    err = SimulatorHttpFunction(EntityName, "RFTypeABCommand", ans);
+    LOG4VTM(INFO, "RFTypeABCommand err = " << err);
+
+    if (err == Error_Succeed) {
+        recvBuf.dwSize = ans.dwSize;
+        memcpy(recvBuf.data, ans.data, sizeof(BYTE) * MAX_IC_BUFFER_SIZE);
+    }
+
+    return err;
+}
+
+ErrorCodeEnum ContactlessCardImpl::HaltCard()
+{
+    ErrorCodeEnum err = Error_Succeed;
+    SimulatorCommonAns ans;
+
+    err = SimulatorHttpFunction(EntityName, "HaltCard", ans);
+    LOG4VTM(INFO, "HaltCard err = " << err);
+
+    return err;
 }
 
 DEVICEBASE_API ErrorCodeEnum CreateDevComponent(DeviceBaseClass *&baseObj)
@@ -52,9 +196,19 @@ DEVICEBASE_API ErrorCodeEnum CreateDevComponent(DeviceBaseClass *&baseObj)
     baseObj = new ContactlessCardImpl();
     if(baseObj == NULL) {
     return Error_Resource;
-    } else {
+    } 
+
+    cmb::log_init_config config;
+    config.dev_name = "vendor_ContactlessCard";
+#ifdef _MSC_VER
+    config.log_dir = ("D:\\rvc\\dbg\\");
+#else
+    config.log_dir = ("/opt/rvc/dbg/");
+#endif 
+    std::string str;
+    cmb::log4vendor::init(config, str);
+
     return Error_Succeed;
-    }
 }
 DEVICEBASE_API ErrorCodeEnum  ReleaseDevComponent(DeviceBaseClass *&pBaseObj)
 {

+ 12 - 37
DevAdapter/simulator/contactlesscard.1.1/contactless_impl.h

@@ -2,6 +2,9 @@
 #define LIBFRAMEWORK_CONTACTLESSCARD_IMPL_H
 
 #include "RFICClass.h"
+#include "DeviceSimulator.h"
+
+#define EntityName "ContactlessCard"
 
 class ContactlessCardImpl : public RFICClass
 {
@@ -17,50 +20,31 @@ public:
     ErrorCodeEnum GetLastErr(DevErrorInfo &devErrInfo);
 
     //device initialization
-    virtual ErrorCodeEnum DevOpen(DWORD dwPort, DWORD dwBaudRate)
-    {
-        ErrorCodeEnum err = Error_Succeed;
-        return err;
-    }
+    virtual ErrorCodeEnum DevOpen(DWORD dwPort, DWORD dwBaudRate);
 
     //
 //	Get card reader status
 //
-    virtual ErrorCodeEnum GetDevStatus(RFICReaderStatus& devStatus)
-    {
-        return Error_NotImpl;
-    }
+    virtual ErrorCodeEnum GetDevStatus(RFICReaderStatus& devStatus);
     //
     //	Abort current operation.
     //
-    virtual ErrorCodeEnum AbortRead()
-    {
-        return Error_NotImpl;
-    }
+    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)
-    {
-        return Error_NotImpl;
-    }
+    virtual ErrorCodeEnum ActiveContactlessICCard(char fstType, char scdType, char thdType, char& outType);
     //
     //	Deactivate contactless IC card
     //
-    virtual ErrorCodeEnum DeactContactlessICCard()
-    {
-        return Error_NotImpl;
-    }
+    virtual ErrorCodeEnum DeactContactlessICCard();
     //
     //	Warm reset card(IC)
     //
-    virtual ErrorCodeEnum WarmReset()
-    {
-        return Error_NotImpl;
-    }
+    virtual ErrorCodeEnum WarmReset();
     //
     //	Mifare operation
     //	Arguments:
@@ -78,10 +62,7 @@ public:
     //		-- key select(1byte):AKey(00h),BKey(01h)
     //		-- status(1byte):OK(00h),other error code(!00h)
 
-    virtual ErrorCodeEnum MifareCommand(MifareFuctionEnum eFunType, CmdInfo sendBuf, CmdInfo& recvBuf)
-    {
-        return Error_NotImpl;
-    }
+    virtual ErrorCodeEnum MifareCommand(MifareFuctionEnum eFunType, CmdInfo sendBuf, CmdInfo& recvBuf);
     //
     //	RF Type A,B command.
     //	APDU:Application Protocol Data Unit
@@ -89,17 +70,11 @@ public:
     // 	- CmdSend.lpCmd:Command-APDU
     // 	- CmdRecv.lpData:Response-APDU
     //
-    virtual ErrorCodeEnum RFTypeABCommand(CmdInfo sendBuf, CmdInfo& recvBuf)
-    {
-        return Error_NotImpl;
-    }
+    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()
-    {
-        return Error_NotImpl;
-    }
+    virtual ErrorCodeEnum HaltCard();
 
 private:
     int m_mode;

+ 1 - 8
DevAdapter/simulator/gpio.1.1/CMakeLists.txt

@@ -15,25 +15,18 @@ rvc_dev_config_library(${MODULE_NAME} ${MODULE_PREFIX})
 #头文件地址
 target_include_directories(${MODULE_FULL_NAME} PRIVATE
 	${DevHeadPath}
-	${ModuleCommonHeadPath}
-	${RVC_FRAMEWORK_INCLUDES_DIR}
-	${CONAN_RVCFRAMEWORK_ROOT}/include
 	${DEVADAPTER_BASE_DIR}/liblog4vendor
 	${VENDOR_CURRENT_DEPS_DIR}/libSimulaRestful
 	${CONAN_INCLUDE_DIRS_JSONCPP}
-	${RVC_TOOLKIT_INCLUDE_DIR}
 )
 
 #库链接地址
 target_link_directories(${MODULE_FULL_NAME} PRIVATE
     ${CONAN_LIB_DIRS_JSONCPP}
-	${RVC_FRAMEWORK_LIBRARIES_DIR}
-	${ThirdPartyLib}
-	${CONAN_RVCFRAMEWORK_ROOT}/lib
 )
 
 #需要链接的库
-set(${MODULE_PREFIX}_LIBS SimulaRestful ${CONAN_PKG_LIBS_JSONCPP} RVCComm ${VENDOR_LOG_LIB_NAME})
+set(${MODULE_PREFIX}_LIBS SimulaRestful ${CONAN_PKG_LIBS_JSONCPP} ${VENDOR_LOG_LIB_NAME})
 if(MSVC)
 	list(APPEND ${MODULE_PREFIX}_LIBS Ws2_32 IPHLPAPI)
 endif(MSVC)