Commit Graph

888 Commits

Author SHA1 Message Date
Aaron Wang Shi
1304d37699 AP_HAL_Linux: fix bhat GPS SPI conflict 2018-07-24 11:28:22 -07:00
Aaron Wang Shi
4f2d9c2c4d AP_HAL_Linux: support PWM input for BH hat 2018-07-20 00:32:55 -07:00
Michael du Breuil
2e135f4fc4 AP_HAL_Linux: Remove unused ADC include 2018-07-17 09:29:50 +10:00
Michael du Breuil
0aaa029f9b AP_HAL_Linux: GPIO_RPi: Fix UB when reading a pin
You can't shift by more then the word width
2018-07-11 23:09:52 -07:00
Michael du Breuil
1f7ee55211 AP_HAL_Linux: Remove GPIO::analogPinToDigitalPin() 2018-07-11 23:09:52 -07:00
Andrew Tridgell
1d1af5fd68 HAL_Linux: don't clear buffers on no baud change 2018-07-12 11:41:31 +10:00
Lucas De Marchi
d2446e1219 AP_HAL_Linux: use Thread abstraction to create thread
The open coded version has the same problem fixed by Thread abstraction:
the order of the calls matters and it's easy to call in the wrong order.
Here pthread_attr_setschedparam() and pthread_attr_setschedpolicy()
should be swapped, like in 62c2f737d5 (AP_HAL_Linux: fix setting RT priorities.)
2018-07-11 10:00:29 +10:00
Lucas De Marchi
e11d268818 AP_HAL_Linux: Thread: allow loose running thread 2018-07-11 10:00:29 +10:00
Jack
4b24a61023 AP_HAL_Linux: fix spelling of generated in panics 2018-07-10 09:55:01 -07:00
Andrew Tridgell
070e3cf37b HAL_Linux: implement I2C bus masks 2018-07-10 15:39:47 +10:00
Andrew Tridgell
492978c0fa HAL_Linux: removed restriction on delay in threads
threads other than the main thread should be able to sleep, but not
call the delay callback
2018-07-09 19:41:18 +10:00
Andrew Tridgell
9918ae3209 HAL_Linux: implement thread_create() 2018-07-09 19:41:18 +10:00
Andrew Tridgell
9ae6734469 HAL_Linux: support uartG 2018-06-29 08:17:38 +10:00
Lucas De Marchi
49d08ba72a Global: remove minlure
Minlure is a port of ArduPilot to Minnow Board connected to daughter
board. Very few of those were produced and nobody is flying with it.

It served its purpose and all the the improvements to ArduPilot remain
regardless of it not being supported anymore. Now it's just adding
maintenance work with no clear benefit, so pull the plug.
2018-06-26 07:32:08 -07:00
Lucas De Marchi
d31e85e738 AP_HAL_Linux: fix copy and paste error on gpio table 2018-06-26 07:32:08 -07:00
Michael du Breuil
7043738f3b AP_HAL_Linux: Clear UART buffers when opening a port 2018-06-26 02:18:18 +01:00
Hyungsub
97b93920b3 AP_HAL_Linux: fix memory leaks
Fixes #8642
2018-06-18 10:30:56 +01:00
Peter Barker
c9dbdd7a5c AP_HAL_Linux: clarify method name, use common methods for setting time 2018-06-15 08:01:22 +10:00
Eugene Shamaev
7dd8308a8c AP_HAL_Linux: reducing indenting by linearizing the logic 2018-06-09 22:46:48 -07:00
mirkix
b32b57ad75 AP_HAL_Linux: change SPI Bus for PocketPilot final design 2018-06-07 12:28:21 -07:00
Michael du Breuil
80d1a1de9a AP_HAL_Linux: Remove timer process suspension interface 2018-06-06 07:16:58 +10:00
Michael du Breuil
737c4ac36f AP_HAL_Linux: Remove RC overrides 2018-06-05 09:51:09 +10:00
Lucas De Marchi
88dc17fe6e AP_HAL_Linux: Storage: fix initialization
Use init() to lazily create/open storage directory and keep fd open
afterwards. This avoids duplicate code opening the storage in several
places.
2018-05-24 08:00:33 -07:00
Lucas De Marchi
1f3b7b5687 AP_HAL_Linux: Storage: fix writing garbage while creating file
By the time we create the storage we hadn't still initialized the
buffer. Remove the writes during storage creation since ftruncate() will
take care of the file size aspect and MAX storage write chunk is taken
care by Linux according to the media/fs that is there.
2018-05-24 08:00:33 -07:00
Lucas De Marchi
5526997d45 AP_HAL_Linux: Storage: prefer custom storage
If ardupilot was started with --storage-directory option, use that
directory to save/load parameters.
2018-05-24 08:00:33 -07:00
Lucas De Marchi
ff6e76ea6a AP_HAL_Linux: add custom storage directory 2018-05-24 08:00:33 -07:00
Lucas De Marchi
9e538632b3 AP_HAL_Linux: use AP_HAL_STORAGE_DIRECTORY
Add mkdir_p implementation copied from kmod and create the directory
with all possible components.
2018-05-24 08:00:33 -07:00
Andrew Tridgell
b396b2a2e0 HAL_Linux: take account of available bytes in receive_time_constraint_us 2018-05-21 14:53:18 +10:00
Francisco Ferreira
5e821428a1 AP_HAL_Linux: remove Qualcomm board support 2018-05-17 09:57:20 +10:00
Andrew Tridgell
b8eeac41c8 HAL_Linux: implement uart timestamp API 2018-05-16 18:49:22 +10:00
Michael du Breuil
517e20093e AP_HAL_Linux: Remove set_overrides() method 2018-05-11 12:13:39 +01:00
mirkix
95fbc222d5 AP_HAL_Linux: enable GPIOs for PocketPilot 2018-05-09 16:16:42 -07:00
Peter Barker
d5cad015dc AP_HAL_Linux: move delay callback handling to base HAL Scheduler class 2018-05-09 16:15:38 +10:00
Andrew Tridgell
4404c95cc8 HAL_Linux: use ceilf() 2018-05-07 11:43:23 +10:00
Lucas De Marchi
b1b4b66e65 AP_HAL_Linux: minlure: fix uart path
In some point in past it may have been ttyS2, but right now on kernel
4.16+ the UART is on ttyS5. We could do like is done for I2C and search
on sysfs, but it requires additional changes.
2018-05-04 11:47:04 -07:00
Lucas De Marchi
320db1d79b AP_HAL_Linux: remove unused i2c devpaths 2018-05-04 11:47:04 -07:00
Lucas De Marchi
2000e17646 AP_HAL: move get_device() method from AP_HAL_Linux
This way it's possible to use the method in platform-independent code
without a need to up cast.
2018-05-04 11:47:04 -07:00
Lucas De Marchi
4f2498947b AP_HAL_Linux: remove redundant ifdef
CONFIG_HAL_BOARD_SUBTYPE should be set in the boards header.
2018-05-04 11:42:55 -07:00
mirkix
0c353d2af0 AP_HAL_Linux: change PocketPilot to final baro sensor 2018-05-04 08:00:49 +10:00
mirkix
598ae5c3f7 AP_HAL_Linux: PocketPilot: change pru to final design 2018-05-04 08:00:49 +10:00
Mark Whitehorn
7ad0318d4f AP_HAL_Linux: fix latent bug in ToneAlarm 2018-04-10 21:48:16 +10:00
Lucas De Marchi
cf3a9cddc8 AP_HAL_Linux: fix build error with flexible array
Apparently this code came in part from libuavcan that defines this
struct Control. They also had the same issue detailed on
https://github.com/UAVCAN/libuavcan/issues/116.

The solution here is much simpler though: stick to the design of cmsg()
even if it's C. As per cmsg(3), use a union together with CMSG_SPACE().
2018-03-22 00:49:58 -07:00
chobits
15b8ae99fe AP_HAL_Linux: fixed AP_MODULE_SUPPORTED on static build 2018-03-02 10:13:19 +11:00
mirkix
234dcc1939 AP_HAL_Linux: fix BeagleBone Blue voltage divider 2018-02-23 18:35:55 +10:00
Lucas De Marchi
755b1cdced AP_HAL_Linux: rpi: sort include headers 2018-02-12 09:05:21 -08:00
Lucas De Marchi
90160a9c52 AP_HAL_Linux: rpi: use const var and fix formatting
Use a const variable instead of a define so we don't polute the
environment with a define specific to this function.

Also remove tabs and replace with proper coding style.
2018-02-12 08:46:36 -08:00
Dmitri Ranfft
05ebabbf6b AP_HAL_Linux: fixed RPi version detection on kernel 4.9 2018-02-12 08:36:58 -08:00
Siddharth Purohit
a55f1c85af HAL_Linux: add support for api change in AP_HAL::CANManager 2018-02-07 20:33:45 +11:00
Andrew Tridgell
26161ee467 HAL_Linux: Storage::_timer_tick is an override 2018-02-07 20:33:45 +11:00
Andrew Tridgell
22de99dd58 HAL_Linux: implement _timer_tick in UARTDriver 2018-02-07 20:33:45 +11:00
mirkix
bf758098d7 AP_HAL_Linux: fix deallocation 2018-02-05 11:05:12 +11:00
mirkix
c5eb52bf8d AP_HAL_Linux: fix comment 2018-01-23 13:32:12 -08:00
mirkix
700171a0fc AP_HAL_Linux: add second RCIN port for Blue 2018-01-17 15:25:51 -08:00
Nikita Tomilov
1549b1a52a AP_BoardConfig: CAN: Merge PX4 and Linux CAN setup
Here we merge PX4 and Linux CAN bus setup since the interface is almost
the same for both of them.
2018-01-17 07:24:17 -08:00
Tom Pittenger
d713d57904 AP_HAL_Linux: update software license referencing UAVCAN submodule 2018-01-17 07:24:17 -08:00
Nikita Tomilov
3ac2e4e8c5 AP_HAL_Linux: CAN: _pollRead no more than 100 iterations
This adds a counter here to only loop to a maximum number of iterations.
Now we avoid situations in which we would be stuck processing packets here.
This also adds some other meaningful defines
2018-01-17 07:24:17 -08:00
Nikita Tomilov
43bfcbc8e2 AP_HAL_Linux: CAN: Rename CANDriver -> CANManager 2018-01-17 07:24:17 -08:00
Nikita Tomilov
d0fc481202 AP_HAL_Linux: CAN: Rename Linux::LinuxCAN -> Linux::CAN 2018-01-17 07:24:17 -08:00
Alexey Bulatov
e0acbd3e53 AP_HAL_LINUX: Add CAN to timer_task 2018-01-17 07:24:17 -08:00
Nikita Tomilov
a50e6c6dd7 AP_HAL: board: linux: Add default CAN interface name 2018-01-17 07:24:17 -08:00
Nikita Tomilov
b6665f7e58 AP_HAL_Linux: CAN: get rid of RaiiCloser 2018-01-17 07:24:17 -08:00
Alexey Bulatov
976500960f AP_HAL_LINUX: Add CAN driver 2018-01-17 07:24:17 -08:00
Andrew Tridgell
8fea99e1da HAL_Linux: use calloc in preferance to malloc 2018-01-17 11:22:05 +11:00
Andrew Tridgell
43c1bd0ae9 HAL_Linux: fixed I2C get_device() interface
just stubs for now
2018-01-15 11:46:02 +11:00
mirkix
8d7000db2c AP_HAL_Linux: fix typo 2018-01-09 12:54:03 -08:00
mirkix
9b6a826b49 AP_HAL_linux: add new board PocketPilot 2017-12-27 16:01:55 +00:00
mirkix
eecd8fcfa6 AP_HAL_Linux: Add VOLTAGE_SCALING for BeagleBone Blue 2017-12-19 09:17:06 +11:00
mirkix
26f3a62db7 AP_HAL_Linux: remove BBBmini from RCInput_PRU.cpp 2017-12-14 12:40:37 -08:00
HeBin
0e1ce2a7fd AP_HAL_Linux: add Robsense PhenixPro Devkit Board support 2017-11-22 10:10:21 -08:00
Georgii Staroselskii
56534b34c5 AP_HAL_Linux: use GPIO_Sysfs for Navio
/boot/config.txt: dtoverlay=navio-rgb should be disabled for this thing
to work, though.
2017-11-17 09:20:55 -08:00
Georgii Staroselskii
5254ee03c2 AP_HAL_Linux: use GPIO_Sysfs for Edge 2017-11-17 09:18:36 -08:00
Georgii Staroselskii
8fcd30c611 AP_HAL_Linux: use GPIO_Sysfs for Navio 2 2017-11-17 09:18:35 -08:00
alexshirley
8058fdf093 AP_HAL_Linux: combine ppm and sbus on ocpoc_zynq
Removes compile-time selection of RCInput driver for ocpoc_zynq.
PPM and SBUS input are now colocated on the ocpoc board, and it
only needs to run RCInput_ZYNQ. Pulse input is also inverted
to accommodate SBUS input, which has no effect on PPM input.
2017-11-01 10:28:40 -07:00
Lucas De Marchi
cbb9dcc2a1 AP_HAL_Linux: Storage: use define from HAL for directory 2017-10-30 16:57:37 -07:00
Georgii Staroselskii
79c14a92a9 AP_HAL_Linux: adapt Heat_Pwm for Edge 2017-10-20 13:03:08 -07:00
Georgii Staroselskii
4e6fab228c AP_HAL_Linux: add SPI devices for Edge 2017-10-20 13:03:08 -07:00
Staroselskii Georgii
3ade179700 AP_HAL_Linux: make use of RCInput_Navio2 in Edge 2017-10-20 13:03:08 -07:00
Staroselskii Georgii
2a99bb0c95 AP_HAL: use Raspberry Pi GPIO and Util classes for Edge
As it's a yet another Raspberry Pi based board, we may reuse the code.
2017-10-20 13:03:08 -07:00
Staroselskii Georgii
2a7e8d66ee AP_HAL_Linux: add Edge support
Just some usual boilerplate code.
2017-10-20 13:03:08 -07:00
Georgii Staroselskii
2dd68243a2 AP_HAL: add Edge support 2017-10-20 13:03:08 -07:00
Georgii Staroselskii
d214a36e0a AP_HAL_Linux: reset duty cycle before setting period
On kernels 4.7+ duty_cycle should always be less than period.
Otherways, we'll get a EINVAL.

It makes sense to set duty_cycle to 0, as
duty_cycle doesn't really make sense without a proper period.

A proper way to handle these errors might be to call pwm_adjust_config
in every pwmchip backend but it's unrealistic to hope that all vendors
will do it quickly.
2017-10-17 13:28:34 -07:00
Lucas De Marchi
4d5aed1d69 AP_HAL_Linux: UARTDevice: never be the controlling terminal
If we are the controlling terminal for a tty device we will receive a
SIGHUP when the device disappears. Currently what happens is that we
simply stop the whole process. We don't want to fall off the sky due
to a bad device. This can happen for any reason, but it's more likely
if the UART is behind a USB connection.
2017-10-02 11:05:09 -07:00
Lucas De Marchi
5ebc8c2cb3 AP_HAL_Linux: ToneAlarm: ifdef out bogus message
These messages are only valid in a small subset of Linux boards (those
based on BBB and variants).  The ToneAlarm class should actually be
split allowing different implementations, but for now let's just disable
the message.
2017-09-28 09:00:26 -07:00
Aaron Wang Shi
6a82e3aecd AP_HAL_Linux: Add debug message in RCInput_RPI _timer_tick() 2017-09-25 21:11:56 -07:00
Aaron Wang Shi
ccde7cfdd4 AP_HAL_Linux: Restart RCInput_RPI DMA sampling if it stops 2017-09-25 21:10:54 -07:00
Lucas De Marchi
3847825fba AP_HAL_Linux: make Aero use Tap ESC
This allows controlling the motors from Linux on Intel Aero RTF given
the right FPGA firmware is in place.
2017-09-21 07:59:20 -07:00
Peter Barker
044cac42e8 AP_HAL_Linux: make in_main_thread const and override 2017-09-19 09:40:11 +10:00
Lucas De Marchi
7ba82ff23a AP_HAL_Linux: remove raspilot
It's not being sold, there are just a few (different) engineering
samples built and there are no plans for this to go forward for people
that were pushing it.
2017-09-12 15:06:19 -07:00
Francisco Ferreira
4398be2275 AP_HAL_Linux: remove URUS 2017-09-11 10:04:11 -07:00
davidaroyer
7d2e44862f AP_HAL_Linux: add support for Aerotenna OcPoC-Zynq hardware 2017-09-08 07:30:49 -07:00
Georgii Staroselskii
e79fc893fa AP_HAL_Linux: HAL_Linux_Class: delay SPIUARTDriver static initialization
There's an implicit (apart from the name) dependency between SPI and
SPIUARTDriver which results in a crush on a restart or a shutdown.

By moving the initialization we're making sure that all objects are
deleted in the right order.
2017-09-08 07:26:54 -07:00
Georgii Staroselskii
226eeeb738 AP_HAL_Linux: RCOutput_Sysfs: fix deleting _pwm_channels array
delete [] should be called rather than delete.
2017-09-08 07:26:54 -07:00
Georgii Staroselskii
f6858821a6 AP_HAL_Linux: PWM_Sysfs: remove unneeded free() in ~PWM_Sysfs_Base
_export_path and _duty_path will have been already long time gone by the
time dtors kick in.

Probably better to use OwnPtr around those. But it's better to be done
in a separate PR.
2017-09-08 07:26:54 -07:00
Lucas De Marchi
66a1e420cb AP_HAL_Linux: RCInput_SoloLink: better name to first field
Checking the time on the tcpdump capture, it matches the first fields
from the data:

$ tshark -n -c 4 -r  ~/tmp/solo/rc.pcap
    1   0.000000     10.1.1.1 → 10.1.1.10    UDP 68 5005 → 5005 Len=26
    2   0.019976     10.1.1.1 → 10.1.1.10    UDP 68 5005 → 5005 Len=26
    3   0.040046     10.1.1.1 → 10.1.1.10    UDP 68 5005 → 5005 Len=26
    4   0.059961     10.1.1.1 → 10.1.1.10    UDP 68 5005 → 5005 Len=26

From the previous commit (first 2 packets):

     5fa8 f441 3414 0500 73d7  dc05 dc05 dc05 db05 e803 e803 e803 f401
     73f6 f441 3414 0500 74d7  dc05 dc05 dc05 db05 e803 e803 e803 f401

0x0005143441f45fa8 - 0x0005143441f4f673 = 0x4E14 = 19988 (usec)

Which seems to approximately match for the other packets as well. We are
not using the field since we rather get the time when we receive it, but
at least use a better name.
2017-08-17 12:04:27 -07:00
Lucas De Marchi
373d41fd6e AP_HAL_Linux: switch aero to RCInput_SoloLink 2017-08-17 12:04:27 -07:00
Lucas De Marchi
79b004cf6a AP_HAL_Linux: add prototype for handling SoloLink
This allows to use a Solo controller to control Linux-based flight
controllers. The protocol has been derived by analyzing a tcpdump
trace: some fields are ignored. Example trace of RC data (obtained
with `tshark -T fields -e data -n -c 5 -r  rc.pcap`

 unkonwn              seq   ch1  ch2  ch3  ...                ch8
 5fa8 f441 3414 0500 73d7  dc05 dc05 dc05 db05 e803 e803 e803 f401
 73f6 f441 3414 0500 74d7  dc05 dc05 dc05 db05 e803 e803 e803 f401
 dc44 f541 3414 0500 75d7  dc05 dc05 dc05 db05 e803 e803 e803 f401
 bc92 f541 3414 0500 76d7  dc05 dc05 dc05 db05 e803 e803 e803 f401
 dfe0 f541 3414 0500 77d7  dc05 dc05 dc05 db05 e803 e803 e803 f401
2017-08-17 12:04:27 -07:00
Peter Barker
23d91c93c8 AP_HAL_Linux: correct compilation warning
../../../libraries/AP_HAL_Linux/RCInput_RPI.cpp:129:35: warning: ignoring return value of ‘ssize_t read(int, void*, size_t)’, declared with attribute warn_unused_result [-Wunused-result]
         ::read(file, &pageInfo, 8);
2017-08-17 11:28:36 +01:00
Lucas De Marchi
5ea1784838 global: remove AP_HAL::in_timerprocess()
This is not used and in the only places it would make sense would be
internally to the scheduler so remove it.
2017-08-03 20:25:14 -07:00
Lucas De Marchi
93a558ce5c AP_HAL_Linux: do not call delay callbacks on other threads
If a thread other than the main one calls Scheduler::delay() we could
end up triggering the call of delay callbacks. Those should only ever
happen on the main thread.
2017-08-03 20:24:57 -07:00
Lucas De Marchi
c170c2a847 AP_HAL_Linux: remove register_timer_process with extra arg
This is not used anymore.
2017-08-02 08:00:53 -07:00