UAVCAN: initializing all bridges by default

This commit is contained in:
Pavel Kirienko
2014-08-24 00:06:47 +04:00
parent 0f124963d4
commit e9da830316
5 changed files with 29 additions and 126 deletions
+1 -6
View File
@@ -56,17 +56,12 @@ _report_pub(-1)
int UavcanGnssBridge::init()
{
int res = -1;
// GNSS fix subscription
res = _sub_fix.start(FixCbBinder(this, &UavcanGnssBridge::gnss_fix_sub_cb));
int res = _sub_fix.start(FixCbBinder(this, &UavcanGnssBridge::gnss_fix_sub_cb));
if (res < 0)
{
warnx("GNSS fix sub failed %i", res);
return res;
}
warnx("gnss sensor bridge init ok");
return res;
}
+4 -20
View File
@@ -45,27 +45,11 @@
/*
* IUavcanSensorBridge
*/
IUavcanSensorBridge* IUavcanSensorBridge::make(uavcan::INode &node, const char *bridge_name)
void IUavcanSensorBridge::make_all(uavcan::INode &node, List<IUavcanSensorBridge*> &list)
{
/*
* TODO: make a linked list of known implementations at startup?
*/
if (!std::strncmp(UavcanGnssBridge::NAME, bridge_name, MAX_NAME_LEN)) {
return new UavcanGnssBridge(node);
} else if (!std::strncmp(UavcanMagnetometerBridge::NAME, bridge_name, MAX_NAME_LEN)) {
return new UavcanMagnetometerBridge(node);
} else if (!std::strncmp(UavcanBarometerBridge::NAME, bridge_name, MAX_NAME_LEN)) {
return new UavcanBarometerBridge(node);
} else {
return nullptr;
}
}
void IUavcanSensorBridge::print_known_names(const char *prefix)
{
printf("%s%s\n", prefix, UavcanGnssBridge::NAME);
printf("%s%s\n", prefix, UavcanMagnetometerBridge::NAME);
printf("%s%s\n", prefix, UavcanBarometerBridge::NAME);
list.add(new UavcanBarometerBridge(node));
list.add(new UavcanMagnetometerBridge(node));
list.add(new UavcanGnssBridge(node));
}
/*
+1 -6
View File
@@ -73,12 +73,7 @@ public:
* Creates a bridge object by its ASCII name, e.g. "gnss", "mag".
* @return nullptr if such bridge can't be created.
*/
static IUavcanSensorBridge* make(uavcan::INode &node, const char *bridge_name);
/**
* Prints all valid bridge names into stdout via printf(), one name per line with prefix.
*/
static void print_known_names(const char *prefix);
static void make_all(uavcan::INode &node, List<IUavcanSensorBridge*> &list);
};
/**