aboutsummaryrefslogtreecommitdiff
path: root/src/modules
diff options
context:
space:
mode:
authorPavel Kirienko <pavel.kirienko@gmail.com>2014-08-22 15:52:35 +0400
committerPavel Kirienko <pavel.kirienko@gmail.com>2014-08-22 15:52:35 +0400
commit6ebd59c633db0d610f63eeb06c5c867da34740e0 (patch)
treee60bb0458d6503b871a01c314bfdc66822e99498 /src/modules
parentbdc2ecd9f6d0ae3e66feb8a8e94391b606ee451e (diff)
downloadpx4-firmware-6ebd59c633db0d610f63eeb06c5c867da34740e0.tar.gz
px4-firmware-6ebd59c633db0d610f63eeb06c5c867da34740e0.tar.bz2
px4-firmware-6ebd59c633db0d610f63eeb06c5c867da34740e0.zip
UAVCAN: improved sensor bridge factory
Diffstat (limited to 'src/modules')
-rw-r--r--src/modules/uavcan/sensors/gnss.cpp4
-rw-r--r--src/modules/uavcan/sensors/gnss.hpp4
-rw-r--r--src/modules/uavcan/sensors/mag.cpp4
-rw-r--r--src/modules/uavcan/sensors/mag.hpp7
-rw-r--r--src/modules/uavcan/sensors/sensor_bridge.cpp4
-rw-r--r--src/modules/uavcan/sensors/sensor_bridge.hpp2
-rw-r--r--src/modules/uavcan/uavcan_main.cpp4
7 files changed, 16 insertions, 13 deletions
diff --git a/src/modules/uavcan/sensors/gnss.cpp b/src/modules/uavcan/sensors/gnss.cpp
index fb89b8365..6b69d163f 100644
--- a/src/modules/uavcan/sensors/gnss.cpp
+++ b/src/modules/uavcan/sensors/gnss.cpp
@@ -45,6 +45,8 @@
#define MM_PER_CM 10 // Millimeters per centimeter
+const char *const UavcanGnssBridge::NAME = "gnss";
+
UavcanGnssBridge::UavcanGnssBridge(uavcan::INode &node) :
_node(node),
_sub_fix(node),
@@ -52,8 +54,6 @@ _report_pub(-1)
{
}
-const char *UavcanGnssBridge::get_name() const { return "gnss"; }
-
int UavcanGnssBridge::init()
{
int res = -1;
diff --git a/src/modules/uavcan/sensors/gnss.hpp b/src/modules/uavcan/sensors/gnss.hpp
index 6bdae8de3..db3a515fa 100644
--- a/src/modules/uavcan/sensors/gnss.hpp
+++ b/src/modules/uavcan/sensors/gnss.hpp
@@ -56,9 +56,11 @@
class UavcanGnssBridge : public IUavcanSensorBridge
{
public:
+ static const char *const NAME;
+
UavcanGnssBridge(uavcan::INode& node);
- const char *get_name() const override;
+ const char *get_name() const override { return NAME; }
int init() override;
diff --git a/src/modules/uavcan/sensors/mag.cpp b/src/modules/uavcan/sensors/mag.cpp
index 6be9e9bac..4f8a5e104 100644
--- a/src/modules/uavcan/sensors/mag.cpp
+++ b/src/modules/uavcan/sensors/mag.cpp
@@ -37,6 +37,8 @@
#include "mag.hpp"
+const char *const UavcanMagnetometerBridge::NAME = "mag";
+
UavcanMagnetometerBridge::UavcanMagnetometerBridge(uavcan::INode& node) :
device::CDev("uavcan_mag", "/dev/uavcan/mag"),
_sub_mag(node)
@@ -53,8 +55,6 @@ UavcanMagnetometerBridge::~UavcanMagnetometerBridge()
}
}
-const char *UavcanMagnetometerBridge::get_name() const { return "mag"; }
-
int UavcanMagnetometerBridge::init()
{
// Init the libuavcan subscription
diff --git a/src/modules/uavcan/sensors/mag.hpp b/src/modules/uavcan/sensors/mag.hpp
index 7f23a0b8f..4bc5129a2 100644
--- a/src/modules/uavcan/sensors/mag.hpp
+++ b/src/modules/uavcan/sensors/mag.hpp
@@ -46,10 +46,12 @@
class UavcanMagnetometerBridge : public IUavcanSensorBridge, public device::CDev
{
public:
+ static const char *const NAME;
+
UavcanMagnetometerBridge(uavcan::INode& node);
~UavcanMagnetometerBridge() override;
- const char *get_name() const override;
+ const char *get_name() const override { return NAME; }
int init() override;
@@ -63,8 +65,7 @@ private:
(const uavcan::ReceivedDataStructure<uavcan::equipment::ahrs::Magnetometer>&)>
MagCbBinder;
-
- uavcan::Subscriber<uavcan::equipment::ahrs::Magnetometer, MagCbBinder> _sub_mag;
+ uavcan::Subscriber<uavcan::equipment::ahrs::Magnetometer, MagCbBinder> _sub_mag;
mag_scale _scale = {};
orb_id_t _orb_id = nullptr;
orb_advert_t _orb_advert = -1;
diff --git a/src/modules/uavcan/sensors/sensor_bridge.cpp b/src/modules/uavcan/sensors/sensor_bridge.cpp
index 08fca73c5..2bd662d5c 100644
--- a/src/modules/uavcan/sensors/sensor_bridge.cpp
+++ b/src/modules/uavcan/sensors/sensor_bridge.cpp
@@ -41,9 +41,9 @@
IUavcanSensorBridge* IUavcanSensorBridge::make(uavcan::INode &node, const char *bridge_name)
{
- if (!std::strncmp("gnss", bridge_name, MaxNameLen)) {
+ if (!std::strncmp(UavcanGnssBridge::NAME, bridge_name, MAX_NAME_LEN)) {
return new UavcanGnssBridge(node);
- } else if (!std::strncmp("mag", bridge_name, MaxNameLen)) {
+ } else if (!std::strncmp(UavcanMagnetometerBridge::NAME, bridge_name, MAX_NAME_LEN)) {
return new UavcanMagnetometerBridge(node);
} else {
return nullptr;
diff --git a/src/modules/uavcan/sensors/sensor_bridge.hpp b/src/modules/uavcan/sensors/sensor_bridge.hpp
index 1667c2b57..7bd811813 100644
--- a/src/modules/uavcan/sensors/sensor_bridge.hpp
+++ b/src/modules/uavcan/sensors/sensor_bridge.hpp
@@ -46,7 +46,7 @@
class IUavcanSensorBridge : uavcan::Noncopyable, public ListNode<IUavcanSensorBridge*>
{
public:
- static constexpr unsigned MaxNameLen = 20;
+ static constexpr unsigned MAX_NAME_LEN = 20;
virtual ~IUavcanSensorBridge() { }
diff --git a/src/modules/uavcan/uavcan_main.cpp b/src/modules/uavcan/uavcan_main.cpp
index 71302d928..aca4587ff 100644
--- a/src/modules/uavcan/uavcan_main.cpp
+++ b/src/modules/uavcan/uavcan_main.cpp
@@ -535,7 +535,7 @@ int UavcanNode::sensor_enable(const char *bridge_name)
{
auto pos = _sensor_bridges.getHead();
while (pos != nullptr) {
- if (!std::strncmp(pos->get_name(), bridge_name, IUavcanSensorBridge::MaxNameLen)) {
+ if (!std::strncmp(pos->get_name(), bridge_name, IUavcanSensorBridge::MAX_NAME_LEN)) {
warnx("sensor bridge '%s' already exists", bridge_name);
retval = -1;
goto leave;
@@ -553,7 +553,7 @@ int UavcanNode::sensor_enable(const char *bridge_name)
goto leave;
}
- assert(!std::strncmp(bridge->get_name(), bridge_name, IUavcanSensorBridge::MaxNameLen));
+ assert(!std::strncmp(bridge->get_name(), bridge_name, IUavcanSensorBridge::MAX_NAME_LEN));
retval = bridge->init();
if (retval >= 0) {