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

1923 Commits

Author SHA1 Message Date
Stacey Sheldon
7f03195aba stm32 usb: allow descriptor data to be const through API
This allows a few more data structures to be const to save
some RAM.
2012-01-02 14:27:06 -05:00
Stacey Sheldon
075eb65603 bootfault: fail initialization if no telemetry link is configured
This detects a locked out state and fails the init.  The new
bootfault detection code will automatically drop to default
hwsettings after 3 consecutive boot failures.  That will put
the board back into an unlocked state where the user can now
enable a telemetry link using the GCS and everything will be
OK.

NOTE: Any configured telemetry link will be considered enough
      to boot up.  If you only configure a serial telemetry
      link but don't know how to hook anything up to it, this
      will not save you.

As the ultimate recovery, you can always load firmware on the
board that wipes the settings entirely and start over.
2011-12-31 13:08:30 -05:00
Stacey Sheldon
6c192f67ee gasp: delete clutter 2011-12-31 13:03:49 -05:00
Stacey Sheldon
e7053c77f0 usb config: remove unused macro for number of endpoints
This is no longer referenced and is confusing.
2011-12-31 13:02:43 -05:00
Stacey Sheldon
5c0921e92c fault: add optional fault insertion module
This module and its associated settings uavo can be used
to test various fault conditions during initialization.

To enable the module, add the TEST_FAULTS=YES to your make
command line:
  make fw_coptercontrol TEST_FAULTS=YES

Once this module is part of your firmware load, you can
enable it in the hwsettings uavo and then select the
type of fault to insert by editing the faultsettings uavo.
On the next reset, the configured fault will be inserted
into the init sequence to allow you to test the boot fault
recovery code.

With a fault inserted, you should see 3 failed boot attempts
followed by a successful (recovery) boot.  You will see the
BootFault alarm set to Critical, and the RAM version of your
hwsettings will be reset to defaults.  Since the defaults have
all optional modules disabled, the fault module will be out of
the way during the recovery boot.

You can then "Load" the flash version of the hwsettings uavo
in the object browser, disable the Fault module and then "Save"
the hwsettings module back to the board.  The next reset will
boot normally without the fault inserted.
2011-12-30 23:05:39 -05:00
Stacey Sheldon
f4f0dab764 fixup make combridge an optional module 2011-12-30 23:05:39 -05:00
Stacey Sheldon
f886af186d bootfault: add support for recovery from init failures
After 3 failed warm start attempts, the init sequence
will force the RAM version of the HWSettings object
to its defaults.  This should allow a user to regain
connectivity to a board that is continually faulting
during init.

This is accomplished by:
 - Incrementing a boot counter that is stored in the
   STM32 BKP registers.  These registers survive a
   warm start but are cleared on a cold start (ie. powerup).
 - On multiple failures, force hwsettings to defaults
   and raise the (new) BootFault alarm to prevent arming.
 - Resetting the boot counter whenever the system manages
   to successfully run the System Module task.

NOTE: This does not actually change the hwsettings object in
      flash.  That's up to the user.

This is intended to catch ONLY faults during early initialization.
It should not be used to recover from faults after the application
is up and running.
2011-12-30 23:05:38 -05:00
Stacey Sheldon
b91f40eb94 iap: extend API to support read/write of boot counter
Also clean up unused/obsolete definitions.
2011-12-30 23:05:38 -05:00
Stacey Sheldon
1543a6dbd3 hwsettings: allow disabling of USB telemetry entirely
The GCS hwsettings config widget now disallows any
configuration that disables both HID and VCP telemetry
over the USB port.

The firmware will allow it if the UAVObj is set manually.

This allows a mechanism to reduce RAM usage by another
500 more bytes if USB telemetry can be sacrificed in
certain configurations.
2011-12-30 23:05:38 -05:00
Stacey Sheldon
45615b5812 com: reduce buffer sizes on com interfaces on CC
Now that the COM layer fragments to the underlying
buffer sizes, the COM layer buffers can shrink below
single message sizes.
2011-12-30 23:05:38 -05:00
Stacey Sheldon
2cf1fe93c6 com: don't block forever waiting for a transmitter
Not all transmitters will continue to run when disconnected.
USB is one example of this.  When the USB cable was disconnected,
any transmitter blocked here would wait forever.

This was particularly noticeable when the telemetry Tx task
blocked forever on USB disconnect.  This also resulted in
the telemetry Rx task blocking forever waiting on the UAVTalk
connection lock.

We now block for a max of 5s waiting for space in the transmit
buffer.
2011-12-30 23:05:37 -05:00
Stacey Sheldon
7c03875013 diag-tasks: make taskinfo diagnostics a separate enable
This allows task stack analysis without turning on all
of the other diagnostics.
2011-12-30 23:05:37 -05:00
Stacey Sheldon
56c4ff8f40 com-bridge: add support for bridging to flexiport 2011-12-30 23:05:37 -05:00
Stacey Sheldon
60969b57d8 usb-hid: split apart hwsettings for HID and VCP ports
This allows the HID and VCP functions to be configured
separately so that additional functions can be more easily
bound to the VCP port.

This change also provides a safety net that forces either
the HID or VCP to be configured for USB Telemetry.  This
safety net may vanish in the future once the GCS can check
it.  Disabling USB Telemetry entirely would save more than
400 bytes of RAM.
2011-12-30 23:05:37 -05:00
Stacey Sheldon
ab135aa00b com-bridge: Make com-bridge an optional (and configurable) module 2011-12-30 23:05:36 -05:00
Stacey Sheldon
5b3227d1ff com: reduce buffer sizes for com layer
This saves a few hundred bytes of RAM in a typical
configuration.
2011-12-30 23:05:36 -05:00
Stacey Sheldon
785a7ccd88 uavtalk: convert tx to use blocking send routines
The uavtalk layer was previously implementing a poor
version of packet fragmentation based on a hard-coded
max packet size.  Since this was hard-coded, there was
no guarantee that it would match the underlying devices.

Now that the COM layer sending routines support fragmentation,
remove fragmentation and use the COM layer directly.

This will support future buffer size reductions in the COM
layer.
2011-12-30 23:05:36 -05:00
Stacey Sheldon
16619584e4 usb cdc: return valid data in response to SetLineCoding 2011-12-30 23:05:36 -05:00
Stacey Sheldon
a68f5a4fc9 com-bridge: detect lost characters on transmit 2011-12-30 23:05:36 -05:00
Stacey Sheldon
80e0be3cec com: fragment transmitted buffers to match underlying device
PIOS_COM_SendBufferNonBlocking() will now fragment its buffer
to match the max size of the underlying device.

This allows the buffer size of the underlying device to shrink
below the maximum message size, thus allowing us to use smaller
buffers on memory-constrained platforms.
2011-12-30 23:05:36 -05:00
Stacey Sheldon
407bec0c95 usb cdc: track oversized rx buffers 2011-12-30 23:05:35 -05:00
Stacey Sheldon
b858cf387e com: track dropped bytes on rx for usart and usb com 2011-12-30 23:05:35 -05:00
Stacey Sheldon
2040645171 com: Use all bytes in Tx buffer
Code would previously fail Tx if we happen to send data
that happened to be exactly the size of the available space
in the tx buffer.
2011-12-30 23:05:35 -05:00
Stacey Sheldon
34af9ac92d usb_com: NAK rather than STALL on buffer full
STALL should only be used to indicate an error has occurred.
NAK is the correct mechanism to provide backpressure.
2011-12-30 23:05:35 -05:00
Stacey Sheldon
e2bb7140fe usb cdc: allow use of entire rx buffer
Previously, the code only allowed n-1 bytes of the
available space to be used.
2011-12-30 23:05:35 -05:00
Stacey Sheldon
86aead52ce usb cdc: only pass valid bytes from USB rx up to com layer
Previously, up to 63 random bytes would be passed to the COM
layer and would be delivered to the application as though
the far end had sent them.
2011-12-30 23:05:35 -05:00
Stacey Sheldon
f54c0552ce com: make sure we know when a higher prio task is woken 2011-12-30 23:05:34 -05:00
Stacey Sheldon
202b1bd428 com: Always kick rx_start if we got zero bytes
This will ensure that we kick rx_start at least once every
time that a user tries to receive bytes from the underlying
device.
2011-12-30 23:05:34 -05:00
Stacey Sheldon
64f498e48a com-bridge: add usart to usb vcp bridge 2011-12-30 23:05:34 -05:00
Stacey Sheldon
504cf3417f init: collapse usart definitions for generic usage
Telemetry and GPS usarts are generic users of the uart
devices.  This collapses the duplicated usart configuration
structs into a single generic one.
2011-12-30 23:05:34 -05:00
Stacey Sheldon
eebdda6276 usb cdc: make HID/CDC configurable in hwsettings 2011-12-30 23:05:34 -05:00
Stacey Sheldon
e6ead85857 usb cdc: fix device descriptor to work on Mac
Apple is very particular about requiring the bDeviceClass
to be set to 2 (Commmunication Device) even for composite
devices which seems wrong.

Device is enumerated without error on Mac now.  Not sure if it
works though.
2011-12-30 23:05:34 -05:00
Stacey Sheldon
617a30c07c usb cdc: attach telemetry to CDC rather than HID 2011-12-30 23:05:34 -05:00
Stacey Sheldon
59cb489e01 usb: clean up pios hooks into stm32 usb_core
Reduced scope of many variables since they were being
exposed unnecessarily.

Renamed pios_usb_hid_prop code to pios_usbhook to reflect
the fact that it implements all of the callout functions
that are hooked into the stm32 usb library.
2011-12-30 23:05:33 -05:00
Stacey Sheldon
c0259dc616 usb cdc: USB composite device with HID + VCP 2011-12-30 23:05:33 -05:00
James Cotton
0b00e748a9 OP-565: Added the ability to do a trim flight to compute the accels for level flight 2011-12-21 15:25:00 -06:00
Oleg Semyonov
10287e3e29 CC: rename ReceiverPort PPM+Servo (Servo) options to PPM+Outputs (Outputs) 2011-12-11 22:52:51 +02:00
James Cotton
162b0d7f75 Because the UAVO field sorting required for revo changes all the object IDs,
trigger a flash wipe on all existing boards with this upgrade.
2011-12-10 14:13:28 -06:00
Corvus Corax
a0cd71abe6 UAVObjects ; Modules/ManualControl: Fixed metadata interface and segfault when retrieving it 2011-11-30 09:20:46 +01:00
Oleg Semyonov
1f60f80053 Bring back the ERASE_FLASH option support for SettingsEraseFirmware 2011-11-26 22:57:33 +02:00
James Cotton
fae611a01f Fix bug where clicking back at last screen of input wizard would go back to
main screen and then in future buttons hung around for no reason
2011-11-25 11:30:12 -06:00
Oleg Semyonov
6d78b97d92 dsm: update DSM protocol binding details in the comments (no code change) 2011-11-19 17:33:04 +02:00
James Cotton
aa698f7b0a Increase the CC IRQ stack to avoid some memory warnings 2011-11-16 09:20:30 -06:00
Oleg Semyonov
4a99ec3298 code style: move variable into function and free 1 byte of RAM :-)
component     free heap used
    ----------------------------
    Nothing            2560    -
    PWM                2432  128
    PPM                2408  152
    DSM                2464   96
    S.Bus              2448  112
    GPS (port only)    2368  192
    GPS (port+module)  1312 1248
    CameraStab         2096  464
    Telemetry          1928  632
2011-11-13 18:27:52 +02:00
James Cotton
b110e9c549 Style suggestions to cleanup GPS from Stac 2011-11-12 21:31:01 -06:00
James Cotton
f0b22519be Merge remote-tracking branch 'origin/corvuscorax/CC_GPS' into next 2011-11-12 21:30:53 -06:00
James Cotton
fdcc6c2d41 Fix a bug I made in programming the bootloaders via jtag 2011-11-12 21:29:46 -06:00
Corvus Corax
198c819943 some more makefile cleanup 2011-11-11 11:54:31 +01:00
Corvus Corax
cd473ed1fd some makefile cleanup 2011-11-11 11:51:45 +01:00
Corvus Corax
aa69027cb2 Merge branch 'next' into CC_GPS 2011-11-11 11:44:11 +01:00