Commit Graph

23834 Commits

Author SHA1 Message Date
Randy Mackay d5c18dc987 AC_AttControl: remove unused 100hz definition 2016-08-01 17:21:04 +09:00
Randy Mackay 2dc111ff39 Copter: reduce WPNAV_LOIT_MINA parameter description range 2016-08-01 17:09:20 +09:00
Randy Mackay 7d0cac15fb AP_ICEngine: add casting to avoid compiler warnings 2016-08-01 09:41:32 +09:00
Lucas De Marchi e217faacab AP_Baro: MS56XX: cosmetic changes to members
- reorder and document members.
    - remove tentative of vertical alignement
    - like was done for accumulated values, move the calibration
      values to a struct
2016-07-30 00:55:28 -03:00
Lucas De Marchi f7b453359d AP_Baro: MS56XX: convert to threaded bus
This converts MS56XX to use the thread started by SPI/I2C instead of
using the timer thread. This also fixes a possible starvation of the
main thread:

    1) INS driver registers itself to be sampled on timer thread
    2) MS56XX registers itself to be sampled on timer thread
    3) Main thread waits for a sample from INS with
       ins.wait_for_sample()
    4) timer thread is waiting on update from MS56XX and consequently
       the main thread is waiting on an I2C/SPI transfer

Besides this starvation there's another one due to reuse of the timer
lock in order to pump values from the timer thread to the main thread. A
call to the update() method when we have a sample available would need
to wait on any other driver holding the timer lock.

Now there's a lock just to pass the new values from the bus thread to
the main thread with a very tiny critical region, not waiting on any
bus transfers and/or syscalls.
2016-07-30 00:55:28 -03:00
Lucas De Marchi 052f30bc70 AP_HAL: remove macros to use MS5611 in the main thread 2016-07-30 00:55:28 -03:00
Lucas De Marchi 929348ff75 AP_Baro: MS5611: always use timer thread
Remove support to run MS5611 on main thread since we shouldn't be doing
I2C transactions there and we are moving to "thread per bus"
nonetheless.
2016-07-30 00:55:28 -03:00
Lucas De Marchi 7b7e73680f AP_Math: add USEC_PER_MSEC 2016-07-30 00:55:28 -03:00
Lucas De Marchi 8541d5339d AP_HAL_Linux: Implement threaded SPI 2016-07-30 00:55:27 -03:00
Lucas De Marchi ea0595c7ac AP_HAL_Linux: SPIDevice: move implementation to outside
As we add methods, it's becoming too complex to be implemented together
with the declaration.
2016-07-30 00:55:27 -03:00
Lucas De Marchi 590539f674 AP_HAL_Linux: implement threaded I2C 2016-07-30 00:55:27 -03:00
Lucas De Marchi 11ddbb8fb8 AP_HAL_Linux: add PollerThread
This is the infrastructure needed by both SPIDevice and I2CDevice to
start a poller thread per bus.
2016-07-30 00:55:27 -03:00
Lucas De Marchi 7d451ac876 AP_HAL_Linux: allow to check if thread is running 2016-07-30 00:55:27 -03:00
Lucas De Marchi eca6f45b68 AP_HAL_Linux: remove unused part of Poller infra
We aren't going to use all the poller infra for now and we need it's
behavior a little bit different for what we are going to use:

    - Do not use any "fair" time for each ready fd since we don't want
      to set a timeout
    - Allow to set the fd on Pollable after constructing it since we are
      likely to embed Pollable inside other structs and just later be
      able to open an fd.
    - Let caller use the epoll flags directly - this is not in AP_HAL,
      so there's no need to abstract them
2016-07-30 00:55:27 -03:00
Leandro Pereira 0f865a019a AP_HAL_Linux: Add Pollable/Poller
Add system's polling infrastructure to be notified whenever a
file descriptor is ready to be read from or written to.

Adds a few classes:
  * Poller, as an interface to epoll()
  * Pollable, as an interface to a file descriptor
2016-07-30 00:55:27 -03:00
Lucas De Marchi c859c5ecd9 AP_HAL_PX4: update Device interface 2016-07-30 00:55:27 -03:00
Lucas De Marchi eaa1c39a15 AP_HAL_Linux: update Device interface 2016-07-30 00:55:27 -03:00
Lucas De Marchi 7669d54265 AP_HAL_Empty: update Device interface 2016-07-30 00:55:27 -03:00
Lucas De Marchi 37de995960 AP_HAL: update Device interface for periodic tasks
Replace the previous not-implemented interface with a set of new methods
that can be resonably implemented:

    - register_periodic_callback() now receives a functor returning bool
      to easily allow "oneshot" timers

    - adjust_periodic_callback() allows the caller to change the timer
      for a specific handle. This way drivers like MS5611 can adjust the
      timer depending on its state machine: the time to sample
      temperature is smaller than the time to get a pressure sample

    - add unregister_callback(): since we have an opaque pointer, we
      can't tell the user to just delete it in order to unregister the
      callback
2016-07-30 00:55:27 -03:00
Lucas De Marchi 8e5aba8653 AP_HAL_Linux: I2CDevice: move implementation to outside
As we add methods, it's becoming too complex to be implemented together
with the declaration.
2016-07-30 00:55:27 -03:00
Lucas De Marchi 7b39f3d0a7 AP_HAL_Linux: do not warn for empty table
../../libraries/AP_HAL_Linux/SPIDevice.cpp: In member function ‘virtual AP_HAL::OwnPtr<AP_HAL::SPIDevice> Linux::SPIDeviceManager::get_device(const char*)’:
../../libraries/AP_HAL_Linux/SPIDevice.cpp:337:27: warning: comparison is always false due to limited range of data type [-Wtype-limits]
     for (uint8_t i = 0; i < _n_device_desc; i++) {
                         ~~^~~~~~~~~~~~~~~~

Define a dummy device to remove warning.
2016-07-30 00:03:23 -03:00
Lucas De Marchi f37a560295 AP_HAL_Linux: remove private headers
This centralized private header encourages centralizing things on
umbrella headers that are a pain to maintain. Force each part of
AP_HAL_Linux to include what is used.
2016-07-29 20:29:46 -03:00
Lucas De Marchi e8f71a5bd2 AP_HAL_Linux: change define and members visibility
Make some member variables protected to follow what we do in other
places (and there's no reason to be private).

Move defines to .cpp to reduce their visibility.
2016-07-29 20:27:12 -03:00
Lucas De Marchi f36e8d9c05 AP_HAL_Linux: remove AP_HAL_Linux_Namespace header
This centralized namespace header encourages centralizing things on
umbrella headers that are a pain to maintain. Force each part of
AP_HAL_Linux to include what is used.

While at it, do some whitespace cleanups and minor changes to adhere to
coding style.
2016-07-29 20:25:03 -03:00
Gustavo Jose de Sousa 5edb03d184 waf: add option --no-autoconfig
That is useful for developers working on the build system, so that they can
test the build without having to wait for a reconfiguration.
2016-07-29 16:25:33 -03:00
Gustavo Jose de Sousa b65f63ffc1 waf: keep non-variant options definitions together
Keep definition of options that are stored in the "non-variant" configuration
together.
2016-07-29 16:25:33 -03:00
Gustavo Jose de Sousa 5597cc40e9 waf: update submodule for autoconfigure fix
There was a bug on Waf's autoconfigure feature: if one of the files from the
cached list was deleted, the reconfiguration check would raise an exception
instead of forcing a reconfiguration. This update cherry-picks the commits
fixing that. A rebase can be done when there is a new release.
2016-07-29 16:24:41 -03:00
Lucas De Marchi b044fac4b6 AP_HAL_Linux: rename variable to follow I2CDevice convention 2016-07-29 15:01:15 -03: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 dc91dfb446 AP_HAL_Empty: remove SPIDriver
SPIDevice now controls all accesses to SPI bus.
2016-07-29 15:01:15 -03:00
Lucas De Marchi 7b140da6d1 AP_HAL_Linux: remove SPIDriver
SPIDevice now controls all accesses to SPI bus.
2016-07-29 15:01:15 -03:00
Lucas De Marchi 5ab1c6ff51 AP_ADC: remove ADS7844
It's not used by any board.
2016-07-29 15:01:15 -03:00
Lucas De Marchi ef81e71afa AP_ADC: remove example tailored to a single ADC
This is the only user of ADS7844 - we don't have it actually used in our
boards. Remove the example since we can later add a more generic one or
at least one that reuses a driver from our boards.
2016-07-29 15:01:15 -03:00
Lucas De Marchi 3a5e8a17c7 AP_HAL: remove enum id for Ublox and RASPIO 2016-07-29 15:01:15 -03:00
Lucas De Marchi 945556bbc3 AP_HAL_Linux: remove id for SPIDevice_Ublox and RASPIO 2016-07-29 15:01:15 -03:00
Lucas De Marchi 065592e7df AP_HAL_Linux: SPIUARTDriver: add some cosmetic changes
Mainly changes to follow the coding style and reduce the complexity a
little bit.
2016-07-29 15:01:15 -03:00
Lucas De Marchi e3c0476b8a AP_HAL_Linux: SPIUARTDriver: initialize device once 2016-07-29 15:01:14 -03:00
Lucas De Marchi 418cc817a3 AP_HAL_Linux: SPIUARTDriver: fix conversion to SPIDevice
We need to use the fullduplex method to transfer both tx and rx at the
same time.
2016-07-29 15:01:14 -03:00
Lucas De Marchi cbbd6f9d78 AP_HAL_Linux: SPIDevice: implement fullduplex transfer 2016-07-29 15:01:14 -03:00
Lucas De Marchi 9fda608d4a AP_HAL_Empty: SPIDevice: implement fullduplex transfer 2016-07-29 15:01:14 -03:00
Lucas De Marchi 01452bf922 AP_HAL: SPIDevice: add fullduplex method
This method is needed when we want to transfer both tx and rx at the
same time, as opposed to common cases for sensors in which they are like
in the I2C interface: half-duplex.
2016-07-29 15:01:14 -03:00
Luiz Ywata 7ded01cf24 AP_HAL_Linux: SPIUARTDriver: use SPIDevice interface 2016-07-29 15:01:14 -03:00
Luiz Ywata c8bb5e6469 AP_HAL_Linux: RCInput_Raspilot use SPIDevice interface 2016-07-29 15:01:14 -03:00
Luiz Ywata e8d3229492 AP_HAL_Linux: RPIOUARTDriver: use SPIDevice interface 2016-07-29 15:01:14 -03:00
Luiz Ywata bfd840c5ca AP_HAL_Linux: RCOutput_Raspilot: use SPIDevice interface 2016-07-29 15:01:14 -03:00
Lucas De Marchi 86ac9bc367 AP_HAL_Linux: AnalogIn_Raspilot: use SPIDevice interface 2016-07-29 14:47:04 -03:00
Lucas De Marchi 81345cc112 AP_HAL: Remove enum for Dataflash 2016-07-29 14:47:04 -03:00
Lucas De Marchi 8681d23cbd AP_HAL_Linux: remove unused Dataflash
This is selectable by a define and is never changed. Just remove
everything referencing it: we can come up with a better solution if it
is actually used later.
2016-07-29 14:47:04 -03:00
Gustavo Jose de Sousa f936291a52 waf: set variant of BuildContext classes in configure
Otherwise, a call like `waf configure --board <foo> <command1>` will make
`<command1>` run on wrong variant if there was a different variant configured
previously, or an empty variant if the project is "distcleaned".
2016-07-29 13:06:35 -03:00
Peter Barker 9749b91d46 SITL: initialise sigaction structs - valgrind fix 2016-07-29 10:38:03 -03:00