Browse Source

Merge branch 'cmake-mc' of github.com:mcharleb/Firmware into cmake-2

sbg
Lorenz Meier 10 years ago
parent
commit
4178910509
  1. 80
      Tools/px_generate_params.py
  2. 2
      cmake/common/px4_base.cmake
  3. 2
      src/firmware/posix/CMakeLists.txt
  4. 8
      src/modules/systemlib/param/param.c

80
Tools/px_generate_params.py

@ -2,52 +2,86 @@ @@ -2,52 +2,86 @@
import xml.etree.ElementTree as ET
import os
if len(os.sys.argv) != 3:
if len(os.sys.argv) != 2:
print "Error in %s" % os.sys.argv[0]
print "Usage: %s <parameters.xml> <parameters.c>"
print "Usage: %s <parameters.xml>"
raise SystemExit
fp = open(os.sys.argv[2], "w")
fp_header = open("px4_parameters.h", "w")
fp_src = open("px4_parameters.c", "w")
tree = ET.parse(os.sys.argv[1])
root = tree.getroot()
body = """
# Generate the header file content
header = """
#include <stdint.h>
#include <systemlib/param/param.h>
// DO NOT EDIT
// This file is autogenerated from paramaters.xml
struct px4_parameters_t {
"""
start_name = ""
end_name = ""
for group in root:
if group.tag == "group":
body += "// %s\n" % group.attrib["name"]
header += """
/*****************************************************************
* %s
****************************************************************/""" % group.attrib["name"]
for param in group:
if not start_name:
start_name = param.attrib["name"]
end_name = param.attrib["name"]
body += """
header += """
const struct param_info_s __param__%s;""" % param.attrib["name"]
header += """
const unsigned int param_count;
};
extern const struct px4_parameters_t px4_parameters;
"""
# Generate the C file content
src = """
#include <px4_parameters.h>
// DO NOT EDIT
// This file is autogenerated from paramaters.xml
static const
__attribute__((used, section("__param")))
struct param_info_s __param__%s = {
"%s",
PARAM_TYPE_%s,
.val.f = %s
struct px4_parameters_t px4_parameters_impl = {
"""
i=0
for group in root:
if group.tag == "group":
src += """
/*****************************************************************
* %s
****************************************************************/""" % group.attrib["name"]
for param in group:
if not start_name:
start_name = param.attrib["name"]
end_name = param.attrib["name"]
i+=1
src += """
{
"%s",
PARAM_TYPE_%s,
.val.f = %s
},
""" % (param.attrib["name"], param.attrib["type"], param.attrib["default"])
src += """
%d
};
""" % (param.attrib["name"], param.attrib["name"], param.attrib["type"], param.attrib["default"])
body += """
extern const
__attribute__((alias("__param__%s")))
struct param_info_s __param_start;
extern const
__attribute__((alias("__param__%s")))
struct param_info_s __param_end;
""" % (start_name, end_name)
fp.write(body)
extern const struct px4_parameters_t px4_parameters __attribute__((alias("px4_parameters_impl")));
""" % i
fp_header.write(header)
fp_src.write(src)

2
cmake/common/px4_base.cmake

@ -682,7 +682,7 @@ function(px4_generate_parameters) @@ -682,7 +682,7 @@ function(px4_generate_parameters)
)
execute_process(
COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_SOURCE_DIR}/Tools/px_generate_params.py ${CMAKE_BINARY_DIR}/parameters.xml ${CMAKE_BINARY_DIR}/parameters.c
COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_SOURCE_DIR}/Tools/px_generate_params.py ${CMAKE_BINARY_DIR}/parameters.xml
)
endfunction()

2
src/firmware/posix/CMakeLists.txt

@ -9,7 +9,7 @@ px4_generate_parameters() @@ -9,7 +9,7 @@ px4_generate_parameters()
add_executable(mainapp
${CMAKE_SOURCE_DIR}/src/platforms/posix/main.cpp
${CMAKE_BINARY_DIR}/parameters.c
${CMAKE_BINARY_DIR}/px4_parameters.c
apps.h
)

8
src/modules/systemlib/param/param.c

@ -63,6 +63,7 @@ @@ -63,6 +63,7 @@
#include "uORB/uORB.h"
#include "uORB/topics/parameter_update.h"
#include "px4_parameters.h"
#if 0
# define debug(fmt, args...) do { warnx(fmt, ##args); } while(0)
@ -86,14 +87,11 @@ extern struct param_info_s param_array[]; @@ -86,14 +87,11 @@ extern struct param_info_s param_array[];
extern struct param_info_s *param_info_base;
extern struct param_info_s *param_info_limit;
#else
extern const struct param_info_s __param_start, __param_end;
// FIXME - start and end are reversed
static const struct param_info_s *param_info_base = &__param_end;
static const struct param_info_s *param_info_limit = &__param_start;
static const struct param_info_s *param_info_base = (const struct param_info_s *)&px4_parameters;
#endif
#define param_info_count ((unsigned)(param_info_limit - param_info_base))
#define param_info_count px4_parameters.param_count
/**
* Storage for modified parameters.

Loading…
Cancel
Save