The following driver files only contain initialization and configuration fuctions and were erroneously set up for speed-optimization. Moving them to size-optimization saves significant space. They all share common runtime functions contained in `drivers/accgyro/accgyro_mpu.c` which is correctly speed-optimized.
```
drivers/accgyro/accgyro_mpu6050.c
drivers/accgyro/accgyro_mpu6500.c
drivers/accgyro/accgyro_spi_mpu6000.c
drivers/accgyro/accgyro_spi_mpu6500.c
drivers/accgyro/accgyro_spi_mpu9250.c
drivers/accgyro/accgyro_spi_icm20689.c
```
Also added explicit `#ifdef USE_` around the code of some of the drivers missing it. Doesn't result in any space savings as the compiler optimizes out the unused functions. But better in the long-term as it will flag any cases where the code might be called without proper bounding.
Saves 10704 bytes on STM32F7X2.
Eliminated the duplicated MSC functions in the architecture specific files and moved to a shared common.
Improved the activity indicating LED and made it consistent between onboard flash and sd card mass storage mode.
- Add displayWriteFontCharacter() for font writing, removing all max7456
specific code.
- Add displayIsReady() for asynchronous display initialization
- Add displayBeginTransaction()/displayCommitTransaction() for display
transactions, which allow performing complex drawing operations without
flickering
- Add displayGetCanvas(), which retrieves the canvas associated with a
display (if it has it)
- Add canvas implementation for pixel based access for a display
- Add FrSkyOSD driver and displayPort driver
- Enable FrSkyOSD driver for targets with flash > 256
- Rename max7456_symbols.h to osd_symbols.h
Instead of having individual menus for RTC6705, SmartAudio, and Tramp, Now there is a single VTX menu that detects the type of active device and redirects to the appropriate protocol menu.
Reduces confusion and chances of erroneously using the wrong VTX menu.
Fixes a problem where the Tramp menu could be used to change band/channel/power even though the VTX was a SmartAudio device.
If the VTX is not configured or not communicating, a more informative message will be presented rather than a partially populated protocol menu. For example:
```
VTX NOT RESPONDING
OR NOT CONFIGURED
> BACK
```
Extends the CMS menu capabilities by adding an optional `redirectCheck` function that can conditionally return a menu that should be redirected to instead of the current menu. This redirect happens before any processing happens for the original menu. Adds flexibility to make the CMS menus have a more dynamic aspect.
NUCLEOF103RG is a target for Nucleo-F103RG (Nucleo-F103RB transplanted
with STM32F103RG which has 1MB of FLASH).
Such hardware with this target comes in handy when a firmware that
doesn't fit in smaller FLASH variant when compiled with DEBUG option.
The target definition files are straight copy of NAZE, except LED0_PIN
has been redefined to use Nucleo's LD2 (User LED).
It is also easy to convert exisiting F1 targets to be built to run on
the Nucleo-F103RG board:
- Add
#define FLASH_PAGE_SIZE 0x800
to target.h
- Also add
#undef USE_DSHOT
#undef USE_LED_STRIP
#undef USE_TRANSPONDER
#undef USE_CAMERA_CONTROL
to target.h to avoid non-F1 compatible code from getting in.
- Add
FLASH_SIZE = 1024
to target.mk