List container improvements and testing

- support range based for loops
 - add remove() method to remove a node
 - add clear() to empty entire list and delete nodes
 - add empty() helper
This commit is contained in:
Daniel Agar
2019-03-01 21:01:04 -05:00
parent 6c3e79f361
commit e2bf4b1894
15 changed files with 335 additions and 88 deletions
+3 -16
View File
@@ -148,13 +148,7 @@ UavcanNode::~UavcanNode()
(void)orb_unsubscribe(_actuator_direct_sub);
// Removing the sensor bridges
auto br = _sensor_bridges.getHead();
while (br != nullptr) {
auto next = br->getSibling();
delete br;
br = next;
}
_sensor_bridges.clear();
_instance = nullptr;
@@ -651,9 +645,8 @@ int UavcanNode::init(uavcan::NodeID node_id)
// Sensor bridges
IUavcanSensorBridge::make_all(_node, _sensor_bridges);
auto br = _sensor_bridges.getHead();
while (br != nullptr) {
for (const auto &br : _sensor_bridges) {
ret = br->init();
if (ret < 0) {
@@ -662,12 +655,9 @@ int UavcanNode::init(uavcan::NodeID node_id)
}
PX4_INFO("sensor bridge '%s' init ok", br->get_name());
br = br->getSibling();
}
/* Start the Node */
return _node.start();
}
@@ -1228,13 +1218,10 @@ UavcanNode::print_info()
}
// Sensor bridges
auto br = _sensor_bridges.getHead();
while (br != nullptr) {
for (const auto &br : _sensor_bridges) {
printf("Sensor '%s':\n", br->get_name());
br->print_status();
printf("\n");
br = br->getSibling();
}
// Printing all nodes that are online