fix(ethercat): log CiA402 device state transitions
This commit is contained in:
parent
9d12f5d1d1
commit
b9dffb66df
@ -153,8 +153,11 @@ void Cia402StatusMonitor::reportStatuswordTransition_(
|
||||
const StatusSample& previous,
|
||||
const StatusSample& current) const
|
||||
{
|
||||
const bool status_changed =
|
||||
const bool device_state_changed =
|
||||
!had_previous || !previous.read_ok ||
|
||||
(previous.statusword & 0x006F) != (current.statusword & 0x006F);
|
||||
const bool status_changed =
|
||||
device_state_changed ||
|
||||
previous.status_problem != current.status_problem ||
|
||||
(previous.statusword & 0x0888) != (current.statusword & 0x0888);
|
||||
if (current.status_problem && status_changed) {
|
||||
@ -178,9 +181,20 @@ void Cia402StatusMonitor::reportStatuswordTransition_(
|
||||
previous.status_problem) {
|
||||
CMVR_LOG(INFO) << "[Cia402StatusMonitor] [statusword] recovered"
|
||||
<< ", node=" << static_cast<int>(node_id)
|
||||
<< ", current_statusword=0x" << std::hex << std::uppercase
|
||||
<< std::setw(4) << std::setfill('0') << current.statusword
|
||||
<< std::dec << std::nouppercase << std::setfill(' ')
|
||||
<< ' ' << deviceStateName_(current.statusword)
|
||||
<< ", previous_statusword=0x" << std::hex << std::uppercase
|
||||
<< std::setw(4) << std::setfill('0') << previous.statusword
|
||||
<< std::dec << std::nouppercase << std::setfill(' ');
|
||||
} else if (device_state_changed) {
|
||||
CMVR_LOG(INFO) << "[Cia402StatusMonitor] [statusword] 0x"
|
||||
<< std::hex << std::uppercase << std::setw(4)
|
||||
<< std::setfill('0') << current.statusword
|
||||
<< std::dec << std::nouppercase << std::setfill(' ')
|
||||
<< ' ' << deviceStateName_(current.statusword)
|
||||
<< ", node=" << static_cast<int>(node_id);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user