## Commit Summary: Fix incorrect TIMUP DMA configuration dump on H743
**Problem**: H743 platform had incorrect TIMUP DMA configuration dumping and parsing, causing errors when restoring dumped configurations.
**Solution**: This PR implements a comprehensive fix for TIMUP DMA handling across multiple areas:
### CLI DMA Option Handling (`src/main/cli/cli.c`)
- Added `getDmaOptDisplayNumber()` and `displayNumberToDmaOptIndex()` helper functions
- Properly translates between internal DMA option indices and user-facing display numbers
- Integrates presence mask validation for `DMA_PERIPH_TIMUP` peripheral
- Ensures only valid/present timer options are displayed and accepted
### Timer Definition Refactoring (Multiple Platforms)
- Replaced hardcoded `HARDWARE_TIMER_DEFINITION_COUNT` with dynamic `BITCOUNT(USED_TIMERS)`
- Updated STM32H7/G4 `TIMUP_TIMERS` macros to use `TIM_N(x)` instead of `BIT(x)`
- Expanded AT32 `USED_TIMERS` to include timers 6 and 7
- Added static assertion to verify `TIMUP_TIMERS` bits are included in `USED_TIMERS`
### Timer Index Management (`src/main/drivers/timer.h` + platform implementations)
- Added `TIM_N(n)` macro for timer bitmask generation
- Added `TIMER_INDEX(i)` macro for proper index calculation
- Implemented `timerGetIndexByNumber()` function across all platforms (STM32, AT32, APM32)
- Provides bidirectional timer number ↔ index conversion
### DMA Request Mapping Updates
- Modified `REQMAP_TIMUP` macros to use `TIMER_INDEX(timno)` instead of `timno - 1`
- Ensures correct DMA request mapping for non-contiguous timer numbering
### Timer Configuration (`src/main/pg/timerup.c`)
- Replaced hardware timer count checks with `TIMUP_TIMERS` bitmask validation
- Added support for timers 6 and 7 that were previously omitted
- Uses computed `TIMER_INDEX()` for proper array indexing
* refactor dshot_decode_telemetry_value to prevent EDT data in RPM
* Optimize telemetry type detection for extended DShot protocol
* Fix extended telemetry array size and eRPM fallback logic
* Update src/main/drivers/dshot.c
Co-authored-by: Petr Ledvina <ledvinap@gmail.com>
* Format alignment
---------
Co-authored-by: Petr Ledvina <ledvinap@gmail.com>
* PICO: Adding PICO tooling to CI
* Removing description
* Removing requirement for configs when installing pico_sdk
* Remove requirement for ARM when populating sdks
* Removing exclusion for RP2350 targets
* Adding recursive sub-modules checkout
* Allow for different outputs to only .hex
* Attempt to get SITL bin build to upload as an artifact
Allow user to supply CFLAGS_DISABLED to Makefile.
Fix missing #if..endif for PINIO_COUNT in pinio.c.
Fix other strncpy build warning/errors for build with CFLAGS_DISABLED="-flto=auto".
* REFACTOR: Adding DMA_FIRST_HANDLER
dmaIdentifier_e could be zero based in the future and align to descriptor array index directly
Also removed unused DMA_INPUT_STRING
* Removed magic number following code rabbit review
* Allow for 3 gyros to be fused at once.
* Handle the case where no GYRO_COUNT is defined
* Fix accel init bug
* Fix bugs found by AI
* Fix compile time assert message
* Move to picking which IMU you want to enable, allow IMU that have the same scale and looprate to run together even if they aren't identical IMU.
* Fully support 8 IMU
* Fix suggestions, except for MSP all suggestions
* Fix bugs found by AI
* Update gyro_init
* Fix unit tests (feels wrong though)
* Allow MSP to update all gyro alignment
* resolve comments
* Only auto set up to 4 gyros in a config.
* Update MSP implementation
* Fix divide by 0 error
* Update src/main/target/common_post.h
Co-authored-by: Mark Haslinghuis <mark@numloq.nl>
* Handle case where gyro 1 does not exist
* Fix 426XX driver
* fix = logic in if statement
* Update src/main/msp/msp.c
Co-authored-by: Petr Ledvina <ledvinap@gmail.com>
* Update src/main/drivers/accgyro/accgyro_spi_icm426xx.c
Co-authored-by: Petr Ledvina <ledvinap@gmail.com>
* Apply ledvinap suggestions
* Fix detectedSensors initialization
* fix getGyroDetectedFlags
* Automatically handle GYRO_COUNT for up to 4 IMU
* better handle unit tests
* Backwards compatible with older config.h files
* Update src/main/sensors/gyro_init.c
Co-authored-by: Mark Haslinghuis <mark@numloq.nl>
* Update src/main/target/common_pre.h
Co-authored-by: nerdCopter <56646290+nerdCopter@users.noreply.github.com>
* Update src/main/sensors/gyro_init.c
Co-authored-by: Petr Ledvina <ledvinap@gmail.com>
* Update src/main/sensors/gyro.c
Co-authored-by: Petr Ledvina <ledvinap@gmail.com>
* This needs to be the case or unit tests fail, without this we cannot choose default gyro either.
* ledvinap suggestions
* whitespace
---------
Co-authored-by: Mark Haslinghuis <mark@numloq.nl>
Co-authored-by: Petr Ledvina <ledvinap@gmail.com>
Co-authored-by: nerdCopter <56646290+nerdCopter@users.noreply.github.com>
* PICO: Initial multicore (using it for IRQs)
* Updated so any function can be pushed.
* Corrected includes
* Move to queues
* Removed header
* Adding check on command
- correcting core reset return
* Updates based on feedback
* Whitespace
* making static
* Removing comment