Changed file format to be able to save settings and data together.
Old settings files still can be imported. Data export will also contain
settings, so we always have the system settings with the system state.
Sample file:
<!DOCTYPE UAVObjects>
<uavobjects>
<version>
...
</version>
<data>
<object id="0xC409985A" name="AccessoryDesired">
<field values="0" name="AccessoryVal"/>
</object>
...
</data>
<settings>
<object id="0xF2875746" name="ActuatorSettings">
...
</settings>
</uavobjects>
Some modules are written such that they can be included
or excluded at runtime. These are added to the OPTMODULES
list in the makefile for a given board.
This change provides a mechanism to allow a build to force
a given module to be built-in (ie. always initialized)
regardless of the configuration in hwsettings.
The main use case for this is to handle a module being optional
on one platform but essential on another.
All modules added to the MODULES list in the Makefile will
automatically result in a matching #define in the form
MODULE_TheModuleName_BUILTIN
being defined in the CFLAGS for all compiled source.
Note that the capitalization of TheModuleName must match
exactly the capitalization used in the MODULES list.
This allows each device to be moved (at compile time) to a
different adapter. This is the first step to allowing devices
to be attached to different i2c adapters.
The main purpose of this new COM implementation is that it is
much simpler, and requires less code space. This takes a bit
of the pressure off of the CC bootloader which was right at
the limit of available code space in the bootloader partition.
This is not intended to ever be used by the application.
This driver also formalizes the assumptions in the bootloader's
usage of the COM layer. All messages are assumed to arrive
in atomic chunks from the HID layer.
cause:
/projects/OpenPilot/git/ground/openpilotgcs/src/plugins/notify/notifyplugin.cpp:104:6:
warning: unused parameter ‘configInfo’ [-Wunused-parameter]
/projects/OpenPilot/git/ground/openpilotgcs/src/plugins/notify/notifyplugin.cpp:353:6:
warning: unused parameter ‘values’ [-Wunused-parameter]
/projects/OpenPilot/git/ground/openpilotgcs/src/plugins/notify/notifypluginoptionspage.cpp:73:10:
warning: unused parameter ‘parent’ [-Wunused-parameter]
/projects/OpenPilot/git/ground/openpilotgcs/src/plugins/notify/notifypluginoptionspage.cpp:451:6:
warning: unused parameter ‘rangeStr’ [-Wunused-parameter]
/projects/OpenPilot/git/ground/openpilotgcs/src/plugins/notify/notifypluginoptionspage.cpp:512:7:
warning: unused parameter ‘oldstate’ [-Wunused-parameter]
/projects/OpenPilot/git/ground/openpilotgcs/src/plugins/notify/notifypluginoptionspage.cpp:527:6:
warning: unused parameter ‘deselected’ [-Wunused-parameter]
implemented solution:
fixed all of them (commented out var name)
* fixed bug in check code
cause:
/projects/OpenPilot/git/ground/openpilotgcs/src/plugins/notify/notifyplugin.cpp:
In member function ‘void SoundNotifyPlugin::checkNotificationRule(NotificationItem*, UAVObject*)’:
/projects/OpenPilot/git/ground/openpilotgcs/src/plugins/notify/notifyplugin.cpp:398:109:
warning: suggest parentheses around comparison in operand of ‘|’ [-Wparentheses]
implemented solution:
this is an obvious bug that is syntactically correct but leads to a
warning with a good compiler so this bug can be found. fixed that to use
logical or instead of bitwise or.
* fixed bug in include file (error in compilation under Linux)
cause:
In file included from
/projects/OpenPilot/git/ground/openpilotgcs/src/plugins/notify/notifypluginoptionspage.cpp:47:0:
/projects/OpenPilot/git/ground/openpilotgcs/src/plugins/notify/notifytablemodel.h:86:39:
error: reference ‘_list’ cannot be declared ‘mutable’ [-fpermissive]
implemented solution:
removed the mutable flag, as this is wrongly used on a reference (and
therefore correctly causing a compile-time error
Camera Stabilization settings not being read from CC board into GCS if CC is started first.
Created connection callback only to be called after all plugins are loaded.
a change to force an error if the passed in ENV var is not defined. If
that had been there, the borkage wouldn't have been undetected.
Changed to only put the main FW in the firmware dir, instead of BL and
FW.
These files do not contain content from the ID in the header.
This name seems to have been cut/pasted all over throughout
the openpilot source tree and should be removed from any files
that should not rightfully be attributed to this person.
It is now easier to trigger warm restarts of a board
via jtag.
Examples:
* make fw_coptercontrol_reset
* make fw_coptercontrol_safeboot
NOTE: These targets are making chip-specific assumptions
so they have to be rewritten to support the F2/F4
boards.
When halted in the bootloader or while rescuing a board, the
user can press the "Safe Boot" button in the uploader gadget
to force the FW to boot with a default hwsettings configuration.
The default conditions of the hwsettings uavo will disable all
optional modules, disable all serial port config, and ensure that
the board can communicate via the USB HID telemetry interface.
Once booted in this mode, a user can easily reconfigure the
hwsettings uavo through the config GUI and save the fixed
settings to the board to be used on the next reboot. No need
to wipe all settings just to recover from a non-functional
HW config.
NOTE: The GCS needs to grow some very clear visual clues to
indicate when the board has booted in safe mode. The
firmware helpfully raises a (new) critical alarm called
BootFault whenever it boots in safe mode.
This can be used by the GCS firmware uploader widget to boot
the firmware with a (temporarily) defaulted hwsettings uavo
so that a user can easily recover from a bad/incompatible
hwsettings configuration without wiping all settings.
This uses the same mechanism that the BootFault auto-recovery
code already uses in the CC firmware. The auto-recovery is
triggered by setting the failed-boot counter to a maximum
value forcing recovery on the next FW init.
The PIOS_COM_ReceiveBufferUsed() function call is no longer
necessary since the same semantics can be achieved using calls
to PIOS_COM_ReceiveBuffer().
Summary of changes:
* USB CDC and HID drivers are completely split apart.
* This will allow different max buffer sizes for HID and CDC.
* USB descriptors have been overhauled:
* Proper structs/macros/enums declared for USB (see pios_usb_defs.h)
* Two common descriptor definitions. One for HID+CDC another for HID only.
See pios_usb_desc_{hid_cdc,hid_only}.c for details.
* Long standing bugs in OP USB descriptors became much more obvious with the
new struct definitions.
* Board specific USB initialization is now in pios_usb_board_data.h in each build target.
* Definition of USB descriptors is now entirely indpendent of STM32 libs.
Glue into STM32 libs is provided by pios_usbhook.c.
* Removed a lot of stale/irrelevant USB #defines throughout the tree.
* Improved naming consistency throughout USB code:
* PIOS_USB_HID_* now refers to the HID endpoint code.
* PIOS_USB_CDC_* now refers to the CDC endpoint code.
* PIOS_USB_* now refers to the low-level USB code.
* PIOS_USB_BOARD_* now refers to board-specific USB data
* PIOS_USBHOOK_* is glue between PIOS and STM32 USB libs.
* struct usb_* and enum usb_* and USB_* and HID_* are all types from the USB spec.
* Shrunk the buffer size on the CDC call mgmt endpoint to save some RAM.
* Made a few more USB related variables static to save some RAM.