Ardupilot2/libraries/AP_HAL_Linux
Lucas De Marchi 61ef653181 AP_HAL_Linux: implement SPIDevice
The way this code is structured is a little bit different from the
SPIDriver implementation:

 - We only open the bus once, no matter how many devices we have in it

 - There's a single transfer() method which uses half-duplex mode
   instead of full duplex. The reason is that for all cases in the
   codebase we are using half-duplex transfers using the full-duplex
   API, i.e. a single SPI msg with both tx and rx buffers. This is
   cumbersome because the buffers need to be of the same size and the
   receive buffer using an offset of the same length as the actux data
   being written. This means the high level APIs need to copy buffers
   around.

   If later we have uses for a real full duplex case it's just a matter
   of adding another transfer_fullduplex() method or something like
   this.

 - The methods are implemented in the SPIDevice class instead of having
   proxy methods to SPIDeviceManager as is the case of SPIDriver

Also from now on we refer to the SPIDriver objects as "descriptors"
because they have the parameters of each device in the
SPIDeviceManager::devices[] table. When SPIDeviceDriver is completely
replaced we can rename them to SPIDeviceProperties.
2016-02-16 19:49:09 -02:00
..
benchmarks waf: ardupilotwaf: prefix build context methods with ap_ 2016-01-22 20:10:29 -02:00
examples Global: rename enum SPIDevice to SPIDeviceType 2016-02-01 14:18:50 -02:00
qflight HAL_Linux: added qflight README.md 2015-12-27 16:12:27 +11:00
AnalogIn_ADS1115.cpp AP_HAL_Linux: ADS1115: rename classes to follow other names 2016-02-01 14:18:51 -02:00
AnalogIn_ADS1115.h AP_HAL_Linux: ADS1115: rename classes to follow other names 2016-02-01 14:18:51 -02:00
AnalogIn_IIO.cpp AP_HAL_Linux: AnalogIIO: Remove unused code, add scaling for BBBMINI, rework 2016-01-28 13:44:43 -02:00
AnalogIn_IIO.h AP_HAL_Linux: AnalogIIO: Remove unused code, add scaling for BBBMINI, rework 2016-01-28 13:44:43 -02:00
AnalogIn_Raspilot.cpp AP_HAL_Linux: AnalogIn_Raspilot: rename classes to follow other names 2016-02-01 14:18:51 -02:00
AnalogIn_Raspilot.h AP_HAL_Linux: AnalogIn_Raspilot: rename classes to follow other names 2016-02-01 14:18:51 -02:00
AnalogIn.cpp AP_HAL_Linux: use init() method without arguments 2015-12-02 14:49:11 -02:00
AnalogIn.h AP_HAL_Linux: use init() method without arguments 2015-12-02 14:49:11 -02:00
AP_HAL_Linux_Namespace.h AP_HAL_Linux: Add skeleton for I2CDevice 2016-02-16 19:49:08 -02:00
AP_HAL_Linux_Private.h AP_HAL_Linux: Add skeleton for I2CDevice 2016-02-16 19:49:08 -02:00
AP_HAL_Linux.h AP_HAL: provide AP_HAL_MAIN() 2015-10-21 09:16:09 +11:00
CameraSensor_Mt9v117_Patches.cpp AP_HAL_Linux: move mt9v117 patches inside class 2015-12-18 17:56:06 +11:00
CameraSensor_Mt9v117.cpp AP_HAL_Linux: move mt9v117 patches inside class 2015-12-18 17:56:06 +11:00
CameraSensor_Mt9v117.h AP_HAL_Linux: move mt9v117 patches inside class 2015-12-18 17:56:06 +11:00
CameraSensor.cpp AP_HAL_Linux: make CameraSensor follow coding style 2015-12-18 17:56:04 +11:00
CameraSensor.h AP_HAL_Linux: make CameraSensor follow coding style 2015-12-18 17:56:04 +11:00
ConsoleDevice.cpp AP_HAL_Linux: standardize inclusion of libaries headers 2015-08-11 16:28:43 +10:00
ConsoleDevice.h AP_HAL_Linux: standardize inclusion of libaries headers 2015-08-18 17:12:51 +10:00
Flow_PX4.cpp AP_HAL_Linux: Enable optical flow onboard for BBBMINI 2016-02-08 08:52:10 -02:00
Flow_PX4.h AP_HAL_Linux: Flow_PX4: follow coding style 2015-12-18 17:56:05 +11:00
GPIO_BBB.cpp AP_HAL_Linux: use millis/micros/panic functions 2015-11-20 12:31:04 +09:00
GPIO_BBB.h AP_HAL_Linux: remove prefix from AP_HAL_Linux classes 2015-10-21 10:11:19 +11:00
GPIO_Bebop.cpp AP_HAL_Linux: Fix comment and panic on Bebop 2015-12-27 16:11:36 -02:00
GPIO_Bebop.h AP_HAL_Linux: GPIO Sysfs for Bebop 2015-12-01 07:07:26 +11:00
GPIO_Minnow.cpp AP_HAL_Linux: add GPIO definitions for minlure 2015-10-22 12:04:52 +11:00
GPIO_Minnow.h AP_HAL_Linux: add GPIO definitions for minlure 2015-10-22 12:04:52 +11:00
GPIO_RPI.cpp AP_HAL_Linux: GPIO: remove ifdef comment 2016-01-05 15:34:49 -02:00
GPIO_RPI.h AP_HAL_Linux: add GPIO definitions for BH hat 2015-12-21 15:54:31 +11:00
GPIO_Sysfs.cpp AP_HAL_Linux: remove _export_pins() method 2016-01-04 15:12:49 -02:00
GPIO_Sysfs.h AP_HAL_Linux: remove _export_pins() method 2016-01-04 15:12:49 -02:00
GPIO.cpp AP_HAL_Linux: remove prefix from AP_HAL_Linux classes 2015-10-21 10:11:19 +11:00
GPIO.h HAL_Linux: GPIO, add support for PXFmini 2016-01-05 15:31:43 -02:00
HAL_Linux_Class.cpp AP_HAL_Linux: Add fake device to I2CDriver 2016-02-16 19:49:09 -02:00
HAL_Linux_Class.h AP_HAL_Linux: Remove unused extern declaration for HALs 2015-11-20 16:32:17 +09:00
Heat_Pwm.cpp AP_HAL_Linux: Adapt Heat_Pwm to use PWM_Sysfs 2015-12-01 07:07:26 +11:00
Heat_Pwm.h AP_HAL_Linux: Adapt Heat_Pwm to use PWM_Sysfs 2015-12-01 07:07:26 +11:00
Heat.h AP_HAL_Linux: remove prefix from AP_HAL_Linux classes 2015-10-21 10:11:19 +11:00
I2CDevice.cpp AP_HAL_Linux: I2CDevice: method to read multiple times 2016-02-16 19:49:09 -02:00
I2CDevice.h AP_HAL_Linux: I2CDevice: method to read multiple times 2016-02-16 19:49:09 -02:00
I2CDriver.cpp AP_HAL_Linux: Add fake device to I2CDriver 2016-02-16 19:49:09 -02:00
I2CDriver.h AP_HAL_Linux: Add fake device to I2CDriver 2016-02-16 19:49:09 -02:00
OpticalFlow_Onboard.cpp AP_HAL_Linux: Enable optical flow onboard for BBBMINI 2016-02-08 08:52:10 -02:00
OpticalFlow_Onboard.h OpticalFlow_Onboard: fix body rate calculation 2016-01-15 16:11:19 -02:00
Perf_Lttng_TracePoints.h AP_HAL_Linux: Add Perf Lttng 2016-01-14 19:13:35 -02:00
Perf_Lttng.cpp AP_HAL_Linux: Add Perf Lttng 2016-01-14 19:13:35 -02:00
Perf_Lttng.h AP_HAL_Linux: Add Perf Lttng 2016-01-14 19:13:35 -02:00
Perf.cpp AP_HAL_Linux: Add Perf Lttng 2016-01-14 19:13:35 -02:00
PWM_Sysfs.cpp AP_HAL_Linux: PWM_Sysfs: minor changes to Bebop/mainline integration 2015-12-01 07:07:25 +11:00
PWM_Sysfs.h AP_HAL_Linux: fix warning due to derived PWM_Sysfs 2015-12-02 10:43:43 +11:00
px4io_protocol.h AP_HAL_Linux: new files for raspilot 2015-09-14 14:22:16 +10:00
RCInput_AioPRU.cpp AP_HAL_Linux: use init() method without arguments 2015-12-02 14:49:11 -02:00
RCInput_AioPRU.h AP_HAL_Linux: use init() method without arguments 2015-12-02 14:49:11 -02:00
RCInput_DSM.cpp HAL_Linux: added qflight board subtype 2015-12-27 16:12:27 +11:00
RCInput_DSM.h HAL_Linux: added qflight board subtype 2015-12-27 16:12:27 +11:00
RCInput_PRU.cpp AP_HAL_Linux: use init() method without arguments 2015-12-02 14:49:11 -02:00
RCInput_PRU.h AP_HAL_Linux: use init() method without arguments 2015-12-02 14:49:11 -02:00
RCInput_Raspilot.cpp AP_HAL_Linux: use init() method without arguments 2015-12-02 14:49:11 -02:00
RCInput_Raspilot.h AP_HAL_Linux: use init() method without arguments 2015-12-02 14:49:11 -02:00
RCInput_RPI.cpp AP_HAL_Linux: RCInput_RPI: revert PWM support 2016-01-18 20:07:42 -02:00
RCInput_RPI.h AP_HAL_Linux: RCInput_RPI: revert PWM support 2016-01-18 20:07:42 -02:00
RCInput_UART.cpp AP_HAL_Linux: use init() method without arguments 2015-12-02 14:49:11 -02:00
RCInput_UART.h AP_HAL_Linux: use init() method without arguments 2015-12-02 14:49:11 -02:00
RCInput_UDP_Protocol.h AP_HAL_Linux: Add Support for RCInput_UDP 2015-09-07 12:10:08 +10:00
RCInput_UDP.cpp AP_HAL_Linux: use init() method without arguments 2015-12-02 14:49:11 -02:00
RCInput_UDP.h AP_HAL_Linux: use init() method without arguments 2015-12-02 14:49:11 -02:00
RCInput_ZYNQ.cpp AP_HAL_Linux: use init() method without arguments 2015-12-02 14:49:11 -02:00
RCInput_ZYNQ.h AP_HAL_Linux: use init() method without arguments 2015-12-02 14:49:11 -02:00
RCInput.cpp AP_HAL_Linux: RCInput_RPI: revert PWM support 2016-01-18 20:07:42 -02:00
RCInput.h AP_HAL_Linux: RCInput_RPI: revert PWM support 2016-01-18 20:07:42 -02:00
RCOutput_AioPRU.cpp AP_HAL_Linux: use init() method without arguments 2015-12-02 14:49:11 -02:00
RCOutput_AioPRU.h AP_HAL_Linux: use init() method without arguments 2015-12-02 14:49:11 -02:00
RCOutput_Bebop.cpp RCOutput_Bebop: Increase max_rpm on Bebop 2 2015-12-27 16:11:36 -02:00
RCOutput_Bebop.h RCOutput_Bebop: Increase max_rpm on Bebop 2 2015-12-27 16:11:36 -02:00
RCOutput_PCA9685.cpp AP_HAL_Linux: use init() method without arguments 2015-12-02 14:49:11 -02:00
RCOutput_PCA9685.h AP_HAL_Linux: RCOutput_PCA9685 add new address for BH hat 2015-12-21 15:54:31 +11:00
RCOutput_PRU.cpp AP_HAL_Linux: use init() method without arguments 2015-12-02 14:49:11 -02:00
RCOutput_PRU.h AP_HAL_Linux: use init() method without arguments 2015-12-02 14:49:11 -02:00
RCOutput_qflight.cpp HAL_Linux: added qflight board subtype 2015-12-27 16:12:27 +11:00
RCOutput_qflight.h HAL_Linux: added qflight board subtype 2015-12-27 16:12:27 +11:00
RCOutput_Raspilot.cpp AP_HAL_Linux: use init() method without arguments 2015-12-02 14:49:11 -02:00
RCOutput_Raspilot.h AP_HAL_Linux: use init() method without arguments 2015-12-02 14:49:11 -02:00
RCOutput_Sysfs.cpp AP_HAL_Linux: use init() method without arguments 2015-12-02 14:49:11 -02:00
RCOutput_Sysfs.h AP_HAL_Linux: use init() method without arguments 2015-12-02 14:49:11 -02:00
RCOutput_ZYNQ.cpp AP_HAL_Linux: use init() method without arguments 2015-12-02 14:49:11 -02:00
RCOutput_ZYNQ.h AP_HAL_Linux: use init() method without arguments 2015-12-02 14:49:11 -02:00
RPIOUARTDriver.cpp AP_HAL_Linux: use millis/micros/panic functions 2015-11-20 12:31:04 +09:00
RPIOUARTDriver.h AP_HAL_Linux: remove prefix from AP_HAL_Linux classes 2015-10-21 10:11:19 +11:00
sbus.cpp HAL_Linux: fixed build warnings 2014-10-09 16:49:23 +11:00
sbus.h HAL_Linux: added SBUS decoder from PX4 project 2014-10-07 14:57:34 +11:00
Scheduler.cpp AP_HAL_Linux: Scheduler: bring back scheduler table 2016-02-12 23:42:34 -02:00
Scheduler.h AP_HAL_Linux: Scheduler: remove unused _in_io_proc 2016-02-12 23:42:34 -02:00
Semaphores.cpp AP_HAL_Linux: use millis/micros/panic functions 2015-11-20 12:31:04 +09:00
Semaphores.h AP_HAL_Linux: remove prefix from AP_HAL_Linux classes 2015-10-21 10:11:19 +11:00
SerialDevice.h AP_HAL_Linux: added SerialDevice interface 2015-07-29 08:36:05 +10:00
SPIDevice.cpp AP_HAL_Linux: implement SPIDevice 2016-02-16 19:49:09 -02:00
SPIDevice.h AP_HAL_Linux: implement SPIDevice 2016-02-16 19:49:09 -02:00
SPIDriver.cpp AP_HAL_Linux: export number of SPI devices 2016-02-16 19:49:09 -02:00
SPIDriver.h AP_HAL_Linux: implement SPIDevice 2016-02-16 19:49:09 -02:00
SPIUARTDriver.cpp AP_HAL_Linux: use millis/micros/panic functions 2015-11-20 12:31:04 +09:00
SPIUARTDriver.h AP_HAL_Linux: remove prefix from AP_HAL_Linux classes 2015-10-21 10:11:19 +11:00
Storage_FRAM.cpp AP_HAL_Linux: use millis/micros/panic functions 2015-11-20 12:31:04 +09:00
Storage_FRAM.h AP_HAL_Linux: remove prefix from AP_HAL_Linux classes 2015-10-21 10:11:19 +11:00
Storage.cpp AP_HAL_Linux: use millis/micros/panic functions 2015-11-20 12:31:04 +09:00
Storage.h AP_HAL_Linux: default USE_FRAM to 0 for all boards 2016-01-11 15:44:24 -02:00
system.cpp AP_HAL_Linux: implement new AP_HAL functions 2015-11-20 12:25:39 +09:00
TCPServerDevice.cpp AP_HAL_Linux: use millis/micros/panic functions 2015-11-20 12:31:04 +09:00
TCPServerDevice.h AP_HAL_Linux: standardize inclusion of libaries headers 2015-08-18 17:12:51 +10:00
Thread.cpp AP_HAL_Linux: Thread: add PeriodicThread helper 2016-02-12 23:42:34 -02:00
Thread.h AP_HAL_Linux: Thread: add PeriodicThread helper 2016-02-12 23:42:34 -02:00
ToneAlarmDriver.cpp AP_HAL_Linux: use millis/micros/panic functions 2015-11-20 12:31:04 +09:00
ToneAlarmDriver.h AP_HAL_Linux: standardize inclusion of libaries headers 2015-08-11 16:28:43 +10:00
UARTDevice.cpp AP_HAL_Linux: standardize inclusion of libaries headers 2015-08-11 16:28:43 +10:00
UARTDevice.h AP_HAL_Linux: standardize inclusion of libaries headers 2015-08-18 17:12:51 +10:00
UARTDriver.cpp HAL_Linux: added qflight board subtype 2015-12-27 16:12:27 +11:00
UARTDriver.h HAL_Linux: added qflight board subtype 2015-12-27 16:12:27 +11:00
UARTQFlight.cpp HAL_Linux: added qflight board subtype 2015-12-27 16:12:27 +11:00
UARTQFlight.h HAL_Linux: added qflight board subtype 2015-12-27 16:12:27 +11:00
UDPDevice.cpp AP_HAL_Linux: standardize inclusion of libaries headers 2015-08-11 16:28:43 +10:00
UDPDevice.h AP_HAL_Linux: standardize inclusion of libaries headers 2015-08-18 17:12:51 +10:00
Util_RPI.cpp HAL_Linux: Util, add PXFmini support 2016-01-05 15:35:56 -02:00
Util_RPI.h AP_HAL_Linux: remove prefix from AP_HAL_Linux classes 2015-10-21 10:11:19 +11:00
Util.cpp AP_HAL_Linux: Make RPI get_hw method public 2015-12-27 16:11:36 -02:00
Util.h AP_HAL_Linux: Make RPI get_hw method public 2015-12-27 16:11:36 -02:00
VideoIn.cpp AP_HAL_Linux: Enable optical flow onboard for BBBMINI 2016-02-08 08:52:10 -02:00
VideoIn.h AP_HAL_Linux: add shrink_8bpp() to VideoIn 2016-01-15 16:05:47 -02:00