| 34 | } |
| 35 | |
| 36 | void SidepanelMonitor::on_timer() |
| 37 | { |
| 38 | if( !_connected ) return; |
| 39 | |
| 40 | zmq::message_t msg; |
| 41 | try{ |
| 42 | while( _zmq_subscriber.recv(&msg) ) |
| 43 | { |
| 44 | _msg_count++; |
| 45 | ui->labelCount->setText( QString("Messages received: %1").arg(_msg_count) ); |
| 46 | |
| 47 | const char* buffer = reinterpret_cast<const char*>(msg.data()); |
| 48 | |
| 49 | const uint32_t header_size = flatbuffers::ReadScalar<uint32_t>( buffer ); |
| 50 | const uint32_t num_transitions = flatbuffers::ReadScalar<uint32_t>( &buffer[4+header_size] ); |
| 51 | |
| 52 | for(size_t offset = 4; offset < header_size +4; offset +=3 ) |
| 53 | { |
| 54 | uint16_t index = flatbuffers::ReadScalar<uint16_t>(&buffer[offset]); |
| 55 | AbstractTreeNode* node = _loaded_tree.node( index ); |
| 56 | node->status = convert(flatbuffers::ReadScalar<Serialization::NodeStatus>(&buffer[offset+2] )); |
| 57 | } |
| 58 | |
| 59 | std::vector<std::pair<int, NodeStatus>> node_status; |
| 60 | |
| 61 | //qDebug() << "--------"; |
| 62 | for(size_t t=0; t < num_transitions; t++) |
| 63 | { |
| 64 | size_t offset = 8 + header_size + 12*t; |
| 65 | |
| 66 | // const double t_sec = flatbuffers::ReadScalar<uint32_t>( &buffer[offset] ); |
| 67 | // const double t_usec = flatbuffers::ReadScalar<uint32_t>( &buffer[offset+4] ); |
| 68 | // double timestamp = t_sec + t_usec* 0.000001; |
| 69 | const uint16_t uid = flatbuffers::ReadScalar<uint16_t>(&buffer[offset+8]); |
| 70 | const uint16_t index = _uid_to_index.at(uid); |
| 71 | // NodeStatus prev_status = convert(flatbuffers::ReadScalar<Serialization::NodeStatus>(&buffer[index+10] )); |
| 72 | NodeStatus status = convert(flatbuffers::ReadScalar<Serialization::NodeStatus>(&buffer[offset+11] )); |
| 73 | |
| 74 | _loaded_tree.node(index)->status = status; |
| 75 | node_status.push_back( {index, status} ); |
| 76 | |
| 77 | } |
| 78 | // update the graphic part |
| 79 | emit changeNodeStyle( "BehaviorTree", node_status ); |
| 80 | } |
| 81 | } |
| 82 | catch( zmq::error_t& err) |
| 83 | { |
| 84 | qDebug() << "ZMQ receive failed: " << err.what(); |
| 85 | } |
| 86 | } |
| 87 | |
| 88 | bool SidepanelMonitor::getTreeFromServer() |
| 89 | { |