Преглед на файлове

#IQRV #comment: gpio数据访问功能

陈纪林80310970 преди 10 месеца
родител
ревизия
ac3a08f0c6

+ 16 - 1
DevAdapter/simulator/gpio.1.1/gpio_httpans.h

@@ -1 +1,16 @@
-#include "GpioClass.h"
+#include "GpioClass.h"
+#include "DeviceSimulator.h"
+
+typedef struct ReadPortAns {
+    int errNum;
+    int btStatus;
+
+    JSONCONVERT2OBJECT_MEMEBER_REGISTER(errNum, btStatus)
+}QueryCardPosAns;
+
+typedef struct DetectStatusAns {
+    int errNum;
+    int dwMode;
+
+    JSONCONVERT2OBJECT_MEMEBER_REGISTER(errNum, dwMode)
+}DetectStatusAns;

+ 111 - 13
DevAdapter/simulator/gpio.1.1/gpio_impl.cpp

@@ -1,6 +1,10 @@
 #include "gpio_impl.h"
+#include "gpio_httpans.h"
 #include<cstring>
 #include <cstdio>
+#include "log4vendor.h"
+#include <path.h>
+
 GPIOClassImpl::GPIOClassImpl()
         :m_mode(0)
 {
@@ -16,16 +20,31 @@ ErrorCodeEnum GPIOClassImpl::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 GPIOClassImpl::Reset()
 {
     ErrorCodeEnum err = Error_Succeed;
-    m_mode = 0;
+    SimulatorCommonAns ans;
+
+    err = SimulatorHttpFunction(EntityName, "Reset", ans);
+    LOG4VTM(INFO, "Reset err = " << err);
+
     return err;
 }
 
@@ -33,28 +52,107 @@ ErrorCodeEnum GPIOClassImpl::Reset()
 ErrorCodeEnum GPIOClassImpl::DevClose()
 {
     ErrorCodeEnum err = Error_Succeed;
+    SimulatorCommonAns ans;
+
+    err = SimulatorHttpFunction(EntityName, "DevClose", ans);
+    LOG4VTM(INFO, "DevClose err = " << err);
+
     return err;
 }
 
 ErrorCodeEnum GPIOClassImpl::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);
-    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 GPIOClassImpl::DevOpen(GpioInitParam initParam)
+{
+    ErrorCodeEnum err = Error_Succeed;
+    SimulatorCommonAns ans;
+
+    err = SimulatorHttpFunction(EntityName, "DevOpen", ans);
+    LOG4VTM(INFO, "DevOpen err = " << err);
+
+    return err;
+}
+
+ErrorCodeEnum GPIOClassImpl::WritePort(DWORD dwPort, BYTE btData)
+{
+    ErrorCodeEnum err = Error_Succeed;
+    SimulatorCommonAns ans;
+
+    err = SimulatorHttpFunction(EntityName, "WritePort", ans);
+    LOG4VTM(INFO, "WritePort err = " << err);
+
+    return err;
+}
+
+ErrorCodeEnum GPIOClassImpl::ReadPort(DWORD dwPort, BYTE& btStatus)
+{
+    ErrorCodeEnum err = Error_Succeed;
+    ReadPortAns ans;
+
+    err = SimulatorHttpFunction(EntityName, "ReadPort", ans);
+    LOG4VTM(INFO, "ReadPort err = " << err);
+
+    btStatus = (BYTE)ans.btStatus;
+
+    return err;
+}
+
+#ifndef _MSC_VER
+ErrorCodeEnum GPIOClassImpl::SetStatus(DWORD dwReq, DWORD dwMode)
+{ 
+    ErrorCodeEnum err = Error_Succeed;
+    SimulatorCommonAns ans;
+
+    err = SimulatorHttpFunction(EntityName, "SetStatus", ans);
+    LOG4VTM(INFO, "SetStatus err = " << err);
+
+    return err;
+}
+
+ErrorCodeEnum GPIOClassImpl::DetectStatus(DWORD dwReq, DWORD& dwMode) 
+{ 
+    ErrorCodeEnum err = Error_Succeed;
+    DetectStatusAns ans;
+
+    err = SimulatorHttpFunction(EntityName, "ReadPort", ans);
+    LOG4VTM(INFO, "ReadPort err = " << err);
+
+    dwMode = (BYTE)ans.dwMode;
+
+    return err;
+}
+#endif
+
 DEVICEBASE_API ErrorCodeEnum CreateDevComponent(DeviceBaseClass *&baseObj)
 {
     baseObj = new GPIOClassImpl();
     if(baseObj == NULL) {
     return Error_Resource;
-    } else {
+    } 
+    
+    cmb::log_init_config config;
+    config.dev_name = "vendor_Gpio";
+#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)
 {

+ 43 - 13
DevAdapter/simulator/gpio.1.1/gpio_impl.h

@@ -2,6 +2,10 @@
 #define LIBFRAMEWORK_GPIO_IMPL_H
 
 #include "GpioClass.h"
+#include <string>
+#include "DeviceSimulator.h"
+
+#define EntityName "Gpio"
 
 class GPIOClassImpl : public GpioClass
 {
@@ -20,11 +24,7 @@ public:
     //	Device initialization.
     //	Configure port input/output direction.
     //
-    virtual ErrorCodeEnum DevOpen(GpioInitParam initParam)
-    {
-        ErrorCodeEnum err = Error_Succeed;
-        return err;
-    }
+    virtual ErrorCodeEnum DevOpen(GpioInitParam initParam);
 
     //
     //	Set ports output.
@@ -34,10 +34,7 @@ public:
     //	  bit value 1/0 means voltage high or low
     //	  ex.dwPort=0 btData=10001010 means set port 0's the 2nd,4th,8th pin output high
     //
-    virtual ErrorCodeEnum WritePort(DWORD dwPort, BYTE btData)
-    {
-        return Error_Succeed;
-    }
+    virtual ErrorCodeEnum WritePort(DWORD dwPort, BYTE btData);
     //
     //	Get port input.
     //	Arguments:
@@ -45,10 +42,43 @@ public:
     //	- btStatus:input value
     //	  ex.dwPort=0 btStatus=10001010 means port 0's the 2nd,4th,8th pin with high level
     //
-    virtual ErrorCodeEnum ReadPort(DWORD dwPort, BYTE& btStatus)
-    {
-        return Error_NotImpl;
-    }
+    virtual ErrorCodeEnum ReadPort(DWORD dwPort, BYTE& btStatus);
+
+#ifndef _MSC_VER
+
+    /// <summary>
+    /// 打开指定模块的提示灯
+    /// </summary>
+    /// <param name="dwReq">
+    /// 硬件灯模块序号,见上方定义GPIO_DEV_SN_*,或参考规格说明文档,只会传送模式为”驱动“的序号之一
+    /// 只会设置灯,如果是其他值则返回 Error_NotSupport
+    /// </param>
+    /// <param name="dwMode">
+    /// 入参,指定灯的属性如常亮还是闪烁,是普通灯颜色还是故障灯颜色
+    /// 不同属性可以通过与的方式合并传入,如灯颜色和亮灯模式,同一属性只会传入其中一个值,比如灯常亮和闪烁只会传入其中之一
+    /// 具体值表示的内容参考上方定义的内容 GPIO_DEV_LIGHT_MODE_*
+    /// </param>
+    /// <returns>
+    ///  参数有误或设置失败返回对应的报错
+    /// </returns>
+    virtual ErrorCodeEnum SetStatus(DWORD dwReq, DWORD dwMode);
+
+    /// <summary>
+    /// 获取探测器的状态
+    /// </summary>
+    /// <param name="dwReq">
+    /// 感应模块序号,见上方定义GPIO_DEV_SN_*,或参考规格说明文档,只会传送模式为”接收“的序号
+    /// 这个可能是与的关系,即有可能会一个调用同时获取多个模块的状态
+    /// </param>
+    /// <param name="dwMode">
+    /// 对应模块(有震动、开门、摘机、有人靠近)对应的位,如果是高电平置为1,如果低电平则置为0
+    /// </param>
+    /// <returns>
+    /// 无法获取状态则返回报错
+    /// </returns>
+    virtual ErrorCodeEnum DetectStatus(DWORD dwReq, DWORD& dwMode);
+
+#endif //_MSC_VER
 
 private:
     int m_mode;

+ 0 - 1
DevAdapter/simulator/idcer.1.1/idcer_impl.cpp

@@ -533,7 +533,6 @@ DEVICEBASE_API ErrorCodeEnum CreateDevComponent(DeviceBaseClass*& pBaseObj)
 #endif 
     std::string str;
     cmb::log4vendor::init(config, str);
-    printf("init after: %s\n", str.c_str());
 
     return Error_Succeed;
 }

+ 0 - 2
DevAdapter/simulator/idcer.1.1/idcer_impl.h

@@ -1,8 +1,6 @@
 #ifndef LIBFRAMEWORK_IDCER_IMPL_H
 #define LIBFRAMEWORK_IDCER_IMPL_H
 
-#pragma once
-
 #include "IDCerClass.h"
 #include <string>
 #include "DeviceSimulator.h"

+ 1 - 1
DevAdapter/simulator/pinpad.1.1/pinpad_impl.cpp

@@ -257,7 +257,7 @@ DEVICEBASE_API ErrorCodeEnum  CreateDevComponent(DeviceBaseClass*& pOutDevAptObj
     }
 
     cmb::log_init_config config;
-    config.dev_name = "PinPad";
+    config.dev_name = "vendor_PinPad";
 #if defined(_MSC_VER)
     config.log_dir = ("C:\\rvc\\dbg\\");
 #else