1
0
mirror of https://bitbucket.org/librepilot/librepilot.git synced 2024-12-02 10:24:11 +01:00
Commit Graph

484 Commits

Author SHA1 Message Date
corvus
ae4a52e0ed test cases for signal handling
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@1069 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-07-11 16:43:41 +00:00
corvus
71589d2246 simple segfault reproduction
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@1068 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-07-11 15:11:26 +00:00
corvus
0efc69055e fix in print function *ducks*
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@1067 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-07-11 13:57:20 +00:00
corvus
1dd60b54f6 thread safe printf implementation now
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@1066 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-07-11 13:20:22 +00:00
FredericG
5bb4fedc7f attitude seq field was removed
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@1065 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-07-11 12:25:43 +00:00
corvus
ece979a4e1 ported latest changes by Vassilis and Stac to Posix version
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@1064 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-07-11 12:13:43 +00:00
peabody124
c6b495cdcc This version runs stably on all three platforms for me. Corvus, please feel free to revert these changes if you want or have a better solution. Also only Mac tested with GCS, the rest just sit there running nicely
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@1063 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-07-11 02:23:11 +00:00
peabody124
dd598a75a4 This version runs stably on all three platforms for me. Corvus, please feel free to revert these changes if you want or have a better solution. Also only Mac tested with GCS, the rest just sit there running nicely
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@1062 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-07-11 02:22:24 +00:00
vassilis
9f2a01a78a Flight/Servo Fix Servo driver buffer overflow, was messing up the I2C and altitude readings, now working fine. Servo index used to be 1-8 but the Servo driver was indexing a buffer out of bounds. Changed everything to use index 0-7 for servo outputs.
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@1061 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-07-11 01:54:43 +00:00
stac
3896baa908 usb hid: fix compiling with ALLOW_HID_TELEMETRY
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@1060 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-07-10 14:56:27 +00:00
peabody124
bd197886e5 Added some include files for task.c and removed an asserting that is sometimes violated in the signal handler
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@1059 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-07-10 14:07:28 +00:00
peabody124
083886615a Ok, so its run for a bit on my windows and mac computer, although I've seen a few glitches. Also, need the version of tasks.c in peabody124 which disables interrupts while in the nanosleep command. Unfortunately for windows I have to turn of all the cpu optimization code to make it reliable for now, so it eats cycles
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@1057 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-07-10 07:31:58 +00:00
sambas
9003cd8eca OP-97 flight/GPS: GeoidSeparation added, need to think that precision problem
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@1056 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-07-10 07:27:07 +00:00
peabody124
db1dde5d8c Pretty major rewrite which can either run with thread monitoring (windows) or with conditional waits. Definitions in file set mode, but robust for all modes on OSX, now for windows testing
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@1054 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-07-10 06:25:33 +00:00
peabody124
60fda40c42 Much more stable on windows now
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@1048 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-07-08 16:24:34 +00:00
corvus
cb9afef32d Pios.posix - FreeRTOS port for cygwin - test-file to debug signal and mutex handling
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@1047 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-07-08 10:28:50 +00:00
peabody124
c2cb17ffe7 Working on windows
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@1046 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-07-07 20:43:05 +00:00
peabody124
bd13811255 A ridiculously simple version that just avoids almost all signal handling needs
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@1045 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-07-07 18:36:05 +00:00
corvus
2ebe830624 reverting accidental commit
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@1044 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-07-07 17:47:22 +00:00
corvus
5c7324a28b PiOS.posix - thread management - another variant to test on win32
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@1043 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-07-07 17:45:12 +00:00
peabody124
5f174108b1 Initial work on pthread_cond based locking, minimizing signal handling (but trusting mutexes)
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@1042 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-07-07 17:43:12 +00:00
corvus
3370f75da1 PiOS.posix - more changes to increase cygwin runability
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@1041 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-07-07 16:40:38 +00:00
corvus
f82783d77e PiOS.posix | more attempts to fix it on win32
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@1040 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-07-07 14:43:36 +00:00
peabody124
5f6b3eb11a XCode project file for Mac development (for the Posix port)
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@1039 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-07-07 14:28:48 +00:00
corvus
034d66197b PiOS.posix: bug fix in new scheduler emergency handler
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@1038 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-07-07 13:09:42 +00:00
corvus
447be5c0a0 PiOS.posix - new version of debugging enabled custom port.c
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@1037 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-07-07 12:21:36 +00:00
corvus
64a8302f5a PiOS.posix scheduler - added port.c with debug output for testing
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@1036 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-07-07 10:47:23 +00:00
corvus
0662269625 some fixed - might run on windows now
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@1035 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-07-07 09:40:17 +00:00
peabody124
48596e838e Cleaned up some signal handling a bit, some handshaking at task switching. For some reason nanosleep occasionally causes problems. Something about it not being a cancellation point
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@1034 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-07-06 23:25:34 +00:00
peabody124
6caf552753 My version that works on linux and mac, not windows
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@1033 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-07-06 22:51:58 +00:00
corvus
ec48207755 PiOS posix scheduler - added simple docu about scheduler work
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@1032 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-07-06 21:56:43 +00:00
corvus
7aa693ed3e PiOS posix port - threading - test implementation
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@1031 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-07-06 21:55:22 +00:00
corvus
b13f8296dc POSIX port: some improvements as suggested by stac
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@1024 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-07-04 21:44:09 +00:00
corvus
2e373c5dfc pios_com_udp: explicit type cast to prevent compiler warning
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@1020 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-07-04 11:24:43 +00:00
corvus
455a99a3cf some changes to increase platform independence
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@1017 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-07-04 09:27:53 +00:00
corvus
c7479b796b merged chages 995:1015 into posix branch
(See? That's why I hate branching - thank the gods that subversion has the "merge" command)


git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@1016 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-07-04 08:50:40 +00:00
stac
17bea4cb91 ahrscomms: connect the OP board to the AHRS board
The AHRS comms module now sync's with the AHRS and
exchanges interesting data periodically.  Whenever
the link to the AHRS is down, the AHRSComms alarm is
raised.

This is fairly basic for now but provides the last
piece of the infrastructure to move data back/forth
between the OP and the AHRS.

git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@1014 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-07-04 02:21:49 +00:00
stac
05485e5b63 ahrs: tie main loop into SPI link FSM
- AHRS mainloop now runs flat out updating sensor data and
processing any messages sent from the OP board.
- Raw data is provided from the magnetometers
- Fake data is provided for attitude solution
- Correct data is provided for serial number queries

Note: There is a bug in the i2c code that very quickly leaves the
      magnetometer in a broken state and returning incorrect values.

git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@1013 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-07-04 02:21:47 +00:00
stac
29a8f05ac9 mag sensor: put some bounds on the parameters
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@1012 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-07-04 02:21:45 +00:00
stac
a3a2dbd634 spi: Add support for hardware CRC generation/checking
PIOS SPI devices may now make use of automatic CRC generation
and checking on block transfers.  Only supports CRC8 for now.

Since the SPI interface CRC calculation continues across message
boundaries (ie. not reset on every transfer), we must manually reset
the CRC registers for every transfer to allow the two sides of the
link to resynchronize.

Unfortunately, resetting the CRC registers requires disabling the
SPI peripheral which must now be done on every block transfer.

Note: The last byte of the tx buffer is never sent and is assumed to
      be a place holder for the tx CRC8.
Note: The last byte of the rx buffer is expected to hold the rx CRC8.

git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@1011 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-07-04 02:21:42 +00:00
stac
c12b7e3fed spi: tx buffer is now const
Tx buffers should not be modified.  This allows passing const data
to the transfer function.

git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@1010 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-07-04 02:21:40 +00:00
stac
548a32f18b attitude: Rename Attitude module to AHRSComms
The Attitude module will soon be handling updates for all UAVObjects
that require data from the AHRS.  To reflect this expansion of scope,
it has been renamed to AHRSComms.

git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@1009 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-07-04 02:21:37 +00:00
stac
1425ab1786 ahrs status: Add AhrsStatus UAVObject
This object currently only holds the serial number of the attached
AHRS board.  This will be retrieved each time communications are
(re)established with the AHRS board.

This will eventually be extended to hold some statistics for OP to
AHRS comms.

git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@1008 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-07-04 02:21:34 +00:00
stac
1bbc8381c0 heading: Add HeadingActual UAVobject
This object currently holds only the raw magnetometer readings and
an instantaneous heading calculation which are only really useful
for debugging.  The contents of this object will change often as
development progresses.

Note: The magnetometer values are often garbage due to a problem
with i2c software on the AHRS.

git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@1007 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-07-04 02:21:31 +00:00
stac
0e6294ca27 spi: remove internal pull-up from input data lines
The input data lines between the OP and AHRS boards had internal
pull-ups enabled.  This seemed to be causing issues early on
during development of the inter-board comms.  Not sure if this
is still necessary but this is how the current code was tested.

git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@1006 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-07-04 02:21:26 +00:00
stac
e3824a6d78 ahrs spi: Add AHRS SPI link management FSM
To the outside world, the AHRS can be in one of only a few
primary states:
 Not present - AHRS is absent or non-responsive via SPI
 Inactive - Only link-level status messages are processed
 Ready - Ready to receive the next application level message
 Busy - Application level message is being processed

Internal to the AHRS, there are many more states that need to be
managed.  This FSM provides the necessary decoupling between the
ISR (which is being driven by the SPI link) and the AHRS main
processing loop which must continue to run its filters independently
of the SPI messaging rate.

With this structure, SPI messages can be received at any time but
processed at only specific points within the filter chains.

git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@1005 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-07-04 02:21:22 +00:00
stac
89a6d6d912 ahrs spi: Add definition of OP<->AHRS SPI protocol
This defines the SPI message format as well as a few
initial messages for moving data across the link.

The v0 messages are place holders for firmware download
in the bootloader.

The v1 messages are to be used by the main application.

Note: This is not the final protocol definition.
      Subject to change without notice.

git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@1004 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-07-04 02:21:15 +00:00
stac
3eceef43d3 spi: Connect device specific DMA IRQ handlers
Mark the device specific DMA IRQ handlers as strongly linked
aliases for the genericly named interrupt vector symbol.

Here's how this works...
 * The address of the symbol DMA1_Channel2_IRQHandler is written
   into the DMA1/Channel2 interrupt vector by the linker script.
 * The startup_*.S file specifies Default_Handler() as a weakly
   linked alias for DMA1_Channel2_IRQHandler.
 * We now override the weakly linked alias with the strongly linked
   PIOS_SPI_sdcard_irq_handler().
 * This results in the address of PIOS_SPI_sdcard_irq_handler() being
   written to the vector table for the DMA1/Channel2 interrupt.
 * The PIOS_SPI_sdcard_irq_handler() function is now called whenever
   the DMA1/Channel2 interrupt fires.

git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@1003 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-07-04 02:21:13 +00:00
stac
b084fc4be5 alarms: Add alarm for AHRS Communications
The AHRSComms alarm will be raised whenever the OP board
is not able to communicate with the AHRS board.

The navigation software on the OP board could use this
alarm to trigger its best attempt at an emergency landing.

git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@1002 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-07-04 02:21:11 +00:00
stac
71e491e3c1 com: mark tx buffer as const throughout API
The com layer transmit functions should provide guarantees
that they will not modify the buffer that you're transmitting.
Declaring the parameter as a pointer to const keeps the underlying
implementations honest.

git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@1001 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-07-04 02:21:08 +00:00