Merge pull request #1594 from PX4/multitablespython3

Multitables script fixes
This commit is contained in:
Lorenz Meier
2015-01-06 12:09:44 +01:00
2 changed files with 34 additions and 32 deletions
+3 -4
View File
@@ -33,11 +33,10 @@
SELF_DIR := $(dir $(lastword $(MAKEFILE_LIST))) SELF_DIR := $(dir $(lastword $(MAKEFILE_LIST)))
MULTI_TABLES := $(SELF_DIR)multi_tables.py
# Add explicit dependency, as implicit one doesn't work often. # Add explicit dependency, as implicit one doesn't work often.
$(SELF_DIR)mixer_multirotor.cpp : $(SELF_DIR)mixer_multirotor.generated.h $(SELF_DIR)mixer_multirotor.cpp : $(SELF_DIR)mixer_multirotor.generated.h
$(SELF_DIR)mixer_multirotor.generated.h : $(SELF_DIR)multi_tables $(SELF_DIR)mixer_multirotor.generated.h : $(MULTI_TABLES)
$(SELF_DIR)multi_tables > $(SELF_DIR)mixer_multirotor.generated.h $(Q) $(PYTHON) $(MULTI_TABLES) > $(SELF_DIR)mixer_multirotor.generated.h
$(SELF_DIR)multi_tables
@@ -36,15 +36,18 @@
# Generate multirotor mixer scale tables compatible with the ArduCopter layout # Generate multirotor mixer scale tables compatible with the ArduCopter layout
# #
# for python2.7 compatibility
from __future__ import print_function
import math import math
print "/*" print("/*")
print "* This file is automatically generated by multi_tables - do not edit." print("* This file is automatically generated by multi_tables - do not edit.")
print "*/" print("*/")
print "" print("")
print "#ifndef _MIXER_MULTI_TABLES" print("#ifndef _MIXER_MULTI_TABLES")
print "#define _MIXER_MULTI_TABLES" print("#define _MIXER_MULTI_TABLES")
print "" print("")
def rcos(angleInRadians): def rcos(angleInRadians):
return math.cos(math.radians(angleInRadians)) return math.cos(math.radians(angleInRadians))
@@ -146,7 +149,7 @@ twin_engine = [
] ]
def variableName(variable): def variableName(variable):
for variableName, value in list(globals().iteritems()): for variableName, value in list(globals().items()):
if value is variable: if value is variable:
return variableName return variableName
@@ -154,44 +157,44 @@ tables = [quad_x, quad_plus, quad_v, quad_wide, hex_x, hex_plus, hex_cox, octa_x
def printEnum(): def printEnum():
print "enum class MultirotorGeometry : MultirotorGeometryUnderlyingType {" print("enum class MultirotorGeometry : MultirotorGeometryUnderlyingType {")
for table in tables: for table in tables:
print "\t{},".format(variableName(table).upper()) print("\t{},".format(variableName(table).upper()))
print "\n\tMAX_GEOMETRY" print("\n\tMAX_GEOMETRY")
print "}; // enum class MultirotorGeometry\n" print("}; // enum class MultirotorGeometry\n")
def printScaleTables(): def printScaleTables():
for table in tables: for table in tables:
print "const MultirotorMixer::Rotor _config_{}[] = {{".format(variableName(table)) print("const MultirotorMixer::Rotor _config_{}[] = {{".format(variableName(table)))
for (angle, yawScale) in table: for (angle, yawScale) in table:
rollScale = rcos(angle + 90) rollScale = rcos(angle + 90)
pitchScale = rcos(angle) pitchScale = rcos(angle)
print "\t{{ {:9f}, {:9f}, {:9f} }},".format(rollScale, pitchScale, yawScale) print("\t{{ {:9f}, {:9f}, {:9f} }},".format(rollScale, pitchScale, yawScale))
print "};\n" print("};\n")
def printScaleTablesIndex(): def printScaleTablesIndex():
print "const MultirotorMixer::Rotor *_config_index[] = {" print("const MultirotorMixer::Rotor *_config_index[] = {")
for table in tables: for table in tables:
print "\t&_config_{}[0],".format(variableName(table)) print("\t&_config_{}[0],".format(variableName(table)))
print "};\n" print("};\n")
def printScaleTablesCounts(): def printScaleTablesCounts():
print "const unsigned _config_rotor_count[] = {" print("const unsigned _config_rotor_count[] = {")
for table in tables: for table in tables:
print "\t{}, /* {} */".format(len(table), variableName(table)) print("\t{}, /* {} */".format(len(table), variableName(table)))
print "};\n" print("};\n")
printEnum() printEnum()
print "namespace {" print("namespace {")
printScaleTables() printScaleTables()
printScaleTablesIndex() printScaleTablesIndex()
printScaleTablesCounts() printScaleTablesCounts()
print "} // anonymous namespace\n" print("} // anonymous namespace\n")
print "#endif /* _MIXER_MULTI_TABLES */" print("#endif /* _MIXER_MULTI_TABLES */")
print "" print("")