|
@@ -1047,6 +1047,9 @@ void nsGEN::PSGHDDevice::FireWarnMessage(const bool Act, const int Code, const c
|
|
|
|
|
|
|
|
void nsGEN::PSGHDDevice::OnCallBack()
|
|
void nsGEN::PSGHDDevice::OnCallBack()
|
|
|
{
|
|
{
|
|
|
|
|
+ // 定义全局变量用于HWDSW和HWEOK之间共享状态
|
|
|
|
|
+ bool isReadyFromHWDSW = false;
|
|
|
|
|
+
|
|
|
// 无操作处理函数
|
|
// 无操作处理函数
|
|
|
auto HWNotProcess = [](const char* value, int length) -> void
|
|
auto HWNotProcess = [](const char* value, int length) -> void
|
|
|
{
|
|
{
|
|
@@ -1332,7 +1335,7 @@ void nsGEN::PSGHDDevice::OnCallBack()
|
|
|
FINFO("HWPOW: Power status = {$}", isPowerOn ? "On" : "Off");
|
|
FINFO("HWPOW: Power status = {$}", isPowerOn ? "On" : "Off");
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
- auto HWEOK = [this](const char* data, int length) -> void
|
|
|
|
|
|
|
+ auto HWEOK = [this, &isReadyFromHWDSW](const char* data, int length) -> void
|
|
|
{
|
|
{
|
|
|
if (length < 1) { // 需1字节(X)
|
|
if (length < 1) { // 需1字节(X)
|
|
|
FINFO("HWEOK: Invalid data length ({$} < 1), skip", length);
|
|
FINFO("HWEOK: Invalid data length ({$} < 1), skip", length);
|
|
@@ -1346,8 +1349,13 @@ void nsGEN::PSGHDDevice::OnCallBack()
|
|
|
{
|
|
{
|
|
|
if (m_DoseUnit.m_GenState->Update(nsGEN::AttrKey::GENERATOR_STATUS_STANDBY))
|
|
if (m_DoseUnit.m_GenState->Update(nsGEN::AttrKey::GENERATOR_STATUS_STANDBY))
|
|
|
{
|
|
{
|
|
|
- //FireNotify(AttrKey::GENSTATE, m_DoseUnit.m_GenState->JSGet());
|
|
|
|
|
FINFO("HWEOK: Device ready, status updated to STANDBY");
|
|
FINFO("HWEOK: Device ready, status updated to STANDBY");
|
|
|
|
|
+ // 检查HWDSW的isReady是否也为true,如果是则通知客户端
|
|
|
|
|
+ if (isReadyFromHWDSW)
|
|
|
|
|
+ {
|
|
|
|
|
+ FireNotify(AttrKey::GENSTATE, m_DoseUnit.m_GenState->JSGet());
|
|
|
|
|
+ FINFO("HWEOK: HWDSW isReady is true, notifying client");
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
else
|
|
else
|
|
@@ -1360,7 +1368,7 @@ void nsGEN::PSGHDDevice::OnCallBack()
|
|
|
}
|
|
}
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
- auto HWDSW = [this](const char* data, int length) -> void
|
|
|
|
|
|
|
+ auto HWDSW = [this, &isReadyFromHWDSW](const char* data, int length) -> void
|
|
|
{
|
|
{
|
|
|
if (length < 1) { // 需1字节(X)
|
|
if (length < 1) { // 需1字节(X)
|
|
|
FINFO("HWDSW: Invalid data length ({$} < 1), skip", length);
|
|
FINFO("HWDSW: Invalid data length ({$} < 1), skip", length);
|
|
@@ -1368,18 +1376,14 @@ void nsGEN::PSGHDDevice::OnCallBack()
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
char eokStr = data[0]; // 直接取data[0]
|
|
char eokStr = data[0]; // 直接取data[0]
|
|
|
- bool isReady = (eokStr == '1');
|
|
|
|
|
|
|
+ isReadyFromHWDSW = (eokStr == '0');
|
|
|
|
|
+ FINFO("HWDSW: isReady updated to {$}", isReadyFromHWDSW);
|
|
|
|
|
|
|
|
- if (isReady && m_DoseUnit.m_GenState->Get()== nsGEN::AttrKey::GENERATOR_STATUS_STANDBY)
|
|
|
|
|
- {
|
|
|
|
|
- FireNotify(AttrKey::GENSTATE, m_DoseUnit.m_GenState->JSGet());
|
|
|
|
|
- FINFO("HWDSW: Device ready, status updated to STANDBY");
|
|
|
|
|
- }
|
|
|
|
|
- else
|
|
|
|
|
|
|
+ // 如果HWDSW的isReady为true且当前状态已经是STANDBY,则通知客户端
|
|
|
|
|
+ if (isReadyFromHWDSW && m_DoseUnit.m_GenState->Get() == nsGEN::AttrKey::GENERATOR_STATUS_STANDBY)
|
|
|
{
|
|
{
|
|
|
- m_DoseUnit.m_GenState->Update(nsGEN::AttrKey::GENERATOR_STATUS_SLEEP);
|
|
|
|
|
FireNotify(AttrKey::GENSTATE, m_DoseUnit.m_GenState->JSGet());
|
|
FireNotify(AttrKey::GENSTATE, m_DoseUnit.m_GenState->JSGet());
|
|
|
- FINFO("HWDSW: Device not ready, status updated to SLEEP");
|
|
|
|
|
|
|
+ FINFO("HWDSW: Device ready and status is STANDBY, notifying client");
|
|
|
}
|
|
}
|
|
|
};
|
|
};
|
|
|
|
|
|