This update saves 448 bytes of RAM with the current
crop of UAVObjects. It reduces a 19 byte struct to
8 bytes.
Note: This also introduces a limit of 65.534s for the
update periods.
The small bootloaders (CC and PipX) are out of flash space
so their stopwatch implementation has been swapped out for
one based on the DELAY clock that takes about 500 bytes less
of code space.
Identical functionality is preserved.
This allows the spektrum and sbus receiver drivers to bind
directly to the usart layer using a properly exported API
rather than overriding the interrupt handler.
Bytes are now pushed directly from the usart layer into the
com layer without any buffering. The com layer performs all
of the buffering.
A further benefit from this approach is that we can put all
blocking/non-blocking behaviour into the COM layer and not
in the underlying drivers.
Misc related changes:
- Remove obsolete .handler field from irq configs
- Adapt all users of PIOS_COM_* functions to new API
- Fixup callers of PIOS_USB_HID_Init()
Update to use 32-bit microsecond values.
Remove PIOS_DELAY_DiffuS per consensus (caller can do it easily themselves).
Update the core delay logic per Stac's suggestion to a version that is
resistant to various overflows.
Address the following review feedback items:
- use stdint types
- avoid the use of magic numbers (define CYCCNTENA)
- remove expository comment about sneakiness and corresponding code, replace with something simpler based on the API
- remove commented/#if 0 code
Each channel was previously tracking a separate driver.
Now, channels are grouped within a channel group to save
RAM used for tracking and to better reflect how channels
are actually mapped.
Working spektrum bind routine, depending your TX try BIND_PULSES 3,5,7,9 (5 works with DX7)
Boot process takes too long on MB so bind command misses the window (20-140ms).
the throttle is < 0. This will make things like axis-lock work while armed
without throttle. HOWEVER don't hold your stick in the arming position for a
long time or you can wind up the integrals now.
zero and making the attitude get NaN. Wrote recovery code for that condition
(should never occur) and also force minimum dT to 1 ms (also shouldn't occur)