Commit Graph

29 Commits

Author SHA1 Message Date
Andrew Tridgell a52c71f380 AP_HAL: implement BinarySemaphore
and removed event handles
2024-01-03 07:37:05 +11:00
Siddharth Purohit fa0f1e4c71 AP_HAL: add CANIface HAL, replace uavcan dependent one 2020-08-19 17:31:09 +10:00
Siddharth Purohit 697e4141cb AP_HAL: add common Event interface 2020-08-19 17:31:09 +10:00
Andy Piper f4a99a1589 AP_HAL: hardware abstraction for FFT.
control inclusion of FFT based on HAL_WITH_DSP and HAL_GYROFFT_ENABLED. target appropriate ARM cpus
define hanning window and quinn's estimator
start/analyse version of FFT to support threading
allocate memory in a specific region
calculate frequency and noise bandwidth of two noisiest peaks
control inclusion of DSP based on board size
2020-02-22 11:15:37 +11:00
Andrew Tridgell 65d051cbc9 AP_HAL: added hal.flash driver
needed for semaphore
2019-04-11 13:22:53 +10:00
Peter Barker 6c7c916c78 AP_HAL: eliminate AP_HAL::Print and AP_HAL::Stream
Just *way* too many layers involved here
2018-03-23 08:12:38 +11:00
Eugene Shamaev 9b98c304c4 AP_HAL: top level HAL definitions for CAN bus driver 2017-04-10 21:31:07 +01:00
Lucas De Marchi b0ddf81687 Remove stdbool.h include for C++ sources
This header is not needed in our C++ sources.
2016-12-16 11:38:52 -08:00
Lucas De Marchi 57ec968b44 AP_HAL: remove SPIDriver
SPIDevice now controls all accesses to SPI bus.
2016-07-29 15:01:15 -03:00
Lucas De Marchi b21ad36676 AP_HAL: remove I2CDriver 2016-07-28 18:08:56 -03:00
Julien BERAUD 2b681f2f13 AP_HAL: Add support for an Optflow driver
This is meant to be used for onboard optical flow
2015-12-18 17:56:03 +11:00
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
Caio Marcelo de Oliveira Filho 19b4ca60c4 AP_HAL: provide AP_HAL_MAIN()
Move the macros to a single place and reduce the variations not based on
board, but based on

- The name of the entry-point function, specified by AP_MAIN;
- Whether it contains argc/argv arguments or not.

The goal here is that programs (vehicles and examples) don't need to
include all possible boards to define a main function. Further patches
will change the programs.
2015-10-21 09:16:09 +11:00
Andrew Tridgell 9f24c45502 AP_HAL: removed separate Console class
the idea of a separate console class was never really used, and just
added confusion in a HAL port. It also consumes some much needed ram
and flash space on APM2
2013-10-05 18:32:00 +10:00
Andrew Tridgell 2ce18f588b AP_HAL: added AP_HAL_Macros.h
this adds a define for constexpr, allowing code to build either with
or without -std=gnu++0x
2013-01-16 09:12:55 +11:00
Andrew Tridgell 90523ae975 AP_HAL: added WARN_IF_UNUSED macro
useful for key functions
2013-01-09 20:41:37 +11:00
Andrew Tridgell a3c26d44e4 AP_HAL: rename Sempahore.h to Semaphores.h
this is needed to allow build on MacOS, as its case-insensitive
filesystem picks up the NuttX semaphore.h
2013-01-02 18:22:13 +11:00
Andrew Tridgell d3f154bbae AP_HAL: include stdbool.h for ARM build 2013-01-02 14:45:09 +11:00
Pat Hickey 0d702045b8 AP_HAL: Add Util member for string utilities 2012-12-20 14:52:37 +11:00
Pat Hickey fa02ad7d4c AP_HAL: preprocessor enum of HAL_BOARD 2012-12-20 14:51:37 +11:00
Pat Hickey 9cee6cc941 AP_HAL: remove Dataflash driver 2012-12-20 14:51:37 +11:00
Pat Hickey 2a12392b9e AP_HAL: export semaphore header 2012-12-20 14:51:30 +11:00
Pat Hickey 017f592eef AP_HAL: add ConsoleDriver interface 2012-12-20 14:51:24 +11:00
Pat Hickey 3b697fe299 AP_HAL: rename Log to Dataflash
* I'd love to build a proper abstraction for logging, but I don't have the
  time to do so right now.
* The dataflash libs need to be pushed into the AP_HAL_AVR anyway, so I'll
  do that now and replace the interface with a better logging driver later.
2012-12-20 14:51:21 +11:00
Pat Hickey 5d2327f52f AP_HAL: Don't need a separate Console class, BetterStream will do. 2012-12-20 14:51:21 +11:00
Pat Hickey db76562cd5 AP_HAL: global rename PPMInput -> RCInput, PWMOutput -> RCOutput
* for clarity. nobody cares that PPM/PWM is the implementation, and with
  sbus etc it might not be
2012-12-20 14:51:20 +11:00
Pat Hickey ea8242ace1 AP_HAL: Add scheduler interface, move Arduino init code to implementation 2012-12-20 14:51:19 +11:00
Pat Hickey afd1f36400 AP_HAL: add BetterStream, Stream, and Print interfaces
* BetterStream Means AP_HAL depends on AP_Common, for now, in order to have
  the AVR specific pgm_char_t defined.
  I'll need to factor that out in the future but for now it can stay
2012-12-20 14:51:19 +11:00
Pat Hickey dc03b1190f AP_HAL: Stub implementations of pure virtual AP_HAL classes 2012-12-20 14:51:18 +11:00