ArduPlane, ArduCopter, ArduRover, ArduSub source
Go to file
Caio Marcelo de Oliveira Filho efbc7648b1 AP_HAL: create AP_HAL namespace and use for some HAL functionality
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.
2015-11-20 12:25:24 +09:00
AntennaTracker Tracker: text message severity uniformization 2015-11-05 12:33:59 +09:00
APMrover2 build: removed all nocore.inoflag files 2015-11-16 08:05:17 +11:00
ArduCopter Copter: minor comment updates 2015-11-18 22:12:44 +09:00
ArduPlane Plane: fixed build for SITL changes 2015-11-16 17:57:36 +11:00
docs docs: allow docs build to output to another directory 2013-08-15 09:04:58 +10:00
libraries AP_HAL: create AP_HAL namespace and use for some HAL functionality 2015-11-20 12:25:24 +09:00
mk mk: build the bebop statically 2015-11-13 12:15:36 +11:00
modules PX4Firmware: submodule update 2015-11-18 10:34:13 +11:00
Tools autotest: calibrate 2nd accel in SITL for rover 2015-11-17 08:56:48 +11:00
.editorconfig all: Change the editorconfig so that it won't want to reformat 2014-07-09 19:03:18 -07:00
.gitattributes Revert ".gitattributes: automatically clean up newlines in source files" 2015-04-20 11:04:59 +09:00
.gitignore Git: update gitignore for way.txt 2015-10-03 10:13:52 +09:00
.gitmodules modules: added git submodules for PX4 build 2015-06-09 12:48:56 +10:00
.pydevproject AP_Relay: add -1:Disabled to list of param values 2014-05-15 17:13:37 +09:00
.travis.yml Travis: add minlure target 2015-10-24 14:28:31 +11:00
CONTRIBUTING.md Update CONTRIBUTING.md 2014-10-12 00:11:30 -07:00
COPYING.txt cmake overhaul, cleaned up readme, added license 2011-09-30 17:32:51 -04:00
Doxyfile.in Working on doxygen support. 2011-11-25 21:35:20 -05:00
eclipse.cproject Eclipse: template project files 2015-07-28 16:11:45 +09:00
eclipse.project Eclipse: template project files 2015-07-28 16:11:45 +09:00
Makefile build: allow -j on top level makefile 2015-11-09 08:32:04 +11:00
README.md README: Add Erle-Brain 2 board 2015-11-04 13:57:39 +11:00
reformat.sh better commit message for uncrustify 2012-08-17 11:36:07 -07:00
uncrustify_cpp.cfg fixes to preprocessor retab settings 2012-08-17 11:36:07 -07:00
uncrustify_headers.cfg small changes to uncrustify_headers.cft 2012-08-21 18:59:13 -07:00
Vagrantfile Fix vagrant build issues with submodules. 2015-06-18 08:47:32 +10:00

#ArduPilot Project#

Gitter

The ArduPilot project is made up of:

ArduCopter (or APM:Copter) : code, wiki

ArduPlane (or APM:Plane) : code, wiki

ArduRover (or APMrover2) : code, wiki

Antenna Tracker : code, wiki

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

Github statistics

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

Overview of license

Full Text

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.