* Add APM32F4 driver libraries and USB middleware
* Add the APM32F405 and APM32F407 target files
* Add APM32 startup files
* Add APM32F4 linker files
* Add APM32F4.mk
* Add APM32 driver files
* Add APM32F40X MCU type
* Sync with the Betaflight master branch and modify the driver directory structure
* Implement CLI on the APM32
* Implement ADC on the APM32
* Implement config streamer on the APM32
* Implement I2C on the APM32
* Implement SPI on the APM32
* Implement DSHOT on the APM32
* Implement transponder ir on the APM32
* Implement serial uart on the APM32
* Implement MCO on the APM32
* Implement DWT on the APM32
* Update the init.c file, adding APM32 MCO configuration
* Remove all duplicated APM32 driver files and retaining only the APM32 LIB directory
* Create APM32F4.mk
* Add linker files for APM32F405 and APM32F407
* Add startup and library config files for APM32F405 and APM32F407
* Add target files for APM32F405 and APM32F407
* Add apm32 MCU driver files
* Add build configuration for APM32 MCU
* Implement config streamer on APM32
* Implement CLI on the APM32
* Implement ADC on the APM32
* Implement RCC on the APM32
* Implement MCO on the APM32
* Implement I2C on the APM32
* Implement SPI on the APM32
* Implement serial uart on the APM32
* Implement IO on the APM32
* Implement DMA on the APM32
* Implement DSHOT on the APM32
* Implement transponder ir on the APM32
* Update init.c
* Add the inclusion of the 'platform.h' file to the APM USB driver source file
* Merge bus SPI duplicate code from APM32 to STM32
* Update timer_apm32.c
* Merge motor duplicate code from APM32 to STM32
* Merge serial uart duplicate code from APM32 to STM32
* Update APM32F4.mk
* Update cli.c
* Update APM32F4.mk
* Remove the apm32_flash_f4_split.ld
* Associate the apm32 linker file with stm32_flash_f4_split.ld
If you add a new resource whose name starts with an existing resource name it won't be found. For example if you add `PWM_EX` resource after `PWM` you won't be able to store a pin into it. So when you execute `resource PWM_EX 1 A01` it will be stored into `PWM`.
* CLEANUP: Move flash drivers to their own directory
* Missed flash_w25q128fv.h.
* Directories in #include, and specifying all source files explicitly.
* Revert RX driver src file implicit declaration
* Features - refactor featureNames[]
Use designated initializers for used features. NULL values are stored
in gaps.
Use ARRAYLEN() for featureNames iteration
Use `unsigned` for bitmasks
* Features - add featuresSupportedByBuild
bitmask of features that are supported in current build
configuration. Copied from init.c sanitization
* Features - simplify feature sanitization code
featuresSupportedByBuild makes things much easier
* Features - improve cli feature handling
- refuse all features that are not compiled in
- AlreadyDisabled/AlreadyEnabled info
- refuse operation if multiple features match
* fixup! Features - improve cli feature handling
* Features - print available and not supported features separately
* Update src/main/cli/cli.c
Co-authored-by: Mark Haslinghuis <mark@numloq.nl>
* features - print full state without command
---------
Co-authored-by: Petr Ledvina <ledvinap@hp124.ekotip.cz>
Co-authored-by: Mark Haslinghuis <mark@numloq.nl>
* unittest - fix duplicate symbols in unittests
Some symbols were declared again
With clang -fcommon, this resulted in allocatin in common segment and
prevented error.
(tentative definitions in C standard).
-fno-common (now default in clang https://reviews.llvm.org/D75056)
causes compilation errors.
Declarations are now marked extern.
* unittest - fix scheduler array size for unittest
Unittest needs extra space for canary
* unittest - fix missing include (needed for clang-16)
* unittest - remove unused varibles
-Werror in clang 15+
* unittest - increase max supported version to clang-16
* unittest - conditionaly disable useless output in unittests
* unittest - C++11 version of STATIC_ASSERT
* unittest - fix initializers for g++
- Change order of initializers to match order in struct
- make valueTable initializion consistent (necessary for C++)
- adapt controlRateConfig
* unittest - adapt scheduler_unitest for g++
scheduler_stubs.c is necessary to initialize task_attributes
* unittest - fix ledstrip unittest
only part of config was zeroed
* unittest - fix g++ warnings
- memcpy when length is known and \0 is not copied
- isError is local stub, no extern
- serialReadStub - don't memcpy into object, use initializer
* cli - cleanup cliGetSettingIndex
- compare only passed bytes (old version may read data after
name)
- input string is const
* unittest - fix ld warning from PG sections
move pg data sections after .rodata. Sections were marked as writable
due to relocation (!?). That marked .text output section
(containing .pg_data) as writable too and linker correctly complained
that executable section is writable.
* unittest - cleanup
* unittest - adapt after code cleanup, add gcc
- remove clang flags that are not necessary now (tested on clang-11
and clang-16)
- add support for gcc ( make test CC=gcc CXX=g++ )
- add suport for different optimization level (detects some code
problems) : make test OPTIMIZE=-O2
- fallback to clang on Linux too
* fixup! unittest - conditionaly disable useless output in unittests
* WIP
* start of implement m10 code
* Fetch MON-VER from unit to check for unit version
* test nav5 m10 command
* missing empty lines
* offload detect to config file
* copy from hasli and organization
* fix platform.h include
* fix cli_unittest gps include
* fix cli_unittest for gps calls
* guard ublox version in gpsData
* print human readable hw version
* add utc_standard param and transfer with nav5 set
add nav5x message for autonomous mode for m10
* fix typo
* revert order structure, remove functions and reduce flash size
* revert order structure, remove functions and reduce flash size
* fix gps init and navx5 message
* generalized nav5 message
* remove unguarded debug
* change ubx version detection, baud rate negotiation fix and save found baud
* revert indentation
* revert indentation and refactorings
* the new code works with faster baud rate changes
* remove unguarded debug statement
* fix cli commands, major space reduce finished, removed extensions for now
* ubx version checks, add valset for M10
* beta of valset, change suggestions from ledvinap and macgivergim
* valset helper function and combine set nav rate valsets
* more valset refactoring
* remove big array and replace with macro
* remove assert, as it can stop bf completely
* refactoring to offsetof
* making reconnect more resilient, reorganize rate setup, so it doesnt get missed on init
* improved lost communcation detection, dont rely on ACK/NACK anymore
* paket rate debug
* adding debug mode, fixing major flight mode bug
* revert fake flight "isConfiguratorConnected"
* fixed proto detection, fixed reconfigure on too low updaterate
* valset doesnt always send ACK, so we dont wait for it
* size optimization, debug mode rename, minor fixes
* implemented some requested changes
* changed wait delay millisecond based
* fixes from ctzsnooze and zzXyz
* timer fixes
* CamelCase new settings names
* indent
* Fix failure to enter flight model on GPS Fix
* remove old commented out debugs
* simplify timeouts
* Clarify skip_acc and remove development valset code
* accept PL's advice to remove >> (8 * 0
* Simplify package counter, remove reconfiguration based on packet count
* fix error in package count introduced in previous commit
* Fix delay detecting Configurator, ANA disable (for another PR)
* address payload comments and fix logical error
* indentation edits
* delete old enum
* log gps and firmware nav interval times
* fix payload size, inc Rx buffer to 256, ifDef for sw_proto
* remove token parsing (Petr suggestions)
* fixes from reviews
* Basic NMEA improvements
* Address comments from karate
* only check platform version - thanks zzyzx
* Fix for too many sats problem - thanks zzyzx
* tidy up comments, ifdef some ublox definitions
* Use Nav packet intervals, NMEA and UBX, for time delta
* Resolve comments and flatten conditionals
* editorial change
* single function for gpsSol.navIntervalMs
* adam-ah suggestion for payload optimisation
* ACK/NAK & polled message timer fixes
* Revert timer fixes - unexpected side effects
* Revert adam-ah suggestion for payload optimisation"
This reverts commit 42fc8c04fdbc436c9ef196b88f0764ffcbb9239f.
Broke the display of sat info when more than 32 sats in view
* implement a number of comments
* Fast task rate on new data, don't spam at the start
thanks adam-ah
* include PDOP for M10 via NAV-PVT
* Address some of PL's recent comments
* don't recalculate millis so many times
* tidy up baudrate connect code
* Split receiving of GPS bytes from processing by adding GPS_STATE_PROCESS_DATA
* Split receiving of GPS bytes from processing by adding GPS_STATE_PROCESS_DATA
* Preserve state whilst processing packets
* Set gpsData.state directly as gpsSetState() clobbers gpsData.state_position
* Restore original read time check
* Schedule gpsUpdate() to run immediately again when a packet is received for processing
* add debugs to display scheduler valuesl
* simpler scheduler solution
* minor debug change
* FIxes: M10 connection, pDop, NMEA disable; thanks zzyxz
NB: Breaks unit's neat reconnection methods
M8 need a lot of settling time before using the serial port
* ubx parse length sanity + cleanup + dashboard conditional compiles
* Address recent comments from PL
---------
Co-authored-by: ctzsnooze <chris.thompson@sydney.edu.au>
Co-authored-by: ZzyzxTek <zzyzx@zzyzxtek.com>
Co-authored-by: Steve Evans <Steve@SCEvans.com>
* Add gps lap timer
* change timing to GPS time instead of local time
* rebase and minor changes
* implement KarateBrot's suggestions
* follow ledvinap's suggestions, some OSD symbol changes
* move platform.h include to the top
Co-authored-by: Jan Post <Rm2k-Freak@web.de>
* fix osd elements not showing, remove useless block
* cleanup, move pg stuff to pg folder
* cleanup from review
* minor mods to gps lap timer update, add number of laps tracked
* rename time variable
* add const to timeMs
Co-authored-by: Jan Post <Rm2k-Freak@web.de>
* Update licenses, add is_sys_element macro
* update licenses
* round to nearest centisecond
Co-authored-by: Jan Post <Rm2k-Freak@web.de>
---------
Co-authored-by: Jan Post <Rm2k-Freak@web.de>
* Add GPS status line to cli status output: connected status, UART + serial port baud + configured baud, configured status.
* Fixed unit test link fail.
* Really fixed unit test link fail (I hope).
* Really fixed unit test link fail (no really this time).
* Updated to address code reviews.
* Updated to address code reviews.
* Updated to address code reviews.
* Modification to allow src/config to be a repo within a repo.
* Moving config files to own repository, and including using make.
* Removing all old config files.
* Correct CI errors.
* Playing with pulling the configuration files from the API
* Attempt to get past github actions issue
* Adding additional assistance when configs not hydrated
* Move the workflow to support hydration before outputing target list.
* Correction for revision targets
* Requires additional config hydration
* Better messaging on what to do:
- when you have a local config.h for a new target, ignore hydration of target list if you are building the target config in question.
- when you are doing any activity that does not require hydration, e.g. printing out help or installing arm_sdk etc.
* Anything suffixed with clean should be allowed through
* Adjusting to simply use a copy of the repository. Noting we will need to decide whether or not to include MFTR name in the config directory or not.
* Refactor Feedforward Angle and RC Smoothing
* update rc_smoothing at regular intervals
* add Earth Ref to OSD, update pid and rate PG
* Initialise filters correctly
* refactoring to improve performance
* Save 24 cycles in Horizon calculations, other optimisations
At a cost of 40 bytes
* save 25 cycles and 330 bytes in rc_smoothing
* feedforward max rate improvements
* typo fix
* Karatebrot's review suggestions part one
* Karatebrot's excellent suggestions part 2
* more efficient if we calculate inverse at init time
Co-Authored-By: Jan Post <post@stud.tu-darmstadt.de>
* Horizon delay, to ease it in when returning sticks to centre
* fix unit tests after horizon changes
Co-Authored-By: 4712 <4712@users.noreply.github.com>
* horizon_delay_ms, default 500
* fix unit test for feedforward from setpointDelta
* Final optimisations - thanks @Karatebrot for your advice
* increase horizon level strength default to 75 now we have the delay
* restore Makefile value which allowed local make test on mac
---------
Co-authored-by: Jan Post <post@stud.tu-darmstadt.de>
Co-authored-by: 4712 <4712@users.noreply.github.com>
* STM32H730/STM32H750 - Fix use of USE_LP_UART1 instead of USE_LPUART1.
* STM32H723 - Prepare for being able to build for using non-internal-flash
config storage.
* STM32H723 - Prepare for using non-default strings.
* STM32H723 - Disable 'use custom defaults' when using USE_EXST.
* STM32H723 - Disable CUSTOM_DEFAULTS_EXTENDED when EXST is used.
* OCTOSPI - Add initialisation code.
* Add support for RAM_CODE.
* STM32H730 - Add support for RAM_CODE via the .ram_code attribute.
* OCTOSPI - Proof-of-concept for disabling/enabling memory mapped mode on
a running system.
NOTE: The HAL libs are compiled into a memory mapped region, and this cannot be used for OctoSPI access when memory mapped mode is disabled.
* OCTOSPI - Drop HAL support after determining that it's not suitable for
the memory mapped flash use-case.
* OCTOSPI - Sometimes, when disabling memory map mode, the abort fails.
Handle this by disabling the OSPI peripheral first and re-enabling it
afterwards.
* SD/FLASH - Update comments regarding possible solutions to the catch-22
issue with SD/SPI/QUADSPI/OCTOSPI pin configurations.
* OCTOSPI - Use device instance directly.
* OCTOSPI - Prepare W25Q flash driver for octospi support.
* OCTOSPI - Add octospi flash detection.
Note: The method to detect flash chips is similar to the method used for
QUADSPI and as such the code was used as a base. However the initial
OCTOSPI implementation doesn't support the non-memory-mapped use-case so
the un-tested code is gated with `USE_OCTOSPI_EXPERIMENTAL`.
The key differences are:
* uses octospi api not quadspi api.
* flash chip clock speeds should not be changed for memory-mapped flash
chips, bootloader already set it correctly.
* only certain flash chips are capable of memory mapped support.
* W25Q - Ensure w25q128fv_readRegister returns 0 if the receive fails.
* OCTOSPI - Implement octoSpiTransmit1LINE, octoSpiReceive1LINE and
octoSpiReceive4LINES.
* OCTOSPI - Specify device from init.
* OCTOSPI - More fixes and work on init.
Current status is that memory mapped mode is disabled and flash chip is
detected, but w25q128fv_detect should not be calling w25q128fv_reset.
* FLASH - Add comment regarding wasted flash space on targets that only
use one bus type for the flash chip.
* FLASH - Split `detect` into `identify` and `configure`.
* OCTOSPI - Extract flashMemoryMappedModeEnable/Disable to separate
methods.
* FLASH - Reduce size of targets that don't support the use of multiple
flash interfaces.
* Single-flash-chip targets usually only support one type of io
interface.
* Without this, compiler warnings are generated in `flashSpiInit` for
targets that only use flash chip drivers that support quadspi or octospi
that don't even use SPI for flash.
* FLASH - Use MMFLASH_CODE/DATA to conditionally move code/data to RAM.
Only targets compiled to support memory mapped flash chips need the some
specific code in RAM. Otherwise the code/data should be in the normal
linker section.
* FLASH - W25Q Prepare for memory mapped flash usage.
* Wait/Delay functions must work with interrupts disabled.
* Code used for reading/writing must run from RAM.
* OCTOSPI - Implement remaining required methods.
* OCTOSPI - Fixes for earlier code (not last commit).
* FLASH - W25Q update timeout values from Datasheet Rev L.
* FLASH - Prepare flash driver for use when memory mapped flash is
disabled.
* System - Prepare microsISR for use when memory mapped flash is disabled.
* FLASH - Add support for CONFIG_IN_MEMORY_MAPPED_FLASH.
* Flash - Fix incorrect gating on cli flash commands.
When compiling with USE_FLASH_CHIP and without USE_FLASHFS there were
compiler warnings.
* MMFLASH - Fix release-mode build.
* FLASH - Allow SPI pins to be reconfigured when using CONFIG_IN_MEMORY_MAPPED_FLASH.
MMFLASH only works via QuadSPI/OctoSPI peripherals.
* EXST - Disable the 2GB workaround which is now causing a different
error.
The error we get with 'remove-section' enabled is:
"error in private header data: sorry, cannot handle this file". The
cause of this new error in the objcopy codebase is an out of memory
condition, somehow the 2GB files and this error are related but the root
cause of both is still unknown.
* OCTOSPI - Add support for STM32H723.
* STM32H723 - Add linker scripts for EXST usage.
* NucleoH723ZG - Add build script to demonstrate OCTOSPI and Memory Mapped
flash support.
* FLASH - WUse the size in bits to set the size of the buffer.
* FLASH - Fix typo in W25N driver defines.
Was using W28N instead of W25N
* OCTOSPI - Fix missing semilcolon when compiling without
USE_FLASH_MEMORY_MAPPED.
* OCTPSPI - Fix missing call to 'memoryMappedModeInit'.
* SPRacingH7RF - Add example build script to allow for testing prior to
unified target / cloud-build support.
* AT32F435: new target (#12159)
* AT32F435: New target (WIP)
* IO and Timer Updates
* Adding pseudonyms for the STM TypeDef items.
- implementation to follow
* Adding config_streamer support for AT32
* Implementation for IO
* Adding in Peripheral mapping from emsr.
* Warnings cleanup for AT drivers
* Getting things to the linking stage
* Add AT-START-F435 LEDs as default in AT32F435 as a temporary measure to aid bringup
* Remove tabs
* Enable selection of serial port to use for MSP
* Setup defaults for AT-START-F435 to use MSP on UART1
* Fix for most recent 4.5.0 Makefile changes
* Solve for sanity check.
* Add AT32F435 MCU type
* Fix compilation issue with SITL
* Merge conflict resolution
* Minor cleanup
* Adding line feed.
---------
Co-authored-by: Steve Evans <Steve@SCEvans.com>
* Missing define to activate TABLE_VIDEO_SYSTEM
* USE_PWM should only be for RX (parallell RX inputs), USE_PWM_OUTPUT is for all others.
* Updated gate naming so there is less confusion
* Simplified. Note there maybe further occurences.
* Flash - Fix incorrect gating on cli flash commands.
When compiling with USE_FLASH_CHIP and without USE_FLASHFS there were
compiler warnings.
* Fix typo in `flash_info` cli command output.
- Including ability to define custom defaults as char[] that is baked into the build
- removed unnecessary size of custom defaults header parsing (defines provided by build process or in board.h for devs).
- add the 'MSP2_GET_TEXT' and 'MSP2_SET_TEXT' MSP2 commands
- Support getting/setting the 'MSP2TEXT_PILOT_DISPLAY_NAME' config prop ('pilotConfigMutable()->displayName')
- rename 'display_name' to 'pilot_name'
- Add the new 'OSD_PILOT_NAME' OSD element in place of the
'OSD_DISPLAY_NAME' one (as they are semantically identical)
- Add the 'osd_pilot_name_pos' cli prop in place of 'osd_display_name_pos'
- rename 'pilotConfigMutable()'s 'name' to 'craftName'
- remove the legacy 'GET_NAME' / 'SET_NAME' MSP commands
- replace the 'name' CLI prop for 'craft_name'
- add the 'MSP2TEXT_CRAFT_NAME' constant for 'MSP2_GET_TEXT' and 'MSP2_SET_TEXT'