|
@@ -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;
|