aboutsummaryrefslogtreecommitdiff
path: root/src/modules
diff options
context:
space:
mode:
authorAnton Matosov <anton.matosov@gmail.com>2015-01-05 23:15:12 +0200
committerAnton Matosov <anton.matosov@gmail.com>2015-01-05 23:15:12 +0200
commit117d43067f3c16c596a41cf0af5feaee1b11716b (patch)
tree07e0665f6025f2c8ae9551b1771b9d5e7eccb323 /src/modules
parent18bf501992afa8b561822615104c3868091429b9 (diff)
downloadpx4-firmware-117d43067f3c16c596a41cf0af5feaee1b11716b.tar.gz
px4-firmware-117d43067f3c16c596a41cf0af5feaee1b11716b.tar.bz2
px4-firmware-117d43067f3c16c596a41cf0af5feaee1b11716b.zip
Switched to enum class out of class definition
Diffstat (limited to 'src/modules')
-rw-r--r--src/modules/systemlib/mixer/mixer.h17
-rw-r--r--src/modules/systemlib/mixer/mixer_multirotor.cpp33
-rwxr-xr-xsrc/modules/systemlib/mixer/multi_tables4
3 files changed, 29 insertions, 25 deletions
diff --git a/src/modules/systemlib/mixer/mixer.h b/src/modules/systemlib/mixer/mixer.h
index a0197df48..55c4ce6af 100644
--- a/src/modules/systemlib/mixer/mixer.h
+++ b/src/modules/systemlib/mixer/mixer.h
@@ -441,6 +441,14 @@ private:
SimpleMixer operator=(const SimpleMixer&);
};
+
+/**
+ * Supported multirotor geometries.
+ *
+ * Values are generated by the multi_tables script and placed to mixer_multirotor.generated.h
+ */
+enum class MultirotorGeometry : unsigned int;
+
/**
* Multi-rotor mixer for pre-defined vehicle geometries.
*
@@ -451,13 +459,6 @@ class __EXPORT MultirotorMixer : public Mixer
{
public:
/**
- * Supported multirotor geometries.
- *
- * Values are generated by the multi_tables script and placed to mixer_multirotor.generated.h
- */
- enum Geometry : unsigned int;
-
- /**
* Precalculated rotor mix.
*/
struct Rotor {
@@ -484,7 +485,7 @@ public:
*/
MultirotorMixer(ControlCallback control_cb,
uintptr_t cb_handle,
- Geometry geometry,
+ MultirotorGeometry geometry,
float roll_scale,
float pitch_scale,
float yaw_scale,
diff --git a/src/modules/systemlib/mixer/mixer_multirotor.cpp b/src/modules/systemlib/mixer/mixer_multirotor.cpp
index 42e3513f4..d4bceaa27 100644
--- a/src/modules/systemlib/mixer/mixer_multirotor.cpp
+++ b/src/modules/systemlib/mixer/mixer_multirotor.cpp
@@ -52,6 +52,7 @@
#include <math.h>
#include <unistd.h>
#include <math.h>
+#include <type_traits>
#include "mixer.h"
@@ -77,9 +78,11 @@ float constrain(float val, float min, float max)
}
}
+using GeometryType = typename std::underlying_type<MultirotorGeometry>::type;
+
MultirotorMixer::MultirotorMixer(ControlCallback control_cb,
uintptr_t cb_handle,
- Geometry geometry,
+ MultirotorGeometry geometry,
float roll_scale,
float pitch_scale,
float yaw_scale,
@@ -89,8 +92,8 @@ MultirotorMixer::MultirotorMixer(ControlCallback control_cb,
_pitch_scale(pitch_scale),
_yaw_scale(yaw_scale),
_idle_speed(-1.0f + idle_speed * 2.0f), /* shift to output range here to avoid runtime calculation */
- _rotor_count(_config_rotor_count[geometry]),
- _rotors(_config_index[geometry])
+ _rotor_count(_config_rotor_count[(GeometryType)geometry]),
+ _rotors(_config_index[(GeometryType)geometry])
{
}
@@ -101,7 +104,7 @@ MultirotorMixer::~MultirotorMixer()
MultirotorMixer *
MultirotorMixer::from_text(Mixer::ControlCallback control_cb, uintptr_t cb_handle, const char *buf, unsigned &buflen)
{
- MultirotorMixer::Geometry geometry;
+ MultirotorGeometry geometry;
char geomname[8];
int s[4];
int used;
@@ -141,37 +144,37 @@ MultirotorMixer::from_text(Mixer::ControlCallback control_cb, uintptr_t cb_handl
debug("remaining in buf: %d, first char: %c", buflen, buf[0]);
if (!strcmp(geomname, "4+")) {
- geometry = MultirotorMixer::QUAD_PLUS;
+ geometry = MultirotorGeometry::QUAD_PLUS;
} else if (!strcmp(geomname, "4x")) {
- geometry = MultirotorMixer::QUAD_X;
+ geometry = MultirotorGeometry::QUAD_X;
} else if (!strcmp(geomname, "4v")) {
- geometry = MultirotorMixer::QUAD_V;
+ geometry = MultirotorGeometry::QUAD_V;
} else if (!strcmp(geomname, "4w")) {
- geometry = MultirotorMixer::QUAD_WIDE;
+ geometry = MultirotorGeometry::QUAD_WIDE;
} else if (!strcmp(geomname, "6+")) {
- geometry = MultirotorMixer::HEX_PLUS;
+ geometry = MultirotorGeometry::HEX_PLUS;
} else if (!strcmp(geomname, "6x")) {
- geometry = MultirotorMixer::HEX_X;
+ geometry = MultirotorGeometry::HEX_X;
} else if (!strcmp(geomname, "6c")) {
- geometry = MultirotorMixer::HEX_COX;
+ geometry = MultirotorGeometry::HEX_COX;
} else if (!strcmp(geomname, "8+")) {
- geometry = MultirotorMixer::OCTA_PLUS;
+ geometry = MultirotorGeometry::OCTA_PLUS;
} else if (!strcmp(geomname, "8x")) {
- geometry = MultirotorMixer::OCTA_X;
+ geometry = MultirotorGeometry::OCTA_X;
} else if (!strcmp(geomname, "8c")) {
- geometry = MultirotorMixer::OCTA_COX;
+ geometry = MultirotorGeometry::OCTA_COX;
} else if (!strcmp(geomname, "2-")) {
- geometry = MultirotorMixer::TWIN_ENGINE;
+ geometry = MultirotorGeometry::TWIN_ENGINE;
} else {
debug("unrecognised geometry '%s'", geomname);
return nullptr;
diff --git a/src/modules/systemlib/mixer/multi_tables b/src/modules/systemlib/mixer/multi_tables
index 2752165cf..5d746fcfa 100755
--- a/src/modules/systemlib/mixer/multi_tables
+++ b/src/modules/systemlib/mixer/multi_tables
@@ -151,12 +151,12 @@ tables = [quad_x, quad_plus, quad_v, quad_wide, hex_x, hex_plus, hex_cox, octa_x
def printEnum():
- print "enum MultirotorMixer::Geometry : unsigned int {"
+ print "enum class MultirotorGeometry : unsigned int {"
for table in tables:
print "\t{},".format(variableName(table).upper())
print "\n\tMAX_GEOMETRY"
- print "}; // enum MultirotorMixer::Geometry\n"
+ print "}; // enum class MultirotorGeometry\n"
def printScaleTables():
for table in tables: