efbc7648b1
For certain basic functionality, there aren't much benefit to be able to vary the implementation easily at runtime. So instead of using virtual functions, use regular functions that are "resolved" at link time. The implementation of such functions is provided per board/platform. Examples of functions that fit this include: getting the current time (since boot), panic'ing, getting system information, rebooting. These functions are less likely to benefit from the indirection provided by virtual interfaces. For more complex hardware access APIs the indirection makes more sense and ease the testing (when we have it!). The idea is that instead of calling hal.scheduler->panic("on the streets of london"); now use AP_HAL::panic("on the streets of london"); A less important side-effect is that call-site code gets smaller. Currently the compiler needs to get the hal, get the scheduler pointer, get the right function pointer in the vtable for that scheduler. And the call must include an extra parameter ("this"). Now it will be just a function call, with the address resolved at link time. This patch introduces the first functions that will be in the namespace, further patches will implementations for each board and then switch the call-sites. The extra init() function allow any initial setup needed for the functions to work. |
||
---|---|---|
AntennaTracker | ||
APMrover2 | ||
ArduCopter | ||
ArduPlane | ||
docs | ||
libraries | ||
mk | ||
modules | ||
Tools | ||
.editorconfig | ||
.gitattributes | ||
.gitignore | ||
.gitmodules | ||
.pydevproject | ||
.travis.yml | ||
CONTRIBUTING.md | ||
COPYING.txt | ||
Doxyfile.in | ||
eclipse.cproject | ||
eclipse.project | ||
Makefile | ||
README.md | ||
reformat.sh | ||
uncrustify_cpp.cfg | ||
uncrustify_headers.cfg | ||
Vagrantfile |
#ArduPilot Project#
The ArduPilot project is made up of:
User Support & Discussion Forums
APM Forum: http://ardupilot.com/forum/index.php
Community Site: http://diydrones.com
Developer Information
Github repository: https://github.com/diydrones/ardupilot
Main developer wiki: http://dev.ardupilot.com
Developer email group: drones-discuss@googlegroups.com
Contributors
Dronecode.org
ArduPilot is part of Dronecode.org, a Linux Foundation collaborative project.
Dronecode encompasses projects that control flight, enable mission planning, and otherwise make drone flight and advanced functionality possible.
Dronecode development is done at the project level with coordinating and resource allocation performed by the TSC and the Board.
For information on the foundation please visit https://www.dronecode.org and https://github.com/Dronecode for further information or contact celder@dronecode.org
How To Get Involved
The ArduPilot project is open source and we encourage participation and code contributions: guidelines for contributors to the ardupilot codebase
We have an active group of Beta Testers especially for ArduCopter to help us find bugs: release procedures
Desired Enhancements and Bugs can be posted to the issues list.
Helping other users with log analysis on diydrones.com and the APM forums is always appreciated:
There is a group of wiki editors as well in case documentation is your thing: ardu-wiki-editors@googlegroups.com
Developer discussions occur on drones-discuss@google-groups.com
License
Maintainers
Ardupilot is comprised of several parts, vehicles and boards. The list below contains the people that regularly contribute to the project and are responsible for reviewing patches on their specific area. See CONTRIBUTING.md for more information.
- Andrew Tridgell
- Vehicle: AntennaTracker, Plane
- Board: APM1, APM2, Pixhawk
- Randy Mackay
- Vehicle: Copter
- Robert Lefebvre
- Vehicle: TradHeli
- Grant Morphett:
- Vehicle: Rover
- Matthias Badaire
- Subsystem: FRSky
- Paul Riseborough
- Subsystem: AP_NavEKF
- Lucas De Marchi
- Subsystem: Linux
- Peter Barker
- Subsystem: DataFlash
- Michael du Breuil
- Subsystem: uBlox GPS
- Víctor Mayoral Vilches
- Board: PXF
- Mirko Denecke
- Board: BBBmini
- Georgii Staroselskii
- Board: NavIO
- Víctor Mayoral Vilches
- Board: Erle-Brain 2
- Emile Castelnuovo
- Board: VRBrain
- Mike McCauley
- Board: Flymaple
- [Jonathan Challinger] (https://github.com/3drobotics/ardupilot-solo)
- Vehicle: 3DRobotics Solo ArduPilot maintainer
- [Craig Elder] (https://github.com/CraigElder)
- Administration: Dronecode Technical Community Manager