11 #include "vda5050_msgs/Order.h" 12 #include "vda5050_msgs/Node.h" 33 if (_cur_order.orderId.size() == 0)
39 vda5050_msgs::Node last_base;
41 for (
auto i = 0; i < _cur_order.nodes.size(); i++)
43 if (_cur_order.nodes[i].released ==
false)
46 last_base = _cur_order.nodes[i-1];
52 if (order->orderId != _cur_order.orderId)
64 if (order->nodes[0].nodeId == last_base.nodeId && order->nodes[0].sequenceId == last_base.sequenceId)
67 ROS_INFO(
"new order correctly published!");
71 ROS_INFO(
"new order rejected! error: start of new base != end of the current base.");
77 if (order->orderUpdateId < _cur_order.orderUpdateId)
79 ROS_INFO(
"order update rejected! error: new orderUpdateId is lower as current orderUpdateId.");
81 else if (order->orderUpdateId == _cur_order.orderUpdateId)
83 ROS_INFO(
"order update discarded! error: new orderUpdateId is same as current orderUpdateId.");
87 if (order->nodes.size() == 0 || order->edges.size() == 0)
89 ROS_INFO(
"order update inactive! error: nodeStates or edgeStates empty.");
102 if (order->nodes[0].nodeId == last_base.nodeId && order->nodes[0].sequenceId == last_base.sequenceId)
105 ROS_INFO(
"updated order correctly published!");
109 ROS_INFO(
"updated order rejected! error: start of new base != end of the current base.");
119 int main(
int argc,
char **argv)
122 ros::init(argc, argv,
"order_logic_examinator");
Subscriber subscribe(const std::string &topic, uint32_t queue_size, void(T::*fp)(M), T *obj, const TransportHints &transport_hints=TransportHints())
void orderCallback(const vda5050_msgs::Order::ConstPtr &order)
ROSCPP_DECL void init(int &argc, char **argv, const std::string &name, uint32_t options=0)
OrderExaminator(std::string desired_topic)
int main(int argc, char **argv)
vda5050_msgs::Order _cur_order