- explicitly define QMAKE_CC & CXX as "ccache <compiler>"
- use ccache for uavobjectgenerator
- Handle CCACHE setting with configuration options
To enable ccache you need to configure it like
make CCACHE=/path/to/ccache config_append
Descriptions can be added to fields either as attributes or child nodes.
Descriptions are not mandatory at this stage.
The description shows up when hovering over objects and fields in the UAVObject browser.
Added example descriptions to a few fields in the UAVO descriptor files.
for example:
EKFStateVariancePSet(EKFStateVariancePData *NewP);
EKFStateVariancePGet(EKFStateVariancePData *NewP);
Also in this case array accessors are renamed as xxxArrayGet/Set:
EKFStateVariancePArraySet(float *NewP);
EKFStateVariancePArrayGet(float *NewP);
Nothing changes for anonymous items as default functions continues to deal with arrays
+review OPReview-552
They caused stack usage increase with -fstrict-aliasing as stack slots are not reused when dealing with unions.
It has now been added the cast_struct_to_array macro in pios_struct_helper.h to handle such case where it is useful to access those homogeneous structs as arrays
+review OPReview-552
This implementation uses a union containing the Array implementing the MultiElement field data and a struct made from element names.
it allow to replace the following sintax:
settings.PitchRatePID[STABILIZATIONSETTINGS_PITCHRATEPID_KP]
with a more concise and less error prone
settings.PitchRatePID.fields.Kp
while allowing the direct array access using the notation
settings.PitchRatePID.data[n]
Also fixes warnings (and bugs) in F4 STM32_USB_OTG_Driver code, allowing -Werror to be enabled for all flight code.
Fixes all other compiler warnings that would otherwise cause the flight code to not compile with -Werror enabled.
Along the way, this also adds some uses of isnan() to various places rather than questionable tests for x != x and
x == x to check for NaNs.
+review OPReview
This changeset:
- moves all ground targets one level up, under build directory. The
build/ground was created as a workaround, now unnecessary;
- fixes QtCreator builds, they are separated from command line builds;
- moves GCS autogenerated files into openpilotgcs-synthetics directory.
The resulting build subdirectory now looks like:
build
openpilotgcs <- Qt-Creator build directory
openpilotgcs-synthetics <- version-info and opfw_resource
openpilotgcs_debug
openpilotgcs_release <- Makefile build directory
uavobject-synthetics
uavobjgenerator
NOTE: you should update the shadow build path in QtCreator to build,
not build/ground as before.
+review OPReview