فهرست منبع

Z991239-5165 #comment GPIO同步

80374374 1 سال پیش
والد
کامیت
aef25993a2
2فایلهای تغییر یافته به همراه136 افزوده شده و 106 حذف شده
  1. 130 105
      Module/mod_gpio/mod_gpio.cpp
  2. 6 1
      Module/mod_gpio/mod_gpio.h

+ 130 - 105
Module/mod_gpio/mod_gpio.cpp

@@ -272,13 +272,17 @@ bool CGpioEntity::DetectBit(ULONG data, int pos)
     if (!m_bFuncVer2) {
         ULONG tmp = 0;
         SETBIT(tmp, pos);
-        return data & tmp;
-    } else {
-        if (m_hDevHelper != nullptr) {
-            DWORD dwReq = (GPIO_DEV_SN_SENSOR_SHAKE << pos);
-            return (data & dwReq);
-        }
+        return (data & tmp);
+    } 
+    else {
+#if defined(RVC_OS_LINUX)
+		if (m_hDevHelper != nullptr) {
+			DWORD dwReq = (GPIO_DEV_SN_SENSOR_SHAKE << pos);
+			return (data & dwReq);
+		}
+#endif //RVC_OS_LINUX
     }
+    return 0;
 }
 
 ErrorCodeEnum CGpioEntity::Initial()
@@ -371,11 +375,13 @@ ErrorCodeEnum CGpioEntity::Initial()
             err = m_hDevHelper->GetDevCategory(m_devCatInfo);
             if (err == Error_Succeed) {
                 m_adapterInfo.FulfillCategoryInfo(m_devCatInfo);
-                CSimpleStringA strType(m_devCatInfo.szType);
-                if (strType.IndexOf("FUNCVER=2.0") != -1) {
-                    m_bFuncVer2 = TRUE;
-                    DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("Detect new interface version: %s", strType.GetData());
-                }
+#if defined(RVC_OS_LINUX)
+				CSimpleStringA strType(m_devCatInfo.szType);
+				if (strType.IndexOf("FUNCVER=2.0") != -1) {
+					m_bFuncVer2 = TRUE;
+					DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("Detect new interface version: %s", strType.GetData());
+				}
+#endif //RVC_OS_LINUX
                 ToLogWarnInfoAboutTerm(m_adapterInfo);
             } else {
                 DevErrorInfo devErrInfo;
@@ -391,6 +397,7 @@ ErrorCodeEnum CGpioEntity::Initial()
 			ZeroMemory(&devErrInfo, sizeof(devErrInfo));
 			m_hDevHelper->GetLastErr(devErrInfo);
 			errMsg = CSimpleStringA::Format("DevOpen failed:%s(%s)", SpStrError(err), devErrInfo.szErrMsg);
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setResultCode("RTA2901")(errMsg.GetData());
 			LogWarn(Severity_Middle, Error_Unexpect, GPIO_UserErrorCode_DevOpen_Failed, errMsg.GetData());
             Sleep(300);
             initTries++;
@@ -404,17 +411,22 @@ ErrorCodeEnum CGpioEntity::Initial()
     }
 
     if (!m_bFuncVer2) {
-        err = m_hDevHelper->WritePort(0, 0x00);
-        DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("write ports(0) returned: %s)", SpStrError(err));
-        err = m_hDevHelper->WritePort(1, 0x00);
-        DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("write ports(1) returned: %s)", SpStrError(err));
-        if (m_bNewVersion) {
-            err = m_hDevHelper->WritePort(3, 0x00);
-            DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("write ports(3) returned: %s)", SpStrError(err));
-        }
+		err = m_hDevHelper->WritePort(0, 0x00);
+		if (err != Error_Succeed)
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("write ports(0) returned: %s)", SpStrError(err));
+		err = m_hDevHelper->WritePort(1, 0x00);
+		if (err != Error_Succeed)
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("write ports(1) returned: %s)", SpStrError(err));
+		if (m_bNewVersion) {
+			err = m_hDevHelper->WritePort(3, 0x00);
+			if (err != Error_Succeed)
+				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("write ports(3) returned: %s)", SpStrError(err));
+		}
     } else {
-        err = m_hDevHelper->SetStatus(GPIO_DEV_SN_LIGHT_SENSOR_ALL, GPIO_DEV_LIGHT_MODE_RESET);
-        DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("write resetone returned: %s)", SpStrError(err));
+#if defined(RVC_OS_LINUX)
+		err = m_hDevHelper->SetStatus(GPIO_DEV_SN_LIGHT_SENSOR_ALL, GPIO_DEV_LIGHT_MODE_RESET);
+		DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("write resetone returned: %s)", SpStrError(err));
+#endif //RVC_OS_LINUX
     }
 
     //oilyang@20170214 
@@ -432,7 +444,6 @@ ErrorCodeEnum CGpioEntity::Initial()
         m_moveHoldTimes = MAX_MOVE_HOLD_TIMES;//oiltmp about 5000*300ms = 25 minutes
     }
     m_moveDisappearTimes = m_moveHoldTimes;
-
     m_eMachineType = SP::Module::Comm::GetTerminalMachineInfo(this).type;
     DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("machine type: %s", SP::Module::Comm::Type2Str(m_eMachineType));
     return err;
@@ -600,83 +611,86 @@ void CGpioEntity::WritePin(DWORD dwPinSeq, bool bHighLevel)
 
 void CGpioEntity::SetEx(GpioService_Set_Info req)
 {
-    int devicePort;
-    LOG_TRACE("SetEx request %s arrived!", GetLightSeqString(req.devseq));
-    switch (req.devseq) {
-    case CARDREADER:
-    {
-        devicePort = GPIO_DEV_SN_LIGHT_CARDISSUER;
-        break;
-    }
-    case CARDREADER_RED:
-    {
-        devicePort = GPIO_DEV_SN_LIGHT_CARDISSUER_MAINTAIN;
-        break;
-    }
-    case IDCERTIFICATE:
-    {
-        devicePort = GPIO_DEV_SN_LIGHT_IDCERTIFICATE;
-        break;
-    }
-    case FINGERPRINT:
-    {
-        devicePort = GPIO_DEV_SN_LIGHT_FINGERPRINT;
-        break;
-    }
-    case PINPAD:
-    {
-        devicePort = GPIO_DEV_SN_LIGHT_PINPAD;
-        break;
-    }
-    case HEADLIGHT:
-    {
-        devicePort = GPIO_DEV_SN_LIGHT_FACE;
-        break;
-    }
-    case HEADLIGHT_RED:
-    {
-        devicePort = 6/*GPIO_DEV_SN_LIGHT_MACHINE_FAULT*/;
-        break;
-    }
-    case CONTACTLESSCARD:
-    {
-        devicePort = GPIO_DEV_SN_LIGHT_CONTACTLESSCARD;
-        break;
-    }
-    case HEADLIGHT_ASSIST:
-    {
-        devicePort = GPIO_DEV_SN_LIGHT_FACE;
-        break;
-    }
-    break;
-    default:
-        DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("unsupport device seq: %d", req.devseq);
-        return;
-    }
+#if defined(RVC_OS_LINUX)
 
-    if (m_hDevHelper != nullptr) {
-        DWORD dwReq = devicePort;
-        DWORD dwMode = 0;
-        if (!req.close) {
-            dwMode |= GPIO_DEV_LIGHT_MODE_COLOR_NORMAL;
-            if (!!req.mode) {
-                dwMode |= GPIO_DEV_LIGHT_MODE_LIGHT_FLICKER;
-            } else {
-                dwMode |= GPIO_DEV_LIGHT_MODE_LIGHT_SUSTAIN;
-            }
-        }
-        DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("to set SetStatus...%d, 0x%X", dwReq, dwMode);
-        const ErrorCodeEnum ec = m_hDevHelper->SetStatus(dwReq, dwMode);
-        DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("SetStatus returned %s", SpStrError(ec));
-        if (ec != Error_Succeed) {
-            DevErrorInfo devErrInfo;
-            ZeroMemory(&devErrInfo, sizeof(devErrInfo));
-            m_hDevHelper->GetLastErr(devErrInfo);
-            DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("SetStatus failed:%s(%s)", SpStrError(ec), devErrInfo.szErrMsg);
-        }
-    } else {
-        DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("dev helper object is invalid pointer!");
-    }
+	int devicePort;
+	LOG_TRACE("SetEx request %s arrived!", GetLightSeqString(req.devseq));
+	switch (req.devseq) {
+	case CARDREADER:
+	{
+		devicePort = GPIO_DEV_SN_LIGHT_CARDISSUER;
+		break;
+	}
+	case CARDREADER_RED:
+	{
+		devicePort = GPIO_DEV_SN_LIGHT_CARDISSUER_MAINTAIN;
+		break;
+	}
+	case IDCERTIFICATE:
+	{
+		devicePort = GPIO_DEV_SN_LIGHT_IDCERTIFICATE;
+		break;
+	}
+	case FINGERPRINT:
+	{
+		devicePort = GPIO_DEV_SN_LIGHT_FINGERPRINT;
+		break;
+	}
+	case PINPAD:
+	{
+		devicePort = GPIO_DEV_SN_LIGHT_PINPAD;
+		break;
+	}
+	case HEADLIGHT:
+	{
+		devicePort = GPIO_DEV_SN_LIGHT_FACE;
+		break;
+	}
+	case HEADLIGHT_RED:
+	{
+		devicePort = 6/*GPIO_DEV_SN_LIGHT_MACHINE_FAULT*/;
+		break;
+	}
+	case CONTACTLESSCARD:
+	{
+		devicePort = GPIO_DEV_SN_LIGHT_CONTACTLESSCARD;
+		break;
+	}
+	case HEADLIGHT_ASSIST:
+	{
+		devicePort = GPIO_DEV_SN_LIGHT_FACE;
+		break;
+	}
+	break;
+	default:
+		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("unsupport device seq: %d", req.devseq);
+		return;
+	}
+
+	if (m_hDevHelper != nullptr) {
+		DWORD dwReq = devicePort;
+		DWORD dwMode = 0;
+		if (!req.close) {
+			dwMode |= GPIO_DEV_LIGHT_MODE_COLOR_NORMAL;
+			if (!!req.mode) {
+				dwMode |= GPIO_DEV_LIGHT_MODE_LIGHT_FLICKER;
+			} else {
+				dwMode |= GPIO_DEV_LIGHT_MODE_LIGHT_SUSTAIN;
+			}
+		}
+		DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("to set SetStatus...%d, 0x%X", dwReq, dwMode);
+		const ErrorCodeEnum ec = m_hDevHelper->SetStatus(dwReq, dwMode);
+		DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("SetStatus returned %s", SpStrError(ec));
+		if (ec != Error_Succeed) {
+			DevErrorInfo devErrInfo;
+			ZeroMemory(&devErrInfo, sizeof(devErrInfo));
+			m_hDevHelper->GetLastErr(devErrInfo);
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("SetStatus failed:%s(%s)", SpStrError(ec), devErrInfo.szErrMsg);
+		}
+	} else {
+		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("dev helper object is invalid pointer!");
+	}
+#endif //RVC_OS_LINUX
 }
 
 void CGpioEntity::Set(GpioService_Set_Info req)
@@ -800,6 +814,7 @@ void CGpioEntity::OnPositiveFlickerSetTimerout(void* pData)
     ITimerListener* pListener = new TimerOutHelper<CGpioEntity>(this, &CGpioEntity::OnPositiveFlickerResetTimerout, pSCI, true);
     GetFunction()->SetTimer(pSCI->timerID, pListener, pSCI->resetTime);
 }
+
 void CGpioEntity::OnPositiveFlickerResetTimerout(void* pData)
 {
     SetContextInfo* pSCI = (SetContextInfo*)pData;
@@ -932,12 +947,16 @@ void CGpioEntity::OnPositiveLevelTimerOut(void* pData)
     if (!m_bFuncVer2) {
         err = m_hDevHelper->ReadPort(INPUT_PORT_2, btInput);
     } else {
-        DWORD dwReq(GPIO_DEV_SN_LIGHT_SENSOR_ALL);
-        DWORD dwMode = 0;
-        DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("to DetectStatus 0x%X...", dwReq);
-        err = m_hDevHelper->DetectStatus(dwReq, dwMode);
-        DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("DetectStatus return %s, 0x%X", SpStrError(err), dwMode);
-        btInput = dwMode;
+#if defined(RVC_OS_LINUX)
+		DWORD dwReq(GPIO_DEV_SN_LIGHT_SENSOR_ALL);
+		DWORD dwMode = 0;
+		DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("to DetectStatus 0x%X...", dwReq);
+		err = m_hDevHelper->DetectStatus(dwReq, dwMode);
+		DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("DetectStatus return %s, 0x%X", SpStrError(err), dwMode);
+		btInput = dwMode;
+#else
+        err = Error_NotSupport;
+#endif //RVC_OS_LINUX
     }
     if (err != Error_Succeed) {
         DevErrorInfo devErrInfo;
@@ -1124,9 +1143,15 @@ void CGpioEntity::OnPositiveLevelTimerOut(void* pData)
 								SYSTEMTIME localTime;
 								GetLocalTime(&localTime);
 								if (localTime.wHour > 8 && localTime.wHour < 18)
+								{
+									DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setResultCode("RTA2902")("Move detect is abnormal(Work time).");
 									LogWarn(Severity_High, Error_Unexpect, LOG_EVT_MOVEDETECT_ABNORMAL_WORKTIME, "Move detect is abnormal(Work time).");
+								}
 								else
+								{
+									DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setResultCode("RTA2903")("Move detect is abnormal(off work).");
 									LogWarn(Severity_High, Error_Unexpect, LOG_EVT_MOVEDETECT_ABNORMAL_OFFWORK, "Move detect is abnormal(off work).");
+								}
 						
 						}
 
@@ -1323,7 +1348,7 @@ bool CGpioEntity::GetReceiving(int deviceSeq, ReceivingInfo ri, ULONG iIndex)
             break;
         }
         default:
-            DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("not support: %d", ri.InputMode);
+            DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("not support: %d", ri.InputMode);
             break;
     }
     return true;

+ 6 - 1
Module/mod_gpio/mod_gpio.h

@@ -143,7 +143,7 @@ class CGpioEntity : public CDevAdptEntityBase, public ILogListener
 {
 public:
 	//0000 0000 0000 0010 0110 1111 1100 0000
-	CGpioEntity():m_bPickUpRound(false),m_bVibrationRound(false)
+	CGpioEntity():m_devEnableStatus(0x1f),m_bPickUpRound(false),m_bVibrationRound(false)
 		,m_bOpenRound(false),m_bMoveRound(false),m_bCardGateRound(false), m_ePickUpFlag(UnknownStatus)
 		,m_bVibrationFlag(false),m_bOpenFlag(false),m_bMoveFlag(false),m_bCardGateFlag(false)
 		, m_pLogListener(NULL), m_bHeadLightFlag(false), m_headlightDevPort(0), m_moveHoldTimes(0)
@@ -199,6 +199,10 @@ public:
 
 	void SaveCurrDevStatus(DevOutputInfo devOutputInfo) {currDevStatus = devOutputInfo;}
 
+	ULONG GetDevEnableStatus(){return m_devEnableStatus;}
+
+	void SetDevEnableStatus(ULONG devEnableStatus){m_devEnableStatus = devEnableStatus;}
+
 	ULONG GetNewTimerID(){return m_timerID++;}
 
 	BYTE GetOutputStatus(int sn=0);
@@ -241,6 +245,7 @@ private:
 
 	DevOutputInfo currDevStatus;
 	DevCategoryInfo m_devCatInfo;
+	ULONG m_devEnableStatus;
 	ULONG m_timerID;
 	bool m_bPickUpRound,m_bVibrationRound,m_bOpenRound,m_bMoveRound,m_bCardGateRound;
 	bool m_bVibrationFlag,m_bOpenFlag,m_bMoveFlag,m_bCardGateFlag;