|
@@ -213,6 +213,7 @@ void OperatorNode::doSimpleOperation()
|
|
|
char* err = EV->parseErrCode(ALARM_OP_STATUS, "name=%s;expect=Init;real=%s", name, describeOperatorStatus(status));
|
|
|
strcpy (OP->alarmText ,err);
|
|
|
status = OperatorStatusEnum::ALARM;
|
|
|
+
|
|
|
//EV->postAlarmLog(alarmText); called by alarm deal method
|
|
|
return;
|
|
|
}
|
|
@@ -484,6 +485,9 @@ void OperatorNode::Do()
|
|
|
}
|
|
|
OP->currentRoot = this;
|
|
|
doOperation();
|
|
|
+ if (this->status == OperatorStatusEnum::ALARM) {
|
|
|
+ OP->alarmNode = this;
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
void OperatorNode::monitor()
|
|
@@ -755,7 +759,9 @@ OperatorNode* COP::select(const char* name)
|
|
|
OperatorStatus& COP::monitor() {
|
|
|
static OperatorStatus returnStatus = OperatorStatusEnum::ALARM;
|
|
|
return returnStatus = monitor_a();
|
|
|
-
|
|
|
+ if (returnStatus == OperatorStatusEnum::SUCCESS) {
|
|
|
+ alarmNode = NULL;
|
|
|
+ }
|
|
|
}
|
|
|
OperatorStatusEnum COP::monitor_a()
|
|
|
{
|
|
@@ -784,6 +790,7 @@ OperatorStatusEnum COP::monitor_a()
|
|
|
}
|
|
|
else if (op->status == OperatorStatusEnum::ALARM) {
|
|
|
result = OperatorStatusEnum::ALARM;
|
|
|
+ OP->alarmNode = op;
|
|
|
//abort停止所有动作,但alarm只停止当前动作,其他动作正常进行
|
|
|
//break;
|
|
|
}
|