The never complete autopilot.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

75 lines
1.8 KiB

Uses the GNU autotools. Run `autogen -i`; `mkdir build`; `cd build`;
`../configure --prefix=$PWD/install`; `make`.
Headers are mixed with implementation. Code is platform-agnistic,
except for the innermost functions which are defined in independent
code and implemented under platforms/. Implementations favour a cheap
embedded implementation.
- common library functions
- platform specific implementations
- small experiments made along the way
- third party libraries
Uses C++11, GCC extensions, and binutils features to make the code
easier to read and maintain.
Product specific behaviour is done by implementing functions in the
common classes. The functions are normally wired together in a
product specific file.
For example, Timer::dispatch() is called when a timer expires. The
platform wiring implements Timer::dispatch() to call
Switcher::trigger() with the platform specific timer callback ID. The
wiring also implements Switcher::dispatch() which calls the event
Hardware interface
Events are generated by the HAL, timers, and other functions. Events
are recorded in a Switcher and then dispatched in priority order.
Event handlers are short and run to completion.
Always out of date, but still.
* Basic startup
* System tick driver
* GPIO driver
* USART driver (for GPS)
* PWM input driver (for reading the receiver demands)
* PWM output driver (for driving the servo)
* USB ACM driver
* Watchdog driver
* Serial log based debugging
* Application level timers
* Switcher for dispatching events
* Status LED
* Supervisor
* Fail safe configuration
* Software fault fail safe
* GPS driver
* Accelerometer driver
* Gyro driver