Commit 0d9f1cd1 authored by Pavel Vainerman's avatar Pavel Vainerman

fixed bug in history logging

parent 75d3584f
...@@ -250,8 +250,10 @@ bool SharedMemory::activateObject() ...@@ -250,8 +250,10 @@ bool SharedMemory::activateObject()
it->dit = mydioEnd(); it->dit = mydioEnd();
} }
// cerr << "history count=" << hist.size() << endl;
for( History::iterator it=hist.begin(); it!=hist.end(); ++it ) for( History::iterator it=hist.begin(); it!=hist.end(); ++it )
{ {
// cerr << "history for id=" << it->id << " count=" << it->hlst.size() << endl;
for( HistoryList::iterator hit=it->hlst.begin(); hit!=it->hlst.end(); ++hit ) for( HistoryList::iterator hit=it->hlst.begin(); hit!=it->hlst.end(); ++hit )
{ {
hit->ait = myaioEnd(); hit->ait = myaioEnd();
...@@ -651,15 +653,30 @@ void SharedMemory::saveHistory() ...@@ -651,15 +653,30 @@ void SharedMemory::saveHistory()
{ {
for( HistoryList::iterator hit=it->hlst.begin(); hit!=it->hlst.end(); ++hit ) for( HistoryList::iterator hit=it->hlst.begin(); hit!=it->hlst.end(); ++hit )
{ {
long val = 0; if( hit->ait != myaioEnd() )
if( hit->ait != myaioEnd() ) hit->add( localGetValue( hit->ait, hit->ait->second.si ), it->size );
val = localGetValue( hit->ait, hit->ait->second.si );
else if( hit->dit != mydioEnd() ) else if( hit->dit != mydioEnd() )
val = localGetState( hit->dit, hit->dit->second.si ); hit->add( localGetState( hit->dit, hit->dit->second.si ), it->size );
else else
continue; {
IOController_i::SensorInfo si;
si.id = hit->id;
si.node = conf->getLocalNode();
try
{
hit->add( localGetValue( hit->ait, si ), it->size );
continue;
}
catch(...){}
hit->add( val, it->size ); try
{
hit->add( localGetState( hit->dit, si ), it->size );
continue;
}
catch(...){}
}
} }
} }
} }
...@@ -692,7 +709,7 @@ void SharedMemory::updateHistory( UniSetTypes::SensorMessage* sm ) ...@@ -692,7 +709,7 @@ void SharedMemory::updateHistory( UniSetTypes::SensorMessage* sm )
} }
} }
else if( sm->sensor_type == UniversalIO::AnalogInput || else if( sm->sensor_type == UniversalIO::AnalogInput ||
sm->sensor_type == UniversalIO::AnalogOutput ) sm->sensor_type == UniversalIO::AnalogOutput )
{ {
if( !it->fuse_use_val ) if( !it->fuse_use_val )
{ {
...@@ -722,7 +739,21 @@ void SharedMemory::updateHistory( UniSetTypes::SensorMessage* sm ) ...@@ -722,7 +739,21 @@ void SharedMemory::updateHistory( UniSetTypes::SensorMessage* sm )
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
std::ostream& operator<<( std::ostream& os, const SharedMemory::HistoryInfo& h ) std::ostream& operator<<( std::ostream& os, const SharedMemory::HistoryInfo& h )
{ {
os << "id=" << h.id << " fuse_id=" << h.fuse_id; os << "History id=" << h.id
<< " fuse_id=" << h.fuse_id
<< " fuse_invert=" << h.fuse_invert
<< " fuse_val=" << h.fuse_val
<< " size=" << h.size
<< " filter=" << h.filter << endl;
for( SharedMemory::HistoryList::const_iterator it=h.hlst.begin(); it!=h.hlst.end(); ++it )
{
os << " id=" << it->id << "[";
for( SharedMemory::HBuffer::const_iterator i=it->buf.begin(); i!=it->buf.end(); ++i )
os << " " << (*i);
os << " ]" << endl;
}
return os; return os;
} }
// ------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment