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.
Update the active OSD profile based on the MSP message. Makes the OSD show the selected profile immediately when the drop-down is changed in the Configurator. All other elements have "live" updates so this should a well.
Add CMS menu to select the OSD profile.
Add msp code 238.
Add MSP_MODE_RANGES code to msp.c.
Add 2 extra byte reads to MSP_SET_MODE_RANGES.
Add check for extra bytes in MSP_SET_MODE_RANGES
Add API documentation for MSP_MODE_RANGES_EXTRA
convert linkedTo storage to boxid
Send length of array in EXTRAS data
Add note that alignment of elements of MODE_RANGES and MODE_RANGES_EXTRA is required and indicated by permanentId.
Adds available profiles and currently selected OSD profile. If the `USE_OSD_PROFILES` feature is not available then the profile count and selected profile will be 1.
Adds OSD stick overlay radio mode. A zero value indicates OSD stick overlay is not available.
Preserve gyro/acc alignment backwards compatibility for configurator versions unaware of the revised sensor alignment scheme.
Update MSP to add support for:
1. Flag to indicate whether `USE_MULTI_GYRO` is available
2. `gyro_to_use`
3. `gyro_1_sensor_align` and `gyro_2_sensor_align`.
Added a flag indicating the level of ledstrip support (to allow improved Configurator behavior) along with support for reading/setting the current `ledstrip_profile`.
ledstrip support flag is as follows:
0 = basic ledstrip available
1 = advanced ledstrip available