Previously the validation was checking for channel and band values > 0 which caused a parsing error. Unfortunately this also prevented the ability to reset the entry. This resulted in the output from the `vtx` command not being usable to paste back in as any indexes not configured would cause errors.
Converting the universal target as well.
Simplified timer management some.
Added F722 support for good measuer.
Fixed SITL, tests.
Cleanup after rebase.
Added support for all timer consumers and F7.
Fixed 'USE_DMA_SPEC' for F3, some cleanups.
Remove the giant `select` block that contained all the code to generate the elements and transition them to individual functions called only when the element is active. Simplifies the code and results in a performance improvement as it's not necessary to fall through the large `select` statement for every element that will be drawn. The individual functions and the element to function mapping are moved to a new `osd_elements.c` file.
Moved the OSD related code files to a new `osd/` directory.
Also pre-analyze the active elements and only process those that are active. This also saves processing as it's not necessary to loop through all 50 or so elements when only a couple are active.
Various other cleanup and removal of stale or unnecessary code.
In the default configuration the element drawing phase of the OSD task is reduced from ~51us to ~35us - resulting in about a 30% decrease in processing time.
Analyze the rc modes activation conditions and only process configured entries. Previously the entire possible list was processed even though typically only a handful are configured.
Reduces the RX task processing time by about 25% (~44us to ~33us) with an average setup of 3 modes configured (F405, SBUS). Processing time savings will diminish as the user configures more modes. But typically far fewer than the maximum of 20 will be configured.