mirror of
https://github.com/betaflight/betaflight.git
synced 2025-07-14 20:10:18 +03:00
Refactor OSD element display code
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.
This commit is contained in:
parent
e053965489
commit
30672a37c5
31 changed files with 2435 additions and 2133 deletions
|
@ -111,7 +111,6 @@ extern uint8_t __config_end;
|
|||
#include "io/gimbal.h"
|
||||
#include "io/gps.h"
|
||||
#include "io/ledstrip.h"
|
||||
#include "io/osd.h"
|
||||
#include "io/serial.h"
|
||||
#include "io/transponder_ir.h"
|
||||
#include "io/usb_msc.h"
|
||||
|
@ -122,6 +121,8 @@ extern uint8_t __config_end;
|
|||
#include "msp/msp_box.h"
|
||||
#include "msp/msp_protocol.h"
|
||||
|
||||
#include "osd/osd.h"
|
||||
|
||||
#include "pg/adc.h"
|
||||
#include "pg/beeper.h"
|
||||
#include "pg/beeper_dev.h"
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue