Lucas De Marchi
cb40444bf8
AP_HAL_Empty: implement SPIDevice
2016-02-16 19:49:09 -02:00
Lucas De Marchi
66f644c50d
AP_HAL: add interface for SPIDevice devices
...
In order to interoperate with SPIDeviceDriver this is re-using the same
SPIDeviceManager interface.
2016-02-16 19:49:09 -02:00
Andrew Tridgell
30ce8ad311
HAL_QURT: fixed for addition of i2c manager
2016-02-16 19:49:09 -02:00
Lucas De Marchi
00249dc8bb
AP_HAL_VRBRAIN: use empty I2CDevice
2016-02-16 19:49:09 -02:00
Lucas De Marchi
8de329fc81
AP_HAL_PX4: use empty I2CDevice
2016-02-16 19:49:09 -02:00
Lucas De Marchi
c3d8ba3ea5
AP_HAL_SITL: use empty I2CDevice
2016-02-16 19:49:09 -02:00
Lucas De Marchi
f22f4928dc
AP_HAL_FLYMAPLE: fix constructor after I2CDevice
2016-02-16 19:49:09 -02:00
Lucas De Marchi
e40785b002
AP_HAL_Linux: Add fake device to I2CDriver
...
This allows us to re-use I2CDevice from I2CDriver while the drivers are
converted. We create a fake device with addr = 0 for each I2CDriver but
we only use the register/unregister logic. The transfer logic still uses
the methods from I2CDriver in order to use the right address.
Now we can interoperate I2CDevice drivers with the ones base in
I2CDriver since they are going to use the same semaphore and bus.
The I2CDriver constructors were changed to re-use the logic in I2CDevice
(it uses a number rather than an string) and the semaphore doesn't live
outside anymore, its embedded in the fake I2CDevice, as well as the
bus's file descritor.
2016-02-16 19:49:09 -02:00
Lucas De Marchi
5194f7e5ce
AP_HAL_Linux: I2CDevice: method to read multiple times
2016-02-16 19:49:09 -02:00
Lucas De Marchi
c394de31a0
AP_HAL_Linux: register I2CManager instance
2016-02-16 19:49:09 -02:00
Lucas De Marchi
bc2f7f2783
AP_HAL_Linux: implement function to transfer data
...
This is a similar function to what we have in I2CDriver, but it can
receive a nullptr to recv or send. It will create 2 i2c_msg structs to
send and receive data to/from the I2C slave.
2016-02-16 19:49:08 -02:00
Lucas De Marchi
2fc534d18d
AP_HAL_Linux: implement methods to open the bus
...
These are very similar to their counterparts in I2CDriver. The changes
were:
- Don't use fixed buffer with PATH_MAX length: allocate the string
- Change the interface to use std::vector so we can simplify the
implementation
2016-02-16 19:49:08 -02:00
Lucas De Marchi
cd0e1dff82
AP_HAL_Linux: Add skeleton for I2CDevice
...
This adds the logic to maintain the I2CDevice's managed by I2CManager.
2016-02-16 19:49:08 -02:00
Lucas De Marchi
a117c22c34
AP_HAL_Empty: add I2CDevice
2016-02-16 19:49:08 -02:00
Lucas De Marchi
2250d9d768
AP_HAL: initialize I2C manager
...
Add I2CManager to AP_HAL's contructor.
2016-02-16 19:49:08 -02:00
Lucas De Marchi
f8e6c5b379
AP_HAL: add helper method to read registers
...
This just forwards to the transfer() method, avoiding the need in driver
code to have a similar method.
2016-02-16 19:49:08 -02:00
Lucas De Marchi
b4ff2d7595
AP_HAL: add helper method to write register
...
This just forwards to the transfer() method, avoiding the need in driver
code to have a similar method.
2016-02-16 19:49:08 -02:00
Lucas De Marchi
872b255384
AP_HAL: Add interface for I2CDevice
...
This is a new interface to replace I2CDriver in future, when all drivers
are converted.
2016-02-16 19:49:08 -02:00
Lucas De Marchi
0eb450d379
AP_HAL: Add interface for I2C/SPI devices
...
These interfaces are intended to abstract I2C and SPI devices for
drivers.
2016-02-16 19:49:08 -02:00
Lucas De Marchi
2e60e1b1f2
AP_HAL: utility: Add OwnPtr implementation
...
This is very similar to std::unique_ptr, but doesn't require including
the <memory> header which pulls lots of c++ headers and cause problems
with nuttx headers. It's header-only. It contains an explanation on what
it solves, how to use and unit tests.
2016-02-16 19:49:08 -02:00
Lucas De Marchi
ae5da864e7
mk: make PX4, QURT and QFLIGHT use wrapper cstddef
2016-02-16 19:49:08 -02:00
Lucas De Marchi
e1ae79688d
AP_Common: add directory to add missing C/C++ symbols
...
Add a cstddef header to allow using std::nullptr_t with those toolchains
that don't provide it. The idea is to make these platforms to use our
wrapper header (see https://gcc.gnu.org/onlinedocs/cpp/Wrapper-Headers.html )
and then we add the missing bits to the header.
2016-02-16 19:49:08 -02:00
Tom Pittenger
7fda3ba178
mk: fix SITL windows build
...
fixes https://github.com/diydrones/ardupilot/issues/3586
2016-02-15 16:42:06 -08:00
Julien Beraud
c2db6bfb9d
AP_Param: Fix warning
...
Cast to the original type to use get function.
Still a hack but better than casting a pointer to an object which
memory mapping we are not supposed to know
2016-02-15 15:48:35 -02:00
Lucas De Marchi
f4bc5c60ba
mk: px4: replace cp -f with cp
...
-f is only needed for rm because it fails when the file being removed
doesn't exist. cp doesn't need it.
2016-02-15 13:36:28 -02:00
Peter Barker
529a0166d5
mk: px4: correct manipulation of files
...
- remove useless file copy
- replace rm/cp idiom with cp -f
2016-02-15 13:35:43 -02:00
Tom Pittenger
92fea608f3
Rover: add item_reached_msg to GUIDED
2016-02-14 16:12:56 -08:00
Tom Pittenger
786d14cd3c
AP_RangeFinder: For LightWareSerial, write 'd' to support more devices
2016-02-14 16:05:50 -08:00
Andrew Tridgell
b76aff2dcb
AP_Arming: allow unconfigured GPS in SITL arming checks
...
the SITL GPS does not implement the needed protocol negotiation
2016-02-15 07:49:19 +11:00
Lucas De Marchi
7debd14683
AP_HAL_Linux: Scheduler: remove unused _in_io_proc
2016-02-12 23:42:34 -02:00
Lucas De Marchi
fbb3bb2fd0
AP_HAL_Linux: Scheduler: remove unused _timer_event_missed
2016-02-12 23:42:34 -02:00
Lucas De Marchi
f39a6745d1
Global: remove unused _timer_pending from scheduler
2016-02-12 23:42:34 -02:00
Lucas De Marchi
0ad436c337
AP_HAL_Linux: Scheduler: bring back scheduler table
...
Use a scheduler table to list threads' properties in a single place.
2016-02-12 23:42:34 -02:00
Lucas De Marchi
a1b62b4984
AP_HAL_Linux: Scheduler: use PeriodicThread
...
Some tasks were not accounting for the time to execute the tasks. Now
that we are using the infra from PeriodicThread all of them are.
2016-02-12 23:42:34 -02:00
Lucas De Marchi
48e81c8589
AP_HAL_Linux: Thread: add PeriodicThread helper
...
This is a helper class to run a single periodic function like the ones
used in the scheduler.
2016-02-12 23:42:34 -02:00
Lucas De Marchi
860d5aaf84
AP_HAL_Linux: Scheduler: move rpcmem initialization to setup phase
...
This was the only piece remaining in the timer thread that was used only
to setup the thread.
2016-02-12 23:42:34 -02:00
Lucas De Marchi
0282ebb8ff
AP_HAL_Linux: add method to check caller same as thread
2016-02-12 23:42:34 -02:00
Lucas De Marchi
e3beef0f77
AP_HAL_Linux: Scheduler: remove unused parameter
2016-02-12 23:42:34 -02:00
Lucas De Marchi
2b61eaf9f2
Global: remove {begin,end}_atomic from scheduler
...
These are never used and largely not implemented.
2016-02-12 23:42:34 -02:00
Lucas De Marchi
9aa49cda93
Global: remove system_initializing() from scheduler
...
This is not used anymore.
2016-02-12 23:42:34 -02:00
Lucas De Marchi
9cf9fc152b
AP_HAL_Linux: use pthread's barrier instead of polling
...
Use pthread's barrier so we don't keep waking up threads with possibly
higher priority during initialization phase.
This also synchronizes all of them to a single point. With the previous
approach it was possible (but unlikely) that a thread hadn't reach the
synchronization point when main thread signalize "system initialized".
2016-02-12 23:42:34 -02:00
Lucas De Marchi
2b0e214168
AP_HAL_Linux: Scheduler: move synchronization to common method
2016-02-12 23:42:34 -02:00
Lucas De Marchi
66e6cd60d8
AP_HAL_Linux: Thread: allow to override run method
2016-02-12 23:42:34 -02:00
Lucas De Marchi
a183ff8d32
AP_HAL_Linux: Scheduler: use Thread abstraction
2016-02-12 23:42:34 -02:00
Lucas De Marchi
3e0a83ede9
AP_HAL_Linux: add Thread abstraction class
2016-02-12 23:42:34 -02:00
Lucas De Marchi
5e9b45ebc2
AP_HAL_Linux: Scheduler: make microsleep() public
...
This will be used outside of scheduler class.
2016-02-12 23:42:34 -02:00
Andrew Tridgell
8ecf54bf75
Plane: use throttle slew when in quadplane assisted flight
...
this prevents a sudden throttle change on a petrol motor when
transitioning
2016-02-13 11:38:33 +11:00
Tom Pittenger
12fab6c59a
AP_GPS: save cfg only when needed
...
added GPS_SAVE_CFG param option 2
2016-02-12 15:33:33 -08:00
Tom Pittenger
18163bd01f
AP_GPS_UBLOX: save cfg only when needed
...
added GPS_SAVE_CFG param option 2
2016-02-12 15:33:18 -08:00
Michael du Breuil
55e64b3622
AP_GPS: u-blox: copy paste typo in a #else
2016-02-12 15:33:08 -08:00